使用ffmpeg合并视频和图片

10
我正在尝试编译一个包含以下内容的 .webm 文件:
  1. 显示 image1.jpg 10 秒钟
  2. 播放一个电影(一个 .mp4 文件),持续大约 20 秒
  3. 显示 image2.jpg 10 秒钟
  4. 显示 image3.jpg 10 秒钟
我无法确定 ffmpeg 的拼接功能是否可以完成这样的任务。有什么提示吗?
1个回答

16

您可以使用连接过滤器

没有音频

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_layout与来自video.mp4的音频通道布局(立体声、单声道、5.1等)匹配。
  • sample_rate与来自video.mp4的音频采样率匹配。
  • 不需要将anullsrc-t持续时间与任何相关视频输入匹配:concat过滤器将自动填充以匹配视频持续时间。

1
我们如何在ffmpeg中给第一张图片添加淡出效果,并给第二张图片添加淡入效果? - 1234567
据我所记,这在执行过程中会使用大量内存。我曾经将任务分成逐个从图像创建短片段,然后单独将它们连接起来。 - ed22
对于未来的读者,应将“n”更改为输入数量减1的数字。 - Ollie
1
n 是要连接的片段数。如果同时连接视频和音频,则视频/音频配对被视为一个片段。答案中的带音频示例有4个视频输入和4个音频输入,创建了4对片段,因此 n=4 - llogan
1
有人能解释一下那个-filter_complex是怎么回事吗? - BallpointBen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接