我正在尝试使用以下命令连接视频:
ffmpeg -f concat -i input.txt -y ProductionVideo.mp4
文件input.txt
列为
file 'vid1.mp4'
file 'vid2.mp4'
file 'vid3.mp4'
当 FFmpeg 执行时,我有时会收到一条消息:“重复了超过 1,0000 帧”,而当播放最终结果视频时,该帧会重复 1 到 6 分钟,然后我会在终端中收到此消息
[00007fa5cd001d10] main decoder error: buffer deadlock prevented
[h264 @ 0x7fa5cd298000] get_buffer() failed
[h264 @ 0x7fa5cd298000] thread_get_buffer() failed
[h264 @ 0x7fa5cd298000] decode_slice_header error
[h264 @ 0x7fa5cd298000] no frame!
[h264 @ 0x7fa5cd366f80] get_buffer() failed
[h264 @ 0x7fa5cd366f80] thread_get_buffer() failed
[h264 @ 0x7fa5cd366f80] decode_slice_header error
[h264 @ 0x7fa5cd366f80] no frame!
起初我想我需要用同一个编码器重新编码视频但这并不能解决问题。
我播放视频没有问题
答案1
为了避免帧重复,您可以使用 -fflags +genpts -r 30 来生成新的时间戳并为所有视频设置一个通用的帧速率,并使用 fps_mode vfr 来控制同步:
ffmpeg -fflags +genpts -r 30 -f concat -i input.txt -y -fps_mode vfr ProductionVideo.mp4
我怀疑您有重复时间戳的帧,因为您正在合并几个具有各自时间戳的不同视频并更改视频。VFR 代表可变帧速率。