Predictive adaptive media streaming
First Claim
1. A method for controlling streaming of media content from a server to a client, wherein the server has access to a plurality of variable bit rate (VBR) versions of the media content, the method comprising carrying out the following functions for each of a plurality of sequentially occurring portions of the media content while the media content is being streamed from the server to the client:
- identifying, in advance of the portion of the media content being received by the client, one or more of the VBR versions of the media content, the identifying being based at least in part on determining that the portion of media content in each of the one or more VBR versions has a bit rate lower than a bandwidth threshold;
selecting, from the determined one or more VBR versions of the media content, a highest bit-rate VBR version of the media content; and
causing the selected VBR version of the media content to be streamed from the server to the client,the method further comprising storing an index of the media content, the index containing data representing bit rates of the VBR versions over time, wherein selecting, from the determined one or more VBR versions of the media content, a highest bit-rate VBR version of the media content comprises using the stored index as a basis for determining a bit rate of each VBR version of the media content over the next sequential portion of the media content.
2 Assignments
0 Petitions
Accused Products
Abstract
A method and corresponding apparatus for controlling streaming of media content from a server to a client. A computing device predicts the bit rate of an upcoming portion of the media content for each of a plurality of variable bit-rate versions of the media content, and uses the predicted bit rates, as well as a measure of network bandwidth, as a basis to select one of the variable bit-rate versions to be streamed to the client. By repeating this prediction and selection function on a sliding window basis over the course of the media content, the selection of variable bit-rate version can dynamically change, to help accommodate variations in bit rate throughout the media content as well as variations in network bandwidth.
48 Citations
30 Claims
-
1. A method for controlling streaming of media content from a server to a client, wherein the server has access to a plurality of variable bit rate (VBR) versions of the media content, the method comprising carrying out the following functions for each of a plurality of sequentially occurring portions of the media content while the media content is being streamed from the server to the client:
-
identifying, in advance of the portion of the media content being received by the client, one or more of the VBR versions of the media content, the identifying being based at least in part on determining that the portion of media content in each of the one or more VBR versions has a bit rate lower than a bandwidth threshold; selecting, from the determined one or more VBR versions of the media content, a highest bit-rate VBR version of the media content; and causing the selected VBR version of the media content to be streamed from the server to the client, the method further comprising storing an index of the media content, the index containing data representing bit rates of the VBR versions over time, wherein selecting, from the determined one or more VBR versions of the media content, a highest bit-rate VBR version of the media content comprises using the stored index as a basis for determining a bit rate of each VBR version of the media content over the next sequential portion of the media content. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A non-transitory computer readable medium having stored thereon instructions executable to cause a device to carry out the following functions for each of a plurality of sequentially occurring portions of media content during streaming of the media content from a server to the device:
-
determining network bandwidth for communication from the server to the device; identifying, in advance of the portion of the media content being received by the device, one or more of a plurality of variable bit rate (VBR) versions of the media content, the identifying being based at least in part on the portion of the media content in each of the one or more VBR versions having a bit rate less than or equal to the determined network bandwidth; selecting, from the identified one or more VBR versions of the media content, a highest bit-rate VBR version of the media content; and transmitting to the server a control signal requesting the server to stream the selected VBR version of the media content to the device, wherein the instructions are further executable to cause the device to receive and store an index of the media content, the index including data representing bit rates of the plurality of VBR versions over time, wherein the data in the index specifies, for each VBR version of the plurality, sizes and durations of sequential chunks of the VBR version, wherein identifying one or more of the VBR versions of the media content comprises using the index as a basis for the identifying, and wherein using the index as a basis for the identifying comprises (i) determining from the index a measure of chunk-size per time for the portion of the media content, (ii) using the determined measure as a representation of bit rate of the portion of the media content, and (iii) determining that the VBR version is one in which the portion of the media content will have a bit rate less than or equal to the determined network bandwidth if the representation of bit rate of the portion of the media content is less than or equal to the determined network bandwidth. - View Dependent Claims (11, 12, 13, 14, 15, 16, 17, 18)
-
-
19. A non-transitory computer readable medium having stored thereon instructions executable to cause a device to carry out the following functions for each of a plurality of sequentially occurring portions of media content during streaming of the media content from a server to the device:
-
determining network bandwidth for communication from the server to the device; identifying, in advance of the portion of the media content being received by the device, one or more of a plurality of variable bit rate (VBR) versions of the media content, the identifying being based at least in part on the portion of the media content in each of the one or more VBR versions having a bit rate less than or equal to the determined network bandwidth; selecting, from the identified one or more VBR versions of the media content, a highest bit-rate VBR version of the media content; and transmitting to the server a control signal requesting the server to stream the selected VBR version of the media content to the device, wherein the instructions are further executable to cause the device to receive and store an index of the media content, the index including data representing bit rates of the plurality of VBR versions over time, wherein the data in the index specifies for each VBR version a mapping between media content time positions and media content data positions, wherein identifying one or more of the VBR versions of the media content comprises using the index as a basis for the identifying, and wherein using the index as a basis for the identifying comprises (i) determining from the index a measure of media content data-size per time-range for the portion of the media content, (ii) using the measure as a representation of bit rate of the portion of the media content, and (iii) determining that the VBR version is one in which the portion of the media content will have a bit rate less than or equal to the determined network bandwidth if the representation of bit rate of the portion of the media content is less than or equal to the determined network bandwidth. - View Dependent Claims (20, 21, 22, 23, 24, 25, 26, 27)
-
-
28. A computing device comprising:
-
a network communication interface; a user interface; a processor; data storage; and program instructions stored in the data storage and executable by the processor to carry out at least the following functions; (a) receiving, by the network communication interface, media content being streamed to the computing device from a server, (b) playing out, at the user interface, the media content being received; and (c) while receiving the media content being streamed to the computing device from the server, periodically (i) determining a measure of network bandwidth for communication from the server to the computing device, (ii) evaluating a plurality of variable-bit-rate (VBR) versions of the media content and selecting, from the plurality of VBR versions, a highest bit-rate VBR version having a bit rate over an upcoming sliding window of the media content that will be less than or equal to the determined network bandwidth, and (iii) transmitting by the network communication interface to the server a request for the server to stream the selected VBR version to the computing device, wherein the data storage holds an index of the media content, the index containing data representing bit rates of the VBR versions over time, wherein evaluating the plurality of VBR versions of the media content and selecting, from the plurality of VBR versions, a highest bit-rate VBR version having a bit rate over an upcoming sliding window of the media content that will be less than or equal to the determined network bandwidth comprises using the index as a basis for determining a bit rate of each VBR version of the media content over the upcoming sliding window of the media content. - View Dependent Claims (29, 30)
-
Specification