Adaptive bitrate algorithms have become paramount in ensuring quality video delivery on every device and across varying network conditions. This presentation looks at the design goals and the inner workings of ABR logic, how it is used in the open-source players hls.js and dash.js, and what broadcasters can do to improve and optimize their own stack.
Kernel Recipes 2017 - EBPF and XDP - Eric LeblondAnne Nicolas
Berkeley Packet Filter is an old friend for most people that deal with network under Linux. But its extended version eBPF is completely redefining the scope of usage and interaction with the kernel. It can indeed be used to instrument most parts of the kernel. This goes from network tracing to process or I/O monitoring.
This talk will provide an overview of eBPF, from concept to tools like BCC. It will then focus on XDP for eXtreme Data Path and the possible applications in term of networking provided by this new framework.
Eric Leblond, Stamus Network
Kernel Recipes 2017 - EBPF and XDP - Eric LeblondAnne Nicolas
Berkeley Packet Filter is an old friend for most people that deal with network under Linux. But its extended version eBPF is completely redefining the scope of usage and interaction with the kernel. It can indeed be used to instrument most parts of the kernel. This goes from network tracing to process or I/O monitoring.
This talk will provide an overview of eBPF, from concept to tools like BCC. It will then focus on XDP for eXtreme Data Path and the possible applications in term of networking provided by this new framework.
Eric Leblond, Stamus Network
Our presentation from the media web symposium 2013 in Berlin on the open source landscape around MPEG-DASH as well as on cloud-based services for MPEG-DASH
A multimedia networking system allows for the data exchange of discrete and continuous media among computers.
This communication requires proper service and protocols for data transmission.
LAYERS: Provide a set of operations to the requesting application. Logically related services are grouped into layers according to the OSI layes.
PROTOCOL: A protocol consists of a set of rules which must be followed by peer layer instances during any communication between these two peers.
“MPLS is that it’s a technique, not a service.”
The fundamental concept behind MPLS is that of labeling packets. In a traditional routed IP network,
each router makes an independent forwarding decision for each packet based solely on the packet’s
network-layer header. Thus, every time a packet arrives at a router, the router has to “think through”
where to send the packet next.
Network layer - design Issues ,Store-and-Forward Packet Switching, Services Provided to the Transport Layer, Which service is the best , Implementation of Service , Implementation of Connectionless Service , Implementation of Connection-Oriented Service
In this slide, we discussed the IPVS, including the introduction, demonstration, implementation, and integration in Kubernetes.
IPVS was based on the netfilter and we discussed how it works with iptables and also compares the detail implementation in Kubernetes to show why IPVS has a better performance in IPTABLES.
Paris Video Tech - 1st Edition: Streamroot, Adaptive Bitrate Algorithms: comm...Erica Beavers
Nous ferons une rapide explication des enjeux et mécanismes de l'Adaptive Bitrate Streaming, puis allons regarder les implémentations pratiques dans les media engines de référence dash.js et hls.js.
Our presentation from the media web symposium 2013 in Berlin on the open source landscape around MPEG-DASH as well as on cloud-based services for MPEG-DASH
A multimedia networking system allows for the data exchange of discrete and continuous media among computers.
This communication requires proper service and protocols for data transmission.
LAYERS: Provide a set of operations to the requesting application. Logically related services are grouped into layers according to the OSI layes.
PROTOCOL: A protocol consists of a set of rules which must be followed by peer layer instances during any communication between these two peers.
“MPLS is that it’s a technique, not a service.”
The fundamental concept behind MPLS is that of labeling packets. In a traditional routed IP network,
each router makes an independent forwarding decision for each packet based solely on the packet’s
network-layer header. Thus, every time a packet arrives at a router, the router has to “think through”
where to send the packet next.
Network layer - design Issues ,Store-and-Forward Packet Switching, Services Provided to the Transport Layer, Which service is the best , Implementation of Service , Implementation of Connectionless Service , Implementation of Connection-Oriented Service
In this slide, we discussed the IPVS, including the introduction, demonstration, implementation, and integration in Kubernetes.
IPVS was based on the netfilter and we discussed how it works with iptables and also compares the detail implementation in Kubernetes to show why IPVS has a better performance in IPTABLES.
Paris Video Tech - 1st Edition: Streamroot, Adaptive Bitrate Algorithms: comm...Erica Beavers
Nous ferons une rapide explication des enjeux et mécanismes de l'Adaptive Bitrate Streaming, puis allons regarder les implémentations pratiques dans les media engines de référence dash.js et hls.js.
This was a talk, largely on Kamaelia & its original context given at a Free Streaming Workshop in Florence, Italy in Summer 2004. Many of the core
concepts still hold valid in Kamaelia today
Explaining why you should and how you can test your web application using JMeter test plans to determine the scalability. By knowing how good or bad your application performs you can then make the decision to optimize it.
But where to start optimizing? => You need to profile your application in order to see the components which have the most impact in your application regarding number of method calls, memory consumption and CPU time used.
XHProf is a good hierarchical profiler which you can use to generate the callstack and a callgraph of your application (directed acyclic weighted graph) to see where you could start optimizing your application.
This talk was presented on the TYPO3 DevDays 2015 in Nuremberg.
Efficient and thorough data collection and its timely analysis are critical for disaster response and recovery in order to save people's lives during disasters. However, access to comprehensive data in disaster areas and their quick analysis to transform the data to actionable knowledge are challenging. With the popularity and pervasiveness of mobile devices, crowdsourcing data collection and analysis has emerged as an effective and scalable solution. This paper addresses the problem of crowdsourcing mobile videos for disasters by identifying two unique challenges of 1) prioritizing visual data collection and transmission under bandwidth scarcity caused by damaged communication networks and 2) analyzing the acquired data in a timely manner. We introduce a new crowdsourcing framework for acquiring and analyzing the mobile videos utilizing fine granularity spatial metadata of videos for a rapidly changing disaster situation. We also develop an analytical model to quantify the visual awareness of a video based on its metadata and propose the visual awareness maximization problem for acquiring the most relevant data under bandwidth constraints. The collected videos are evenly distributed to off-site analysts to collectively minimize crowdsourcing efforts for analysis. Our simulation results demonstrate the effectiveness and feasibility of the proposed framework.
AWS re:Invent 2016: Amazon CloudFront Flash Talks: Best Practices on Configur...Amazon Web Services
In this series of 15-minute technical flash talks you will learn directly from Amazon CloudFront engineers and their best practices on debugging caching issues, measuring performance using Real User Monitoring (RUM), and stopping malicious viewers using CloudFront and AWS WAF.
Application Profiling at the HPCAC High Performance Centerinside-BigData.com
Pak Lui from the HPC Advisory Council presented this deck at the 2017 Stanford HPC Conference.
"To achieve good scalability performance on the HPC scientific applications typically involves good understanding of the workload though performing profile analysis, and comparing behaviors of using different hardware which pinpoint bottlenecks in different areas of the HPC cluster. In this session, a selection of HPC applications will be shown to demonstrate various methods of profiling and analysis to determine the bottleneck, and the effectiveness of the tuning to improve on the application performance from tests conducted at the HPC Advisory Council High Performance Center."
Watch the video presentation: http://wp.me/p3RLHQ-gpY
Learn more: http://hpcadvisorycouncil.com
Sign up for our insideHPC Newsletter: http://insidehpc.com/newsletter
International Journal of Computational Engineering Research(IJCER) ijceronline
nternational Journal of Computational Engineering Research (IJCER) is dedicated to protecting personal information and will make every reasonable effort to handle collected information appropriately. All information collected, as well as related requests, will be handled as carefully and efficiently as possible in accordance with IJCER standards for integrity and objectivity.
Jean-Baptiste Kempf, President of VideoLAN and Lead VLC developer, presents the brand new VLC 3.0 including new compatibilities and a future project to bring VLC the browser.
Streaming Media West 2017 - HTML5 WorkshopErica Beavers
This 3-hour workshop, given at Streaming Media West, describes in detail the HTML5 video workflow. We cover device support, formats, encoding options, digital rights management, server-side ad insertion, and delivery, with a special emphasis on how HTML5 players work and what to look for when choosing a video player.
Romain Bouqueau of GPAC Licensing takes us through the industry trends and future possibilities at IBC show 2017: low latency, webRTC, 8K, virtual reality, AI, HDR, patents, software defined workflows and more.
As Flash continues to decline, HTML5 video technologies increasingly bring promise of heightened performance and better QOE. This workshop provides an in-depth look at HTML5 players, their features and strengths, as well as the open-source media engine frameworks available on the market today. We begin by examining the main components in a video player. We then discuss how to choose a player adapted to one’s use case, examining how several open-source solutions compare. Finally, we use an interactive example to build features and demonstrate several optimizations, offering tips and best practices and pointing out potential production issues as we go along.
The next generation of protocols and APIs that could change streaming videoErica Beavers
As HTML5 video gains widespread adoption, we have seen significant advances in a short period of time. While EME and webRTC get a lot of attention, they are not the only tools with the potential to change the way we stream video in the future. In this presentation, we discuss some of the new browser APIs that could usher in the next generation of HTML5 video: from the browser Fetch API to Service Workers to network side improvements such as HTTP2 and QUIC. This presentation first discusses what these new APIs can do, as well as the advantages and possible drawbacks of using them. We then examine the state of the art and obstacles to adoption (standardization, politics, etc.) to offer broadcasters a glimpse of what the future will hold.
2016 Streaming Media West: Choosing an HTML5 PlayerErica Beavers
This presentation provides a brief overview of how modern video players work, what broadcasters should look for depending on their technical and business goals, and different open-source tools that are available. It will discuss compatible formats, codecs and supported DRMs, user performance, the ability of each media engine to handle edge cases, and the performance of the ABR algorithms. At the end of the presentation, broadcasters will better understand what tools are right for their needs and be able to evaluate the pros and cons of each solution available.
2016 Streaming Media West: Transitioning from Flash to HTML5Erica Beavers
As Flash continues to decline, HTML5 video technologies increasingly bring the promise of heightened performance and better QOE. This workshop provides an in-depth look at HTML5 players, their features and strengths, as well as the open-source media engine frameworks available on the market today. We begin by examining the main components in a video player, then discuss how to choose a player adapted to one’s use case, examining how several open-source solutions compare. Finally, we use an interactive example to build features and demonstrate several optimizations, offering tips and best practices and pointing out potential production issues as we go along.
Paris Video Tech - 1st Edition: Afrostream, un player agile pour suivre le m...Erica Beavers
Chez Afrostream nous avons testé une grande partie des players video du marché, je parlerai des problèmes rencontrés et comment se préparer a changer de techno rapidement
Paris Video Tech - 1st Edition: Dailymotion Améliorer l'expérience utilisateu...Erica Beavers
Dans ce talk, nous expliquons comment chez Dailymotion nous exploitons nos analytics pour optimiser notre delivery vidéo ainsi que notre player/media engine.
Essentials of Automations: Optimizing FME Workflows with ParametersSafe Software
Are you looking to streamline your workflows and boost your projects’ efficiency? Do you find yourself searching for ways to add flexibility and control over your FME workflows? If so, you’re in the right place.
Join us for an insightful dive into the world of FME parameters, a critical element in optimizing workflow efficiency. This webinar marks the beginning of our three-part “Essentials of Automation” series. This first webinar is designed to equip you with the knowledge and skills to utilize parameters effectively: enhancing the flexibility, maintainability, and user control of your FME projects.
Here’s what you’ll gain:
- Essentials of FME Parameters: Understand the pivotal role of parameters, including Reader/Writer, Transformer, User, and FME Flow categories. Discover how they are the key to unlocking automation and optimization within your workflows.
- Practical Applications in FME Form: Delve into key user parameter types including choice, connections, and file URLs. Allow users to control how a workflow runs, making your workflows more reusable. Learn to import values and deliver the best user experience for your workflows while enhancing accuracy.
- Optimization Strategies in FME Flow: Explore the creation and strategic deployment of parameters in FME Flow, including the use of deployment and geometry parameters, to maximize workflow efficiency.
- Pro Tips for Success: Gain insights on parameterizing connections and leveraging new features like Conditional Visibility for clarity and simplicity.
We’ll wrap up with a glimpse into future webinars, followed by a Q&A session to address your specific questions surrounding this topic.
Don’t miss this opportunity to elevate your FME expertise and drive your projects to new heights of efficiency.
UiPath Test Automation using UiPath Test Suite series, part 4DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 4. In this session, we will cover Test Manager overview along with SAP heatmap.
The UiPath Test Manager overview with SAP heatmap webinar offers a concise yet comprehensive exploration of the role of a Test Manager within SAP environments, coupled with the utilization of heatmaps for effective testing strategies.
Participants will gain insights into the responsibilities, challenges, and best practices associated with test management in SAP projects. Additionally, the webinar delves into the significance of heatmaps as a visual aid for identifying testing priorities, areas of risk, and resource allocation within SAP landscapes. Through this session, attendees can expect to enhance their understanding of test management principles while learning practical approaches to optimize testing processes in SAP environments using heatmap visualization techniques
What will you get from this session?
1. Insights into SAP testing best practices
2. Heatmap utilization for testing
3. Optimization of testing processes
4. Demo
Topics covered:
Execution from the test manager
Orchestrator execution result
Defect reporting
SAP heatmap example with demo
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Generating a custom Ruby SDK for your web service or Rails API using Smithyg2nightmarescribd
Have you ever wanted a Ruby client API to communicate with your web service? Smithy is a protocol-agnostic language for defining services and SDKs. Smithy Ruby is an implementation of Smithy that generates a Ruby SDK using a Smithy model. In this talk, we will explore Smithy and Smithy Ruby to learn how to generate custom feature-rich SDKs that can communicate with any web service, such as a Rails JSON API.
Elevating Tactical DDD Patterns Through Object CalisthenicsDorra BARTAGUIZ
After immersing yourself in the blue book and its red counterpart, attending DDD-focused conferences, and applying tactical patterns, you're left with a crucial question: How do I ensure my design is effective? Tactical patterns within Domain-Driven Design (DDD) serve as guiding principles for creating clear and manageable domain models. However, achieving success with these patterns requires additional guidance. Interestingly, we've observed that a set of constraints initially designed for training purposes remarkably aligns with effective pattern implementation, offering a more ‘mechanical’ approach. Let's explore together how Object Calisthenics can elevate the design of your tactical DDD patterns, offering concrete help for those venturing into DDD for the first time!
Connector Corner: Automate dynamic content and events by pushing a buttonDianaGray10
Here is something new! In our next Connector Corner webinar, we will demonstrate how you can use a single workflow to:
Create a campaign using Mailchimp with merge tags/fields
Send an interactive Slack channel message (using buttons)
Have the message received by managers and peers along with a test email for review
But there’s more:
In a second workflow supporting the same use case, you’ll see:
Your campaign sent to target colleagues for approval
If the “Approve” button is clicked, a Jira/Zendesk ticket is created for the marketing design team
But—if the “Reject” button is pushed, colleagues will be alerted via Slack message
Join us to learn more about this new, human-in-the-loop capability, brought to you by Integration Service connectors.
And...
Speakers:
Akshay Agnihotri, Product Manager
Charlie Greenberg, Host
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Tobias Schneck
As AI technology is pushing into IT I was wondering myself, as an “infrastructure container kubernetes guy”, how get this fancy AI technology get managed from an infrastructure operational view? Is it possible to apply our lovely cloud native principals as well? What benefit’s both technologies could bring to each other?
Let me take this questions and provide you a short journey through existing deployment models and use cases for AI software. On practical examples, we discuss what cloud/on-premise strategy we may need for applying it to our own infrastructure to get it to work from an enterprise perspective. I want to give an overview about infrastructure requirements and technologies, what could be beneficial or limiting your AI use cases in an enterprise environment. An interactive Demo will give you some insides, what approaches I got already working for real.
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 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
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
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
Editor's Notes
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.
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)
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
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
Simple algorithm,
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
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?
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!
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?
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!
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!
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)
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
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!
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!
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!
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!