Content elements, such as video files, are often transcoded before being delivered to an end-user device, such as a desktop computer, a laptop computer, a pad computer, or a smart phone. Specifically, the bit rate of the video files may be adjusted. Additionally, the format of the video files may be converted. For example, before the video files are delivered to a wireless device, the bit rate of the video files can be adjusted and the format of the video files can be converted to account for the physical dimensions and resolution of the display of the wireless device or the codecs supported by the wireless device.
A method and system for managing the delivery of content over a content network is described. In one embodiment, a method for managing the delivery of content over a content network involves maintaining a transcoding brokerage policy for a transcoding system that includes multiple transcoding engines, where the transcoding brokerage policy defines rules for selecting the transcoding engines, receiving a request for a content element that is stored at a content source, selecting one of the transcoding engines to transcode the requested content element according to the transcoding brokerage policy, and causing the requested content element to be transcoded by the selected transcoding engine. Other embodiments are also described.
In another embodiment, a method for managing the delivery of content over a content network is described. The method for managing the delivery of content over a content network involves maintaining a transcoding brokerage policy for a transcoding system that includes multiple transcoding engines, where the transcoding brokerage policy defines rules for selecting the transcoding engines, receiving a request for a video content element that is stored at a content source, selecting one of the transcoding engines to transcode the requested video content element according to the transcoding brokerage policy, and causing the requested video content element to be transcoded by the selected transcoding engine. Maintaining the transcoding brokerage policy includes setting the transcoding brokerage policy based on the state of the transcoding system and adjusting the transcoding brokerage policy in response to a change in the state of the transcoding system, where the change in the state of the transcoding system is communicated from at least one of the transcoding engines as feedback information. Other embodiments of a method are also described.
Embodiments of a transcoding broker for managing the delivery of content over a content network are also described. In one embodiment, a transcoding broker for managing the delivery of content over a content network includes a transcoding engine proxy configured to receive a request for a content element that is stored at a content source and a service broker configured to: maintain a transcoding brokerage policy for a transcoding system that includes multiple transcoding engines, where the transcoding brokerage policy defines rules for selecting the transcoding engines; and select one of the transcoding engines to transcode the requested content element according to the transcoding brokerage policy. The transcoding engine proxy is further configured to cause the requested content element to be transcoded by the selected transcoding engine. Other embodiments of a transcoding broker for managing the delivery of content over a content network are also described.
Other aspects and advantages of embodiments of the present invention will become apparent from the following detailed description, taken in conjunction with the accompanying drawings, illustrated by way of example of the principles of the invention.
Throughout the description, similar reference numbers may be used to identify similar elements.
It will be readily understood that the components of the embodiments as generally described herein and illustrated in the appended figures could be arranged and designed in a wide variety of different configurations. Thus, the following more detailed description of various embodiments, as represented in the figures, is not intended to limit the scope of the present disclosure, but is merely representative of various embodiments. While the various aspects of the embodiments are presented in drawings, the drawings are not necessarily drawn to scale unless specifically indicated.
The described embodiments are to be considered in all respects only as illustrative and not restrictive. The scope of the invention is, therefore, indicated by the appended claims rather than by this detailed description. All changes which come within the meaning and range of equivalency of the claims are to be embraced within their scope.
Reference throughout this specification to features, advantages, or similar language does not imply that all of the features and advantages that may be realized with the present invention should be or are in any single embodiment. Rather, language referring to the features and advantages is understood to mean that a specific feature, advantage, or characteristic described in connection with an embodiment is included in at least one embodiment. Thus, discussions of the features and advantages, and similar language, throughout this specification may, but do not necessarily, refer to the same embodiment.
Furthermore, the described features, advantages, and characteristics of the invention may be combined in any suitable manner in one or more embodiments. One skilled in the relevant art will recognize, in light of the description herein, that the invention can be practiced without one or more of the specific features or advantages of a particular embodiment. In other instances, additional features and advantages may be recognized in certain embodiments that may not be present in all embodiments of the invention.
Reference throughout this specification to “one embodiment,” “an embodiment,” or similar language means that a particular feature, structure, or characteristic described in connection with the indicated embodiment is included in at least one embodiment. Thus, the phrases “in one embodiment,” “in an embodiment,” and similar language throughout this specification may, but do not necessarily, all refer to the same embodiment.
The wireless device 102 of the content delivery system 100 is typically a handheld wireless device, such as a cell phone, a mobile phone, a smartphone, a pad computer, a Personal Digital Assistant (PDA), a handheld gaming device etc, which can wirelessly communicate using radio frequency (RF) communications signals. The wireless device can support various different RF communications protocols, including without limitation, Global System for Mobile communications (GSM), Universal Mobile Telecommunications System (UMTS), Code Division Multiple Access (CDMA), Worldwide Interoperability for Microwave Access (WiMax) and communications protocols as defined by the 3rd Generation Partnership Project (3GPP) or the 3rd Generation Partnership Project 2 (3GPP2), 4G Long Term Evolution (LTE) and IEEE 802.16 standards bodies. Although some wireless communications protocols are identified herein, it should be understood that the present disclosure is not limited to the cited wireless communications protocols. The wireless device is configured to request content from the content source 116 on behalf of a user and to render received content for presenting to the user. The user may be a single person, multiple persons, other entity or entities.
In the embodiment depicted in
The radio access network 104 of the access network 111 is configured to facilitate radio communications between the wireless device 102 and a core network that includes the data gateway 106, the transcoding broker 108, the Internet gateway 110, the Internet 112 that includes the transcoding system 114, and the content source 116. In an embodiment, the radio access network includes one or more base stations to facilitate communications among wireless devices that are within a communications range of the base stations. Each base station has at least one RF transceiver and the base stations communicate with the wireless devices using RF communications signals. The radio access network facilitates network communications among multiple wireless devices within the same radio access network and between wireless devices in other radio access networks and provides interfaces to facilitate communications with other entities, such as a Public Switched Telephone Network (PSTN), a Wide Area Network (WAN), the Internet, Internet servers, hosts, etc., which are outside of the radio access network. In an embodiment, the network elements depicted in
Data signals communicated between the wireless device 102 and the radio access network 104 include, but are not limited to, analog and/or digital RF signals (i.e., radio waves) for any type of communications mode, including text messaging, multimedia messaging, voice calling, and Internet browsing. The radio access network can support various different RF communications protocols, including without limitation, GSM, UMTS, CDMA, WiMax and communications protocols as defined by 3GPP, 3GPP2, or IEEE 802.16. Although some wireless communications protocols are identified herein, it should be understood that present disclosure is not limited to the cited wireless communications protocols.
Although the content delivery system 100 depicted in
The data gateway 106 of the access network 111 configures outgoing data access requests for use with one or more networks and configures incoming data for use by or display on the wireless device 102. As shown, the data gateway interfaces directly with the radio access network 104 and the transcoding broker 108, although other embodiments may include other intermediate functional elements. In one embodiment, the data gateway uses GPRS Tunneling Protocol (GTP) to communicate with the radio access network. Other embodiments may use other communications protocols. Other conventional operations of the data gateway are known. For example, the data gateway enables users of wireless devices to roam between cells, for example, to move between different locations within the radio access network, by tracking the wireless device's identity across the network. The data gateway may also provide authentication and data formatting functions.
The transcoding broker 108 of the access network 111 is configured to manage the delivery of content from the content source 116 to the wireless device 102 and is described in more detail below.
The Internet gateway 110 of the access network 111 provides a gateway for communications between the wireless device 102 and Internet-connected hosts and/or servers in the Internet 112, which can also be referred to as the “cloud.” The Internet gateway may include a Serving General Packet Radio Service (GPRS) Support Node (SGSN) and a Gateway GPRS Support Node (GGSN). For example, the Internet gateway can be a Wireless Application Protocol (WAP) gateway that converts the WAP protocol used by the radio access network to the HTTP protocol used by the Internet. In an embodiment, the Internet gateway enables wireless devices to access multimedia content, such as Hyper Text Markup Language (HTML), compact HTML (cHTML), and extensible HTML (xHTML), which is stored on Internet-connected hosts and/or servers.
The transcoding system 114 of the content delivery system 100 is configured to transcode content elements from the content source 116 before the content elements are provided to the wireless device 102. As shown in
Although the transcoding system 114 is shown in
The content source 116 of the content delivery system 100 is configured to store content elements, to process requests for content elements from the wireless device 102, and to provide requested content elements to the wireless device over at least one delivery protocol. The content source may store video content elements and/or non-video content elements such as text files, webpage files, image files, audio files, or any combination thereof. The content source may serve content elements over a single transport protocol or more than one transport protocol. In an embodiment, the content source serves video content over HTTP such as HTTP-Progressive Download (HTTP-PD) or HTTP-Adaptive Streaming (HTTP-AS), Real Time Messaging Protocol (RTMP), and/or real time streaming protocol (RTSP) or other similar protocols from a content encoder (not shown) or from pre-encoded content stored in a video content database (not shown). The content source may be an HTTP server. In an embodiment, the content source belongs to a video web site, such as YouTube.com, Google Videos, Metacafe.com, and Hulu.com. Although the content delivery system is shown in
The transcoding broker 108 can perform intelligent routing of content requests in order to provide intelligent assigning of transcoding jobs to improve the transcoding efficiency of the content delivery system 100, to reduce network latency, and to provide a better user experience. In an embodiment, the transcoding broker is configured to maintain a transcoding brokerage policy for the transcoding engines 118-1 . . . 118-N in the transcoding system 114, to receive a request for a content element that is stored at the content source 116, to select at least one of the transcoding engines in the transcoding system to transcode the requested content element according to the transcoding brokerage policy, and to cause the requested content element to be transcoded by the selected transcoding engine. The transcoding brokerage policy defines rules for selecting the transcoding engines. A content element may include a single content file or multiple content files. In an embodiment, a content element corresponds to a single hyperlink. The content element may be, for example, a video content element and/or a non-video content element such as a text content element, a webpage content element, an image content element, an audio content element, or any combination thereof.
In an embodiment, the transcoding broker 108 sets the transcoding brokerage policy based on the state of the transcoding system 114. Thus, the transcoding brokerage policy includes information about the state of the transcoding system. The transcoding broker selects at least one of the transcoding engines in the transcoding system to transcode a requested content element according to the transcoding brokerage policy. The state of the transcoding system is at least partially defined by a load parameter and/or a transcoding characteristic. A load parameter of the transcoding system may be at least one of: number of streams currently being processed; service availability; available queue capacity; anticipated demand; past demand; processor utilization; memory utilization; Input/output (I/O) utilization; and temperatures of the transcoding engines 118-1 . . . 118-N. By monitoring at least one load parameter, the transcoding broker can select appropriate transcoding engines in response to real-time load conditions in order to distribute transcoding jobs across the transcoding system. The transcoding characteristic of the transcoding system may be at least one of: the number of transcoding engines in the transcoding system; types of transcoding engines in the transcoding system; physical locations of the transcoding engines; service-related reservations for the transcoding engines; maximum queue capacity of the transcoding engines; devices supported by the transcoding engines; content sources that correspond to the transcoding engines; codecs supported by the transcoding engines; and metadata mapped to some of the transcoding engines. In an embodiment, the transcoding brokerage policy includes metadata associated with the content element.
Generally, not all of the transcoding engines 118-1 . . . 118-N in the transcoding system 114 support all media conversions. In other words, each transcoding engine may only be capable of transcoding selected types of content. However, by monitoring the capabilities of the transcoding engines, the transcoding broker 108 can select a transcoding engine that can transcode the type of content element that is identified in a request.
In an embodiment, the transcoding broker 108 adjusts the transcoding brokerage policy in response to changes in the state of the transcoding system 114. By adjusting the transcoding brokerage policy as the state of the transcoding system changes, the transcoding broker can perform intelligent routing of content requests based on the current state of the transcoding system to optimize the transcoding system's performance. The optimization can be viewed from the perspective of a single transcoding engine and/or from the perspective of a group of transcoding engines.
The transcoding broker 108 allows additional computing power to be dynamically added to the transcoding engines 118-1 . . . 118-N by simply updating the transcoding brokerage policy to reflect the additional computer power. Likewise, the transcoding broker can update the transcoding brokerage policy to reflect a decrease in computing power. By updating the transcoding brokerage policy in response to changes in the state of the transcoding system 114, the transcoding broker allows the transcoding system to adapt to changing conditions. For example, it is easy to add additional transcoding engines to handle peak hour content transcoding by simply adjusting the policy of the transcoding broker. Thus, a service provider can adapt to changes in demand without having to maintain an excess pool of transcoding engines. As a result, the total cost of ownership (TCO) of the service provider can be reduced.
Although the transcoding broker 108 is shown in
The service broker 230 of the transcoding broker 208 is configured to maintain a transcoding brokerage policy 234 for the transcoding engines 118- . . . 118-N in the transcoding system 114 and to select at least one of the transcoding engines in the transcoding system to transcode the requested content element according to the transcoding brokerage policy. The transcoding engine proxy 232 of the transcoding broker 208 is configured to receive a request for a content element that is stored at the content source 116, which may be sent from the transcoding client 256, and to cause the requested content element to be transcoded by the selected transcoding engine. In some embodiments, instead of the service broker, the transcoding engine proxy selects at least one of the transcoding engines in the transcoding system to transcode the requested content element according to the transcoding brokerage policy.
The transcoding brokerage policy 234 defines rules for selecting the transcoding engines 118- . . . 118-N in the transcoding system 114. The service broker 230 sets the transcoding brokerage policy based on the state of the transcoding system. For example, the service broker may include an analytics engine that consumes real time performance metrics from the transcoding engines in the transcoding system. In the embodiment depicted in
In an embodiment, the service broker 230 selects at least one of the transcoding engines 118- . . . 118-N to transcode a requested content element based on the content source 116 that the request content element is stored. For example, the service broker may select the same transcoding engine(s) for all of requests for video clips that are located at a video website, such as YouTube.com. In another embodiment, the service broker selects at least one of the transcoding engines to transcode a requested content element based on the wireless device that sends out the request for the content element. For example, the service broker may select the same transcoding engine(s) for all of video clips that are requested by a particular kind of device, such as an iPhone. In another embodiment, the transcoding brokerage policy contains information related to metadata associated with the content element. The service broker selects at least one of the transcoding engines to transcode a requested content element based on the metadata associated with the content element. The metadata associated with a content element may include, for example, one or more Exchangeable image file format (Exif) tags, ID3 tags, and MediaInfo tags. An ID3 tag is a metadata container for an audio file in MP3 or other audio file format that allows audio file information such as the title, artist, album, track number to be stored in the audio file. A MediaInfo tag is a metadata container for a video file. For example, the service broker may select the same transcoding engine(s) for all of requests for video clips with high definition (HD) tags. The metadata associated with a content element may also include, for example, user location and subscriber plan. For example, the service broker may select the same transcoding engine(s) for all of media files that are requested by customers with gold subscription plans.
In an embodiment, the service broker 230 updates the transcoding brokerage policy 234 to account for the addition of one or more transcoding engines and/or to account for the loss of one or more transcoding engines. The service broker may receive requests or instructions for adding or deleting transcoding engine(s) from at least one of the components 102, 104, 106, 108, 110, 112, 114, 116, 118-1 . . . 118-N of the content delivery system 100. For example, the service broker may receive requests or instructions for adding or deleting transcoding engine(s) from the transcoding system 114 as part of the feedback information. In another example, the service broker may receive requests or instructions to add or delete transcoding engine(s) from the content source 116.
In the embodiment depicted in
In the embodiment depicted in
In an exemplary operation of the transcoding broker 208, the states of the transcoding engines 118-1 . . . 118-N are stored in the service broker 230 and transcoding requests are received at the transcoding engine proxy 232. Transcoding engines are selected by the transcoding engine proxy based on the types of content elements identified in the requests and the selections are routed to the corresponding transcoding engines. Transcoding requests might get deferred in a queue based on the policies. In an embodiment, performance statistics for the transcoding engines are regularly transmitted to the service broker. By intelligent and informative routing, deferred transcoding, and tracking the performances of the transcoding engines, the transcoding broker enables an optimal usage of the computing power of all of the transcoding engines in the transcoding system.
A hybrid transcoding infrastructure can be used to perform the transcoding of content elements.
The cloud based transcoding infrastructure 322 allows a cost effective and quicker deployment of the transcoding engines 118-1 . . . 118-N. The hosting of transcoding engines on the cloud can be based on need. Compared to hosting the transcoding engines locally, hosting the transcoding engines in the cloud can save hardware investments. Typically in festive seasons with the increasing transcoding request traffic, there is a need for additional computing power. Generally, the transcoding request traffic patterns are predictive and are bursty in nature. Thus, the cloud based transcoding infrastructure can be planned to be setup and used for a specific time period to offload the transcoding jobs. In an embodiment, transcoding latency and/or state of busyness, such as CPU utilization, of the local transcoding infrastructure is observed. By offloading the transcoding jobs to the cloud based transcoding infrastructure, the optimal load on the local transcoding infrastructure 324 can be maintained. In addition, the optimal service processing time and the user experience can be maintained even under increasing transcoding requests traffic, which can help to increase customer loyalty. Furthermore, the cloud based transcoding infrastructure can increase transcoding service throughout and be scaled quicker than the local transcoding infrastructure.
Although the operations herein are shown and described in a particular order, the order of the operations may be altered so that certain operations may be performed in an inverse order or so that certain operations may be performed, at least in part, concurrently with other operations. In another embodiment, instructions or sub-operations of distinct operations may be implemented in an intermittent and/or alternating manner.
It should also be noted that at least some of the operations may be implemented using software instructions stored on a computer useable storage medium for execution by a computer. As an example, an embodiment of a computer program product includes a computer useable storage medium to store a computer readable program that, when executed on a computer, causes the computer to perform operations, as described herein.
Furthermore, embodiments of at least portions of the invention can take the form of a computer program product accessible from a computer-usable or computer-readable medium providing program code for use by or in connection with a computer or any instruction execution system. For the purposes of this description, a computer-usable or computer readable medium can be any apparatus that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device.
The computer-useable or computer-readable medium can be an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system (or apparatus or device), or a propagation medium. Examples of a computer-readable medium include a semiconductor or solid state memory, magnetic tape, a removable computer diskette, a random access memory (RAM), a read-only memory (ROM), a rigid magnetic disk, and an optical disk. Current examples of optical disks include a compact disk with read only memory (CD-ROM), a compact disk with read/write (CD-R/W), and a digital video disk (DVD).
In an embodiment, at least one of the functionalities of components of the content delivery system 100, such as the transcoding broker 108 of
In the above description, specific details of various embodiments are provided. However, some embodiments may be practiced with less than all of these specific details. In other instances, certain methods, procedures, components, structures, and/or functions are described in no more detail than to enable the various embodiments of the invention, for the sake of brevity and clarity.
Although specific embodiments of the invention have been described and illustrated, the invention is not to be limited to the specific forms or arrangements of parts so described and illustrated. The scope of the invention is to be defined by the claims appended hereto and their equivalents.