Patentable/Patents/US-10708331
US-10708331

Generating requests for streaming media

PublishedJuly 7, 2020
Assigneenot available in USPTO data we have
Inventorsnot available in USPTO data we have
Technical 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.

Patent Claims
20 claims

Legal claims defining the scope of protection, as filed with the USPTO.

1

1. 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.

2

2. The method of claim 1 , wherein the sequentially next content fragment of the streaming media item is selected as having a bit rate less than the estimated bandwidth responsive to the confidence value falling below a predefined threshold.

3

3. The method of claim 1 , further comprising reselecting the sequentially next content fragment of the streaming media item based at least in part on a plurality of override rules.

4

4. The method of claim 3 , wherein one of the plurality of override rules specifies that a bit rate corresponding to a stream cannot change by a delta that meets or exceeds a predefined threshold.

5

5. The method of claim 1 , wherein the sequentially next content fragment of the streaming media item is selected based at least in part on at least one latency between the media distribution service streaming the media item and the client.

6

6. The method of claim 5 , further comprising calculating, by the at least one computing device, the latency as a function of at least one time of at least one previously communicated response and at least one time of sending at least one corresponding requested content fragment of the streaming media item.

7

7. The method of claim 6 , wherein the confidence value is a first confidence value, the latency is further calculated as a function of a plurality of previously calculated latencies, and the method further comprises: calculating, by the at least one computing device, a second confidence value as a function of the plurality of previously calculated latencies; and wherein selecting the sequentially next content fragment of the streaming media item is further based at least in part on the second confidence value.

8

8. The method of claim 1 , further comprising selecting, by the at least one computing device, a bit rate associated with a second sequentially next content fragment of the streaming media item based at least in part on the second estimated bandwidth.

9

9. 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.

10

10. The system of claim 9 , wherein the at least one computing device is further configured to at least: calculate, during the stream of the streaming media item from the media distribution service, an estimated latency between the media distribution service and the client; and determine a time for the client to communicate a request for the sequentially next content fragment of the stream as a function of the estimated bandwidth and the estimated latency, wherein the sequentially next content fragment of the streaming media item is selected based at least in part on the client communicating the request to a media distribution service at the time.

11

11. The system of claim 10 , wherein the at least one computing device is further configured to at least: calculate an estimated completion time for a download of a currently downloading content fragment of the stream based at least in part on the estimated bandwidth and a size of the currently downloading content fragment of the stream; and calculate the estimated completion time to download the sequentially next content fragment as a function of the estimated completion time as offset by the estimated latency.

12

12. The system of claim 10 , wherein the at least one computing device is further configured to at least: calculate a latency confidence value for the estimated latency; and modify the time to communicate the request responsive to the latency confidence value falling below a predefined threshold.

13

13. The system of claim 10 , wherein the estimated latency is calculated based at least in part on at least two previously calculated latencies.

14

14. The system of claim 9 , wherein the at least one computing device is further configured to at least select a bit rate associated with the sequentially next content fragment of the stream based at least in part on the estimated bandwidth and an amount of currently buffered content.

15

15. The system of claim 9 , wherein the at least one computing device is further configured to at least: determine, for individual ones of a plurality of content fragment sources, a respective degree to which a respective one of the plurality of content fragment sources satisfies a plurality of rules; and select the sequentially next content fragment as associated with a subset of the plurality of content fragment sources having the respective degree above a predefined threshold.

16

16. The system of claim 15 wherein the one of the plurality of content fragment sources is selected from the subset of the plurality of content fragment sources as being associated with a highest quality level.

17

17. The system of claim 9 , wherein the at least one computing device is further configured to at least calculate the estimated bandwidth as a function of at least one time for the client to download at least one previously downloaded content fragment of the stream and at least one size of the at least one previously downloaded content fragment of the stream indicated in a manifest.

18

18. The system of claim 9 , wherein the sequentially next content fragment of the streaming media item has at least one of a different bit rate, a different resolution, or a different encoding scheme than a previously downloaded content fragment.

19

19. 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.

20

20. The non-transitory computer-readable medium of claim 19 , wherein the at least one computing device is further configured to at least: calculate a plurality of selection scores corresponding to the plurality of content fragment sources from the streaming media item based at least in part on a degree to which a respective one of the plurality of content fragment sources satisfies at least one rule; and select a bit rate from a plurality of potential bit rates according to the plurality of selection scores, the bit rate corresponding to the sequentially next content fragment.

Classification Codes (CPC)

Cooperative Patent Classification codes for this invention. Click any code to explore related patents in that topic.

Patent Metadata

Filing Date

December 19, 2014

Publication Date

July 7, 2020

Want to explore more patents?

Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.

Citation & reuse

Analysis on this page is generated by Patentable — an AI-powered patent intelligence platform. AI-generated summaries, explanations, and analysis may be reused with attribution and a visible link back to the canonical URL below. Patent abstracts and claims are USPTO public domain.

Cite as: Patentable. “Generating requests for streaming media” (US-10708331). https://patentable.app/patents/US-10708331

© 2026 Patentable. All rights reserved.

Patentable is a research and drafting-assistant tool, not a law firm, and does not provide legal advice. Documents we generate are drafts for review by a licensed patent attorney.