MPEG-DASH: Dynamic Adaptive Streaming over HTTP
History and Origin
The history of the MPEG-DASH (Dynamic Adaptive Streaming over HTTP) protocol dates back to the early 2010s when the technology industry was in search of a standard solution for adaptive streaming over HTTP. Unlike HLS, which was developed by Apple, MPEG-DASH was created as a result of collaboration among various companies and industry organizations.
Development of MPEG-DASH began in 2010 when the MPEG (Moving Picture Experts Group) initiated a project aimed at creating an open standard for adaptive streaming. Numerous companies, including Microsoft, Netflix, Adobe, and other key players in the media and tech industries, were involved in the project.
MPEG-DASH was officially published as the international standard ISO/IEC 23009-1 in April 2012. The goal was to create a universal protocol that could work across various platforms and devices, eliminating the need for proprietary solutions like Apple’s HLS or Microsoft’s Smooth Streaming.
Application and Key Features
Like HLS, MPEG-DASH is based on the HTTP protocol and uses the mechanism of dividing the stream into smaller segments. A key difference is that MPEG-DASH is designed as an open standard independent of any specific provider.
The operation of MPEG-DASH begins with the downloading of an MPD (Media Presentation Description) file, which is the equivalent of a manifest in HLS. The MPD file contains information about available stream representations, including different video qualities, audio formats, and subtitles.
Key Features of MPEG-DASH
- Adaptive Streaming: Allows dynamic adjustment of stream quality to network conditions and device capabilities.
- Support for Multiple Codecs: Unlike HLS, MPEG-DASH is not limited to specific codecs.
- DRM Compatibility: Supports various digital rights management systems.
- Live and VOD Streaming: Supports both live broadcasts and video on demand.
Advantages
MPEG-DASH offers several benefits that have contributed to its widespread adoption in the industry:
- Open Standard: As an open standard, MPEG-DASH is not controlled by any single company, which fosters innovation and adaptation.
- Codec Flexibility: Supports a wide range of video and audio codecs, including H.264, H.265/HEVC, VP9, and AV1.
- Efficient Bandwidth Use: Adaptive streaming allows optimal use of available bandwidth.
- CDN Compatibility: Easily integrates with content delivery networks (CDN) for efficient distribution.
- Support for Advanced Features: Supports features such as multilingual audio tracks, subtitles, and metadata.
- Lower Latency: Compared to HLS, MPEG-DASH can offer lower latencies, especially in live streaming.
Disadvantages
Despite its many advantages, MPEG-DASH also has some limitations:
- Implementation Complexity: Implementation of MPEG-DASH can be more complicated than HLS due to its greater flexibility and configuration options.
- Limited Support on Older Devices: Some older devices may not natively support MPEG-DASH.
- Market Fragmentation: Although it is an open standard, it still competes with other protocols, which can lead to market fragmentation.
- Higher Computational Requirements: Adaptive streaming may require more computing power from the playback device.
Supported Codecs
MPEG-DASH stands out for its broad support for various codecs:
Supported video codecs:
- H.264/AVC
- H.265/HEVC
- VP9
- AV1
Supported audio codecs:
- AAC
- Dolby Digital
- Dolby Digital Plus
- DTS
- Opus
Browser Support
Support for MPEG-DASH in browsers is quite extensive, although it often requires the use of additional JavaScript libraries: Browsers with native support:
- Microsoft Edge (from version 12)
- Internet Explorer 11 (with limitations)
Browsers requiring additional libraries:
- Google Chrome
- Mozilla Firefox
- Safari
- Opera
Libraries such as dash.js, Shaka Player, or video.js are often used to implement MPEG-DASH in browsers.
Protocol Mechanics
The mechanics of MPEG-DASH are based on a segmental structure, similar to HLS, but with some key differences:
- Media Presentation Description (MPD): This is the main manifest file, which describes the structure of the stream. It contains information about available representations, segments, and their locations.
- Segments: Like in HLS, content is divided into segments, but MPEG-DASH offers greater flexibility in their format and length.
- Adaptive Streaming: The MPEG-DASH client dynamically selects appropriate segments based on available bandwidth and playback capabilities.
Example of an MPD File Structure:
<?xml version="1.0" encoding="UTF-8"?> <MPD xmlns="urn:mpeg:dash:schema:mpd:2011" profiles="urn:mpeg:dash:profile:isoff-live:2011" type="dynamic" minimumUpdatePeriod="PT2S" timeShiftBufferDepth="PT30M" availabilityStartTime="2023-06-01T00:00:00Z" publishTime="2023-06-01T00:00:10Z" minBufferTime="PT4S"> <Period id="1" start="PT0S"> <AdaptationSet mimeType="video/mp4" segmentAlignment="true" startWithSAP="1"> <SegmentTemplate timescale="90000" initialization="init-$RepresentationID$.mp4" media="segment-$RepresentationID$-$Number$.m4s" startNumber="1" duration="360000"/> <Representation id="v1" width="640" height="360" frameRate="30" sar="1:1" scanType="progressive" bandwidth="800000" codecs="avc1.4D401F"/> <Representation id="v2" width="1280" height="720" frameRate="30" sar="1:1" scanType="progressive" bandwidth="2400000" codecs="avc1.4D401F"/> </AdaptationSet> <AdaptationSet mimeType="audio/mp4" segmentAlignment="true" startWithSAP="1"> <SegmentTemplate timescale="48000" initialization="init-$RepresentationID$.mp4" media="segment-$RepresentationID$-$Number$.m4s" startNumber="1" duration="192000"/> <Representation id="a1" audioSamplingRate="48000" bandwidth="128000" codecs="mp4a.40.2"> <AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/> </Representation> </AdaptationSet> </Period> </MPD>
In this example, we see definitions for two video representations (640×360 and 1280×720) and one audio representation. Each representation has its own parameters, such as bandwidth, codec, and resolution.
CMAF and Low-Latency DASH
Common Media Application Format (CMAF) is an initiative aimed at standardizing segment formats used in MPEG-DASH and HLS. Thanks to CMAF, content providers can create one set of segments that can be used by both MPEG-DASH and HLS, significantly simplifying the distribution process.
Low-Latency DASH (LL-DASH) is an extension of the MPEG-DASH standard aimed at reducing latencies in live streaming. LL-DASH uses smaller segments and server-side buffering techniques to reduce delays to levels comparable to traditional TV broadcasts.
Content Delivery Networks (CDN)
MPEG-DASH, like HLS, works well with content delivery networks (CDN). The segmental nature of the protocol allows for efficient caching and distribution of content through distributed CDN servers. This enables scaling of broadcasts to millions of simultaneous viewers while maintaining high quality and low latency.
Summary
MPEG-DASH represents an important step toward standardizing adaptive streaming over HTTP. As an open standard, it offers greater flexibility and support for a wider range of codecs compared to HLS. Its ability to dynamically adjust stream quality to network conditions and device capabilities makes it an ideal solution for various streaming scenarios, from live broadcasts to video on demand.
Although the implementation of MPEG-DASH can be more complex than HLS, the benefits it provides, such as better cross-platform compatibility and potentially lower latencies, make it an attractive solution for many content providers. As the industry moves toward unified streaming solutions like CMAF, the significance of MPEG-DASH is likely to grow, making it a key protocol in the future of video streaming.
Storm Streaming Server & Cloud Compatibility with MPEG-DASH
The Storm Streaming Server and Storm Streaming Cloud, paired with Storm Player, typically avoid MPEG-DASH because of its latency issues. However, you can integrate them with external web video players to facilitate MPEG-DASH-based streaming.