SlideShare una empresa de Scribd logo
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
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.
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 further
Another Approach: buffer levels
The key to improving: testing and iterating
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
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)
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
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)
II. The Basics: Constraints
1. Screen & Player Size
Bitrate should never be larger than the actual size of the video player
2. CPU & Dropped frame rate
Downgrade when too many dropped frames per second
3. Startup time
Always fetch the lowest quality first whenever the buffer is empty
II. The Basics: Tradeoff parameters
1. Maximize bitrate  available bandwidth estimation
Estimate the available bandwidth based on prior segment(s)
Available bandwidth = size of chunk / time taken to
download
2. Minimize rebuffering ratio  buffer size
Buffer ratio = buffering time / (buffering time + playback
time)
Abandon strategy
Source: BOLA
Example: HLS.js
HTML5 (MSE-based) media engine open-sourced by Dailymotion
https://github.com/dailymotion/hls.js
Very modular, so you can change the rules without even forking the media engine!
Example: HLS.js player size level capping
https://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
Example: HLS.js dropped frame rule
https://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
fpsDroppedMonitoringThreshold
fpsDroppedMonitoringPeriod
Example: HLS.js startup strategy
https://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.
Example: HLS.js bandwidth-based ABR controller
https://github.com/dailymotion/hls.js/blob/master/src/controller/abr-controller.js
Simple algorithm,
inspired by Android’s AVController’s ABR algo
Example: HLS.js P2P bandwidth estimation
Example: HLS.js bandwidth fragmentLoad abort rule
https://github.com/dailymotion/hls.js/blob/master/src/controller/abr-controller.js#L51
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.
1. Tweak the parameters
https://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: AbrController
capLevelController: CapLevelController,
fpsController: fpsController
Example: HLS.js how to improve
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
III. Improvements: better bandwidth estimation
A new 4-step approach:
1. Estimation
2. Smoothing
3. Quantizing
4. Scheduling
Source: Block diagram for PANDA
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?
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
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
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:
ThroughputRule
AbandonRequestsRule
2 secondary:
BufferOccupancyRule
InsufficientBufferRule
Example 2: DASH.JS main rules
Source: DASH-IF, Maxdome
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
Example 2: DASH.JS how to improve
1. Tweak the Parameters
ThroughputRule:
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 rules
https://github.com/Dash-Industry-Forum/dash.js/wiki/Migration-2.0#extending-dashjs
https://github.com/Dash-Industry-Forum/dash.js/blob/development/src/streaming/rules/abr/ABRRulesCollection.js
BufferOccupancyRule:
RICH_BUFFER_THRESHOLD = 20
Buffer size based ONLY  no more bandwidth estimations
Uses utility theory to make decisions: configurable tradeoff between rebuffering potential
& bitrate maximization:
Maximize Vn + y Sn
Where:
Vn is the bitrate utility
Sn is the playback Smoothness
y is the tradeoff weight parameter
IV. Going further: DASH.js BOLA, another approach
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!
QUESTIONS?
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, nikolay@streamroot.io
Erica Beavers, Head of Partnerships, erica@streamroot.io

Más contenido relacionado

La actualidad más candente

Ntroduction to computer architecture and organization
Ntroduction to computer architecture and organizationNtroduction to computer architecture and organization
Ntroduction to computer architecture and organization
Fakulti seni, komputeran dan indusri kreatif
 
14. Query Optimization in DBMS
14. Query Optimization in DBMS14. Query Optimization in DBMS
14. Query Optimization in DBMS
koolkampus
 
directory structure and file system mounting
directory structure and file system mountingdirectory structure and file system mounting
directory structure and file system mounting
rajshreemuthiah
 
C fundamental
C fundamentalC fundamental
C fundamental
Selvam Edwin
 
Chapter 2 - Operating System Structures
Chapter 2 - Operating System StructuresChapter 2 - Operating System Structures
Chapter 2 - Operating System Structures
Wayne Jones Jnr
 
The Application Layer
The Application LayerThe Application Layer
The Application Layer
MSharmilaDeviITDEPT
 
Lexical Analysis
Lexical AnalysisLexical Analysis
Lexical Analysis
Munni28
 
Introduction to System Calls
Introduction to System CallsIntroduction to System Calls
Introduction to System Calls
Vandana Salve
 
The Phases of a Compiler
The Phases of a CompilerThe Phases of a Compiler
The Phases of a Compiler
Radhika Talaviya
 
Operating systems system structures
Operating systems   system structuresOperating systems   system structures
Operating systems system structures
Mukesh Chinta
 
Salvatore Sanfilippo – How Redis Cluster works, and why - NoSQL matters Barce...
Salvatore Sanfilippo – How Redis Cluster works, and why - NoSQL matters Barce...Salvatore Sanfilippo – How Redis Cluster works, and why - NoSQL matters Barce...
Salvatore Sanfilippo – How Redis Cluster works, and why - NoSQL matters Barce...
NoSQLmatters
 
1.Role lexical Analyzer
1.Role lexical Analyzer1.Role lexical Analyzer
1.Role lexical Analyzer
Radhakrishnan Chinnusamy
 
File system structure
File system structureFile system structure
File system structure
sangrampatil81
 
Apache hadoop hbase
Apache hadoop hbaseApache hadoop hbase
Apache hadoop hbase
sheetal sharma
 
basics of compiler design
basics of compiler designbasics of compiler design
basics of compiler design
Preeti Katiyar
 
Software Cost Estimation Techniques
Software Cost Estimation TechniquesSoftware Cost Estimation Techniques
Software Cost Estimation Techniques
Santhi thi
 
Apache Hadoop and HBase
Apache Hadoop and HBaseApache Hadoop and HBase
Apache Hadoop and HBase
Cloudera, Inc.
 
FUNCTION DEPENDENCY AND TYPES & EXAMPLE
FUNCTION DEPENDENCY  AND TYPES & EXAMPLEFUNCTION DEPENDENCY  AND TYPES & EXAMPLE
FUNCTION DEPENDENCY AND TYPES & EXAMPLE
Vraj Patel
 
Passes of Compiler.pptx
Passes of Compiler.pptxPasses of Compiler.pptx
Passes of Compiler.pptx
Sanjay Singh
 
Introduction to Big Data and hadoop
Introduction to Big Data and hadoopIntroduction to Big Data and hadoop
Introduction to Big Data and hadoop
Sandeep Patil
 

La actualidad más candente (20)

Ntroduction to computer architecture and organization
Ntroduction to computer architecture and organizationNtroduction to computer architecture and organization
Ntroduction to computer architecture and organization
 
14. Query Optimization in DBMS
14. Query Optimization in DBMS14. Query Optimization in DBMS
14. Query Optimization in DBMS
 
directory structure and file system mounting
directory structure and file system mountingdirectory structure and file system mounting
directory structure and file system mounting
 
C fundamental
C fundamentalC fundamental
C fundamental
 
Chapter 2 - Operating System Structures
Chapter 2 - Operating System StructuresChapter 2 - Operating System Structures
Chapter 2 - Operating System Structures
 
The Application Layer
The Application LayerThe Application Layer
The Application Layer
 
Lexical Analysis
Lexical AnalysisLexical Analysis
Lexical Analysis
 
Introduction to System Calls
Introduction to System CallsIntroduction to System Calls
Introduction to System Calls
 
The Phases of a Compiler
The Phases of a CompilerThe Phases of a Compiler
The Phases of a Compiler
 
Operating systems system structures
Operating systems   system structuresOperating systems   system structures
Operating systems system structures
 
Salvatore Sanfilippo – How Redis Cluster works, and why - NoSQL matters Barce...
Salvatore Sanfilippo – How Redis Cluster works, and why - NoSQL matters Barce...Salvatore Sanfilippo – How Redis Cluster works, and why - NoSQL matters Barce...
Salvatore Sanfilippo – How Redis Cluster works, and why - NoSQL matters Barce...
 
1.Role lexical Analyzer
1.Role lexical Analyzer1.Role lexical Analyzer
1.Role lexical Analyzer
 
File system structure
File system structureFile system structure
File system structure
 
Apache hadoop hbase
Apache hadoop hbaseApache hadoop hbase
Apache hadoop hbase
 
basics of compiler design
basics of compiler designbasics of compiler design
basics of compiler design
 
Software Cost Estimation Techniques
Software Cost Estimation TechniquesSoftware Cost Estimation Techniques
Software Cost Estimation Techniques
 
Apache Hadoop and HBase
Apache Hadoop and HBaseApache Hadoop and HBase
Apache Hadoop and HBase
 
FUNCTION DEPENDENCY AND TYPES & EXAMPLE
FUNCTION DEPENDENCY  AND TYPES & EXAMPLEFUNCTION DEPENDENCY  AND TYPES & EXAMPLE
FUNCTION DEPENDENCY AND TYPES & EXAMPLE
 
Passes of Compiler.pptx
Passes of Compiler.pptxPasses of Compiler.pptx
Passes of Compiler.pptx
 
Introduction to Big Data and hadoop
Introduction to Big Data and hadoopIntroduction to Big Data and hadoop
Introduction to Big Data and hadoop
 

Similar a ABR Algorithms Explained (from Streaming Media East 2016)

Paris Video Tech - 1st Edition: Streamroot, Adaptive Bitrate Algorithms: comm...
Paris Video Tech - 1st Edition: Streamroot, Adaptive Bitrate Algorithms: comm...Paris Video Tech - 1st Edition: Streamroot, Adaptive Bitrate Algorithms: comm...
Paris Video Tech - 1st Edition: Streamroot, Adaptive Bitrate Algorithms: comm...
Erica Beavers
 
Improving fairness, efficiency, and stability in http based adaptive video st...
Improving fairness, efficiency, and stability in http based adaptive video st...Improving fairness, efficiency, and stability in http based adaptive video st...
Improving fairness, efficiency, and stability in http based adaptive video st...
Papitha Velumani
 
Scaling Streaming - Concepts, Research, Goals
Scaling Streaming - Concepts, Research, GoalsScaling Streaming - Concepts, Research, Goals
Scaling Streaming - Concepts, Research, Goals
kamaelian
 
Towards Benchmaking Modern Distruibuted Systems-(Grace Huang, Intel)
Towards Benchmaking Modern Distruibuted Systems-(Grace Huang, Intel)Towards Benchmaking Modern Distruibuted Systems-(Grace Huang, Intel)
Towards Benchmaking Modern Distruibuted Systems-(Grace Huang, Intel)
Spark Summit
 
IEEE ICC'22_ LEADER_ A Collaborative Edge- and SDN-Assisted Framework for HTT...
IEEE ICC'22_ LEADER_ A Collaborative Edge- and SDN-Assisted Framework for HTT...IEEE ICC'22_ LEADER_ A Collaborative Edge- and SDN-Assisted Framework for HTT...
IEEE ICC'22_ LEADER_ A Collaborative Edge- and SDN-Assisted Framework for HTT...
Reza Farahani
 
Case Study related to Testing
Case Study related to TestingCase Study related to Testing
Case Study related to Testing
ShauryaGupta38
 
Benchmarking Hadoop and Big Data
Benchmarking Hadoop and Big DataBenchmarking Hadoop and Big Data
Benchmarking Hadoop and Big Data
Nicolas Poggi
 
Emulation of Dynamic Adaptive Streaming over HTTP with Mininet
Emulation of Dynamic Adaptive Streaming over HTTP with MininetEmulation of Dynamic Adaptive Streaming over HTTP with Mininet
Emulation of Dynamic Adaptive Streaming over HTTP with Mininet
Anatoliy Zabrovskiy
 
3. Quality of Experience-Centric Management.pdf
3. Quality of Experience-Centric Management.pdf3. Quality of Experience-Centric Management.pdf
3. Quality of Experience-Centric Management.pdf
AliIssa53
 
Load testing and performance tracing
Load testing and performance tracingLoad testing and performance tracing
Load testing and performance tracing
Hans Höchtl
 
A Benchmark to Evaluate Mobile Video Upload to Cloud Infrastructures
A Benchmark to Evaluate Mobile Video Upload to Cloud InfrastructuresA Benchmark to Evaluate Mobile Video Upload to Cloud Infrastructures
A Benchmark to Evaluate Mobile Video Upload to Cloud Infrastructures
University of Southern California
 
AWS re:Invent 2016: Amazon CloudFront Flash Talks: Best Practices on Configur...
AWS re:Invent 2016: Amazon CloudFront Flash Talks: Best Practices on Configur...AWS re:Invent 2016: Amazon CloudFront Flash Talks: Best Practices on Configur...
AWS re:Invent 2016: Amazon CloudFront Flash Talks: Best Practices on Configur...
Amazon Web Services
 
A Two-Tiered On-Line Server-Side Bandwidth Reservation Framework for the Real...
A Two-Tiered On-Line Server-Side Bandwidth Reservation Framework for the Real...A Two-Tiered On-Line Server-Side Bandwidth Reservation Framework for the Real...
A Two-Tiered On-Line Server-Side Bandwidth Reservation Framework for the Real...
white paper
 
Application Profiling at the HPCAC High Performance Center
Application Profiling at the HPCAC High Performance CenterApplication Profiling at the HPCAC High Performance Center
Application Profiling at the HPCAC High Performance Center
inside-BigData.com
 
Web Speed And Scalability
Web Speed And ScalabilityWeb Speed And Scalability
Web Speed And Scalability
Jason Ragsdale
 
IBM Blockchain Platform - Architectural Good Practices v1.0
IBM Blockchain Platform - Architectural Good Practices v1.0IBM Blockchain Platform - Architectural Good Practices v1.0
IBM Blockchain Platform - Architectural Good Practices v1.0
Matt Lucas
 
TechTalkThai-CiscoHyperFlex
TechTalkThai-CiscoHyperFlexTechTalkThai-CiscoHyperFlex
TechTalkThai-CiscoHyperFlex
Jarut Nakaramaleerat
 
International Journal of Computational Engineering Research(IJCER)
 International Journal of Computational Engineering Research(IJCER)  International Journal of Computational Engineering Research(IJCER)
International Journal of Computational Engineering Research(IJCER)
ijceronline
 
Arquitetura Hibrida - Integrando seu Data Center com a Nuvem da AWS
Arquitetura Hibrida - Integrando seu Data Center com a Nuvem da AWSArquitetura Hibrida - Integrando seu Data Center com a Nuvem da AWS
Arquitetura Hibrida - Integrando seu Data Center com a Nuvem da AWS
Amazon Web Services LATAM
 
What would You do with a Million cores? HPC on AWS
What would You do with a Million cores? HPC on AWSWhat would You do with a Million cores? HPC on AWS
What would You do with a Million cores? HPC on AWS
Amazon Web Services
 

Similar a ABR Algorithms Explained (from Streaming Media East 2016) (20)

Paris Video Tech - 1st Edition: Streamroot, Adaptive Bitrate Algorithms: comm...
Paris Video Tech - 1st Edition: Streamroot, Adaptive Bitrate Algorithms: comm...Paris Video Tech - 1st Edition: Streamroot, Adaptive Bitrate Algorithms: comm...
Paris Video Tech - 1st Edition: Streamroot, Adaptive Bitrate Algorithms: comm...
 
Improving fairness, efficiency, and stability in http based adaptive video st...
Improving fairness, efficiency, and stability in http based adaptive video st...Improving fairness, efficiency, and stability in http based adaptive video st...
Improving fairness, efficiency, and stability in http based adaptive video st...
 
Scaling Streaming - Concepts, Research, Goals
Scaling Streaming - Concepts, Research, GoalsScaling Streaming - Concepts, Research, Goals
Scaling Streaming - Concepts, Research, Goals
 
Towards Benchmaking Modern Distruibuted Systems-(Grace Huang, Intel)
Towards Benchmaking Modern Distruibuted Systems-(Grace Huang, Intel)Towards Benchmaking Modern Distruibuted Systems-(Grace Huang, Intel)
Towards Benchmaking Modern Distruibuted Systems-(Grace Huang, Intel)
 
IEEE ICC'22_ LEADER_ A Collaborative Edge- and SDN-Assisted Framework for HTT...
IEEE ICC'22_ LEADER_ A Collaborative Edge- and SDN-Assisted Framework for HTT...IEEE ICC'22_ LEADER_ A Collaborative Edge- and SDN-Assisted Framework for HTT...
IEEE ICC'22_ LEADER_ A Collaborative Edge- and SDN-Assisted Framework for HTT...
 
Case Study related to Testing
Case Study related to TestingCase Study related to Testing
Case Study related to Testing
 
Benchmarking Hadoop and Big Data
Benchmarking Hadoop and Big DataBenchmarking Hadoop and Big Data
Benchmarking Hadoop and Big Data
 
Emulation of Dynamic Adaptive Streaming over HTTP with Mininet
Emulation of Dynamic Adaptive Streaming over HTTP with MininetEmulation of Dynamic Adaptive Streaming over HTTP with Mininet
Emulation of Dynamic Adaptive Streaming over HTTP with Mininet
 
3. Quality of Experience-Centric Management.pdf
3. Quality of Experience-Centric Management.pdf3. Quality of Experience-Centric Management.pdf
3. Quality of Experience-Centric Management.pdf
 
Load testing and performance tracing
Load testing and performance tracingLoad testing and performance tracing
Load testing and performance tracing
 
A Benchmark to Evaluate Mobile Video Upload to Cloud Infrastructures
A Benchmark to Evaluate Mobile Video Upload to Cloud InfrastructuresA Benchmark to Evaluate Mobile Video Upload to Cloud Infrastructures
A Benchmark to Evaluate Mobile Video Upload to Cloud Infrastructures
 
AWS re:Invent 2016: Amazon CloudFront Flash Talks: Best Practices on Configur...
AWS re:Invent 2016: Amazon CloudFront Flash Talks: Best Practices on Configur...AWS re:Invent 2016: Amazon CloudFront Flash Talks: Best Practices on Configur...
AWS re:Invent 2016: Amazon CloudFront Flash Talks: Best Practices on Configur...
 
A Two-Tiered On-Line Server-Side Bandwidth Reservation Framework for the Real...
A Two-Tiered On-Line Server-Side Bandwidth Reservation Framework for the Real...A Two-Tiered On-Line Server-Side Bandwidth Reservation Framework for the Real...
A Two-Tiered On-Line Server-Side Bandwidth Reservation Framework for the Real...
 
Application Profiling at the HPCAC High Performance Center
Application Profiling at the HPCAC High Performance CenterApplication Profiling at the HPCAC High Performance Center
Application Profiling at the HPCAC High Performance Center
 
Web Speed And Scalability
Web Speed And ScalabilityWeb Speed And Scalability
Web Speed And Scalability
 
IBM Blockchain Platform - Architectural Good Practices v1.0
IBM Blockchain Platform - Architectural Good Practices v1.0IBM Blockchain Platform - Architectural Good Practices v1.0
IBM Blockchain Platform - Architectural Good Practices v1.0
 
TechTalkThai-CiscoHyperFlex
TechTalkThai-CiscoHyperFlexTechTalkThai-CiscoHyperFlex
TechTalkThai-CiscoHyperFlex
 
International Journal of Computational Engineering Research(IJCER)
 International Journal of Computational Engineering Research(IJCER)  International Journal of Computational Engineering Research(IJCER)
International Journal of Computational Engineering Research(IJCER)
 
Arquitetura Hibrida - Integrando seu Data Center com a Nuvem da AWS
Arquitetura Hibrida - Integrando seu Data Center com a Nuvem da AWSArquitetura Hibrida - Integrando seu Data Center com a Nuvem da AWS
Arquitetura Hibrida - Integrando seu Data Center com a Nuvem da AWS
 
What would You do with a Million cores? HPC on AWS
What would You do with a Million cores? HPC on AWSWhat would You do with a Million cores? HPC on AWS
What would You do with a Million cores? HPC on AWS
 

Más de Erica Beavers

VLC 3.0 ++
VLC 3.0 ++VLC 3.0 ++
VLC 3.0 ++
Erica Beavers
 
Streamroot Verizon Ventures Demo Day Deck
Streamroot Verizon Ventures Demo Day DeckStreamroot Verizon Ventures Demo Day Deck
Streamroot Verizon Ventures Demo Day Deck
Erica Beavers
 
Streaming Media West 2017 - HTML5 Workshop
Streaming Media West 2017 - HTML5 WorkshopStreaming Media West 2017 - HTML5 Workshop
Streaming Media West 2017 - HTML5 Workshop
Erica Beavers
 
IBC 360 Tour: Virtual or Real Trends
IBC 360 Tour: Virtual or Real TrendsIBC 360 Tour: Virtual or Real Trends
IBC 360 Tour: Virtual or Real Trends
Erica Beavers
 
SME 2017 - HTML5 workshop
SME 2017 - HTML5 workshopSME 2017 - HTML5 workshop
SME 2017 - HTML5 workshop
Erica Beavers
 
The next generation of protocols and APIs that could change streaming video
The next generation of protocols and APIs that could change streaming videoThe next generation of protocols and APIs that could change streaming video
The next generation of protocols and APIs that could change streaming video
Erica Beavers
 
CMAF 101 by Cyril Concolato
CMAF 101 by Cyril ConcolatoCMAF 101 by Cyril Concolato
CMAF 101 by Cyril Concolato
Erica Beavers
 
2016 Streaming Media West: Choosing an HTML5 Player
2016 Streaming Media West: Choosing an HTML5 Player2016 Streaming Media West: Choosing an HTML5 Player
2016 Streaming Media West: Choosing an HTML5 Player
Erica Beavers
 
2016 Streaming Media West: Transitioning from Flash to HTML5
2016 Streaming Media West: Transitioning from Flash to HTML52016 Streaming Media West: Transitioning from Flash to HTML5
2016 Streaming Media West: Transitioning from Flash to HTML5
Erica Beavers
 
Paris Video Tech #2 - Presentation by Jean-Yves Avenard
Paris Video Tech #2 - Presentation by Jean-Yves AvenardParis Video Tech #2 - Presentation by Jean-Yves Avenard
Paris Video Tech #2 - Presentation by Jean-Yves Avenard
Erica Beavers
 
Paris Video Tech - 1st Edition: Afrostream, un player agile  pour suivre le m...
Paris Video Tech - 1st Edition: Afrostream, un player agile  pour suivre le m...Paris Video Tech - 1st Edition: Afrostream, un player agile  pour suivre le m...
Paris Video Tech - 1st Edition: Afrostream, un player agile  pour suivre le m...
Erica Beavers
 
Paris Video Tech - 1st Edition: Dailymotion Améliorer l'expérience utilisateu...
Paris Video Tech - 1st Edition: Dailymotion Améliorer l'expérience utilisateu...Paris Video Tech - 1st Edition: Dailymotion Améliorer l'expérience utilisateu...
Paris Video Tech - 1st Edition: Dailymotion Améliorer l'expérience utilisateu...
Erica Beavers
 

Más de Erica Beavers (12)

VLC 3.0 ++
VLC 3.0 ++VLC 3.0 ++
VLC 3.0 ++
 
Streamroot Verizon Ventures Demo Day Deck
Streamroot Verizon Ventures Demo Day DeckStreamroot Verizon Ventures Demo Day Deck
Streamroot Verizon Ventures Demo Day Deck
 
Streaming Media West 2017 - HTML5 Workshop
Streaming Media West 2017 - HTML5 WorkshopStreaming Media West 2017 - HTML5 Workshop
Streaming Media West 2017 - HTML5 Workshop
 
IBC 360 Tour: Virtual or Real Trends
IBC 360 Tour: Virtual or Real TrendsIBC 360 Tour: Virtual or Real Trends
IBC 360 Tour: Virtual or Real Trends
 
SME 2017 - HTML5 workshop
SME 2017 - HTML5 workshopSME 2017 - HTML5 workshop
SME 2017 - HTML5 workshop
 
The next generation of protocols and APIs that could change streaming video
The next generation of protocols and APIs that could change streaming videoThe next generation of protocols and APIs that could change streaming video
The next generation of protocols and APIs that could change streaming video
 
CMAF 101 by Cyril Concolato
CMAF 101 by Cyril ConcolatoCMAF 101 by Cyril Concolato
CMAF 101 by Cyril Concolato
 
2016 Streaming Media West: Choosing an HTML5 Player
2016 Streaming Media West: Choosing an HTML5 Player2016 Streaming Media West: Choosing an HTML5 Player
2016 Streaming Media West: Choosing an HTML5 Player
 
2016 Streaming Media West: Transitioning from Flash to HTML5
2016 Streaming Media West: Transitioning from Flash to HTML52016 Streaming Media West: Transitioning from Flash to HTML5
2016 Streaming Media West: Transitioning from Flash to HTML5
 
Paris Video Tech #2 - Presentation by Jean-Yves Avenard
Paris Video Tech #2 - Presentation by Jean-Yves AvenardParis Video Tech #2 - Presentation by Jean-Yves Avenard
Paris Video Tech #2 - Presentation by Jean-Yves Avenard
 
Paris Video Tech - 1st Edition: Afrostream, un player agile  pour suivre le m...
Paris Video Tech - 1st Edition: Afrostream, un player agile  pour suivre le m...Paris Video Tech - 1st Edition: Afrostream, un player agile  pour suivre le m...
Paris Video Tech - 1st Edition: Afrostream, un player agile  pour suivre le m...
 
Paris Video Tech - 1st Edition: Dailymotion Améliorer l'expérience utilisateu...
Paris Video Tech - 1st Edition: Dailymotion Améliorer l'expérience utilisateu...Paris Video Tech - 1st Edition: Dailymotion Améliorer l'expérience utilisateu...
Paris Video Tech - 1st Edition: Dailymotion Améliorer l'expérience utilisateu...
 

Último

Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
MichaelKnudsen27
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
Matthew Sinclair
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
名前 です男
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
Zilliz
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
innovationoecd
 
Recommendation System using RAG Architecture
Recommendation System using RAG ArchitectureRecommendation System using RAG Architecture
Recommendation System using RAG Architecture
fredae14
 
Webinar: Designing a schema for a Data Warehouse
Webinar: Designing a schema for a Data WarehouseWebinar: Designing a schema for a Data Warehouse
Webinar: Designing a schema for a Data Warehouse
Federico Razzoli
 
WeTestAthens: Postman's AI & Automation Techniques
WeTestAthens: Postman's AI & Automation TechniquesWeTestAthens: Postman's AI & Automation Techniques
WeTestAthens: Postman's AI & Automation Techniques
Postman
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Tosin Akinosho
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
Zilliz
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Safe Software
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
DianaGray10
 
OpenID AuthZEN Interop Read Out - Authorization
OpenID AuthZEN Interop Read Out - AuthorizationOpenID AuthZEN Interop Read Out - Authorization
OpenID AuthZEN Interop Read Out - Authorization
David Brossard
 
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceAI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
IndexBug
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
Zilliz
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
panagenda
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
Zilliz
 
Introduction of Cybersecurity with OSS at Code Europe 2024
Introduction of Cybersecurity with OSS  at Code Europe 2024Introduction of Cybersecurity with OSS  at Code Europe 2024
Introduction of Cybersecurity with OSS at Code Europe 2024
Hiroshi SHIBATA
 

Último (20)

Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
 
Recommendation System using RAG Architecture
Recommendation System using RAG ArchitectureRecommendation System using RAG Architecture
Recommendation System using RAG Architecture
 
Webinar: Designing a schema for a Data Warehouse
Webinar: Designing a schema for a Data WarehouseWebinar: Designing a schema for a Data Warehouse
Webinar: Designing a schema for a Data Warehouse
 
WeTestAthens: Postman's AI & Automation Techniques
WeTestAthens: Postman's AI & Automation TechniquesWeTestAthens: Postman's AI & Automation Techniques
WeTestAthens: Postman's AI & Automation Techniques
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
 
OpenID AuthZEN Interop Read Out - Authorization
OpenID AuthZEN Interop Read Out - AuthorizationOpenID AuthZEN Interop Read Out - Authorization
OpenID AuthZEN Interop Read Out - Authorization
 
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceAI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
 
Introduction of Cybersecurity with OSS at Code Europe 2024
Introduction of Cybersecurity with OSS  at Code Europe 2024Introduction of Cybersecurity with OSS  at Code Europe 2024
Introduction of Cybersecurity with OSS at Code Europe 2024
 

ABR Algorithms Explained (from Streaming Media East 2016)

  • 1. 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
  • 2. 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.
  • 3. 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 further Another Approach: buffer levels The key to improving: testing and iterating
  • 4. 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
  • 5. 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)
  • 6. 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
  • 7. 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)
  • 8. II. The Basics: Constraints 1. Screen & Player Size Bitrate should never be larger than the actual size of the video player 2. CPU & Dropped frame rate Downgrade when too many dropped frames per second 3. Startup time Always fetch the lowest quality first whenever the buffer is empty
  • 9. II. The Basics: Tradeoff parameters 1. Maximize bitrate  available bandwidth estimation Estimate the available bandwidth based on prior segment(s) Available bandwidth = size of chunk / time taken to download 2. Minimize rebuffering ratio  buffer size Buffer ratio = buffering time / (buffering time + playback time) Abandon strategy Source: BOLA
  • 10. Example: HLS.js HTML5 (MSE-based) media engine open-sourced by Dailymotion https://github.com/dailymotion/hls.js Very modular, so you can change the rules without even forking the media engine!
  • 11. Example: HLS.js player size level capping https://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
  • 12. Example: HLS.js dropped frame rule https://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 fpsDroppedMonitoringThreshold fpsDroppedMonitoringPeriod
  • 13. Example: HLS.js startup strategy https://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.
  • 14. Example: HLS.js bandwidth-based ABR controller https://github.com/dailymotion/hls.js/blob/master/src/controller/abr-controller.js Simple algorithm, inspired by Android’s AVController’s ABR algo
  • 15. Example: HLS.js P2P bandwidth estimation
  • 16. Example: HLS.js bandwidth fragmentLoad abort rule https://github.com/dailymotion/hls.js/blob/master/src/controller/abr-controller.js#L51
  • 17. 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.
  • 18. 1. Tweak the parameters https://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: AbrController capLevelController: CapLevelController, fpsController: fpsController Example: HLS.js how to improve
  • 19. 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
  • 20. III. Improvements: better bandwidth estimation A new 4-step approach: 1. Estimation 2. Smoothing 3. Quantizing 4. Scheduling Source: Block diagram for PANDA
  • 21. 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?
  • 22. 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
  • 23. 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
  • 24. 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: ThroughputRule AbandonRequestsRule 2 secondary: BufferOccupancyRule InsufficientBufferRule
  • 25. Example 2: DASH.JS main rules Source: DASH-IF, Maxdome
  • 26. 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
  • 27. Example 2: DASH.JS how to improve 1. Tweak the Parameters ThroughputRule: 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 rules https://github.com/Dash-Industry-Forum/dash.js/wiki/Migration-2.0#extending-dashjs https://github.com/Dash-Industry-Forum/dash.js/blob/development/src/streaming/rules/abr/ABRRulesCollection.js BufferOccupancyRule: RICH_BUFFER_THRESHOLD = 20
  • 28. Buffer size based ONLY  no more bandwidth estimations Uses utility theory to make decisions: configurable tradeoff between rebuffering potential & bitrate maximization: Maximize Vn + y Sn Where: Vn is the bitrate utility Sn is the playback Smoothness y is the tradeoff weight parameter IV. Going further: DASH.js BOLA, another approach
  • 29. 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!
  • 31. 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, nikolay@streamroot.io Erica Beavers, Head of Partnerships, erica@streamroot.io

Notas del editor

  1. Explain what HLS.js is. Also say it’s quite simple to extend, as the different controllers are actually option parameters, and so can be easily replaced.
  2. Checks the max CapLevel corresponding to current player size Every 1000ms. You can also add up manual level caps on initialization. If the cap level is bigger that the last one (which means the player size has grown, like in Fullscreen for exemple), then you flush the current buffer and ask for a new quality right away (force the buffer)
  3. Calculates the dropped frames per second ratio. If it is > 0.2, bans the level for ever => goes into restricated levels Not activated in production! fpsDroppedMonitoringThreshold fpsDroppedMonitoringPeriod
  4. First segment always from the lowest quality, then it continues with normal rule (very simple simple rule in practice!) Another optimization is just to load this level (and playlist), and don’t wait for the other levels to have been loaded
  5. Simple algorithm,
  6. Here talk about Streamroot, and the fact having the sources from different buffers is even more difficult! Code from us?x Basically a onProgress & bandwidth estimation too (coming from CDN & P2P network!) Request.onProgress Request.onLoad => classic estimation With P2P estimation! Don’t wanna infinite speed, and thus includes a P2P bandwidth metric. Not the same for different peers, so averaged and smoothed Code from us?x Basically a onProgress & bandwidth estimation too (coming from CDN & P2P network!) Shema => a P2P cache and a CDN buffer => and time = 0
  7. One of the most important ones here What happens if you started a request and then BW drops ? Especially important when you ahve long fragments, this can very easily lead to a buffer underrun! After Half of the needed time, compare the estimate time of arrival to time of buffer underrun. And then see if there is another level that could solve the issue?
  8. Pros: Simple implementation, taking into account a lot of different params Works as good as the other implementation at Dailymotion! (alshls, android, iPhone… etc) Cons: Still Naive bandwidth estimation => possible overestimation, and possible oscillation around bitrates? We can do a lot of improvements on bandwidth estimation! difficult to correlate a unique segment download time to the real device’s available bandwidth, for several reasons: You can have very quick bandwidth changes, especially on a mobile network, as well as unexpected bandwidth drops The requests can be living in parallel with other TCP request (HTTP or any other on the user’s device) This can lead to frequent estimation oscillations!
  9. The different static constants more for you use-case? You can play with them You can also easily build your own rule! Here is an example on Github? First explain how to do that?
  10. difficult to correlate a unique segment download time to the real device’s available bandwidth, for several reasons: You can have very quick bandwidth changes, especially on a mobile network, as well as unexpected bandwidth drops The requests can be living in parallel with other TCP request (HTTP or any other on the user’s device) This can lead to frequent estimation oscillations!
  11. difficult to correlate a unique segment download time to the real device’s available bandwidth, for several reasons: You can have very quick bandwidth changes, especially on a mobile network, as well as unexpected bandwidth drops The requests can be living in parallel with other TCP request (HTTP or any other on the user’s device) This can lead to frequent estimation oscillations!
  12. Good to minimize the oscillations! Can have a different switch when UP or DOWN: Conservative when UP, less conservative when DOWN You can also scale taking into account the bitrate (and it’s utility)
  13. DASH.Js has 4 different Rules ThroughputRule  calculates bandwidth with some smoothing! No real quantizing (have a real estimate and no other values) AbandonRequestsRule  cancels if takes more than 1.5x of donwload  BufferOccupancyRule to now go down if buffer large enough (RICH BUFFER TRESHOLD) InsufficientBufferRule  au tas
  14. You can easily take the best out of hls.js here! Write a player size rule, a FPS drop rule… change the Abandonrate rule! It’s all very easy to do!
  15. BOLA stuff ? The approach is quite difficult to explain… based on utility theory, and supposed to be a lot more efficient because there are no need to estimate the bandiwdth. BUT Not fully implemented in dash.js, and there are some optimisation constants that depend a lot on the use-case (target buffer, live, vod…) Today not working great for small segment sizes AND small buffer size ( but good for 1+ min apparently?) Still work in progress, but an interesting approach!
  16. We can give a lot of tips, but most of the use-cases are spcific (segment size, playlist size, latency… and also which parameter is most important to you (buffer rate? Best bitrate ? Best bitrate no so useful if you KNOW that most of your user have a better bandwidth anyway? Number of switches) So what’s important is to have a way to iterate and improve ? The best is to have AB testing on 50/50 of population, to be able to quickly see results and compare them! What happens if you just tweak one parameter ? The results can be quite stunning!
  17. We can give a lot of tips, but most of the use-cases are spcific (segment size, playlist size, latency… and also which parameter is most important to you (buffer rate? Best bitrate ? Best bitrate no so useful if you KNOW that most of your user have a better bandwidth anyway? Number of switches) So what’s important is to have a way to iterate and improve ? The best is to have AB testing on 50/50 of population, to be able to quickly see results and compare them! What happens if you just tweak one parameter ? The results can be quite stunning!