DASH (Dynamic Adaptive Streaming over HTTP) (DASH)
An open standard for adaptive streaming. Uses an MPD manifest and fMP4 segments. The main alternative to HLS, widely used for DRM-protected content and on Android.
Full Explanation
DASH (also called MPEG-DASH) works similarly to HLS: an XML manifest (MPD) describes available quality levels, and the player downloads fMP4 segments adaptively. The key difference is that DASH is an open ISO standard, while HLS is Apple's proprietary format.
In practice, most streaming services use both. CMAF bridges the gap by allowing the same fMP4 segments to work with both HLS and DASH manifests. You encode once, store once, and just generate different manifests.
For CDN caching, DASH segments behave identically to HLS segments. They're static HTTP objects with long TTLs. The MPD manifest needs shorter TTLs for live streams. DASH supports more features than HLS (like multi-period content and complex ad insertion), but HLS has broader device support.
Examples
# Example DASH MPD structure (simplified)
<?xml version="1.0"?>
<MPD type="dynamic" minimumUpdatePeriod="PT2S">
<Period>
<AdaptationSet mimeType="video/mp4">
<Representation bandwidth="800000" width="640" height="360">
<SegmentTemplate media="360p/seg-$Number$.m4s"
initialization="360p/init.m4s"
duration="6000" timescale="1000"/>
</Representation>
</AdaptationSet>
</Period>
</MPD>
# Nginx: cache DASH segments aggressively
location ~ \.(m4s|mp4)$ {
add_header Cache-Control "public, max-age=86400";
}
Video Explanation
Frequently Asked Questions
An open standard for adaptive streaming. Uses an MPD manifest and fMP4 segments. The main alternative to HLS, widely used for DRM-protected content and on Android.
# Example DASH MPD structure (simplified)
<?xml version="1.0"?>
<MPD type="dynamic" minimumUpdatePeriod="PT2S">
<Period>
<AdaptationSet mimeType="video/mp4">
<Representation bandwidth="800000" width="640" height="360">
<SegmentTemplate media="360p/seg-$Number$.m4s"
initialization="360p/init.m4s"
duration="6000" timescale="1000"/>
</Representation>
</AdaptationSet>
</Period>
</MPD>
# Nginx: cache DASH segments aggressively
location ~ \.(m4s|mp4)$ {
add_header Cache-Control "public, max-age=86400";
}
Related CDN concepts include:
- CMAF (Common Media Application Format) — A standard that allows the same media segments to be used with both HLS and …
- LL-DASH (Low-Latency DASH) — DASH equivalent using chunked transfer encoding to deliver segments as they're encoded. Players can start …
- Manifest File — A text file that describes the video stream structure: available quality levels (bitrates), segment URLs, …
- Segment — A small chunk of encoded video/audio, typically 2-10 seconds duration. Segments are the actual media …
- HLS (HTTP Live Streaming) (HLS) — Apple's adaptive streaming protocol. Splits video into small segments listed in an M3U8 playlist. The …