Server side stream switching
First Claim
1. A method of providing content, comprising:
- under control of one or more computer systems configured with executable instructions,receiving, from a client to a content provider, a first request for a first subset of the content, the content corresponding to a plurality of versions, each of the plurality of versions corresponding to a different quality level;
transmitting, from the content provider to the client, a first portion of the content in response to the first request, the first portion comprising a default version of the content and corresponding to the first request for the first subset of the content;
determining, by the content provider, a transmission rate at which the client receives the first portion of the content;
receiving, from the client to the content provider, a second request for a second subset of the content;
estimating, by the content provider, a respective bit rate for transmitting each of the plurality of versions of the content to the client based at least in part on the transmission rate;
determining, by the content provider, a plurality of threshold values for the plurality of versions of the content, a respective threshold value being based at least in part on the respective bit rate for a respective version of the plurality of versions and a respective predetermined factor based on a respective quality level of the respective version;
selecting, by the content provider, a specific version of the plurality of versions based at least in part on comparing the transmission rate to the plurality of threshold values;
generating a new key frame based at least in part on a first frame of the specific version in response to determining that the first frame is between key frames, the first frame corresponding to a start of the second subset of the content;
re-encoding one or more frames of the specific version based at least in part on the new key frame, the one or more re-encoded frames following the first frame and sequenced prior to a next key frame of the specific version; and
transmitting, from the content provider to the client, a second portion of the content in response to the second request, the second portion comprising the new key frame, the one or more re-encoded frames, and a remaining portion of the specific version that follows the next key frame and that corresponds to the second request for the second subset of the content.
1 Assignment
0 Petitions
Accused Products
Abstract
Technology is provided for dynamically adjusting the delivery of content by switching streams during delivery in order to adapt to bandwidth information. A server (or set of servers) storing content transmits one or more portions of a first version of a set content to a client and monitors that transmission (or other transmission) to determine bandwidth information. The server determines whether to switch versions of the set of content based on the bandwidth information. One or more additional portions of the first version of the set of content are transmitted from the server to the client if the server determines that it should not switch versions of the set of content. One or more portions of a second version of the set of content are transmitted from the server to the client if the server determines that it should switch versions. The first version of the set of content and the second version of the set of content are at different quality levels.
184 Citations
17 Claims
-
1. A method of providing content, comprising:
under control of one or more computer systems configured with executable instructions, receiving, from a client to a content provider, a first request for a first subset of the content, the content corresponding to a plurality of versions, each of the plurality of versions corresponding to a different quality level; transmitting, from the content provider to the client, a first portion of the content in response to the first request, the first portion comprising a default version of the content and corresponding to the first request for the first subset of the content; determining, by the content provider, a transmission rate at which the client receives the first portion of the content; receiving, from the client to the content provider, a second request for a second subset of the content; estimating, by the content provider, a respective bit rate for transmitting each of the plurality of versions of the content to the client based at least in part on the transmission rate; determining, by the content provider, a plurality of threshold values for the plurality of versions of the content, a respective threshold value being based at least in part on the respective bit rate for a respective version of the plurality of versions and a respective predetermined factor based on a respective quality level of the respective version; selecting, by the content provider, a specific version of the plurality of versions based at least in part on comparing the transmission rate to the plurality of threshold values; generating a new key frame based at least in part on a first frame of the specific version in response to determining that the first frame is between key frames, the first frame corresponding to a start of the second subset of the content; re-encoding one or more frames of the specific version based at least in part on the new key frame, the one or more re-encoded frames following the first frame and sequenced prior to a next key frame of the specific version; and transmitting, from the content provider to the client, a second portion of the content in response to the second request, the second portion comprising the new key frame, the one or more re-encoded frames, and a remaining portion of the specific version that follows the next key frame and that corresponds to the second request for the second subset of the content. - View Dependent Claims (2, 3, 4)
-
5. A method of providing content, comprising:
under control of one or more computer systems configured with executable instructions, transmitting, from a content provider to a client, a first portion of the content, the content corresponding to a plurality of versions, each of the plurality of versions corresponding to a different quality level, the first portion comprising a default version of the content; determining, by the content provider, a transmission rate at which the client receives the first portion of the content; estimating, by the content provider, a respective bit rate for transmitting each of the plurality of versions of the content to the client based at least in part on the transmission rate; determining, by the content provider, a plurality of threshold values for the plurality of versions of the content, a respective threshold value being based at least in part on the respective bit rate for a respective version of the plurality of versions and a respective predetermined factor based on a respective quality level of the respective version; selecting, by the content provider, a specific version of the plurality of versions based at least in part on comparing the transmission rate to the plurality of threshold values; generating a new key frame based at least in part on a first frame of the specific version in response to determining that the first frame is between key frames, the first frame corresponding to a start of a second portion of the content; re-encoding one or more frames of the specific version based at least in part on the new key frame, the one or more re-encoded frames following the first frame and sequenced prior to a next key frame of the specific version; and transmitting, from the content provider to the client, the second portion of the content, the second portion comprising the new key frame, the one or more re-encoded frames, and a remaining portion of the specific version that follows the next key frame. - View Dependent Claims (6, 7, 8, 9, 10)
-
11. A method of providing content, comprising:
under control of one or more computer systems configured with executable instructions, receiving, from a client to a content provider, a first request for the content, the content corresponding to a plurality of versions, each of the plurality of versions corresponding to a different quality level; sending, from the content provider to the client, an acknowledgement of the first request, the acknowledgement including information about a first version of the content; receiving, from the client to the content provider, a second request for a first range in the first version of the content; transmitting, from the content provider to the client, a first portion of the content in response to the second request, the first portion comprising a default version of the content and corresponding to the first range in the first version of the content; determining, by the content provider, a transmission rate at which the client receives the first portion of the content; receiving, from the client to the content provider, a third request for a second range in the first version of the content; estimating, by the content provider, a respective bit rate for transmitting each of the plurality of versions of the content to the client based at least in part on the transmission rate; determining, by the content provider, a plurality of threshold values for the plurality of versions of the content, a respective threshold value being based at least in part on the respective bit rate for a respective version of the plurality of versions and a respective predetermined factor based on a respective quality level of the respective version; selecting, by the content provider, a specific version of the plurality of versions based at least in part on comparing the transmission rate to the plurality of threshold values; generating a new key frame based at least in part on a first frame of the specific version in response to determining that the first frame is between key frames, the first frame corresponding to a start of the second range in the first version of the content; re-encoding one or more frames of the specific version based at least in part on the new key frame, the one or more re-encoded frames following the first frame and sequenced prior to a next key frame of the specific version; and transmitting, from the content provider to the client, a second portion of the content in response to the third request, the second portion comprising the new key frame, the one or more re-encoded frames, and a remaining portion of the specific version that follows the next key frame and that corresponds the second range in the first version of the content. - View Dependent Claims (12, 13)
-
14. One or more processor readable storage devices having processor readable code embodied on the one or more processor readable storage devices, the processor readable code for programming one or more processors to perform a method comprising:
-
receiving, from a client to a content provider, a first request for the content, the content corresponding to a plurality of versions, each of the plurality of versions corresponding to a different quality level; sending, from the content provider to the client, an acknowledgement of the first request, the acknowledgement including information about a first version of the content; receiving, from the client to the content provider, a second request for a first range in the first version of the content; transmitting, from the content provider to the client, a first portion of the content in response to the second request, the first portion comprising a default version of the content and corresponding to the first range in the first version of the content; determining, by the content provider, a transmission rate at which the client receives the first portion of the content; receiving, from the client to the content provider, a third request for a second range in the first version of the content; estimating, by the content provider, a respective bit rate for transmitting each of the plurality of versions of the content to the client based at least in part on the transmission rate; determining, by the content provider, a plurality of threshold values for the plurality of versions of the content, a respective threshold value being based at least in part on the respective bit rate for a respective version of the plurality of versions and a respective predetermined factor based on a respective quality level of the respective version; selecting, by the content provider, a specific version of the plurality of versions based at least in part on comparing the transmission rate to the plurality of threshold values; generating a new key frame based at least in part on a first frame of the specific version in response to determining that the first frame is between key frames, the first frame corresponding to a start of the second range in the first version of the content; re-encoding one or more frames of the specific version based at least in part on the new key frame, the one or more re-encoded frames following the first frame and sequenced prior to a next key frame of the specific version; and transmitting, from the content provider to the client, a second portion of the content in response to the third request, the second portion comprising the new key frame, the one or more re-encoded frames, and a remaining portion of the specific version that follows the next key frame and that corresponds to the second range in the first version of the content. - View Dependent Claims (15)
-
-
16. A system for providing content, comprising:
-
a processor; and a memory device including instructions that, when executed by the processor, cause the processor to; transmit, from a content provider to a client, a first portion of the content, the content corresponding to a plurality of versions, each of the plurality of versions corresponding to a different quality level, the first portion comprising a default version of the content; determine, by the content provider, a transmission rate at which the client receives the first portion of the content; estimate, by the content provider, a respective bit rate for transmitting each of the plurality of versions of the content to the client based at least in part on the transmission rate; determine, by the content provider, a plurality of threshold values for the plurality of versions of the content, a respective threshold value being based at least in part on the respective bit rate for a respective version of the plurality of versions and a respective predetermined factor based on a respective quality level of the respective version; select, by the content provider, a specific version of the plurality of versions based at least in part on comparing the transmission rate to the plurality of threshold values; generate a new key frame based at least in part on a first frame of the specific version in response to determining that the first frame is between key frames, the first frame corresponding to a start of a second portion of the content; re-encode one or more frames of the specific version based at least in part on the new key frame, the one or more re-encoded frames following the first frame and sequenced prior to a next key frame of the specific version; and transmit, from the content provider to the client, the second portion of the content, the second portion comprising the new key frame, the one or more re-encoded frames, and a remaining portion of the specific version that follows the next key frame. - View Dependent Claims (17)
-
Specification