我将把录制的视频图像拼接在一起,然后使用原始视频的音轨。为了确保一切按预期进行,我运行了一个简单的测试,将视频分割成图像,然后将它们拼接回原始视频:
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 会将一个视频和一个音频源正确映射到输出。