Disable Edit Lists in FFmpeg MP4 Muxer
This article explains how to disable edit lists in FFmpeg when
outputting to MOV or MP4 formats. You will learn the specific
-movflags parameters required to prevent the creation of
edit lists, how to handle negative timestamps, and how to combine these
with other streaming-optimization flags like
omit_tfhd_offset for maximum player compatibility.
The Core Command to Disable Edit Lists
By default, FFmpeg’s MP4 and MOV muxer writes edit lists
(elst atoms) to handle video streams with B-frames or audio
streams with encoder delay. This ensures perfect audio-video
synchronization but can cause playback compatibility issues with older
hardware players, browsers, or specific video editing software.
To disable edit lists, use the -movflags -use_editlist
option in your FFmpeg command:
ffmpeg -i input.mkv -c:v libx264 -c:a aac -movflags -use_editlist output.mp4The minus sign (-) directly preceding
use_editlist explicitly disables the flag, which is
otherwise enabled by default.
Fixing Timestamp
Issues with avoid_negative_ts
When you disable edit lists, you may encounter synchronization issues or blank frames at the beginning of your video because of negative presentation timestamps (PTS) caused by B-frame reordering.
To resolve this without edit lists, pair
-movflags -use_editlist with the
-avoid_negative_ts make_zero option. This shifts all stream
timestamps so that the video starts precisely at zero:
ffmpeg -i input.mkv -c copy -avoid_negative_ts make_zero -movflags -use_editlist output.mp4Disabling Edit Lists in Fragmented MP4s (fMP4)
If you are packaging video for DASH or HLS streaming using fragmented
MP4s, you may also want to use the
-movflags omit_tfhd_offset flag. This flag reduces overhead
by omitting the absolute base data offset in tfhd atoms,
which is critical for seamless chunk playback.
You can chain multiple movflags together using a plus
(+) or minus (-) prefix:
ffmpeg -i input.mp4 -c copy -movflags -use_editlist+omit_tfhd_offset+frag_keyframe output.mp4In this command: * -use_editlist disables the edit list
generation. * +omit_tfhd_offset optimizes the track
fragment headers for web streaming. * +frag_keyframe
fragments the output at keyframe boundaries.