Configure DASH Muxer Profiles and Target Utility in FFmpeg
This article provides a quick guide on how to configure profiles and
target streaming utilities using the DASH (Dynamic Adaptive Streaming
over HTTP) muxer in FFmpeg. You will learn how to use the
-profile option to target specific media presentation
standards and how to leverage key parameters to optimize segment
duration, target latency, and manifest utility for different playback
environments.
Setting the DASH Profile
The -profile option in FFmpeg’s DASH muxer
(-f dash) specifies the target profile identifier populated
in the Media Presentation Description (.mpd) file. This
tells the video player how the stream is structured.
To set the profile, use the -profile option followed by
the standard URN string:
ffmpeg -i input.mp4 -c:v libx264 -c:a aac -f dash -profile "urn:mpeg:dash:profile:isoff-on-demand:2011" output.mpdCommon DASH Profiles
- On-Demand Profile:
urn:mpeg:dash:profile:isoff-on-demand:2011
Used for video-on-demand (VOD) where each representation is contained within a single fragmented MP4 file. The player uses range requests to fetch chunks. - Live Profile:
urn:mpeg:dash:profile:isoff-live:2011
The default profile. Used for live and dynamic streaming where media is split into separate physical segment files (.m4s).
Configuring Target Segment Utility and Latency
To control how players fetch and utility-optimize your stream, you must configure segment durations, streaming flags, and latency targets.
1. Target Segment Duration
Set the target duration for individual segments (in seconds) using
-seg_duration. Shorter durations reduce latency but
increase HTTP request overhead.
ffmpeg -i input.mp4 -c:v libx264 -f dash -seg_duration 4 output.mpd2. Low-Latency Target Utility (LL-DASH)
If your target utility is live streaming with minimal delay, combine chunked streaming with target latency settings:
ffmpeg -re -i input.mp4 -c:v libx264 -f dash \
-seg_duration 2 \
-streaming 1 \
-ldash 1 \
-target_latency 3 \
output.mpd-streaming 1: Enables chunked transfer encoding for segments.-ldash 1: Forces the muxer to comply with Low-Latency DASH requirements.-target_latency 3: Informs the player of the desired 3-second delay target from the live edge.
3. Multi-Platform Utility (HLS Compatibility)
To maximize playback utility across both Android/Web (DASH) and iOS (HLS) devices, configure FFmpeg to output an HLS master playlist simultaneously with the DASH manifest:
ffmpeg -i input.mp4 -c:v libx264 -f dash -hls_playlist 1 output.mpdThis generates .m3u8 playlists alongside your
.mpd files using the same underlying media segments, saving
storage and encoding resources.