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.mpd

Common 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.mpd

2. 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.mpd

This generates .m3u8 playlists alongside your .mpd files using the same underlying media segments, saving storage and encoding resources.