Use FFmpeg's built-in DASH/HLS muxers with fMP4 fragment support; set a short fragment duration (e.g. -frag_duration 500000 for ~0.5 s in microseconds) to produce CMAF-compatible chunks.
For LL-DASH output, use the -f dash muxer with options including -use_template 1, -use_timeline 0, and -ldash 1 (low-latency DASH mode); set -seg_duration and -frag_duration to your target values.
For LL-HLS output, use the -f hls muxer with -hls_flags independent_segments+split_by_time and -hls_segment_type fmp4; set -hls_time for segment duration and appropriate -hls_ll_hls settings if using a patched/recent FFmpeg.
Serve the output directory from an HTTP origin that supports HTTP/1.1 chunked transfer encoding; nginx with chunked_transfer_encoding on and proxy_buffering off works well.
Set correct CORS headers and Cache-Control: no-cache on manifest files; segment/chunk files can be cached with a short TTL matching the chunk duration.
Validate end-to-end latency with a player that supports LL-HLS or LL-DASH (hls.js, dash.js) and monitor the liveLatency metric.
Known gotchas
FFmpeg's built-in LL-HLS support has evolved across versions; check your FFmpeg version's changelog and test partial segment output before relying on it in production.
CMAF chunk boundaries must align with keyframes for independently decodable partial segments; ensure the encoder produces keyframes at the chunk boundary interval.
Serving LL-DASH with chunked transfer through a reverse proxy requires the proxy to flush bytes immediately; many default proxy configurations buffer entire segments before forwarding.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp