[FFmpeg-trac] #8665(ffmpeg:new): Infinite Loop Concatenating Two Videos
FFmpeg
trac at avcodec.org
Thu May 14 03:31:39 EEST 2020
#8665: Infinite Loop Concatenating Two Videos
------------------------------------+----------------------------------
Reporter: dreedy | Owner:
Type: defect | Status: new
Priority: important | Component: ffmpeg
Version: git-master | Resolution:
Keywords: | Blocked By:
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
------------------------------------+----------------------------------
Comment (by kepstin):
When filing an issue like this, please always include the complete output
of the failing ffmpeg command, at a reasonable log level. Why are you
using -loglevel fatal? Don't do that! It's hiding a warning that ffmpeg is
printing when running the command you provided!
Here's the interesting part of the output with -v verbose:
{{{
[graph 0 input from stream 0:0 @ 0x5613bdadd3c0] w:640 h:480
pixfmt:yuv420p tb:1/14336 fr:14/1 sar:0/1
[graph_0_in_0_1 @ 0x5613bdaddd40] tb:1/48000 samplefmt:fltp
samplerate:48000 chlayout:0x4
[graph 0 input from stream 1:0 @ 0x5613bdadee00] w:640 h:480
pixfmt:yuv420p tb:1/12800 fr:25/1 sar:0/1
[graph_0_in_1_1 @ 0x5613bdadfb00] tb:1/48000 samplefmt:fltp
samplerate:48000 chlayout:0x4
[Parsed_concat_0 @ 0x5613bdad9700] Video inputs have different frame
rates, output will be VFR
[mp4 @ 0x5613bd495d40] Frame rate very high for a muxer not efficiently
supporting it.
Please consider specifying a lower framerate, a different muxer or -vsync
2
}}}
Your two videos have different framerates and timebases. (This means they
were not created with the commands you stated - since if the commands you
stated were used, both videos would be 25fps.) This triggers the new logic
in the concat filter, which sets the output framerate to VFR. The old
ffmpeg version would have set the output framerate to 14, resulting in
dropped frames and "Past duration 0.879982 too large" messages.
The problem itself appears to be an issue with how the mp4 muxer (or
ffmpeg cli? not sure.) handles an output video stream that's marked as
VFR. It might be an existing problem that was only exposed due to the
changes to the concat filter.
Anyways, adding "-vsync 2" as the ffmpeg warning message recommends
appears to work around the issue. Using a different output container (mkv
for example) also works.
Depending on your use case, it might be a better idea to convert the video
to constant framerate by adding an "fps" filter after concat rather than
generate a VFR video. Or you could make sure all your inputs have matching
framerate.
--
Ticket URL: <https://trac.ffmpeg.org/ticket/8665#comment:1>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list