ffmpeg-合并多幅图像和多个音频文件?

ffmpeg-合并多幅图像和多个音频文件?

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 编码机制。

相关内容