This tutorial will cover the basics and best practices of adaptive bitrate (ABR) content creation and playback. We will explain how MPEG-DASH and HLS streaming formats allow content providers to deliver their content over-the-top (OTT) to various devices (mobile, desktop, TV, etc.). We will also show how CMAF and CENC standards facilitate compatibility between both streaming formats and multiple DRM systems. We will discuss how streaming tech is evolving to enhance QoE. We will emphasize the importance of streaming analytics to measure and understand the customer experience. Moreover, we will demonstrate how server components can use the collected metrics to optimize the CDN selection for clients. We will explore the emerging trends of server-side logic, such as CMSD, which enables CDNs to influence player behaviour, and new transport protocols, such as HTTP/3 (QUIC), which allow bi-directional communication.
We will present live demos of the key technologies and share the challenges and best practices for deploying them in production.
The second part of the tutorial deals with media player related topics, focusing on dash.js – the official reference client of the DASH Industry Forum (DASH-IF). The primary purpose of dash.js is to implement features from ISO/IEC 23009-1 and the DASH-IF IOP guidelines and provide valuable feedback to the specification editors. In addition, dash.js is production ready and used by the industry in commercial streaming projects. Moreover, dash.js also serves as a foundation for the research community and is widely used in other open-source projects and by other organizations such as DVB, CTA-WAVE, HbbTV and 5G-MAG.
Since November 2019 Fraunhofer FOKUS acts as the official lead developer of the dash.js project. As part of this tutorial, we provide a quick introduction to dash.js and dive into its latest features and additions. We highlight the work that has been done as part of the upcoming version 5 of dash.js and outline the next steps. Moreover, we provide insights on how we are performing automated player testing. Finally, we introduce a set of valuable tools to inspect and debug media streams outside of dash.js.
The tutorial is structured as follow:
- Adaptive Streaming Tech Update: Streaming format updates: DASH, CENC, HLS, CMAF, Streaming optimizations: CMCD/CMSD, Content Steering, HTTP/3, QUIC
- Standards update: DASH-IF, WAVE, DVB
- Cross-platform streaming: Best practices for Android & iOS, Cross-platform deployment to SmartTVs, HbbTV, FireTV, Chromecast, AppleTV, iOS, Android, Desktop, Streaming analytics & troubleshooting
- Types of media playback (Type 1 vs. Type3)
- Overview dash.js
- Latest features and additions: CMSD, Content Steering, Managed Media Source
- Work on version 5: AdaptationSet Switching, improved XML parsing, integration of Common Player Library, DRM: support for ref and refId in Content Protection, new documentation: https://dashif.org/dash.js/
- Future roadmap
- Automated Player Testing: unit tests , functional tests, ABR testbed
- dash.js on HbbTV: WebVTT rendering and preloading media segments
- How to debug your streams: JCCP, Media Inspector, MP4 Inspector, MPD Proxy, Livesim2