Outer Rim Archives
Archives · 2021 · 11190826

Granted patent

Segment quality-guided adaptive stream creation

Number
11190826
Published
2021-11-30
Filed
2020-06-25
Assignee
Disney Enterprises, Inc.
Inventors
Labrozzi; Scott C., Mathur; Chetan K., Xue; Yuanyi, Bracco; Michael J.
CPC
H04L65/70; H04L65/80; H04N21/234345; H04N21/23439; H04N21/2662; H04N21/8456
Verdict
Set aside adaptive streaming, plumbing
Source
Google Patents · FreePatentsOnline

Abstract

Embodiments provide for improved stream generation are provided. A video comprising a plurality of segments and an encoding ladder specifying a plurality of maximum average bitrates (MABs) are received. A plurality of intermediate bitrates interspersed among the plurality of MABs are selected. A target average bitrate (TAB) segment is generated by encoding a first segment using a first MAB, and a first intermediate average bitrate (IAB) segment is generated by encoding the first segment using a first intermediate bitrate. Quality scores are generated for the first TAB segment and the first IAB segment. A first output segment is selected for the first segment at the first MAB based on the quality scores, where the first output segment is either the first TAB segment or the first IAB segment. Upon receiving a request for the first segment at the first MAB, the first output segment is outputted.

Background

BACKGROUND (1) Streaming services (e.g., video streams, audio streams, or multimedia streams) have become increasingly common and desired by a wide variety of users. Streaming content enables users to receive the multimedia they desire at the time they desire/need it, rather than downloading it ahead of time. That is, rather than force users to wait long periods of time for large downloads (e.g., an entire movie), which also forces users to store large amounts of data, streaming enables the user to fetch smaller segments of a larger video on an as-needed basis (e.g., just before the segment begins). (2) To improve streaming services, Adaptive Bitrate Streaming (ABR) has been developed. ABR is predicated on providing multiple streams (often referred to as variants) at varying bitrates, enabling clients to dynamically select variants based on network conditions and other factors. These variants are encoded using an encoding ladder with a number of rungs, each rung corresponding to a desired output bitrate. Often, multiple resolutions (e.g., 1920×1080, 1280×720, and the like) can coexist on an encoding ladder, with a given resolution at one or more consecutive rungs. The ABR streams are segmented (e.g., split into discrete sub-assets, usually a few seconds long each), and clients can adapt from one variant to another at segment boundaries, as network conditions change.

Claims

1. A method, comprising: receiving a video comprising a plurality of segments; receiving an encoding ladder specifying a plurality of maximum average bitrates (MABs); selecting a plurality of intermediate bitrates interspersed among the plurality of MABs; generating a first target average bitrate (TAB) segment by encoding a first segment of the plurality of segments using a first MAB of the plurality of MABs; generating a first intermediate average bitrate (IAB) segment by encoding the first segment using a first intermediate bitrate of the plurality of intermediate bitrates, wherein the first intermediate bitrate is lower than the first MAB; generating a first quality score for the first TAB segment and a second quality score for the first IAB segment; selecting the first IAB segment as a first output segment for the first segment at the first MAB, based at least in part on determining that the second quality score is within a predefined tolerance of the first quality score; and upon receiving a request for the first segment at the first MAB, outputting the first output segment. || 9. A system, comprising: one or more computer processors; and a memory containing a program which when executed by the one or more computer processors performs an operation, the operation comprising: receiving a video comprising a plurality of segments; receiving an encoding ladder specifying a plurality of maximum average bitrates (MABs); selecting a plurality of intermediate bitrates interspersed among the plurality of MABs; generating a first target average bitrate (TAB) segment by encoding a first segment of the plurality of segments using a first MAB of the plurality of MABs; generating a first intermediate average bitrate (IAB) segment by encoding the first segment using a first intermediate bitrate of the plurality of intermediate bitrates, wherein the first intermediate bitrate is lower than the first MAB; generating a first quality score for the first TAB segment and a second quality score for the first IAB segment; selecting the first IAB segment as a first output segment for the first segment at the first MAB, based at least in part on determining that the second quality score is within a predefined tolerance of the first quality score; and upon receiving a request for the first segment at the first MAB, outputting the first output segment. || 15. A method comprising: receiving a video comprising a plurality of segments; receiving an encoding ladder specifying a plurality of maximum average bitrates (MABs); selecting a plurality of intermediate bitrates interspersed among the plurality of MABs; generating a first target average bitrate (TAB) segment by encoding a first segment of the plurality of segments using a first MAB of the plurality of MABs; generating a first intermediate average bitrate (IAB) segment by encoding the first segment using a first intermediate bitrate of the plurality of intermediate bitrates; generating respective quality scores for the first TAB segment and the first IAB segment; selecting a first output segment for the first segment at the first MAB, based on the respective quality scores, wherein the first output segment is either (i) the first TAB segment or (ii) the first IAB segment; selecting, for the first segment at a second MAB of the plurality of MABs, the first output segment; upon determining that the first output segment is used for both the first segment at the first MAB and the first segment at the second MAB: storing a shared copy of the first output segment; and associating the first segment at the first MAB and the first segment at the second MAB with the shared copy of the first output segment; and upon receiving a request for the first segment at the first MAB, outputting the first output segment.