figure1.png
我正在尝试用两幅图像和figure2.png
(它们的大小可能不同)和两个音频文件audio1.wav
和创建一个视频audio2.wav
。我希望这样做,figure1.png
显示直到audio1.wav
停止播放,然后figure2.png
显示直到audio2.wav
停止播放(audio2.wav 在 audio1.wav 之后开始播放)。我做这个真的不太成功。到目前为止,我最好的尝试是创建两个视频并尝试合并它们,但由于格式问题,这似乎不起作用。因此,我想知道是否有办法用一个 ffmpeg 命令来做到这一点,如果可以,该怎么办?
答案1
假设第一张图片的尺寸较大,为 WxH。如果不是,则缩小第二张图片的尺寸,然后填充。无论哪种方式,两张图片都应该具有相同的尺寸。
ffmpeg -i image1.png -i image2.png -i audio1.wav -i audio2.wav
-filter_complex
"[0]setsar=1[a];
[1]pad=W:H:(ow-iw)/2:(oh-ih)/2:color=white,setsar=1[b];
[2]abitscope=r=25:s=WxH[a1v];
[3]abitscope=r=25:s=WxH[a2v];
[a1v][a]overlay[v1];
[a2v][b]overlay[v2];
[v1][2:a][v2][3:a]concat=n=2:v=1:a=1" out.mp4
答案2
我想你应该先制作一个没有音频的视频。具体做法如下:
ffmpeg -framerate 24 -i figure%01d.png output.mp4
%01d 是 png 文件名的模式。我认为 mp4 容器格式是合适的。
之后,根据您的音频文件的持续时间(您应该手动调整计算它们,据我所知,没有自动拟合机制)。
ffmpeg -loop 1 -i figure%01d.png -i audio.wav -c:v libx264 -c:a aac -b:a 192k -shortest out.mp4
这里使用内部 AAC 编码器,但您也可以使用任何其他 AAC 编码机制。