ffmpeg video-concatenation - audio- / videotrack Synchronization

时间:2012-10-11 19:42:46

标签: ffmpeg concatenation audio-video-sync

我想连接随机格式的不同视频文件。首先,我将它们转换为flv,使每个视频的帧率适应所涉及视频的最低点。下一步是解码它们并删除标题(但不是序列中第一个视频的标题,然后我用cat连接它们,最后我编码resultsequence。

但视频和音频曲目越来越不同步从序列部分到序列部分。

任何想法都会很高兴。

1 个答案:

答案 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

我成功地保持了连锁视频的同步,但质量似乎并不像应有的那样好。也许调整中间文件参数。