The traditional notion of watching television at home has evolved into many different forms of viewing television content, on many different devices. For example, users can watch television content, such as live television, recorded television, and time-shifted programs and movies, on various devices, such as televisions, display devices, entertainment devices, computers, and even mobile devices, such as tablets and mobile phones. Media content that is streamed or otherwise communicated to a client device, such as media content wirelessly communicated to a mobile phone, needs to be maintained as secure and encrypted. However, current mobile phones are not typically implemented to decrypt the media content that is encrypted by some security systems for playback as a progressive download or streaming, and further, current mobile phones are not able to render high-definition media content.
The digital media content can be transcoded and then streamed or otherwise communicated to a client device for audio/video playback of the media content on the client device. For example, media content, such as streaming live television or recorded media content, can be communicated to a mobile phone for playback and display on the mobile phone. However, there are many inoperability issues pertaining to streaming digital media content to a mobile client device, such as content listing, accessing content metadata, copyrights verification, content protection, media streaming and download, content storage and management, device authentication, media content playback, and channel changing among more than one user.
Some conventional technologies that attempt to address these inoperability issues either do not specifically resolve the multiple user channel control problems, or address them in such a way as to limit the choice of solutions. For example, one such solution is DLNA (Digital Living Network Alliance), which attempts to address media content sharing in a home environment, but has a goal to achieve content inter-operability by a user having to select a set of protocol suites.
Embodiments of an object model for delivering live TV programming streams to client device are described with reference to the following Figures. The same numbers may be used throughout to reference like features and components that are shown in the Figures:
In embodiments, an object model for domain-based content mobility can be implemented as a client object model architecture, such as a software development kit (SDK) that is scalable and adaptive to interface a mobile client device configured for wireless communication with a media server. For example, a client device, such as a mobile phone, an iPad®, Xoom®, or other tablet device, or computer can implement the client object model architecture for domain-based control of an application that invokes a media player on the client device, and interfaces with the media server that communicates media content to the client device. The client object model architecture also controls domain discovery of the media server, domain-based registration of the client device with the media server, command channel change, and unsolicited channel change with mDNS notifications.
In embodiments, the object model for domain-based content mobility is an abstraction of a set of objects that enable developers to write domain-based content mobility applications, such as for mobile client devices. The client object model architecture includes a set of classes, the associated methods, and the relationships between the classes. The object model provides an interface to address the inoperability issues described above, and allows different technology solutions to be implemented with the object model. Accordingly, the client object model architecture is flexible (not limited to a certain set of technologies) and extensible (as the object model itself can be expanded).
The client object model architecture provides for the design of a client device SDK interface layer, through which functionality can be implemented to include any one or combination of domain discovery, device registration and control, digital rights management (DRM), content streaming, channel change, secure content playback.
While features and concepts of an object model for domain-based content mobility can be implemented in any number of different devices, systems, networks, and/or configurations, embodiments of an object model for domain-based content mobility are described in the context of the following example devices, systems, and methods.
The content distributor or head end 104, includes content servers 108 to distribute media content 110 to the media server. The media server 126 receives the media content from the content distributor, which can include any type of audio, video, and/or image data in the form of television programming, movies, on-demand video, interactive games, advertisements, and the like. The media content can be encrypted.
Any of the services, devices, and servers can communicate via the communication network 106, which can be implemented to include a wired and/or a wireless network. The communication network can also be implemented using any type of network topology and/or communication protocol, and can be represented or otherwise implemented as a combination of two or more networks, to include IP-based networks and/or the Internet. The communication network may also include mobile operator networks that are managed by a mobile network operator and/or other network operators, such as a communication service provider, cell-phone provider, and/or Internet service provider.
The example system 100 also includes a media server 126 that is implemented to communicate media content to a client device 128 via a router 130 implemented for wired and/or wireless communication. The media server 126 may also be referred to herein as the Streamer or media streamer or media server. The media server 126 receives the media content from the head end 104 via a service network 106. The received media can be encrypted when it reaches the media server via cable. The media server 126 can decrypt the encrypted media content via the cable card 133, and then transcode the decrypted media content.
The media server 126 includes a transcoder 134 to format the media content for distribution to the client device 128 as media content segments 136 over an HTTP server 138 via the router 130. For example, the media server formats high-definition media content received from the head end, such as MP4 media content, to VGA formatted media content, or to an MP2 format. The media server 126, via the transcoder, can be implemented to then encrypt the formatted media content with an encryption key for communication to the client device via the router 130, so that the media content remains secure when communicated over WiFi™ or Ethernet to the client device.
The media server 126 can be implemented with various components, such as a processor and memory devices, as well as with any combination of differing components as further described with reference to the example electronic device shown in
The client device 128 may be implemented as any one or combination of a communication, computer, media playback, gaming, entertainment, and/or electronic device, such as a mobile phone or tablet device that can be configured as a television client device to receive and playback media content. The client device can be implemented with various components, such as processor and memory devices, as well as with any combination of differing components as further described with reference to the example electronic device shown in
The client device also implements a client object model architecture 146 to implement the various embodiments of an object model for domain-based content mobility described herein. The client object model architecture can be implemented as part of a software stack on the client device, such as the software stack further described with reference to
In embodiments, functionality of the client device 128 with the client object model architecture 146 includes implementation of the client model architecture that invokes the media player 142 on the client device; domain discovery of the media server 126; domain-based registration of the client device with the media server; authentication of the client device to the media server; domain control for secure streaming of media content from the media server to the client device; digital rights management (DRM) of the secure streaming of the media content to the client device; acquisition of a media content list and metadata that corresponds to the media content; transcoding the media content for streaming to the client device; content streaming of the media content to the client device; download queue management of the media content that is queued for streaming to the client device; tune to current channel; channel playback; solicited channel change; unsolicited channel change; and get streamer (media server) status.
The discovery of a remote content source (e.g., the media server 126 or a network-based content source) is controlled by the domain registration and failure to register the client device 128 will result in failure to discover the remote content source. Further, media content consumption will not be allowed if registration fails. The client device 128 can discover a server name of the media server 126 that can be used to resolve an IP address for the media server. The media server supports Multicast DNS (mDNS) for the name discovery and IP address resolution mechanism. The mDNS protocol allows the client device to discover the media server by obtaining its fully-qualified name and IP address. The client device can first multicast a query looking for the media server and then the media server's mDNS server responds by providing the fully qualified name (FQN) and IP address. The client device can then build its name resolution table and, when the media server FQN is used in an HTTP URI, the message will be sent to the media server correctly.
In addition to the domain class 302, the object model 300 includes a stream source class 306; a current channel class 308; and a channel player class 310 (e.g., such as to instantiate the media player 142 in the client device 128).
The stream source class 306 is the software component responsible for interacting with the media server 126. It supports the functions to get the channel list, to query the status of the media server and to change channels. The stream source class also provides methods to retrieve remote media content, such as remote media content that can be streamed to the client device. Remote media content usage control can be enforced by the IPRM system according to its copyrights. A remote content list includes the state of all the different remote media content and is sorted by the content state. An update to the remote content list is notified via a multicast domain name service (mDNS) message, and can provide attributes of the media content, such as the ID, descriptions, parental control information, playback duration, ratings, the content file URL(s), the icon URL(s), protection type, series name, and the episode name. The metadata that corresponds to the media content can also be stored persistently on the client device.
The media player agent class 310 represents the media player 142 that is instantiated by client software and includes functionality to control play of streaming media content on the client device. The stream source class 306 interacts with mDNS to perform functions (ie) channel changes). It invokes StreamSource class 306 and the Change Channel method of class 308 and class 310 to actually render the content. The current channel class 308 represents the new channel that has been tuned into. Its role is to help the media play component to play the new content at the client device. The media player agent class 310 interfaces with the media player 142 and invokes the media player 142 to play the media content.
Example method 500 is described with reference to
A method 500 is shown below and illustrates a client device query to a streaming server for its status, which will indicate whether changing channel will impact other users. Defined herein are an XML schema, a URL and a HTTP response message that enables the client device to obtain the status of the streaming server.
A domain controller has been implemented from a domain class in a client object model architecture. For example, the client object model architecture 300 (
At block 502, the server receives an HTTP URL from a user requesting a server status. For example:
At block 504, the server determines the status by checking three aspects, instances of chunk files, encrypted media, and play lists which are sampled over a period of time and examined. The server can determine any one or combination of these parameters in making its determination. In one embodiment, the time period is ten minutes, but the time period can be any reasonable period, for instance, based on the duration of a normal chunk file.
At block 506, if desired, the server determines the last time that the latest content chunk file was accessed.
At block 508, if desired, the server determines the last time that the key was requested.
At block 510, if desired, the server determines the when was the last time the play list was requested.
At block 512, then the server compares these access times against the duration of the chunk file, of the encryption keys and of the play list file and makes the final decision whether there are other viewers on-line.
At block 514 the streaming server returns HTTP success/error code and the response XML document (given success). For example:
where, the Return Values:
At block 516, the client device examines the document and lets the user know whether changing channel will cause disruptions to other viewers.
The method examines the last access time of the streaming elements (i.e., the chunk files, the key and the playlist files) to decide the potential impacts or no impacts. As such, the client application can make an informed decision for channel changes.
The domain communicates a domain controller found to NS notification center, which communicates a domain controller found notification back to the client device application. The client device application communicates a get domain controller status message, and the domain returns a domain controller found object. The client device application then communicates a join object message to the domain, which utilizes DRM registration to register the client device to the domain, and communicates a registered to domain notification to the NS notification center. The NS notification center returns a registered to domain notification to the client device application. The client device application then communicates a get RCS hostnames object message to the domain, which returns the RCS hostnames object to the client device application.
The domain 704 communicates a domain controller found notification 712 to the NS notification center 706, which communicates a domain controller found notification 714 back to the client device application 702. The client device application communicates a get domain controller status message 716, and the domain returns a new domain controller found object 718. The client device application can communicate a disassociate object message 720 to the domain, and receive an ok return object 722 from the domain. The client device application then communicates a join object message 724 to the domain, which utilizes DRM registration 726 to register the client device to the new domain, and communicates a registered to domain notification 728 to the NS notification center. The NS notification center returns a registered to domain notification to the client device application. The client device application then communicates a get RCS hostnames object message to the domain, which returns the RCS hostnames object 734 to the client device application.
In the example communication sequence 800, the client device application 802 sends a getStreamerStatus message 808 to a Stream Source 804 at which REST::streamerstatus 810 is performed. A StreamerStatusForChannelChange 812 notification is sent to NSNotification Center 806 and the notification 813 is provided to the Streamer App 802. The user may be prompted for confirmation. 814 A changeChannel:channelID message 816 is sent from the Streamer App 802 to the Stream Source 804. The target channel is looked up on the stream map and a Retune command is performed if it is found. 818. If the channel is not found 820, a REST::tunechannel process 822 is formed and the stream map is updated 824. The channelChanged notification 826 is provided to the NSNotification 806 center and 828 to the Streamer App, 802 which may inform the user 830. The getStreamerStatus method 808 is optional. It gives the app an opportunity to confirm but is not required for commanding channel changes. However, as a general rule, the streamer will execute channel change requests one request at a time; and therefore, if a second request comes in before the current change is completed, the streamer will ABORT the current one and switch to the second request.
When a user tries to change channel in a live TV streaming application based on HTTP Live Streaming, there is a chance that it might cause disruptions for other viewers who are watching the channel. Accordingly, a method is disclosed herein to assist the user to make an informed decision before the channel is changed.
The disclosure uses the mDNS protocol: http://files.multicastdns.org/draft-cheshire-dnsext-multicastdns.txt as a notification mechanism.
A software algorithm that handles the unsolicitated channel changes may include a main workflow as follows:
1. A channel change has occurred in the streaming server.
2. The server generates an mDNS notification, specifying the binding between the channel and the tuner (given multiple tuners exist).
3. The client device receives the notification.
4. The client device checks new the channel binding against its internal channel table, and handles three possible scenarios:
The scheme above handles the unsolicited channel changes via a local channel table and uses it to compare against the new channel layout to do what is necessary based on the result of the comparison.
In another embodiment, an example of unsolicited channel change—with mDNS notifications communication sequence between a client device app (e.g. StreamerApp), a media server (e.g. StreamSource), an NS notification center, a domain, and a Bonjour interface can be illustrated. As shown, a Bonjour Interface monitors the messages sent from Media Server and sends a TXTRecordUpdate notification to the Domain which checks the Update type to confirm that the message is a channel change operation. A ChannelUpdate notification is sent from the Domain to the NSNotification center and ChannelUpdate is sent to Stream Source. In one scenario (1), the current channel stays on the same tuner, and a Do Nothing command is issued. In another scenario (2), the current channel is on a different tuner, then Retune. In yet another scenario (3), the current channel cannot be found on any tuner, then let the app know the channel has changed. The Stream Source sends out a ChannelChange notification and the NSNotification center sends ChannelChange notification to the Streamer App. The Streamer App. may get the channel ID and inform that the current channel has changed. Note that this sequence covers the emergency, forced channel change scenario. All the streamer need to do is to put the forced channel on all the tuners. Also note for the emergency use case, there are no client software or app changes because the media server merely shuffles in the emergency service content onto the existing channels. In a scenario 3, the app will first receive the ChannelChange notification; however, the app can exercise parental control if it chooses to or the app could also go through channel playback.
The electronic device 1000 includes communication transceivers 1002 that enable wired and/or wireless communication of device data 1004, such as received data, data that is being received, data scheduled for broadcast, data packets of the data, etc. Example transceivers include wireless personal area network (WPAN) radios compliant with various IEEE 802.15 (Bluetooth™) standards, wireless local area network (WEAN) radios compliant with any of the various IEEE 802.11 (WiFi™) standards, wireless wide area network (WWAN) radios for cellular telephony, wireless metropolitan area network (WMAN) radios compliant with various IEEE 802.15 (WiMAX™) standards, and wired local area network (LAN) Ethernet transceivers.
The electronic device 1000 may also include one or more data input ports 1006 via which any type of data, media content, and/or inputs can be received, such as user-selectable inputs, messages, music, television content, recorded video content, and any other type of audio, video, and/or image data received from any content and/or data source. The data input ports may include USB ports, coaxial cable ports, and other serial or parallel connectors (including internal connectors) for flash memory, DVDs, CDs, and the like. These data input ports may be used to couple the electronic device to components, peripherals, or accessories such as microphones and/or cameras.
The electronic device 1000 includes one or more processors 1008 (e.g., any of microprocessors, controllers, and the like), which process computer-executable instructions to control operation of the device. Alternatively or in addition, the electronic device can be implemented with any one or combination of software, hardware, firmware, or fixed logic circuitry that is implemented in connection with processing and control circuits, which are generally identified at 1010. Although not shown, the electronic device can include a system bus or data transfer system that couples the various components within the device. A system bus can include any one or combination of different bus structures, such as a memory bus or memory controller, a peripheral bus, a universal serial bus, and/or a processor or local bus that utilizes any of a variety of bus architectures.
The electronic device 1000 also includes one or more memory devices 1012 that enable data storage, examples of which include random access memory (RAM), non-volatile memory (e.g., read-only memory (ROM), flash memory, EPROM, EEPROM, etc.), and a disk storage device. A disk storage device may be implemented as any type of magnetic or optical storage device, such as a hard disk drive, a recordable and/or rewriteable disc, any type of a digital versatile disc (DVD), and the like. The electronic device 1000 may also include a mass storage media device.
A memory device 1012 provides data storage mechanisms to store the device data 1004, other types of information and/or data, and various device applications 1014 (e.g., software applications). For example, an operating system 1016 can be maintained as software instructions within a memory device and executed on the processors 1008. The device applications may also include a device manager, such as any form of a control application, software application, signal-processing and control module, code that is native to a particular device, a hardware abstraction layer for a particular device, and so on. The electronic device may also include a proxy application 1018 and a media player 1020, such as for a client device. The electronic device also includes a client object model architecture 1022 that can be implemented in any one or combination of software, hardware, firmware, or the fixed logic circuitry to implement embodiments of an object model for domain-based content mobility.
The electronic device 1000 also includes an audio and/or video processing system 1024 that generates audio data for an audio system 1026 and/or generates display data for a display system 1028. The audio system and/or the display system may include any devices that process, display, and/or otherwise render audio, video, display, and/or image data. Display data and audio signals can be communicated to an audio component and/or to a display component via an RF (radio frequency) link, S-video link, HDMI (high-definition multimedia interface), composite video link, component video link, DVI (digital video interface), analog audio connection, or other similar communication link, such as media data port 1030. In implementations, the audio system and/or the display system are integrated components of the example electronic device.
REST API Spec
An API specification is described herein as a Representational State Transfer (REST) software architecture. The REST API specification includes the API definitions of the object model classes that are described with reference to the client object model architecture 300 shown in
Mover Discovery and Name Resolution
As noted above, the media server is also referred to herein as the Mover. The Mover Runtime environment and software architecture are shown in
Mover Status Update Notification
The mDNS protocol also supports event notifications. The Mover uses this mechanism to notify the client devices when the status changes in some way. The scope of status updates includes the default ratings PIN, the default rating ceiling, the default content advisory settings and channel blocks, the content metadata and repository, and a notification that user intervention is required via the Mover local Web configuration page (for example, that flash memory needs configuration). Note that the ratings related status data is protected. If ratings information of content information has changed, the client devices would normally launch the relevant resource URI.
Method Overview
Methods Include:
Representation MIME Types
The following mime types are used for resource representation:
The following abbreviations are used:
{portal-server} Portal Server that implements the RESTful web service.
{content-server} Server for accessing content payload.
{domain-server} The server that enforces domain control rules.
{streaming-server} The server that provides HIS streaming.
Content Directory
Description: The content directory URI provides the list of programs that are currently in the media server database.
Sequence Number: The sequenceNumber element in the response message indicates to the client application whether the content list is changed from last time. A new sequence number indicates a change.
Transcoding Status: The status element indicates one of the four transcoding status: ready (for download or streaming), being processed (i.e. being transcoded), pending (for processing) and not available (e.g. ratings blocked, or bad content). Note that all directory items returned in a response that are marked pending are returned in transcoder queue (priority) order, with the first listing at the highest priority, meaning, next to be transcoded.
Content Usage: The usageAllowed element signals what kinds of use cases are allowed for the content. The table below specifies mapping between the usageAllowed metadata value and the client use cases allowed:
Content Ratings: The content ratings values are listed below. A program can assume one and only one rating. Note that these values are defined by the MPAA and the TV Parental Guidelines Monitoring Board. The content rating values include Not Rated, TV-Y, TV-Y7, TV-G, G, TV-PG, PG, PG-13, TV-14, TV-MA, R, NC-17, and Adult.
Parental Control Categories: The values for parental control categories are listed below. A program can assume one or multiple categories. Note that these values are defined by the TV Parental Guidelines Monitoring Board. The parental control categories values include Adult Situation, Brief Nudity, Sexual Situations, Rape, Nudity, Strong Sexual, Language, Strong Language, Graphic Language, Explicit Language, Fantasy Violence, Mild Violence, Violence, and Graphic Violence.
URI and Defined Methods:
GET Implementation:
The example below shows a list of two content items, one with program-id TOD55341 and the other with TOD55342. The first program comes with two content URLs, a type 1 and a type 2. The variant attribute corresponds to the device type (see the device registration for details). The client application is recommended to use the URL that matches its device type or the content playback might fail or present a suboptimal experience. The icon element specifies where to get the program thumbnail. There are two icon elements in the first program, intended to match the best usage for a type 1 and type 2 device respectively. The height element and the width element show example values.
Program Metadata
Description: The program metadata URI is a pre-defined URI which can be used to download the detailed program representation of any program using the program-id. This is further described above with reference to the content program object 1006 (
GET Implementation: See Example. Two examples are shown below. Example 1 shows the case where the metadata is protected and base64 encoded, and the second example shows clear metadata. In order to produce the clear metadata, the client app must use the <protectionType> and apply the right scheme to it.
Set Transcode Mode
URI and Defined Methods. Description: This URI is a command to the content server, indicating whether it should transcode the Copy Once content or not, in an automatic fashion.
GET Implementation: Parameter CO: Transcode Copy Once content automatically. Parameter NO: Do NOT transcode Copy Once content automatically; rather, transcode each such content item on request.
Transcode Priority
URI and Defined Methods:
Return Value Notes: The return value 200 indicates the priority of the requested program has been raised. The return value 404 indicates program not found. The return value 405 indicates the priority of the requested program cannot be raised. GET Implementation:
Device Registration
Descriptions: To register a new client device to the Mover domain, a PUT message is sent to the ‘domain’ URI with the device-id appended to the end. The body of the PUT method includes the data elements defined below. URI and Defined Methods:
PUT Implementation
PUT Data Elements:
Device De-Registration
Description: To de-register a client device from the Mover domain, a DELETE message is sent to the ‘domain’ URI with the device-id appended to the end. URI and Defined Methods:
DELETE Implementation—Example
Content Control Profile
Description: The Content Control Profile URI retrieves the Mover content control profile, including the rating's ceiling, the content advisory information, the PIN and the channel block information. URI and Defined Methods:
Examples: The example below shows a GET request and the response XML metadata. Note that the metadata is encrypted with a secret key and the client needs to decrypt it first and then parse out the detailed data items. The <profileProtectionType> data item signals what kind of protection scheme is applied.
Status Metadata Examples: The example below shows a set of content control profile after it's been unscrambled.
Description: Channel Tuning URI's provides three API's to let the client applications to learn the potential impacts of channel changes, to command a channel change and to get the channel mappings.
This URI returns the status of the tuner in a set of pre-defined values.
This URI returns the playlist URL of the target channel for the mode of interest.
This URI returns the channel map of the streaming server.
Content Directory Schema
Program Detail Schemas
Device Registration Schema
Content Control Profile Schemas
Channel Schema
Although embodiments of an object model for domain-based content mobility have been described in language specific to features and/or methods, the subject of the appended claims is not necessarily limited to the specific features or methods described. Rather, the specific features and methods are disclosed as example implementations of an object model for domain-based content mobility.
This application is a continuation of U.S. application Ser. No. 13/517,594 filed Jun. 13, 2012, entitled “An Object Model for Delivering Live TV Programming Streams to Client Device,” which claims priority to U.S. Provisional Application Ser. No. 61/496,537 filed Jun. 13, 2011, entitled “An Object Model for Delivering Live TV Programming Streams to Client Device,” the disclosure of which are incorporated by reference herein in their entirety.
Number | Date | Country | |
---|---|---|---|
61496537 | Jun 2011 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 13517594 | Jun 2012 | US |
Child | 14331743 | US |