SlideShare une entreprise Scribd logo
1  sur  22
ADAPTIVE BITRATE ALGORITHMS: HOW THEY WORK
AND HOW TO OPTIMIZE YOUR STACK
22 juin 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.
Presentation Outline
I. Design goals
II. Components: Constraints & Parameters
Examples: hls.js & dash.js
Basic Algorithms + improvements: smoothing, quantizing, scheduling
III. Going further
Another Approach: buffer levels
The key to improving: testing and iterating
I. Design goals: optimize viewer experience
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. Design goals: 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. Components: Constraints and Parameters
CONSTRAINTS PARAMETERS
Screen size / Player size Buffer size
CPU & Dropped frame threshold Bandwidth & possible bitrate
Startup time / Rebuffering recovery (Bonus: P2P Bandwidth)
II. Components: constraints
1. Screen & Player Size
Resolution should never be larger than the actual size of the video player
2. CPU & Dropped frames
Downgrade when too many dropped frames per second
3. Startup time
Always fetch the lowest quality first whenever the buffer is empty
Screen & player size: HLS.js
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
Dropped frames: HLS.js
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
Startup time strategies
https://github.com/dailymotion/hls.js/blob/master/src/controller/stream-controller.js#L131
https://github.com/Dash-Industry-Forum/dash.js/blob/master/src/streaming/rules/abr/InsufficientBufferRule.js
First segment loaded from the first level in
the playlist (capped by the cap level rule),
then continues with normal ABR rule.
HLS.js DASH.js
Always loads the lowest
quality when buffer empty
II. Components: parameters
1. Bandwidth Estimation (goal: maximize bitrate)
Estimate available bandwidth based on prior segment(s)
Available bandwidth = size of chunk / time taken to download
2. Buffer size (goal: minimize rebuffering ratio)
Rebuffering ratio = buffering time / (buffering time + playback time)
Also: Abandon strategy
Bandwidth estimation: HLS.js quantization
https://github.com/dailymotion/hls.js/blob/master/src/controller/abr-controller.js
Adding levels quantization
to reduce oscillation
(Bonus) P2P bandwidth estimation: HLS.js
Bandwidth estimation: DASH.JS smoothing
Bandwidth smoothing,
taking the last X segment
estimations into account
https://github.com/Dash-Industry-Forum/dash.js/blob/development/src/streaming/rules/abr/ThroughputRule.js
Bandwidth fragment abort rule: HLS.js and DASH.JS
https://github.com/dailymotion/hls.js/blob/master/src/controller/abr-controller.js#L51
https://github.com/Dash-Industry-Forum/dash.js/blob/master/src/streaming/rules/abr/AbandonRequestsRule.js
HLS.js DASH.js
(Bonus) DASH.JS complementary buffer-based rules
Prevents from switching
down when buffer is large
enough (mostly for VOD)
https://github.com/Dash-Industry-Forum/dash.js/blob/development/src/streaming/rules/abr/BufferOccupancyRule.js
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!
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
1. Tweak the parameters
https://github.com/dailymotion/hls.js/blob/master/API
.md#fine-tuning
2. Write your own rules!
AbrController: AbrController
capLevelController: CapLevelController,
fpsController: fpsController
IV. Going further: how to improve in practice
HLS.js DASH.js
1. Tweak the Parameters
http://cdn.dashjs.org/latest/jsdoc/index.html
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
QUESTIONS?
Guess what?
We’re Hiring!
Core JavaScript ■ Backend Scalability ■ Junior Software Developer ■ Presales & Support
http://www.streamroot.io/jobs
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.
Drop us a line:
Nikolay Rodionov, Co-Founder and CPO, nikolay@streamroot.io
Erica Beavers, Head of Partnerships, erica@streamroot.io

Contenu connexe

Tendances

リニア放送型動画サービスの 
Web フロントエンド
リニア放送型動画サービスの 
Web フロントエンドリニア放送型動画サービスの 
Web フロントエンド
リニア放送型動画サービスの 
Web フロントエンドYusuke Goto
 
Choosing the Segment Length for Adaptive Bitrate Streaming
Choosing the Segment Length for Adaptive Bitrate StreamingChoosing the Segment Length for Adaptive Bitrate Streaming
Choosing the Segment Length for Adaptive Bitrate StreamingBitmovin Inc
 
Implementing HLS server with GO
Implementing HLS server with GOImplementing HLS server with GO
Implementing HLS server with GOSangwon Lee
 
Edge 2014: MPEG DASH – Tomorrow's Format Today
Edge 2014: MPEG DASH – Tomorrow's Format TodayEdge 2014: MPEG DASH – Tomorrow's Format Today
Edge 2014: MPEG DASH – Tomorrow's Format TodayAkamai Technologies
 
Streaming of SVG animations on the Web
Streaming of SVG animations on the WebStreaming of SVG animations on the Web
Streaming of SVG animations on the WebCyril Concolato
 
Different Types of Live Video Streaming Protocols and the Way They Work
Different Types of Live Video Streaming Protocols and the Way They WorkDifferent Types of Live Video Streaming Protocols and the Way They Work
Different Types of Live Video Streaming Protocols and the Way They WorkChetu
 
Streaming Stored Video
Streaming Stored VideoStreaming Stored Video
Streaming Stored VideoMdAshikJiddney
 
Standards' Perspective - MPEG DASH overview and related efforts
Standards' Perspective - MPEG DASH overview and related effortsStandards' Perspective - MPEG DASH overview and related efforts
Standards' Perspective - MPEG DASH overview and related effortsIMTC
 
On ABR Streaming and CDN Performance
On ABR Streaming and CDN PerformanceOn ABR Streaming and CDN Performance
On ABR Streaming and CDN PerformanceDavid Sayed
 
CAdViSE: Cloud based Adaptive Video Streaming Evaluation Framework for the Au...
CAdViSE: Cloud based Adaptive Video Streaming Evaluation Framework for the Au...CAdViSE: Cloud based Adaptive Video Streaming Evaluation Framework for the Au...
CAdViSE: Cloud based Adaptive Video Streaming Evaluation Framework for the Au...Alpen-Adria-Universität
 
Ceph Day Chicago - Deploying flash storage for Ceph without compromising perf...
Ceph Day Chicago - Deploying flash storage for Ceph without compromising perf...Ceph Day Chicago - Deploying flash storage for Ceph without compromising perf...
Ceph Day Chicago - Deploying flash storage for Ceph without compromising perf...Ceph Community
 
Seattle Video Tech Meetup August 2019: Optimal Multi-codec Streaming
Seattle Video Tech Meetup August 2019: Optimal Multi-codec StreamingSeattle Video Tech Meetup August 2019: Optimal Multi-codec Streaming
Seattle Video Tech Meetup August 2019: Optimal Multi-codec StreamingDavid Sayed
 
Seattle Video Tech: The Future of SSAI on OTT Devices
Seattle Video Tech: The Future of SSAI on OTT DevicesSeattle Video Tech: The Future of SSAI on OTT Devices
Seattle Video Tech: The Future of SSAI on OTT DevicesDavid Sayed
 
Video Coding Enhancements for HTTP Adaptive Streaming
Video Coding Enhancements for HTTP Adaptive StreamingVideo Coding Enhancements for HTTP Adaptive Streaming
Video Coding Enhancements for HTTP Adaptive StreamingAlpen-Adria-Universität
 
Dynamic Adaptive Streaming over HTTP: From Content Creation to Consumption
Dynamic Adaptive Streaming over HTTP: From Content Creation to ConsumptionDynamic Adaptive Streaming over HTTP: From Content Creation to Consumption
Dynamic Adaptive Streaming over HTTP: From Content Creation to ConsumptionAlpen-Adria-Universität
 
MiPSO: Multi-Period Per-Scene Optimization For HTTP Adaptive Streaming
MiPSO: Multi-Period Per-Scene Optimization For HTTP Adaptive StreamingMiPSO: Multi-Period Per-Scene Optimization For HTTP Adaptive Streaming
MiPSO: Multi-Period Per-Scene Optimization For HTTP Adaptive StreamingAlpen-Adria-Universität
 
HTTP Adaptive Streaming State of the Art and Challenges Ahead
HTTP Adaptive StreamingState of the Art and Challenges AheadHTTP Adaptive StreamingState of the Art and Challenges Ahead
HTTP Adaptive Streaming State of the Art and Challenges AheadAlpen-Adria-Universität
 
Doing QoS Before Ceph Cluster QoS is available - David Byte, Alex Lau
Doing QoS Before Ceph Cluster QoS is available - David Byte, Alex LauDoing QoS Before Ceph Cluster QoS is available - David Byte, Alex Lau
Doing QoS Before Ceph Cluster QoS is available - David Byte, Alex LauCeph Community
 

Tendances (20)

リニア放送型動画サービスの 
Web フロントエンド
リニア放送型動画サービスの 
Web フロントエンドリニア放送型動画サービスの 
Web フロントエンド
リニア放送型動画サービスの 
Web フロントエンド
 
Choosing the Segment Length for Adaptive Bitrate Streaming
Choosing the Segment Length for Adaptive Bitrate StreamingChoosing the Segment Length for Adaptive Bitrate Streaming
Choosing the Segment Length for Adaptive Bitrate Streaming
 
Implementing HLS server with GO
Implementing HLS server with GOImplementing HLS server with GO
Implementing HLS server with GO
 
Mm sys 2013-demo
Mm sys 2013-demoMm sys 2013-demo
Mm sys 2013-demo
 
Edge 2014: MPEG DASH – Tomorrow's Format Today
Edge 2014: MPEG DASH – Tomorrow's Format TodayEdge 2014: MPEG DASH – Tomorrow's Format Today
Edge 2014: MPEG DASH – Tomorrow's Format Today
 
Streaming of SVG animations on the Web
Streaming of SVG animations on the WebStreaming of SVG animations on the Web
Streaming of SVG animations on the Web
 
Different Types of Live Video Streaming Protocols and the Way They Work
Different Types of Live Video Streaming Protocols and the Way They WorkDifferent Types of Live Video Streaming Protocols and the Way They Work
Different Types of Live Video Streaming Protocols and the Way They Work
 
Streaming Stored Video
Streaming Stored VideoStreaming Stored Video
Streaming Stored Video
 
Slides
SlidesSlides
Slides
 
Standards' Perspective - MPEG DASH overview and related efforts
Standards' Perspective - MPEG DASH overview and related effortsStandards' Perspective - MPEG DASH overview and related efforts
Standards' Perspective - MPEG DASH overview and related efforts
 
On ABR Streaming and CDN Performance
On ABR Streaming and CDN PerformanceOn ABR Streaming and CDN Performance
On ABR Streaming and CDN Performance
 
CAdViSE: Cloud based Adaptive Video Streaming Evaluation Framework for the Au...
CAdViSE: Cloud based Adaptive Video Streaming Evaluation Framework for the Au...CAdViSE: Cloud based Adaptive Video Streaming Evaluation Framework for the Au...
CAdViSE: Cloud based Adaptive Video Streaming Evaluation Framework for the Au...
 
Ceph Day Chicago - Deploying flash storage for Ceph without compromising perf...
Ceph Day Chicago - Deploying flash storage for Ceph without compromising perf...Ceph Day Chicago - Deploying flash storage for Ceph without compromising perf...
Ceph Day Chicago - Deploying flash storage for Ceph without compromising perf...
 
Seattle Video Tech Meetup August 2019: Optimal Multi-codec Streaming
Seattle Video Tech Meetup August 2019: Optimal Multi-codec StreamingSeattle Video Tech Meetup August 2019: Optimal Multi-codec Streaming
Seattle Video Tech Meetup August 2019: Optimal Multi-codec Streaming
 
Seattle Video Tech: The Future of SSAI on OTT Devices
Seattle Video Tech: The Future of SSAI on OTT DevicesSeattle Video Tech: The Future of SSAI on OTT Devices
Seattle Video Tech: The Future of SSAI on OTT Devices
 
Video Coding Enhancements for HTTP Adaptive Streaming
Video Coding Enhancements for HTTP Adaptive StreamingVideo Coding Enhancements for HTTP Adaptive Streaming
Video Coding Enhancements for HTTP Adaptive Streaming
 
Dynamic Adaptive Streaming over HTTP: From Content Creation to Consumption
Dynamic Adaptive Streaming over HTTP: From Content Creation to ConsumptionDynamic Adaptive Streaming over HTTP: From Content Creation to Consumption
Dynamic Adaptive Streaming over HTTP: From Content Creation to Consumption
 
MiPSO: Multi-Period Per-Scene Optimization For HTTP Adaptive Streaming
MiPSO: Multi-Period Per-Scene Optimization For HTTP Adaptive StreamingMiPSO: Multi-Period Per-Scene Optimization For HTTP Adaptive Streaming
MiPSO: Multi-Period Per-Scene Optimization For HTTP Adaptive Streaming
 
HTTP Adaptive Streaming State of the Art and Challenges Ahead
HTTP Adaptive StreamingState of the Art and Challenges AheadHTTP Adaptive StreamingState of the Art and Challenges Ahead
HTTP Adaptive Streaming State of the Art and Challenges Ahead
 
Doing QoS Before Ceph Cluster QoS is available - David Byte, Alex Lau
Doing QoS Before Ceph Cluster QoS is available - David Byte, Alex LauDoing QoS Before Ceph Cluster QoS is available - David Byte, Alex Lau
Doing QoS Before Ceph Cluster QoS is available - David Byte, Alex Lau
 

Similaire à Paris Video Tech - 1st Edition: Streamroot, Adaptive Bitrate Algorithms: comment ca marche, et comment les optimiser dans votre player HTML5

ABR Algorithms Explained (from Streaming Media East 2016).pptx
ABR Algorithms Explained (from Streaming Media East 2016).pptxABR Algorithms Explained (from Streaming Media East 2016).pptx
ABR Algorithms Explained (from Streaming Media East 2016).pptxAliEdan2
 
Using JMeter for Performance Testing Live Streaming Applications
Using JMeter for Performance Testing Live Streaming ApplicationsUsing JMeter for Performance Testing Live Streaming Applications
Using JMeter for Performance Testing Live Streaming ApplicationsBlazeMeter
 
Energy efficient AI workload partitioning on multi-core systems
Energy efficient AI workload partitioning on multi-core systemsEnergy efficient AI workload partitioning on multi-core systems
Energy efficient AI workload partitioning on multi-core systemsDeepak Shankar
 
Ambari Management Packs (Apache Ambari Meetup 2018)
Ambari Management Packs (Apache Ambari Meetup 2018)Ambari Management Packs (Apache Ambari Meetup 2018)
Ambari Management Packs (Apache Ambari Meetup 2018)Swapan Shridhar
 
Introduction to architecture exploration
Introduction to architecture explorationIntroduction to architecture exploration
Introduction to architecture explorationDeepak Shankar
 
2011 06-30-hadoop-summit v5
2011 06-30-hadoop-summit v52011 06-30-hadoop-summit v5
2011 06-30-hadoop-summit v5Samuel Rash
 
Streaming video to html
Streaming video to htmlStreaming video to html
Streaming video to htmljeff tapper
 
Best Practices and Performance Studies for High-Performance Computing Clusters
Best Practices and Performance Studies for High-Performance Computing ClustersBest Practices and Performance Studies for High-Performance Computing Clusters
Best Practices and Performance Studies for High-Performance Computing ClustersIntel® Software
 
Ambari Management Packs (Apache Ambari Meetup 2018)
Ambari Management Packs (Apache Ambari Meetup 2018)Ambari Management Packs (Apache Ambari Meetup 2018)
Ambari Management Packs (Apache Ambari Meetup 2018)Swapan Shridhar
 
StreamBase version 7 - overview
StreamBase version 7 - overviewStreamBase version 7 - overview
StreamBase version 7 - overviewstreambase
 
Optimization In Mobile Systems
Optimization In Mobile SystemsOptimization In Mobile Systems
Optimization In Mobile Systemsmomobangalore
 
System Architecture Exploration Training Class
System Architecture Exploration Training ClassSystem Architecture Exploration Training Class
System Architecture Exploration Training ClassDeepak Shankar
 
Optimizing Servers for High-Throughput and Low-Latency at Dropbox
Optimizing Servers for High-Throughput and Low-Latency at DropboxOptimizing Servers for High-Throughput and Low-Latency at Dropbox
Optimizing Servers for High-Throughput and Low-Latency at DropboxScyllaDB
 
WebSphere Technical University: Introduction to the Java Diagnostic Tools
WebSphere Technical University: Introduction to the Java Diagnostic ToolsWebSphere Technical University: Introduction to the Java Diagnostic Tools
WebSphere Technical University: Introduction to the Java Diagnostic ToolsChris Bailey
 
Media Source Extensions
Media Source ExtensionsMedia Source Extensions
Media Source ExtensionsFITC
 
Embedded System Programming on ARM Cortex M3 and M4 Course
Embedded System Programming on ARM Cortex M3 and M4 CourseEmbedded System Programming on ARM Cortex M3 and M4 Course
Embedded System Programming on ARM Cortex M3 and M4 CourseFastBit Embedded Brain Academy
 
Measurement .Net Performance with BenchmarkDotNet
Measurement .Net Performance with BenchmarkDotNetMeasurement .Net Performance with BenchmarkDotNet
Measurement .Net Performance with BenchmarkDotNetVasyl Senko
 
Compare Performance-power of Arm Cortex vs RISC-V for AI applications_oct_2021
Compare Performance-power of Arm Cortex vs RISC-V for AI applications_oct_2021Compare Performance-power of Arm Cortex vs RISC-V for AI applications_oct_2021
Compare Performance-power of Arm Cortex vs RISC-V for AI applications_oct_2021Deepak Shankar
 

Similaire à Paris Video Tech - 1st Edition: Streamroot, Adaptive Bitrate Algorithms: comment ca marche, et comment les optimiser dans votre player HTML5 (20)

ABR Algorithms Explained (from Streaming Media East 2016).pptx
ABR Algorithms Explained (from Streaming Media East 2016).pptxABR Algorithms Explained (from Streaming Media East 2016).pptx
ABR Algorithms Explained (from Streaming Media East 2016).pptx
 
Using JMeter for Performance Testing Live Streaming Applications
Using JMeter for Performance Testing Live Streaming ApplicationsUsing JMeter for Performance Testing Live Streaming Applications
Using JMeter for Performance Testing Live Streaming Applications
 
Energy efficient AI workload partitioning on multi-core systems
Energy efficient AI workload partitioning on multi-core systemsEnergy efficient AI workload partitioning on multi-core systems
Energy efficient AI workload partitioning on multi-core systems
 
Ambari Management Packs (Apache Ambari Meetup 2018)
Ambari Management Packs (Apache Ambari Meetup 2018)Ambari Management Packs (Apache Ambari Meetup 2018)
Ambari Management Packs (Apache Ambari Meetup 2018)
 
Introduction to architecture exploration
Introduction to architecture explorationIntroduction to architecture exploration
Introduction to architecture exploration
 
2011 06-30-hadoop-summit v5
2011 06-30-hadoop-summit v52011 06-30-hadoop-summit v5
2011 06-30-hadoop-summit v5
 
Typesafe spark- Zalando meetup
Typesafe spark- Zalando meetupTypesafe spark- Zalando meetup
Typesafe spark- Zalando meetup
 
Streaming video to html
Streaming video to htmlStreaming video to html
Streaming video to html
 
Best Practices and Performance Studies for High-Performance Computing Clusters
Best Practices and Performance Studies for High-Performance Computing ClustersBest Practices and Performance Studies for High-Performance Computing Clusters
Best Practices and Performance Studies for High-Performance Computing Clusters
 
Ambari Management Packs (Apache Ambari Meetup 2018)
Ambari Management Packs (Apache Ambari Meetup 2018)Ambari Management Packs (Apache Ambari Meetup 2018)
Ambari Management Packs (Apache Ambari Meetup 2018)
 
StreamBase version 7 - overview
StreamBase version 7 - overviewStreamBase version 7 - overview
StreamBase version 7 - overview
 
Optimization In Mobile Systems
Optimization In Mobile SystemsOptimization In Mobile Systems
Optimization In Mobile Systems
 
System Architecture Exploration Training Class
System Architecture Exploration Training ClassSystem Architecture Exploration Training Class
System Architecture Exploration Training Class
 
Optimizing Servers for High-Throughput and Low-Latency at Dropbox
Optimizing Servers for High-Throughput and Low-Latency at DropboxOptimizing Servers for High-Throughput and Low-Latency at Dropbox
Optimizing Servers for High-Throughput and Low-Latency at Dropbox
 
Apache Kafka Best Practices
Apache Kafka Best PracticesApache Kafka Best Practices
Apache Kafka Best Practices
 
WebSphere Technical University: Introduction to the Java Diagnostic Tools
WebSphere Technical University: Introduction to the Java Diagnostic ToolsWebSphere Technical University: Introduction to the Java Diagnostic Tools
WebSphere Technical University: Introduction to the Java Diagnostic Tools
 
Media Source Extensions
Media Source ExtensionsMedia Source Extensions
Media Source Extensions
 
Embedded System Programming on ARM Cortex M3 and M4 Course
Embedded System Programming on ARM Cortex M3 and M4 CourseEmbedded System Programming on ARM Cortex M3 and M4 Course
Embedded System Programming on ARM Cortex M3 and M4 Course
 
Measurement .Net Performance with BenchmarkDotNet
Measurement .Net Performance with BenchmarkDotNetMeasurement .Net Performance with BenchmarkDotNet
Measurement .Net Performance with BenchmarkDotNet
 
Compare Performance-power of Arm Cortex vs RISC-V for AI applications_oct_2021
Compare Performance-power of Arm Cortex vs RISC-V for AI applications_oct_2021Compare Performance-power of Arm Cortex vs RISC-V for AI applications_oct_2021
Compare Performance-power of Arm Cortex vs RISC-V for AI applications_oct_2021
 

Plus de Erica Beavers

Streamroot Verizon Ventures Demo Day Deck
Streamroot Verizon Ventures Demo Day DeckStreamroot Verizon Ventures Demo Day Deck
Streamroot Verizon Ventures Demo Day DeckErica Beavers
 
Streaming Media West 2017 - HTML5 Workshop
Streaming Media West 2017 - HTML5 WorkshopStreaming Media West 2017 - HTML5 Workshop
Streaming Media West 2017 - HTML5 WorkshopErica 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 TrendsErica Beavers
 
CMAF 101 by Cyril Concolato
CMAF 101 by Cyril ConcolatoCMAF 101 by Cyril Concolato
CMAF 101 by Cyril ConcolatoErica 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 HTML5Erica 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 AvenardErica 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
 

Plus de Erica Beavers (8)

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
 
CMAF 101 by Cyril Concolato
CMAF 101 by Cyril ConcolatoCMAF 101 by Cyril Concolato
CMAF 101 by Cyril Concolato
 
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: 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...
 

Dernier

Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 

Dernier (20)

Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 

Paris Video Tech - 1st Edition: Streamroot, Adaptive Bitrate Algorithms: comment ca marche, et comment les optimiser dans votre player HTML5

  • 1. ADAPTIVE BITRATE ALGORITHMS: HOW THEY WORK AND HOW TO OPTIMIZE YOUR STACK 22 juin 2016
  • 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. Design goals II. Components: Constraints & Parameters Examples: hls.js & dash.js Basic Algorithms + improvements: smoothing, quantizing, scheduling III. Going further Another Approach: buffer levels The key to improving: testing and iterating
  • 4. I. Design goals: optimize viewer experience 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)
  • 5. I. Design goals: 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
  • 6. II. Components: Constraints and Parameters CONSTRAINTS PARAMETERS Screen size / Player size Buffer size CPU & Dropped frame threshold Bandwidth & possible bitrate Startup time / Rebuffering recovery (Bonus: P2P Bandwidth)
  • 7. II. Components: constraints 1. Screen & Player Size Resolution should never be larger than the actual size of the video player 2. CPU & Dropped frames Downgrade when too many dropped frames per second 3. Startup time Always fetch the lowest quality first whenever the buffer is empty
  • 8. Screen & player size: HLS.js 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
  • 9. Dropped frames: HLS.js 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
  • 10. Startup time strategies https://github.com/dailymotion/hls.js/blob/master/src/controller/stream-controller.js#L131 https://github.com/Dash-Industry-Forum/dash.js/blob/master/src/streaming/rules/abr/InsufficientBufferRule.js First segment loaded from the first level in the playlist (capped by the cap level rule), then continues with normal ABR rule. HLS.js DASH.js Always loads the lowest quality when buffer empty
  • 11. II. Components: parameters 1. Bandwidth Estimation (goal: maximize bitrate) Estimate available bandwidth based on prior segment(s) Available bandwidth = size of chunk / time taken to download 2. Buffer size (goal: minimize rebuffering ratio) Rebuffering ratio = buffering time / (buffering time + playback time) Also: Abandon strategy
  • 12. Bandwidth estimation: HLS.js quantization https://github.com/dailymotion/hls.js/blob/master/src/controller/abr-controller.js Adding levels quantization to reduce oscillation
  • 13. (Bonus) P2P bandwidth estimation: HLS.js
  • 14. Bandwidth estimation: DASH.JS smoothing Bandwidth smoothing, taking the last X segment estimations into account https://github.com/Dash-Industry-Forum/dash.js/blob/development/src/streaming/rules/abr/ThroughputRule.js
  • 15. Bandwidth fragment abort rule: HLS.js and DASH.JS https://github.com/dailymotion/hls.js/blob/master/src/controller/abr-controller.js#L51 https://github.com/Dash-Industry-Forum/dash.js/blob/master/src/streaming/rules/abr/AbandonRequestsRule.js HLS.js DASH.js
  • 16. (Bonus) DASH.JS complementary buffer-based rules Prevents from switching down when buffer is large enough (mostly for VOD) https://github.com/Dash-Industry-Forum/dash.js/blob/development/src/streaming/rules/abr/BufferOccupancyRule.js
  • 17. 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
  • 18. IV. Going further: test and iterate! 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
  • 19. 1. Tweak the parameters https://github.com/dailymotion/hls.js/blob/master/API .md#fine-tuning 2. Write your own rules! AbrController: AbrController capLevelController: CapLevelController, fpsController: fpsController IV. Going further: how to improve in practice HLS.js DASH.js 1. Tweak the Parameters http://cdn.dashjs.org/latest/jsdoc/index.html 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
  • 21. Guess what? We’re Hiring! Core JavaScript ■ Backend Scalability ■ Junior Software Developer ■ Presales & Support http://www.streamroot.io/jobs
  • 22. 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. Drop us a line: Nikolay Rodionov, Co-Founder and CPO, nikolay@streamroot.io Erica Beavers, Head of Partnerships, erica@streamroot.io

Notes de l'éditeur

  1. 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)
  2. 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
  3. 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
  4. Simple algorithm,
  5. 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
  6. 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
  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. 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
  9. 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!
  10. 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!
  11. 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?
  12. 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!