使用 ffmpeg 合并视频和图像



我正在尝试编译一个包含以下内容的.webm文件:

  1. 10 秒显示图像1.jpg
  2. 显示影片(.mp4文件(,持续约 20 秒
  3. 10 秒显示图像2.jpg
  4. 显示图像3的 10 秒.jpg

我无法找出 ffmpeg 的连接功能如何/是否可以做这样的事情。有什么线索吗?

您可以使用 concat 过滤器。

无音频

ffmpeg 
-loop 1 -framerate 24 -t 10 -i image1.jpg 
-i video.mp4 
-loop 1 -framerate 24 -t 10 -i image2.jpg 
-loop 1 -framerate 24 -t 10 -i image3.jpg 
-filter_complex "[0][1][2][3]concat=n=4:v=1:a=0" out.mp4
  • -frameratevideo.mp4的帧速率匹配。

带音频

如果video.mp4中有音频,您还需要为图像提供音频,以便能够连接。生成静音的示例:

ffmpeg 
-loop 1 -framerate 24 -t 10 -i image1.jpg 
-i video.mp4 
-loop 1 -framerate 24 -t 10 -i image2.jpg 
-loop 1 -framerate 24 -t 10 -i image3.jpg 
-f lavfi -t 0.1 -i anullsrc=channel_layout=stereo:sample_rate=44100 
-filter_complex "[0:v][4:a][1:v][1:a][2:v][4:a][3:v][4:a]concat=n=4:v=1:a=1" out.mp4
  • channel_layoutvideo.mp4 中的音频通道布局(立体声、单声道、5.1 等(相匹配。
  • sample_ratevideo.mp4的音频采样率相匹配。
  • 无需将anullsrc-t持续时间与任何关联的视频输入相匹配:concat 过滤器将自动填充它以匹配视频持续时间。

最新更新