Disclosed are various embodiments for selecting fragments of a media item. An estimated bandwidth for a client is calculated. A confidence score for the estimated bandwidth is determined. When the confidence score falls below a threshold, the estimated bandwidth is modified. A fragment for the media item is selected using the modified estimated bandwidth.
Legal claims defining the scope of protection, as filed with the USPTO.
1. 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 client based at least in part on a buffer state and a stream history; calculate a confidence score for the estimated bandwidth; determine that the confidence score falls below a threshold; in response to determining that the confidence score falls below the threshold, determine a modified estimated bandwidth by modifying the estimated bandwidth; and select a fragment for a video content feature based at least in part on the modified estimated bandwidth.
2. The non-transitory computer-readable medium of claim 1 , wherein the program further causes the at least one computing device to at least: determine that the fragment fails to satisfy at least one override rule; and in response to determining that the fragment fails to satisfy the at least one override rule, select a different content fragment based at least in part on the at least one override rule.
3. The non-transitory computer-readable medium of claim 1 , wherein the program further causes the at least one computing device to at least determine that the fragment satisfies at least one override rule, wherein the at least one override rule is satisfied based on at least one of: the estimated bandwidth, a device type of the client, and a selected bit rate for a source.
4. The non-transitory computer-readable medium of claim 1 , wherein the program further causes the at least one computing device to at least select a source for the fragment of the video content feature.
5. The non-transitory computer-readable medium of claim 1 , wherein the buffer state comprises a change in a duration of content stored in a buffer of the client.
6. The non-transitory computer-readable medium of claim 5 , wherein the program further causes the at least one computing device to at least adjust the estimated bandwidth based at least in part on the change in the duration.
7. A system, comprising: a memory embodying a program; and at least one computing device in communication with the memory, the at least one computing device being configured, through execution of the program, to at least: determine an estimated bandwidth for a client; calculate a confidence score for the estimated bandwidth; in response to determining that the confidence score falls below a threshold, determine a modified estimated bandwidth based at least in part on adjusting the estimated bandwidth as a function of the confidence score; and stream a fragment of a video content feature to the client based at least in part on the modified estimated bandwidth.
8. The system of claim 7 , wherein the at least one computing device is further configured to at least: receive a buffer state from the client; determine that a rate of change of bandwidth fails to meet a predefined threshold based at least in part on the buffer state; in response to the rate of change failing to meet the predefined threshold, determine an updated estimated bandwidth that is equal to the modified estimated bandwidth; and select a subsequent fragment for the video content feature based at least in part on the updated estimated bandwidth.
9. The system of claim 7 , wherein the at least one computing device is further configured to at least determine that the fragment satisfies an override rule.
10. The system of claim 9 , wherein the override rule specifies a bit rate for a content stream to a particular client type.
11. The system of claim 9 , wherein the override rule restricts a selection of a particular bit rate for fragments encoded using a particular codec.
12. The system of claim 7 , wherein the estimated bandwidth is determined as a running average.
13. The system of claim 7 , wherein the estimated bandwidth is determined as an exponential weighted average of a plurality of data points.
14. A method, comprising: calculating, via at least one computing device, an estimated bandwidth for a client based at least in part on a buffer state and a stream history; calculating, via the at least one computing device, a confidence score for the estimated bandwidth; determining, via the at least one computing device, that the confidence score falls below a threshold; in response to determining that the confidence score falls below the threshold, determining, via the at least one computing device, a modified estimated bandwidth by modifying the estimated bandwidth; and selecting, via the at least one computing device, a source of a fragment of a video content feature based at least in part on the modified estimated bandwidth.
15. The method of claim 14 , further comprising: generating, via the at least one computing device, a manifest indicating the source; and communicating, via the at least one computing device, the manifest to the client.
16. The method of claim 15 , further comprising: determining, via the at least one computing device, whether the video content feature has ended subsequent to the manifest being communicated to the client; in response to determining that the video content feature has not ended, obtaining, via the at least one computing device, an updated buffer state from the client; and calculating, via the at least one computing device, an updated estimated bandwidth for the client based at least in part on the updated buffer state and the stream history.
17. The method of claim 14 , further comprising selecting, via the at least one computing device, the fragment for the video content feature based at least in part on the modified estimated bandwidth.
18. The method of claim 14 , further comprising streaming, via the at least one computing device, the fragment of the video content feature to the client.
19. The method of claim 14 , further comprising updating, via the at least one computing device, the stream history with at least one attribute corresponding to the source.
20. The method of claim 14 , further comprising, in response to determining that the fragment fails to satisfy at least one override rule, selecting, via the at least one computing device, a different fragment based at least in part on the at least one override rule.
Cooperative Patent Classification codes for this invention. Click any code to explore related patents in that topic.
May 2, 2018
March 31, 2020
Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.