使用 ffmpeg 拼接图像文件,遇到音频同步问题

使用 ffmpeg 拼接图像文件,遇到音频同步问题

我将把录制的视频图像拼接在一起,然后使用原始视频的音轨。为了确保一切按预期进行,我运行了一个简单的测试,将视频分割成图像,然后将它们拼接回原始视频:

ffmpeg -i '.\Gangnam Style.mp4' -r 30 -s 640x480 -f image2 temp/foo-%07d.jpeg
ffmpeg -f image2 -i temp/foo-%07d.jpeg -r 30 -i '.\Gangnam Style.mp4' -map 0:0 -map 1 test.webm

在生成的输出 test.webm 中,音频不再与视频同步。有人知道这是为什么吗?由于我使用的是原始视频制作的图像,我认为音频应该完美对齐。

答案1

这应该可以正常工作:

ffmpeg -r 30 -i temp/foo-%07d.jpeg -i '.\Gangnam Style.mp4' output.webm

这就是您的图像与音频流不一致的原因。

ffmpeg -i '.\Gangnam Style.mp4' -r 30 -s 640x480 -f image2 temp/foo-%07d.jpeg

这里您以 30 fps 的速度创建图像(-f image2这里不需要)。

ffmpeg -f image2 -i temp/foo-%07d.jpeg -r 30 -i '.\Gangnam Style.mp4' …

这里您以 25 fps 读取图像,以 30 fps 读取 MP4 文件。原因是之前传递的选项-i仅适用于该输入。之后的所有选项-i都适用于下一个输入或输出选项。

25 fps 是默认设置image2解复用器(它是-framerate选项,-r是一种快捷方式)。请注意,-f image2您的命令中是多余的。我还相当肯定,-map在您的情况下可以省略这些选项。通常,ffmpeg 会将一个视频和一个音频源正确映射到输出。

相关内容