[FFmpeg-user] Matroska segmented output changes video duration

andreymal me at andreymal.org
Wed Jan 29 23:46:53 EET 2020

Hello. I have a video grabbed from EasyCAP (UTV007). It has variable
frame rate, so I use "-vsync passthrough" everywhere to keep it. You can
download a segment of this video here:

I need to split this video into several segments. I tried to use this

ffmpeg -vsync passthrough -i contra_test.mkv \
  -map 0 -c copy -f segment -segment_time 1 \
  -segment_list test.ffcat -reset_timestamps 1 test-%02d.mkv

To verify that everything is fine, I merge the video back:

ffmpeg -vsync passthrough -i test.ffcat \
  -map 0 -c copy contra_test_union.mkv

Then I compare the durations, and the new video (and the audio) is 2
seconds longer!

$ ffmpeg -i contra_test.mkv 2>&1 | grep DURATION
      DURATION        : 00:00:30.007000000
      DURATION        : 00:00:30.069000000
$ ffmpeg -i contra_test_union.mkv 2>&1 | grep DURATION
      DURATION        : 00:00:32.156000000
      DURATION        : 00:00:32.188000000

The more segments the video is splitted into, the longer the new video.

Could someone explain what caused this behavior? Is it possible to fix
it? I expect the same durations.

But when I use mp4 instead of mkv, everything works well. Is this a
matroska bug?

I use ffmpeg 4.2.2 installed from Arch Linux repository.

More information about the ffmpeg-user mailing list