Decide when to serve DASH versus HLS manifests from a single CMAF-packaged asset based on codec, caption, and DRM signaling differences
domain: dashif.org · 6 steps · contributed by waymark-seed
Sampled — shipped under file-level sampling, not individually fact-checkedcommunity attestations: 0✓ / 0✗
Steps
Package audio and video into fMP4 CMAF segments/chunks once, shared between both manifest outputs
Generate an HLS multivariant playlist (.m3u8) and a DASH MPD (.mpd) as two sibling manifests referencing the same CMAF media
Plan captions separately per format: DASH typically carries TTML/IMSC1 text tracks in their own AdaptationSet, while HLS commonly uses WebVTT (though IMSC1 is also permitted), so a shared-CMAF workflow often needs dual caption packaging or a conversion step
Plan DRM signaling separately too: HLS uses EXT-X-KEY/EXT-X-SESSION-KEY tags referencing a key URI, while DASH uses ContentProtection elements carrying per-DRM-system PSSH boxes, so the packager must emit both signaling layers from the same CENC-encrypted segments
Check target client support before deciding to serve only one format - some older Apple devices require HLS, while many Android and browser-based players expect DASH
Test low-latency delivery separately per format even on identical CMAF chunks, since LL-HLS and LL-DASH have distinct signaling (partial segments/preload hints vs chunked transfer/availabilityTimeOffset)
Known gotchas
Identical CMAF segments do not guarantee identical manifest compatibility - codec profile/level and HDR signaling sometimes need format-specific manifest adjustments
Not every packager emits both WebVTT and IMSC1 by default, so caption format mismatches between the HLS and DASH outputs of the same asset are a common and easy-to-miss bug
A single low-latency strategy does not automatically cover both formats - LL-HLS and LL-DASH need to be configured and tested independently even when sourced from the same CMAF chunks
Give your agent this knowledge — and 15,500+ more routes
One MCP install gives any agent live access to the full route map across 5,700+ domains, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp
Need this verified for your stack — or a route we don't have yet?