abr algorithms explained (from streaming media east 2016)

31
ADAPTIVE BITRATE ALGORITHMS: HOW THEY WORK AND HOW TO OPTIMIZE YOUR STACK Streaming Media East – Track D Tuesday, May 10, 2016 1:45 to 2:30 pm CLIENT-ACCELERATED STREAMING

Upload: erica-beavers

Post on 19-Jan-2017

2.739 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: ABR Algorithms Explained (from Streaming Media East 2016)

ADAPTIVE BITRATE ALGORITHMS: HOW THEY WORK AND HOW TO OPTIMIZE YOUR STACK

Streaming Media East – Track DTuesday, May 10, 2016 1:45 to 2:30 pm

CLIENT-ACCELERATED STREAMING

Page 2: ABR Algorithms Explained (from Streaming Media East 2016)

Streamroot: Who are we?

PARTNERS

INFINITE POSSIBILITIES, LIMITLESS DELIVERY

Streamroot combines the best of a controlled, centralized network with the resilience and scalability of a widely

distributed delivery architecture.

Page 3: ABR Algorithms Explained (from Streaming Media East 2016)

Presentation Outline

I. Introduction: What are we trying to accomplish? Why does this matter?

II. The Basics of how ABR algorithms work: constraints & parameters, process

Example: hls.js

III. Possible improvements to basic ABR algorithms: smoothing, quantizing, scheduling

Example: dash.js

IV. Going furtherAnother Approach: buffer levelsThe key to improving: testing and iterating

Page 4: ABR Algorithms Explained (from Streaming Media East 2016)

I. Why ABR?

Multiplicity of network conditions and devices need to dynamically select resolution

HTTP / TCP stack removal from the transport protocol congestion logic client-level estimation & decisions

Source: FESTIVE diagram of HTTP streaming

Page 5: ABR Algorithms Explained (from Streaming Media East 2016)

I. Design Goals

1. Maximize efficiency – stream at the highest bitrate possible

2. Minimize rebuffering – avoid underrun and playback stalls

3. Encourage stability – switch only when necessary

(4. Promote fairness across network bottlenecks)

Page 6: ABR Algorithms Explained (from Streaming Media East 2016)

I. Why this Matters

Views 24 min longer when buffer ratio is < 0.2% for live content

View time drops 40% when > 0.4% buffer ratio mark

Buffer ratio vs. play time

Source: NPAW aggregated data for a set of European live broadcasters

Page 7: ABR Algorithms Explained (from Streaming Media East 2016)

II. The Basics: Constraints and Parameters

CONSTRAINTS TRADEOFF PARAMETERS

Screen size / Player size Buffer size

CPU & Dropped frame threshold Bandwidth & possible bitrate

Startup time / Rebuffering recovery (Bonus: P2P Bandwidth)

Page 8: ABR Algorithms Explained (from Streaming Media East 2016)

II. The Basics: Constraints

1. Screen & Player SizeBitrate should never be larger than the actual size of the video player

2. CPU & Dropped frame rateDowngrade when too many dropped frames per second

3. Startup timeAlways fetch the lowest quality first whenever the buffer is empty

Page 9: ABR Algorithms Explained (from Streaming Media East 2016)

II. The Basics: Tradeoff parameters

1. Maximize bitrate available bandwidth estimationEstimate the available bandwidth based on prior

segment(s)Available bandwidth = size of chunk / time taken to download

2. Minimize rebuffering ratio buffer sizeBuffer ratio = buffering time / (buffering time +

playback time)

Abandon strategySource: BOLA

Page 10: ABR Algorithms Explained (from Streaming Media East 2016)

Example: HLS.js

HTML5 (MSE-based) media engine open-sourced by Dailymotionhttps://github.com/dailymotion/hls.js

Very modular, so you can change the rules without even forking the media engine!

Page 11: ABR Algorithms Explained (from Streaming Media East 2016)

Example: HLS.js player size level cappinghttps://github.com/dailymotion/hls.js/blob/master/src/controller/cap-level-controller.js#L68

Checks the max CapLevel corresponding to current player size

Frequency: every 1000 ms

Page 12: ABR Algorithms Explained (from Streaming Media East 2016)

Example: HLS.js dropped frame rulehttps://github.com/dailymotion/hls.js/blob/master/src/controller/fps-controller.js#L33

Calculates the dropped frames per second ratio.

If > 0.2, bans the level forever goes into restricted capping levels

fpsDroppedMonitoringThresholdfpsDroppedMonitoringPeriod

Page 13: ABR Algorithms Explained (from Streaming Media East 2016)

Example: HLS.js startup strategyhttps://github.com/dailymotion/hls.js/blob/master/src/controller/stream-controller.js#L131

First segment is loaded from the first level in the playlist, then continues with normal ABR rule.

Page 14: ABR Algorithms Explained (from Streaming Media East 2016)

Example: HLS.js bandwidth-based ABR controllerhttps://github.com/dailymotion/hls.js/blob/master/src/controller/abr-controller.js

Simple algorithm,inspired by Android’s AVController’s ABR algo

Page 15: ABR Algorithms Explained (from Streaming Media East 2016)

Example: HLS.js P2P bandwidth estimation

Page 16: ABR Algorithms Explained (from Streaming Media East 2016)

Example: HLS.js bandwidth fragmentLoad abort rulehttps://github.com/dailymotion/hls.js/blob/master/src/controller/abr-controller.js#L51

Page 17: ABR Algorithms Explained (from Streaming Media East 2016)

STRONG POINTS COULD BE IMPROVED

Very simple and understandable Add history parameter to BW estimation and adjustment

Handles CPU & player size constraints Startup time constraint could be improved to get the lowest level first

Conservative BW adjustment to avoid oscillation

Sound emergency abort mechanism

Example: HLS.js sum-up

Simple algorithm with better performances in practice compared to native implementations.

Page 18: ABR Algorithms Explained (from Streaming Media East 2016)

1. Tweak the parametershttps://github.com/dailymotion/hls.js/blob/master/API.md#fine-tuning

Dropped FPS:

capLevelOnFPSDrop: false,fpsDroppedMonitoringPeriod: 5000,fpsDroppedMonitoringThreshold: 0.2

PlayerSize:

capLevelToPlayerSize: false,

2. Write your own rules!AbrController: AbrControllercapLevelController: CapLevelController,fpsController: fpsController

Example: HLS.js how to improve

Page 19: ABR Algorithms Explained (from Streaming Media East 2016)

III. Improvements: the pitfalls of bandwidth estimation

• Not resilient to sudden network fluctuations

• Often leads to bitrate oscillations

• Biased by HTTP/TCP calls on the same device/network

Page 20: ABR Algorithms Explained (from Streaming Media East 2016)

III. Improvements: better bandwidth estimation

A new 4-step approach:

1. Estimation2. Smoothing

3. Quantizing4. Scheduling

Source: Block diagram for PANDA

Page 21: ABR Algorithms Explained (from Streaming Media East 2016)

III. Improvements: estimation & smoothing

Estimation: take history into account!

Smoothing: Apply a smoothing function to the range of values obtained.

Possible functions: average, median, EMWA, harmonic mean

How many segments? 3? 10? 20?

Page 22: ABR Algorithms Explained (from Streaming Media East 2016)

III. Improvements: quantizing

Quantizing: quantize the smoothed bandwidth to a discrete bitrate

Additive increase multiplicative decrease conservative when switching

up, more aggressive when down.

Source: FESTIVE

Page 23: ABR Algorithms Explained (from Streaming Media East 2016)

III. Improvements: scheduling (bonus)

Continuous & periodic download scheduling oscillation, over- or underused resources

Randomize target buffer level to avoid startup bias and increase stability.

Also extremely useful for promoting fairness!

Source: FESTIVE

Page 24: ABR Algorithms Explained (from Streaming Media East 2016)

Example 2: DASH.JS

Dash.js is the reference DASH player developed by DASH-IF.https://github.com/Dash-Industry-Forum/dash.js/wiki

4 different rules:

2 Main:ThroughputRuleAbandonRequestsRule

2 secondary:BufferOccupancyRuleInsufficientBufferRule

Page 25: ABR Algorithms Explained (from Streaming Media East 2016)

Example 2: DASH.JS main rules

Source: DASH-IF, Maxdome

Page 26: ABR Algorithms Explained (from Streaming Media East 2016)

Example 2: DASH.JS, sum-up

STRONG POINTS COULD BE IMPROVED

Smoothes bandwidth No quantization of bitrates

Segment abort mechanism to avoid buffering during network drops

Doesn’t handle CPU & Player size constraints

Rich buffer threshold to avoid BW oscillations

Page 27: ABR Algorithms Explained (from Streaming Media East 2016)

Example 2: DASH.JS how to improve

1. Tweak the ParametersThroughputRule:

AVERAGE_THROUGHPUT_SAMPLE_AMOUNT_LIVE = 2;AVERAGE_THROUGHPUT_SAMPLE_AMOUNT_VOD = 3;

AbandonRequestRule:

GRACE_TIME_THRESHOLD = 500;ABANDON_MULTIPLIER = 1.5;

2. Write your own ruleshttps://github.com/Dash-Industry-Forum/dash.js/wiki/Migration-2.0#extending-dashjshttps://github.com/Dash-Industry-Forum/dash.js/blob/development/src/streaming/rules/abr/ABRRulesCollection.js

BufferOccupancyRule:

RICH_BUFFER_THRESHOLD = 20

Page 28: ABR Algorithms Explained (from Streaming Media East 2016)

Buffer size based ONLY no more bandwidth estimations

Uses utility theory to make decisions: configurable tradeoff between rebuffering potential & bitrate maximization:

Maximize Vn + y SnWhere:Vn is the bitrate utilitySn is the playback Smoothnessy is the tradeoff weight parameter

IV. Going further: DASH.js BOLA, another approach

Page 29: ABR Algorithms Explained (from Streaming Media East 2016)

IV. Going further: test and iterate!

Tweaking algorithms is easy, creating your forks too.

You’ve got the power!

- Know what is important to you (buffering, max bitrate, bandwidth savings…)

- Compare and cross with QoS analytics to understand your audiences

- Test and iterate: AB testing allows you to compare changes in real-time

Significant improvements without even changing your workflow!

Page 30: ABR Algorithms Explained (from Streaming Media East 2016)

QUESTIONS?

Page 31: ABR Algorithms Explained (from Streaming Media East 2016)

Further Reading / Contact Us

Probe and Adapt: Rate Adaptation for HTTP Video Streaming At Scale. Zhi Li, Xiaoqing Zhu, Josh Gahm, Rong Pan, Hao Hu, Ali C. Begen, Dave Oran, Cisco Systems, 7 Jul 2013.

Improving Fairness, Efficiency, and Stability in HTTP-based Adaptive Video Streaming with FESTIVE, Junchen Jiang, Carnegie Mellon University, Vyas Sekar, Stony Brook University, Hui Zhang, Carnegie Mellon, University/Conviva Inc. 2012.

ELASTIC: a Client-side Controller for Dynamic Adaptive Streaming over HTTP (DASH). Luca De Cicco, Member, IEEE, Vito Caldaralo, Vittorio Palmisano, and Saverio Mascolo, Senior Member, IEEE.

BOLA: Near-Optimal Bitrate Adaptation for Online Videos. Kevin Spiteri, Rahul Urgaonkar , Ramesh K. Sitaraman, University of Massachusetts Amherst, Amazon Inc., Akamai Technologies Inc.

Contact us at:

Nikolay Rodionov, Co-Founder and CPO, [email protected] Erica Beavers, Head of Partnerships, [email protected]