使用 MP4Box / ffmpeg 同步音频和视频以连接文件

Jes*_*e L 4 video mp4 ffmpeg mpeg4 conversion

我有两个需要连接的 H.264 编码的 MPEG-4 文件。我一直在使用 MP4Box 执行此任务,首先确保文件的编码相同(甚至比较 h264_parse 在其视频轨道上的输出),然后与此命令连接:

MP4Box -cat file1.mp4 -cat file2.mp4 output_file.mp4
Run Code Online (Sandbox Code Playgroud)

这有效并且输出文件是可播放的,但是在 Quicktime 或 VLC 中播放时,第二个视频的音频开始得太快,使连接文件的整个第二部分不同步。

我尝试通过 ffmpeg 重新编码输出-vcodec copy-acodec copy但同步问题仍然存在。

我还尝试先转换为 MPEG-2 格式,与一个简单的连接cat file1.mpg file2.mpg > output.mpg并使用 ffmpeg 重新编码结果。这甚至更糟。

我知道我可以将命令传递给 MP4Box 以调整音轨的开始时间,但我正在尝试以编程方式为任何输入视频(当然使用相同的编码)执行此操作。我正在寻找不需要人工干预/手动调整的可能解决方案。或者,至少,了解正在发生的事情使连接视频的第二部分不同步。

小智 7

我遇到了同样的问题。为了正确同步,您必须按如下方式编写 MP4Box 命令:

MP4Box -add file1.mp4 -cat file2.mp4 -new output_file.mp4
Run Code Online (Sandbox Code Playgroud)

而不是在第一个视频之前使用-catuse -add。其余选项正确,可以放在-new输出视频参数之前。