Adaptive bitrate ladder optimization for live video streaming
Techniques for optimizing a bitrate ladder for live streaming are described herein. A method for optimizing a bitrate ladder for live streaming includes receiving client-side input and an origin-side input during a first interval in a timeslot, the client-side input comprising CDN logs, the origin-side input comprising a quality measure, extracting from the CDN logs frequency of requests for each bitrate in a bitrate ladder in the timeslot and the duration of recent stall events for client video players. During a second interval in the timeslot, an optimized bitrate ladder comprising an optimal set of bitrates (OSB) is selected using an optimization function, the optimization function taking as input quality measures and a coefficient value determined using stall information. The optimized bitrate ladder is sent to the origin server for live encoding follow-on segments.
1 . A method for optimizing a bitrate ladder for live streaming, the method comprising:
receiving, by an analytics server, a client-side input and an origin-side input during a first interval in a timeslot, the client-side input comprising a content delivery network (CDN) log from a client, the origin-side input comprising a quality measure from an origin server on an encoding side of a network, the origin server implementing an origin agent and a live encoder, wherein the timeslot comprises a duration selected to avoid a late reaction to network bandwidth fluctuation in a video player on a client side;
during the first interval, extracting from the CDN log a frequency of requests for each bitrate in a set of bitrates in the timeslot and a duration of a recent stall event for the client's player;
selecting, by the analytics server, during a second interval in the timeslot, an optimized bitrate ladder comprising an optimal set of bitrates (OSB) for a representation in a manifest using an optimization function, the optimization function taking as input the quality measure and a coefficient value, the coefficient value being determined by calling a stall analysis algorithm to which an average duration of stalls in each timeslot and a stall dictionary comprising a coefficient value for each range of stall is provided, the coefficient value being based on the frequency of requests and the duration of the recent stall event; and
sending the optimized bitrate ladder to the origin server for live encoding a next segment.
2 . The method of claim 1 , further comprising selecting the coefficient value based on an average difference of quality and an average difference of bitrate.
3 . The method of claim 2 , wherein the coefficient value is selected to decrease one or both of the average difference of quality and the average difference of bitrate.
4 . The method of claim 3 , wherein the OSB comprises a new OSB when the binary variable comprises a True value.
5 . The method of claim 3 , wherein the OSB comprises a previously selected OSB when the binary variable comprises a False value.
6 . The method of claim 1 , wherein calling the stall analysis algorithm further results in determining a binary variable based on a threshold mean stall duration.
7 . The method of claim 1 , wherein the CDN log comprises a URL of a HTTP request message, the duration of the recent stall event included in the URL in common media client data (CMCD) format.
8 . The method of claim 1 , wherein the quality measure comprises a measure of quality of a previously encoded segment.
9 . The method of claim 1 , wherein the quality measure comprises one or both of a video multi-method assessment fusion (VMAF) and peak signal-to-noise ratio (PSNR).
10 . The method of claim 1 , wherein the origin server is configured to perform the live encoding of the next segment.
11 . The method of claim 1 , further comprising storing a tuple for each client that experienced a stall event, the tuple comprising a unique player identifier, a stall start time, and a stall end time.
12 . The method of claim 1 , further comprising storing a number of requests received from a given client for each bitrate in the set of bitrates.
13 . The method of claim 1 , wherein selecting the optimized bitrate ladder by the analytics server comprises techniques involving a mixed-integer linear programming (MILP) model including a multi-objective optimization (MOO) function.
14 . The method of claim 1 , further comprising:
receiving a HTTP request from the client, the request comprising a selected segment and a requested bitrate; and
providing the selected segment at the requested bitrate wherein the requested bitrate is included in the OSB or at a lower bitrate wherein the requested bitrate is not included in the OSB.
15 . The system of claim 14 , wherein the client stall event information is stored in tuples comprising a unique player identifier, a stall start time, and a stall end time.
16 . The method of claim 1 , wherein the origin agent comprises a plug-in at the origin server to measure perceptual quality.
17 . A distributed computing system comprising:
a database configured to store client stall event information and bitrates; and
one or more processors configured to:
receive, by an analytics server, a client-side input and an origin-side input during a first interval in a timeslot, the client-side input comprising a CDN log from a client, the origin-side input comprising a quality measure from an origin server on an encoding side of a network, the origin server implementing an origin agent and a live encoder, wherein the timeslot comprises a duration selected to avoid a late reaction to network bandwidth fluctuation on a client side;
during the first interval, extract from the CDN log a frequency of requests for each bitrate in a set of bitrates in the timeslot and a duration of a recent stall event for the client's player;
select, by the analytics server, during a second interval in the timeslot, an optimized bitrate ladder comprising an optimal set of bitrates (OSB) using an optimization function, the optimization function taking as input the quality measure and a coefficient value, the coefficient value being determined by calling a stall analysis algorithm to which an average duration of stalls in each timeslot and a stall dictionary comprising a coefficient value for each range of stall is provided, the coefficient value being based on the frequency of requests and the duration of the recent stall event; and
send the optimized bitrate ladder to the origin server for live encoding a next segment.
18 . A system for optimizing a bitrate ladder for live streaming, the system comprising:
a processor; and
a memory comprising program instructions executable by the processor to cause the processor to implement:
an analytics server configured to receive a client request comprising stall event information and an origin server message from an origin server on an encoding side of a network, the origin server implementing a live encoder, the origin server message comprising a quality measure of a previously encoded segment, the analytics server further configured to select an optimal set of bitrates (OSB) using the stall event information and the quality measure during a timeslot comprising a duration selected to avoid a late reaction to network bandwidth fluctuation on a client side, the OSB being selected using an optimization function, the optimization function taking as input the quality measure and a coefficient value, the coefficient value being determined by calling a stall analysis algorithm to which an average duration of stalls in each timeslot and a stall dictionary comprising a coefficient value for each range of stall is provided, the quality measure during the timeslot being provided by the encoding side of the network; and
an origin agent comprising a live encoder plug-in, the origin agent configured to measure perceptual quality of encoded segments and to request the encoder to adjust the bitrate ladder in accordance with the OSB selected by the analytics server.
19 . The system of claim 18 , wherein the analytics server selects the OSB according to a mixed-integer linear programming (MILP) model including a multi-objective optimization (MOO) function.
20 . The system of claim 19 , wherein the MILP model receives as input a set of quality measures, a set of received requests for each bitrate in a set of bitrates, and a coefficient value α.