Generating requests for streaming media
AssigneeAmazon Technologies, Inc.
InventorsMarc Joliveau, Justin Michael Binns, Matthew James Bordenet, Patrik Schnell, Charles Benjamin Franklin Waggoner
Life of this patent
Estimating the term…
Abstract
Disclosed are various embodiments for a client application for streaming media. The client application estimates the bandwidth of the client and the latency between the client and a media distribution service. A bit rate for a media stream is determined using the latency, a buffer state, and the estimated bandwidth. A time to send the request is determined using the estimated bandwidth and latency.
Claims20
A method, comprising:
- calculating, by at least one computing device, an estimated bandwidth for a communications channel corresponding to a media distribution service streaming a media item to a client, wherein the calculating is as a function of at least one size of at least one previously downloaded content fragment of the streaming media item and at least one time to download the at least one previously downloaded content fragment of the streaming media item;
- calculating, by the at least one computing device, a confidence value associated with the estimated bandwidth based at least in part on a standard deviation of a plurality of previously estimated bandwidths;
- determining, by the at least one computing device, a plurality of content fragment sources for a sequentially next content fragment of the streaming media item, wherein each of the plurality of content fragment sources specifies a network location for the sequentially next content fragment;
- determining, by the at least one computing device, an effect on a buffer state of the client that downloading a fragment from each of the plurality of content fragment sources would have based at least in part on correlating the buffer state of the client with a stream history;
- selecting, by the at least one computing device, one content fragment source from the plurality of content fragment sources for the sequentially next content fragment of the streaming media item based at least in part on the estimated bandwidth, the confidence value, and the effect on the buffer state of the client, wherein the sequentially next content fragment of the streaming media item has a different size than at least one previously downloaded content fragment;
- generating, by the at least one computing device, a manifest indicating the one content fragment source, wherein the manifest excludes at least one content fragment source of the plurality of content fragment sources;
- communicating, by the at least one computing device, the manifest to the client;
- and
- subsequent to the sequentially next content fragment being streamed from the media distribution service, calculating, by the at least one computing device, a second estimated bandwidth for the communications channel based at least in part on the different size of the sequentially next content fragment of the streaming media item and a time to download the sequentially next content fragment of the streaming media item.
A system, comprising:
- a data store;
- and
- at least one computing device communicably coupled to the data store, the at least one computing device being configured to at least:
- calculate an estimated bandwidth for a communications channel corresponding to a media distribution service streaming a media item to a client, wherein the calculating is as a function of at least one size of at least one previously downloaded content fragment of a stream of a streaming media item and at least one time to download the at least one previously downloaded content fragment of the streaming media item;
- calculate a confidence value associated with the estimated bandwidth based at least in part on a standard deviation of a plurality of previously estimated bandwidths;
- determine a plurality of content fragment sources for a sequentially next content fragment of the streaming media item, wherein each of the plurality of content fragment sources specifies a network location for the sequentially next content fragment;
- determine an effect on a buffer state of the client that downloading a fragment from each of the plurality of content fragment sources would have based at least in part on correlating the buffer state of the client with a stream history;
- select one content fragment source from the plurality of content fragment sources for a sequentially next content fragment of the streaming media item based at least in part on the estimated bandwidth, the confidence value, and the effect on the buffer state of the client, wherein the sequentially next content fragment of the streaming media item has a different size than the previously downloaded content fragment;
- generate a manifest indicating the one content fragment source,
- wherein the manifest excludes at least one content fragment source of the plurality of content fragment sources;
- and
- communicate the manifest to the client;
- and
- subsequent to the sequentially next content fragment being streamed from the media distribution service, calculate a second estimated bandwidth for the communications channel based at least in part on the different size of the sequentially next content fragment of the streaming media item and a time to download the sequentially next content fragment of the streaming media item.
A non-transitory computer-readable medium embodying a program that when executed in at least one computing device, causes the at least one computing device to at least:
- calculate an estimated bandwidth for a communications channel corresponding to a media distribution service streaming a media item to a client, wherein the calculating is as a function of at least one size of at least one previously downloaded content fragment of the streaming media item and at least one time to download the at least one previously downloaded content fragment of the streaming media item;
- calculate a confidence value associated with the estimated bandwidth based at least in part on a standard deviation of a plurality of previously estimated bandwidths;
- determine a plurality of content fragment sources for a sequentially next content fragment of the streaming media item, wherein each of the plurality of content fragment sources specifies a network location for the sequentially next content fragment;
- determine an effect on a buffer state of the client that downloading a fragment from each of the plurality of content fragment sources would have based at least in part on correlating the buffer state of the client with a stream history;
- select one content fragment source from the plurality of content fragment sources for a sequentially next content fragment of the streaming media item based at least in part on the estimated bandwidth, the confidence value, and the effect on the buffer state of the client, wherein the sequentially next content fragment of the streaming media item has a different size than at least one previously downloaded content fragment;
- generate a manifest indicating the one content fragment source, wherein the manifest excludes at least one content fragment source of the plurality of content fragment sources;
- communicate the manifest to the client;
- and
- subsequent to the sequentially next content fragment being streamed from the media distribution service, calculate a second estimated bandwidth for the communications channel based at least in part on the different size of the sequentially next content fragment of the streaming media item and a time to download the sequentially next content fragment of the streaming media item.
Dependencies are inferred from the claim text.