US-12621513-B2 - Cloud media player
Abstract
Techniques for providing multimedia content by a cloud media player are described herein. In some embodiments, the cloud media player is hosted by one or more servers that include one or more processors and a non-transitory memory. The cloud media player receives a request to play a media content item at a client device. The cloud media player identifies, based at least in part on client conditions at time of the request, one or more units of the media content item for the client device to download according to a manifest obtained and parsed by the one or more servers. The cloud media player then signals to the client device the one or more units to download.
Inventors
- Amotz TEREM
- Reuven Nimrod
- Avi Fruchter
- Enrique Gerstl
Assignees
- SYNAMEDIA LIMITED
Dates
- Publication Date
- 20260505
- Application Date
- 20230302
Claims (19)
- 1 . A method comprising: at one or more servers hosting multiple instances of a cloud media player, wherein the one or more servers include one or more processors and a non-transitory memory: receiving a request to play a media content item by a client media player at a client device, wherein the request includes client buffer conditions for playing the media content item by the client media player and a position to play at the client media player; allocating an instance of the cloud media player to serve the request; and emulating, by the instance of the cloud media player, to play the media content item, including: requesting the media content item from a content delivery network (CDN) and obtaining from the CDN a manifest associated with the request; identifying from the manifest, based at least in part on the client buffer conditions, one or more links to one or more units of the media content item, wherein the manifest is parsed by the one or more servers without being downloaded or parsed by the client device to identify the one or more links to the one or more units that have a bitrate specified in the manifest corresponding to the client buffer conditions and correspond to the position; and signaling the one or more links to the client device for downloading the one or more units and playing the one or more units by the client player.
- 2 . The method of claim 1 , further comprising obtaining network statistics associated with downloading the media content item.
- 3 . The method of claim 1 , further comprising obtaining client conditions derived from client statistics associated with a network connecting the client device to the one or more servers.
- 4 . The method of claim 1 , wherein identifying from the manifest, based at least in part on the client buffer conditions, the one or more links to the one or more units of the media content item includes: parsing the manifest to obtain bitrate options corresponding to the one or more units; and matching the client buffer conditions with the bitrate options to identify the one or more units corresponding to the bitrate.
- 5 . The method of claim 1 , further comprising: parsing the manifest to identify multiple bitrate options for the one or more units; and causing the client device to select an option from the multiple bitrate options to download based on local buffer and network conditions.
- 6 . The method of claim 1 , wherein: a format of the media content item is agnostic to the client device; and the method further includes re-encoding the one or more units to a different format playable by the client media player.
- 7 . The method of claim 1 , further comprising: detecting an update to a format of the manifest, wherein the format of the manifest is agnostic to the client device; and parsing the manifest according to the update to the format for the client device to extract the one or more links.
- 8 . The method of claim 1 , wherein: the request is a unit request transmitted by the client device while the client device downloads a set of units at a first bitrate; and the one or more units identified by the one or more servers correspond to a second bitrate according to the manifest.
- 9 . The method of claim 8 , wherein the first bitrate is different from the second bitrate, and the method further includes: projecting the download of the set of units at the first bitrate does not satisfy a performance criterion based on the client buffer conditions; and signaling the client device to cease downloading the set of units.
- 10 . The method of claim 1 , wherein the parsed manifest is stored as a cached manifest in the non-transitory memory shared by multiple instances of the cloud media player, and the method further includes: receiving a subsequent request for the media content item; retrieving the cached manifest from the non-transitory memory in response to receiving the subsequent request; and identifying a set of links to a set of units according to the cached manifest without parsing.
- 11 . The method of claim 1 , further comprising: substituting the one or more links to the one or more units with a set of links to alternative content, wherein signaling the one or more links to the client device includes signaling the set of links to the alternative content to the client device.
- 12 . The method of claim 1 , further comprising: establishing a communication channel between the client device and the server to receive the request and the client buffer conditions, wherein the communication channel is separate from a channel used by the client device for downloading the one or more units, wherein signaling the one or more links to the client device includes providing, via the communication channel, the one or more links directed to the CDN.
- 13 . The method of claim 12 , wherein the communication channel is a stateless communication channel, and the request includes cookies indicating playout status at the client device, and the cookies are sent over the stateless communication channel.
- 14 . The method of claim 1 , further comprising: playing, by the instance of the cloud media player, the media content item according to the client buffer conditions for compositing a transition from the media content item to a user interface video for the client device.
- 15 . A server hosting multiple instances of a cloud media player, the server comprising: one or more processors; a non-transitory memory; and one or more programs stored in the non-transitory memory, which, when executed by the one or more processors, cause the server to: receive a request to play a media content item by a client media player at a client device, wherein the request includes client buffer conditions for playing the media content item by the client media player and a position to play at the client media player; allocate an instance of the cloud media player to serve the request; and emulate, by the instance of the cloud media player, to play the media content item, including: requesting the media content item from a content delivery network (CDN) and obtain from the CDN a manifest associated with the request; identifying from the manifest, based at least in part on the client conditions, one or more links to one or more units of the media content item, wherein the manifest is parsed by the one or more servers without being downloaded or parsed by the client device to identify the one or more links to the one or more units that have a bitrate specified in the manifest corresponding to the client buffer conditions and correspond to the position; and signaling the one or more links to the client device for downloading the one or more units and playing the one or more units by the client player.
- 16 . The server of claim 15 , wherein the one or more programs, which, when executed by the one or more processors, further cause the server to obtain network statistics associated with downloading the media content item.
- 17 . The server of claim 15 , wherein the one or more programs, which, when executed by the one or more processors, further cause the server to obtain client conditions derived from client statistics associated with a network connecting the client device to the server.
- 18 . The server of claim 15 , wherein identifying from the manifest, based at least in part on the client buffer conditions, the one or more links to the one or more units of the media content item includes: parsing the manifest to obtain bitrate options corresponding to the one or more units; and matching the client buffer conditions with the bitrate options to identify the one or more units corresponding to the bitrate.
- 19 . A non-transitory memory storing one or more programs which, when executed by one or more servers hosting multiple instances of a cloud media player, cause the one or more servers to: receive a request to play a media content item by a client media player at a client device, wherein the request includes client buffer conditions for playing the media content item by the client media player and a position to play at the client media player; allocate an instance of the cloud media player to serve the request; and emulate, by the instance of the cloud media player, to play the media content item, including: requesting the media content item from a content delivery network (CDN) and obtaining from the CDN a manifest associated with the request; identifying from the manifest, based at least in part on the client buffer conditions, one or more links to one or more units of the media content item, wherein the manifest is parsed by the one or more servers without being downloaded or parsed by the client device to identify the one or more links to the one or more units that have a bitrate specified in the manifest corresponding to the client buffer conditions and correspond to the position; and signaling the one or more links to the client device for downloading the one or more units and playing the one or more units by the client player.
Description
TECHNICAL FIELD The present disclosure relates generally to multimedia content delivery and, more specifically, to a cloud media player. BACKGROUND Previously existing adaptive bitrate (ABR) players for playing videos typically run on client devices. Videos come in many formats, such as HTTP Live Streaming (HLS), Dynamic Adaptive Streaming over HTTP (DASH), MP4, Transport Stream (TS), and more. Activities associated with playing videos on the client devices, such as player logging, interpreting various video formats, and downloading updates, etc. often consume a significant amount of computational resources and storage space on client devices. For thin client devices, limited local resources place constraints on the performance of playing various types of videos. BRIEF DESCRIPTION OF THE DRAWINGS So that the present disclosure can be understood by those of ordinary skill in the art, a more detailed description may be had by reference to aspects of some illustrative embodiments, some of which are shown in the accompanying drawings. FIG. 1 is a block diagram of a multimedia content delivery system with an exemplary cloud media player, in accordance with some embodiments; FIG. 2 is a block diagram illustrating content delivery from a cloud platform with multiple cloud media players, in accordance with some embodiments; FIGS. 3A-3C are diagrams illustrating signaling by the exemplary cloud media player, in accordance with some embodiments; and FIGS. 4A-4C are flowcharts illustrating a method performed at the exemplary cloud media player for providing streaming media content to client devices, in accordance with some embodiments; and FIG. 5 is a block diagram of a computing device for hosting a cloud media player, in accordance with some embodiments. In accordance with common practice the various features illustrated in the drawings may not be drawn to scale. Accordingly, the dimensions of the various features may be arbitrarily expanded or reduced for clarity. In addition, some of the drawings may not depict all of the components of a given system, method, or device. Finally, like reference numerals may be used to denote like features throughout the specification and figures. DESCRIPTION OF EXAMPLE EMBODIMENTS Numerous details are described in order to provide a thorough understanding of the example embodiments shown in the drawings. However, the drawings merely show some example aspects of the present disclosure and are therefore not to be considered limiting. Those of ordinary skill in the art will appreciate that other effective aspects and/or variants do not include all of the specific details described herein. Moreover, well-known systems, methods, components, devices, and circuits have not been described in exhaustive detail so as not to obscure more pertinent aspects of the example embodiments described herein. Overview A cloud media player described herein addresses the aforementioned issues by running adaptive bitrate (ABR) players in the cloud for client devices. In some embodiments, through a communication channel between the cloud media player and a client device, the client device informs the cloud of client conditions, e.g., buffers, download bitrate, and/or network statistics, etc. The communication channel allows the cloud media player to route client requests to proper units for downloading. Furthermore, the communication channel allows the cloud media player to signal the client device about ongoing download(s) when necessary, e.g., canceling a download, pausing a download, deleting packets as part of buffer management, and/or starting to download an alternative unit, etc. In accordance with various embodiments, a method is performed at a cloud media player hosted by one or more servers that include one or more processors and a non-transitory memory. The method includes the cloud media player receiving a request to play a media content item at a client device. The method further includes the cloud media player identifying, based at least in part on client conditions at time of the request, one or more units of the media content item for the client device to download according to a manifest obtained and parsed by the one or more servers. The method additionally includes the cloud media player signaling to the client device the one or more units to download. EXAMPLE EMBODIMENTS Methods, devices, and systems in accordance with various embodiments described herein allow a cloud media player to perform computationally resource-intensive tasks related to playing multimedia in the cloud for client devices. In some embodiments, in response to a request for content from a client device, the cloud media player obtains a manifest associated with the content and parses the manifest to signal to the client relevant unit(s) to download. In some embodiments, when preparing to signal to the client device which unit(s) to download, the cloud media player determines the bitrate for the download based on the amo