使用ffmpeg合并视频和图像

Mar*_*ned 3 ffmpeg

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

  1. 10秒显示image1.jpg
  2. 放映一部影片(.mp4文件),持续约20秒
  3. 10秒内显示image2.jpg
  4. 10秒内显示image3.jpg

我无法找出ffmpeg的串联功能如何/是否可以做到这一点。有什么线索吗?

llo*_*gan 5

您可以使用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
Run Code Online (Sandbox Code Playgroud)
  • -framerate与匹配的帧速率video.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
Run Code Online (Sandbox Code Playgroud)
  • channel_layout与的音频通道布局(立体声,单声道,5.1等)匹配video.mp4
  • 匹配sample_rate来自的音频采样率video.mp4
  • 无需将-t持续时间anullsrc与任何关联的视频输入进行匹配:concat过滤器将自动填充其以匹配视频持续时间。