A media streaming player may download a media stream from a media source. A media stream is a sequential set of media data that the media streaming player may present to a user while the media stream is being downloaded from the media source. The media source may format the media stream according to a streaming protocol. A streaming protocol is a set of rules that delineate the format of the media stream and the procedure for accessing the media stream. The media streaming player may be designed to decode the media stream according to the streaming protocol.
This Summary is provided to introduce a selection of concepts in a simplified form that is further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter.
Examples discussed below relate to a streaming media player capable of selecting at least one media stream from a plurality media streams based on network conditions. A communication interface may receive a chosen media stream having a chosen bitrate and an alternate media stream having an alternate bitrate on a communication network and configured to determine a bandwidth average for the communication network. An adaptive streaming selector may switch from the chosen media stream to the alternate media stream based in part on the bandwidth average. A media pipeline may render the chosen media stream into a chosen media presentation and the alternate media stream into an alternate media presentation. An output device may present the chosen media presentation and the alternate media presentation to a user.
In order to describe the manner in which the above-recited and other advantages and features can be obtained, a more particular description is set forth and will be rendered by reference to specific examples thereof which are illustrated in the appended drawings. Understanding that these drawings depict only typical examples and are not therefore to be considered to be limiting of its scope, implementations will be described and explained with additional specificity and detail through the use of the accompanying drawings.
Examples are discussed in detail below. While specific implementations are discussed, it should be understood that this is done for illustration purposes only. A person skilled in the relevant art will recognize that other components and configurations may be used without parting from the spirit and scope of the subject matter of this disclosure. The implementations may be a machine-implemented method, a computing device, or a streaming media player.
An adaptive streaming selector may interface with media streams formatted according to multiple protocols using specific parsers that convert a manifest compliant with a given protocol to an abstract manifest to communicate with an adaptive streaming selector. The abstract manifest may allow any arbitrary protocol and manifest format to be plugged into the adaptive streaming selector. The adaptive streaming selector may automatically select content for downloading and streaming based on the abstract manifest. The adaptive streaming selector may then interface with a buffering module to process media streams across any standards-compliant browser and platform.
Thus, in one example, a streaming media player may play a media streaming set regardless of the streaming protocol used to format the media streaming set. A communication interface may receive a manifest describing a media stream set of or more media streams formatted compliant with a streaming protocol. The communication interface may select a manifest parser based on the streaming protocol. A processing core may use a manifest parser to convert the manifest from being formatted compliant with the streaming protocol into an abstract manifest in an abstract format to allow selection across streaming protocols. The processing core may execute an adaptive streaming selector that selects a chosen media stream of the media stream set based in part on the abstract manifest. The processing core may execute a media pipeline to render the chosen media stream into a chosen media presentation. An output device may present the chosen media presentation to a user.
Further, the adaptive streaming selector may use the abstract manifest to identify a bitrate for a media stream. The adaptive streaming selector may select a chosen media stream of a plurality of media streams having a chosen bitrate. The communication interface may receive the chosen media stream on a communication network. The media pipeline may render the chosen media stream into a chosen media presentation to present to the user. The communication interface may determine a bandwidth average for the communication network. The adaptive streaming selector may switch to an alternate media stream of the media stream set having an alternate bitrate based in part on the bandwidth average or on a buffered amount of media. The media pipeline may render the alternate media stream into an alternate media presentation to present to the user.
The media application 112 may access a stream manifest describing a media stream set of one or more media streams formatted compliant with a streaming protocol. The media source 120 may format the media stream set according to a streaming protocol. For example, a streaming protocol may be Hypertext Transfer Protocol (HTTP) Live Streaming (HLS), Dynamic Adaptive Streaming over HTTP (DASH), or Internet Information Services (IIS) Smooth Streaming. The manifest may be formatted according to the same streaming protocol as the media stream set. The media application 112 may use the manifest to select a media stream of the media stream set.
The processing core 220 may include at least one conventional processor or microprocessor that interprets and executes a set of instructions. The processing core 220 may be configured to execute one or more manifest parsers, an adaptive streaming selector, a buffering module, a media element, an encryption module, or a media pipeline. The memory 230 may be a random access memory (RAM) or another type of dynamic data storage that stores information and instructions for execution by the processing core 220. The memory 230 may also store temporary variables or other intermediate information used during execution of instructions by the processing core 220. The memory 230 may be configured to store a streaming media buffer. The memory 230 may be configured to identify a memory pressure describing a buffer percentage of memory used by the streaming media buffer in relation to a general percentage of memory used by other applications.
The data storage 240 may include a conventional ROM device or another type of static data storage that stores static information and instructions for the processing core 220. The data storage 240 may include any type of tangible machine-readable medium, such as, for example, magnetic or optical recording media, such as a digital video disk, and its corresponding drive. A tangible machine-readable medium is a physical medium storing machine-readable code or instructions, as opposed to a signal. Having instructions stored on computer-readable media as described herein is distinguishable from having instructions propagated or transmitted, as the propagation transfers the instructions, versus stores the instructions such as can occur with a computer-readable medium having instructions stored thereon. Therefore, unless otherwise noted, references to computer-readable media/medium having instructions stored thereon, in this or an analogous form, references tangible media on which data may be stored or retained. The data storage 240 may store a set of instructions detailing a method that when executed by one or more processors cause the one or more processors to perform the method. The data storage 240 may also be a database or a database interface for storing a media stream set or a streaming manifest.
The input device 250 may include one or more conventional mechanisms that permit a user to input information to the computing device 200, such as a keyboard, a mouse, a voice recognition device, a microphone, a headset, a touch screen 252, a touch pad 254, a gesture recognition device 256, etc. The input device 250 may be configured to receive a user selection of a media stream option from the user.
The output device 260 may include one or more conventional mechanisms that output information to the user, including a display screen 262, a printer, one or more speakers 264, a headset, a vibrator, or a medium, such as a memory, or a magnetic or optical disk and a corresponding disk drive. The output device 260 may be configured to present at least one of a chosen media presentation or an alternate media presentation to a user.
The communication interface 270 may include any transceiver-like mechanism that enables computing device 200 to communicate with other devices or networks. The communication interface 270 may include a network interface or a transceiver interface. The communication interface 270 may be a wireless, wired, or optical interface. The communication interface 270 may be configured to receive a manifest describing a media stream set with the manifest and each media stream in the media stream set formatted compliant with a streaming protocol. The communication interface 270 may be configured to select a manifest parser based on the streaming protocol. The communication interface 270 may be configured to receive a media stream of the plurality of media streams on a communication network, such as a chosen media stream having a chosen bitrate and an alternate media stream having an alternate bitrate. The communication interface 270 may be configured to determine a bandwidth average for a communication network. The communication interface 270 may be configured to identify a link speed for the communication network.
The computing device 200 may perform such functions in response to processing core 220 executing sequences of instructions contained in a computer-readable medium, such as, for example, the memory 230, a magnetic disk, or an optical disk. Such instructions may be read into the memory 230 from another computer-readable medium, such as the data storage 240, or from a separate device via the communication interface 260.
Returning to
The adaptive streaming selector 320 may switch from a chosen media stream to an alternate media stream based in part on a result of a comparison of an alternate bitrate in the abstract manifest to a bandwidth average for the communication network. The alternate bitrate may then be the chosen bitrate. The adaptive streaming selector 320 may start at the lowest bitrate media stream or a median bitrate media stream and progressively switch to higher bitrates as the bandwidth allows. Alternately, a media application developer may override the default behavior and select a media stream. Further, the media application may store historical bandwidth data and select a media stream based on past results. The adaptive streaming selector 320 may switch to a different media stream upon identifying an error in the chosen media stream.
An adaptive streaming selector 320 may pre-fetch and buffer streaming media across streaming protocols and deliver the streaming media to a buffering module 330. The buffering module 330 may use a streaming specification, such as Media Source Extensions. Media Source Extensions is a World Wide Web Consortium (W3C) specification for media streaming. The buffering module 330 may identify a buffered amount of the chosen media stream for a streaming media buffer as measured in time. For example, a streaming media buffer may have stored five minutes of content. The adaptive streaming selector 320 may adjust a buffer size of the streaming media buffer stored in memory based on at least one of the alternate bitrate of the alternate media stream or a memory pressure for the memory. The adaptive streaming selector 320 may set a high watermark, a low watermark, and an emergency watermark for the streaming media buffer stored in memory based on at least one of the chosen bitrate of the chosen media stream, a memory pressure for the memory, and a device power level for the media streaming player. The adaptive streaming selector 320 may pause a download of the chosen media stream when the buffered amount reaches a high watermark of the streaming media buffer. The adaptive streaming selector 320 may restart the download of the alternate media stream when the buffered amount reaches a low watermark of the streaming media buffer. The adaptive streaming selector 320 may switch to a low bitrate media stream to avoid buffering in response to the buffered amount reaching an emergency watermark of the streaming media buffer.
A media element 340 may present at least one of a stream content descriptor and a variant stream descriptor associated with a media stream option of the media stream set to a user. The media element 340 may receive a user selection of a media stream option from the user via an input device. The media element 340 may process the user selection of the media stream option to influence selection of the chosen media stream by the adaptive streaming selector 320. The media element 340 may also process a developer directive to influence selection of the chosen media stream by the adaptive streaming selector 320. The media element 340 may decrypt chosen media stream using an encryption module 350, such as an Encrypted Media Extensions module. Encrypted Media Extensions is a World Wide Web Consortium specification that facilitates playing digital rights management encrypted content.
A media pipeline 360 may render the chosen media stream into a media presentation. The media pipeline 360 may pass the media presentation to an output device for presentation to a user. The media element 340 may present the stream content descriptor to the user identifying the media presentation being played.
The adaptive streaming selector may receive a bandwidth average for the communication network (Block 916). The adaptive streaming selector 320 may identify a buffered amount of the chosen media stream in the streaming media buffer (Block 918). If the average bandwidth allows for a higher stream bitrate than the chosen bitrate of the chosen media stream or is lower than the chosen bitrate (Block 920), the adaptive streaming selector may switch to an alternate media stream based on a result of a comparison of an alternate bitrate in the abstract manifest to the bandwidth average for a communication network or based on the buffered amount of the chosen media stream (Block 922). The adaptive streaming selector 320 may identify a memory pressure for the memory storing the streaming media buffer (Block 924). The adaptive streaming selector 320 may identify a device power level for the streaming media player (Block 926). The adaptive streaming selector 320 may adjust a buffer size of the streaming media buffer based on the alternate bitrate of the alternate media stream or the memory pressure for the memory storing the streaming media buffer (Block 928). The adaptive streaming selector 320 may adjust the high watermark, the low watermark, and the emergency watermark for the streaming media buffer based on the alternate bitrate of the alternate media stream, a memory pressure for a memory storing the streaming media buffer, or a device power level (Block 930). The adaptive streaming selector may receive the alternate media stream from the communication interface (Block 932).
Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms for implementing the claims.
Examples within the scope of the present invention may also include computer-readable storage media for carrying or having computer-executable instructions or data structures stored thereon. Such computer-readable storage media may be any available media that can be accessed by a general purpose or special purpose computer. By way of example, and not limitation, such computer-readable storage media can comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic data storages, or any other medium which can be used to carry or store desired program code means in the form of computer-executable instructions or data structures. Combinations of the above should also be included within the scope of the computer-readable storage media.
Examples may also be practiced in distributed computing environments where tasks are performed by local and remote processing devices that are linked (either by hardwired links, wireless links, or by a combination thereof) through a communications network.
Computer-executable instructions include, for example, instructions and data which cause a general purpose computer, special purpose computer, or special purpose processing device to perform a certain function or group of functions. Computer-executable instructions also include program modules that are executed by computers in stand-alone or network environments. Generally, program modules include routines, programs, objects, components, and data structures, etc. that perform particular tasks or implement particular abstract data types. Computer-executable instructions, associated data structures, and program modules represent examples of the program code means for executing steps of the methods disclosed herein. The particular sequence of such executable instructions or associated data structures represents examples of corresponding acts for implementing the functions described in such steps.
Although the above description may contain specific details, they should not be construed as limiting the claims in any way. Other configurations of the described examples are part of the scope of the disclosure. For example, the principles of the disclosure may be applied to each individual user where each user may individually deploy such a system. This enables each user to utilize the benefits of the disclosure even if any one of a large number of possible applications do not use the functionality described herein. Multiple instances of electronic devices each may process the content in various possible ways. Implementations are not necessarily in one system used by all end users. Accordingly, the appended claims and their legal equivalents should only define the invention, rather than any specific examples given.
This application claims priority from U.S. Provisional Patent Application Ser. No. 62/105,727, filed Jan. 20, 2015, the contents of which are incorporated herein by reference in its entirety.
Number | Date | Country | |
---|---|---|---|
62105727 | Jan 2015 | US |