Adaptive content streaming based on bandwidth
US-2022417305-A1 · Dec 29, 2022 · US
US12301931B2 · US · B2
| Field | Value |
|---|---|
| Publication number | US-12301931-B2 |
| Application number | US-202318300373-A |
| Country | US |
| Kind code | B2 |
| Filing date | Apr 13, 2023 |
| Priority date | Apr 13, 2023 |
| Publication date | May 13, 2025 |
| Grant date | May 13, 2025 |
A practical reading order for non-experts. Skip the full description unless you need deep technical detail.
What the patent document calls the invention.
A short plain-language summary of the technical disclosure.
Who owns or filed the patent and who is credited as inventor.
Filing, priority, publication, and grant dates set the timeline.
The legal scope of protection — read this for what is actually claimed.
Technology tags used to group this patent with similar filings.
Prior art links and similar publications in this corpus.
Official abstract text for this publication.
A method includes acquiring a playlist identifying a plurality of video files to be played back during a video streaming session on an endpoint device, obtaining, from an operator of a communications network over which the video files are to be downloaded, a maximum throughput for the video streaming session, selecting a subsequent video file that is scheduled in the playlist for playback after a playback of a currently playing video file, wherein the subsequent video file includes a plurality of chunks, selecting, based on the maximum throughput and for each of the chunks, a variant, such that a plurality of variants is selected in which each variant corresponds to one chunk of the plurality of chunks, wherein the variants are selected to maximize a utility function that is constrained by the maximum throughput, and downloading the plurality of variants to a local buffer of the endpoint device.
Opening claim text (preview).
What is claimed is: 1. A method comprising: acquiring, by a processing system including at least one processor, a playlist identifying a plurality of video files and an order in which the plurality of video files is to be played back during a video streaming session on an endpoint device; obtaining, by the processing system from an operator of a communications network over which the plurality of video files is to be downloaded to the endpoint device, a maximum throughput for the video streaming session; selecting, by the processing system from among the plurality of video files, a subsequent video file, wherein the subsequent video file is scheduled in the playlist for playback after a playback of a currently playing video file of the plurality of video files ends, and wherein the subsequent video file includes a second plurality of chunks; selecting, by the processing system based on the maximum throughput and for each chunk of the second plurality of chunks, a variant, such that a second plurality of variants is selected in which each variant of the second plurality of variants corresponds to one chunk of the second plurality of chunks, wherein the selecting the second plurality of variants maximizes a utility function for the video streaming session, wherein the utility function maximizes an encoding bitrate of the second plurality of variants, and wherein the utility function is constrained by the maximum throughput; and downloading, by the processing system, the second plurality of variants to a local buffer of the endpoint device, wherein the utility function further imposes a penalty based on a wastage rate that is caused by a deletion of previously downloaded variants from the local buffer, wherein the previously downloaded variants are deleted without being played back. 2. The method of claim 1 , wherein the maximum throughput constrains the utility function by requiring that no variant in the second plurality of variants has a data size that exceeds a total size of data download allowed by the maximum throughput. 3. The method of claim 2 , wherein the utility function is further constrained by a requirement for the local buffer to always contain at least one variant. 4. The method of claim 1 , further comprising: selecting, by the processing system from among the plurality of video files, another subsequent video file, wherein the another subsequent video file is scheduled in the playlist for playback after a playback of the subsequent video file ends, and wherein the another subsequent video file includes a third plurality of chunks; selecting, by the processing system based on the maximum throughput and for each chunk of the third plurality of chunks, a variant, such that a third plurality of variants is selected in which each variant of the third plurality of variants corresponds to one chunk of the third plurality of chunks, wherein the selecting the third plurality of variants maximizes the utility function for the video streaming session; and downloading, by the processing system, the third plurality of variants to the local buffer of the endpoint device simultaneously with downloading the second plurality of variants. 5. The method of claim 1 , wherein each video file of the plurality of video files has a duration of less than one minute. 6. The method of claim 1 , wherein the maximum throughput comprises a maximum average throughout over a duration of the video streaming session. 7. The method of claim 6 , wherein an instantaneous throughput at a given time in the duration of the video streaming session is permitted to exceed the maximum throughput, as long as an average throughput over the duration of the video streaming session does not exceed the maximum throughput. 8. The method of claim 1 , wherein the maximum throughput varies over a duration of the video streaming session. 9. The method of claim 1 , wherein each chunk of the second plurality of chunks contains a subset of a plurality of video frames making up the subsequent video file. 10. The method of claim 9 , wherein each variant of the second plurality of variants is selected from among a plurality of candidate variants, and each candidate variant of the plurality of candidate variants comprises a version of the subsequent video file that is encoded with a different combination of codec, resolution, and bitrate. 11. The method of claim 10 , wherein the selecting the second plurality of variants balances a number of the second plurality of chunks against the combination of codec, resolution, and bitrate such that the downloading avoids exceeding a maximum bitrate. 12. The method of claim 1 , further comprising: repeating, by the processing system, the obtaining, the selecting the subsequent video file, the selecting the second plurality of variants, and the downloading on a periodic basis. 13. The method of claim 1 , further comprising: identifying, by the processing system for the currently playing video file of the plurality of video files, a first plurality of chunks that have yet to be downloaded to the endpoint device; selecting, by the processing system based on the maximum throughput and for each chunk of the first plurality of chunks, a variant, such that a first plurality of variants is selected in which each variant of the first plurality of variants corresponds to one chunk of the first plurality of chunks; and downloading, by the processing system, the first plurality of variants to the local buffer of the endpoint device. 14. The method of claim 13 , further comprising: repeating, by the processing system, the identifying the first plurality of chunks, the selecting the first plurality of variants, and the downloading the first plurality of variants on a periodic basis. 15. The method of claim 13 , wherein the selecting the first plurality of variants balances a number of the first plurality of chunks against a combination of codec, resolution, and bitrate of the first plurality of variants such that the downloading the first plurality of variants avoids exceeding a maximum bitrate. 16. The method of claim 13 , wherein the processing system partitions the maximum throughput between the currently playing video file and the subsequent video file according to a predefined policy. 17. A non-transitory computer-readable medium storing instructions which, when executed by a processing system including at least one processor, cause the processing system to perform operations, the operations comprising: acquiring a playlist identifying a plurality of video files and an order in which the plurality of video files is to be played back during a video streaming session on an endpoint device; obtaining, from an operator of a communications network over which the plurality of video files is to be downloaded to the endpoint device, a maximum throughput for the video streaming session; selecting, from among the plurality of video files, a subsequent video file, wherein the subsequent video file is scheduled in the playlist for playback after a playback of a currently playing video file of the plurality of video files ends, and wherein the subsequent video file includes a second plurality of chunks; selecting, based on the maximum throughput and for each chunk of the second plurality of chunks, a variant, such that a second plurality of variants is selected in which each variant of the second plurality of variants corresponds to one chunk of the second plurality of chunks, wherein the selecting the second plurality of variants maximizes a utility function for the video streaming session, wherei
for generating a list of items to be played back in a given order, e.g. playlist, or scheduling item distribution according to such list (retrieval of multimedia data based on playlists G06F16/40) · CPC title
Monitoring network characteristics, e.g. bandwidth, congestion level (data switched network analysis H04L41/14; monitoring functioning in data switched networks H04L43/0817; flow control in packet networks H04L47/10) · CPC title
for generating different versions · CPC title
by decomposing the content in the time domain, e.g. in time segments · CPC title
involving video buffer management, e.g. video decoder buffer or video display buffer · CPC title
Related publications grouped by family.
Answers are generated from the same data shown on this page.