【ffmpeg】使用 FFmpeg 在一个视频文件上添加一个循环的 GIF 水印

发布时间 2023-11-15 14:49:24作者: 蓝色星辰1993
ffmpeg -i 1.mp4 -ignore_loop 0 -i 3.gif -filter_complex "[1:v]fps=10,scale=1080:1080,setsar=1[watermark];[0:v][watermark]overlay=(W-w)/2:(H-h)/2" -map 0:a -c:a copy -shortest output.mp4

 

这段代码使用 FFmpeg 在一个视频文件 (1.mp4) 上添加一个循环的 GIF 水印 (3.gif),并将输出保存为另一个视频文件 (output.mp4)。下面是对命令的分析:

  1. ffmpeg: 这是 FFmpeg 命令行工具的启动命令。

  2. -i 1.mp4: 指定输入文件 1.mp4,这是需要添加水印的视频文件。

  3. -ignore_loop 0: 告诉 FFmpeg 忽略 GIF 文件 (3.gif) 的循环信息。

  4. -i 3.gif: 指定第二个输入文件 3.gif,这是要作为水印添加到视频上的 GIF 文件。

  5. -filter_complex: 指定复杂的滤镜图。这里的滤镜主要有两个部分。

    • [1:v]fps=10,scale=1080:1080,setsar=1[watermark]: 处理水印 GIF。fps=10 设置 GIF 的帧率为每秒 10 帧,scale=1080:1080 调整水印 GIF 的大小,setsar=1 保持纵横比。

    • [0:v][watermark]overlay=(W-w)/2:(H-h)/2: 将水印叠加在视频上。(W-w)/2:(H-h)/2 将水印放置在视频中央。

  6. -map 0:a: 映射输入视频文件 (1.mp4) 的音频流。

  7. -c:a copy: 复制音频流,以保持原音频。

  8. -shortest: 在输出时指定最短的时长,以使输出视频与输入视频时长相同。

  9. output.mp4: 指定输出文件的名称,这是包含水印的视频文件。

这个命令的目标是将指定的 GIF 水印添加到视频中,确保输出视频的时长与输入视频相同。如果在使用时遇到问题,可能需要调整一些参数,例如帧率、水印的位置或大小,以满足特定的需求。