Configure FFmpeg dash_segment_type for fMP4

This article explains how to configure the dash_segment_type parameter in FFmpeg to output fragmented MP4 (fMP4) segments for MPEG-DASH streaming. You will learn the exact command-line syntax, the supported values for this parameter, and a practical configuration example to ensure your DASH packaging workflow outputs modern, compatible fMP4 segments.

Understanding the dash_segment_type Parameter

In FFmpeg, the dash muxer is used to package video and audio into the MPEG-DASH format. By default, FFmpeg determines the segment container based on the target codecs or default settings, but you can explicitly control this behavior using the -dash_segment_type option.

The -dash_segment_type parameter accepts two primary values: * mp4: Outputs fragmented MP4 (fMP4) segments. This is the industry standard for modern DASH streaming and offers cross-compatibility with HLS (Common Media Application Format or CMAF). * webm: Outputs WebM segments, typically used with VP9 or AV1 video and Opus audio.

To force FFmpeg to output fMP4 segments, you must explicitly set this parameter to mp4.

FFmpeg Command Example

Below is a standard FFmpeg command that transcodes an input file and uses the -dash_segment_type parameter to generate fMP4 segments:

ffmpeg -i input.mp4 \
  -c:v libx264 -b:v 2000k -g 48 -keyint_min 48 -sc_threshold 0 \
  -c:a aac -b:a 128k \
  -f dash \
  -dash_segment_type mp4 \
  -seg_duration 4 \
  -init_seg_name 'init-$RepresentationID$.mp4' \
  -media_seg_name 'chunk-$RepresentationID$-$Number%05d$.m4s' \
  manifest.mpd

Parameter Breakdown

By applying -dash_segment_type mp4, FFmpeg will generate a .mpd (Media Presentation Description) manifest file alongside .mp4 initialization files and .m4s data segments, making your content ready for deployment on standard web servers and CDN delivery.