![Page 1: ABR Algorithms Explained (from Streaming Media East 2016)](https://reader035.vdocuments.net/reader035/viewer/2022070514/587fe86f1a28ab46228b5ced/html5/thumbnails/1.jpg)
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)](https://reader035.vdocuments.net/reader035/viewer/2022070514/587fe86f1a28ab46228b5ced/html5/thumbnails/2.jpg)
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)](https://reader035.vdocuments.net/reader035/viewer/2022070514/587fe86f1a28ab46228b5ced/html5/thumbnails/3.jpg)
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)](https://reader035.vdocuments.net/reader035/viewer/2022070514/587fe86f1a28ab46228b5ced/html5/thumbnails/4.jpg)
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)](https://reader035.vdocuments.net/reader035/viewer/2022070514/587fe86f1a28ab46228b5ced/html5/thumbnails/5.jpg)
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)](https://reader035.vdocuments.net/reader035/viewer/2022070514/587fe86f1a28ab46228b5ced/html5/thumbnails/6.jpg)
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)](https://reader035.vdocuments.net/reader035/viewer/2022070514/587fe86f1a28ab46228b5ced/html5/thumbnails/7.jpg)
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)](https://reader035.vdocuments.net/reader035/viewer/2022070514/587fe86f1a28ab46228b5ced/html5/thumbnails/8.jpg)
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)](https://reader035.vdocuments.net/reader035/viewer/2022070514/587fe86f1a28ab46228b5ced/html5/thumbnails/9.jpg)
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)](https://reader035.vdocuments.net/reader035/viewer/2022070514/587fe86f1a28ab46228b5ced/html5/thumbnails/10.jpg)
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)](https://reader035.vdocuments.net/reader035/viewer/2022070514/587fe86f1a28ab46228b5ced/html5/thumbnails/11.jpg)
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)](https://reader035.vdocuments.net/reader035/viewer/2022070514/587fe86f1a28ab46228b5ced/html5/thumbnails/12.jpg)
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)](https://reader035.vdocuments.net/reader035/viewer/2022070514/587fe86f1a28ab46228b5ced/html5/thumbnails/13.jpg)
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)](https://reader035.vdocuments.net/reader035/viewer/2022070514/587fe86f1a28ab46228b5ced/html5/thumbnails/14.jpg)
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)](https://reader035.vdocuments.net/reader035/viewer/2022070514/587fe86f1a28ab46228b5ced/html5/thumbnails/15.jpg)
Example: HLS.js P2P bandwidth estimation
![Page 16: ABR Algorithms Explained (from Streaming Media East 2016)](https://reader035.vdocuments.net/reader035/viewer/2022070514/587fe86f1a28ab46228b5ced/html5/thumbnails/16.jpg)
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)](https://reader035.vdocuments.net/reader035/viewer/2022070514/587fe86f1a28ab46228b5ced/html5/thumbnails/17.jpg)
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)](https://reader035.vdocuments.net/reader035/viewer/2022070514/587fe86f1a28ab46228b5ced/html5/thumbnails/18.jpg)
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)](https://reader035.vdocuments.net/reader035/viewer/2022070514/587fe86f1a28ab46228b5ced/html5/thumbnails/19.jpg)
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)](https://reader035.vdocuments.net/reader035/viewer/2022070514/587fe86f1a28ab46228b5ced/html5/thumbnails/20.jpg)
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)](https://reader035.vdocuments.net/reader035/viewer/2022070514/587fe86f1a28ab46228b5ced/html5/thumbnails/21.jpg)
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)](https://reader035.vdocuments.net/reader035/viewer/2022070514/587fe86f1a28ab46228b5ced/html5/thumbnails/22.jpg)
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)](https://reader035.vdocuments.net/reader035/viewer/2022070514/587fe86f1a28ab46228b5ced/html5/thumbnails/23.jpg)
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)](https://reader035.vdocuments.net/reader035/viewer/2022070514/587fe86f1a28ab46228b5ced/html5/thumbnails/24.jpg)
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)](https://reader035.vdocuments.net/reader035/viewer/2022070514/587fe86f1a28ab46228b5ced/html5/thumbnails/25.jpg)
Example 2: DASH.JS main rules
Source: DASH-IF, Maxdome
![Page 26: ABR Algorithms Explained (from Streaming Media East 2016)](https://reader035.vdocuments.net/reader035/viewer/2022070514/587fe86f1a28ab46228b5ced/html5/thumbnails/26.jpg)
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)](https://reader035.vdocuments.net/reader035/viewer/2022070514/587fe86f1a28ab46228b5ced/html5/thumbnails/27.jpg)
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)](https://reader035.vdocuments.net/reader035/viewer/2022070514/587fe86f1a28ab46228b5ced/html5/thumbnails/28.jpg)
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)](https://reader035.vdocuments.net/reader035/viewer/2022070514/587fe86f1a28ab46228b5ced/html5/thumbnails/29.jpg)
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)](https://reader035.vdocuments.net/reader035/viewer/2022070514/587fe86f1a28ab46228b5ced/html5/thumbnails/30.jpg)
QUESTIONS?
![Page 31: ABR Algorithms Explained (from Streaming Media East 2016)](https://reader035.vdocuments.net/reader035/viewer/2022070514/587fe86f1a28ab46228b5ced/html5/thumbnails/31.jpg)
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]