我想连接随机格式的不同视频文件。首先,我将它们转换为flv,使每个视频的帧率适应所涉及视频的最低点。下一步是解码它们并删除标题(但不是序列中第一个视频的标题,然后我用cat连接它们,最后我编码resultsequence。
但视频和音频曲目越来越不同步从序列部分到序列部分。
任何想法都会很高兴。
答案 0 :(得分:0)
然后您的问题在进行concat过程时保持同步。经验法则,步骤越少越好。这应该可以解决您的问题。首先,使用mpg而不是flv作为中间格式。其次,为每个命令添加-copyts(复制时间戳以保持同步)。此外,无需进入最低帧速率。您可以通过此过程保留最高视频的质量。试试这个:
$ ffmpeg -i a.mp4 -qscale:v 1 -copyts a.mpg
$ ffmpeg -i b.flv -qscale:v 1 -copyts b.mpg
现在你应该有两个(大)兼容视频质量的中间文件(变量:-qscale:v 1
)。你准备把它们粘在一起了。
$ ffmpeg -i concat:"a.mpg|b.mpg" -c copy all.mpg
如果您使用的是Windows,那么您将会很好。在UNIX风格上,您需要在管道之前使用反斜杠。 (在我的版本中,我遇到了大量的buffer underflow / packet too large, ignoring buffer limits to mux it
错误。它们似乎无害。)现在,您可以转换为您想要的更实用的格式。
$ ffmpeg -i all.mpg -qscale:v 2 -copyts all.mp4
我成功地保持了连锁视频的同步,但质量似乎并不像应有的那样好。也许调整中间文件参数。