2

我想连接随机格式的不同视频文件。首先,我将它们转换为 flv,将每个视频的帧速率调整为最低的相关视频。下一步是对它们进行解码并删除标题(但不是序列中第一个视频的标题,然后我将它们与 cat 连接,最后对结果序列进行编码。

但是从序列部分到序列部分,视频和音频轨道越来越不同步。

很高兴有任何想法。

4

1 回答 1

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

我已经成功地使连接的视频保持同步,但质量似乎不如应有的好。也许调整中间文件参数。

于 2013-03-01T01:26:24.677 回答