如何使用 ffmpeg 在视频的前 30 秒添加我的徽标?

如何使用 ffmpeg 在视频的前 30 秒添加我的徽标?

我正在尝试使用 ffmpeg 在视频的前 30 秒添加我的徽标。我有一个名为 的视频d1.mp4和一个名为 的徽标logo.png

视频开始时,水印应该位于视频的左上角或右上角,30 秒后消失。

你能告诉我如何添加它吗?

答案1

ffmpeg -i in.mp4 -framerate 30000/1001 -loop 1 -i logo.png -filter_complex
  "[1:v] fade=out:st=30:d=1:alpha=1 [ov]; [0:v][ov] overlay=10:10 [v]" -map "[v]"
  -map 0:a -c:v libx264 -c:a copy -shortest out.mp4

假设徽标是带有 alpha 通道的单个静态图像,并且您希望将其叠加在帧速率为 30000/1001(NTSC 速率)的视频上。-framerate如果不同,请更改以匹配您的输入视频。如果您的徽标是视频,则省略-framerate 30000/1001 -loop 1。如果徽标没有 alpha 通道,请通过format=yuva420p,在 之前立即插入 来添加一个fade

这将在 x,y 位置 10,10 显示徽标 30 秒,然后 1 秒淡出。

答案2

使用overlay视频滤镜在视频中添加徽标:

在此处输入图片描述

ffmpeg -i video.mp4 -i logo.png -filter_complex "[0:v][1:v]overlay" \
-codec:a copy out.mp4

要理解这个命令,你需要知道什么是流说明符是和阅读FFmpeg 过滤简介会有所帮助。[0:v]指的是第一个输入的视频流( )video.mp4[1:v]指的是第二个输入的视频流(logo.mp4)。这就是您如何知道overlay要使用哪些输入的方法。您可以省略[0:v][1:v],并且overlay仍然可以工作,但建议明确说明,不要依赖可能未知的默认值。

默认情况下,徽标将放置在左上角。

使用-codec:a copy意愿流复制音频。这只是重新混合音频,而不是重新编码。可以将其视为音频的“复制和粘贴”。

移动徽标

此示例将徽标向右移动 10 个像素,向下移动 10 个像素: 在此处输入图片描述

ffmpeg -i video.mp4 -i logo.png -filter_complex "[0:v][1:v]overlay=10:10" \
-codec:a copy out.mp4

此示例将徽标从右侧移动 10 个像素并向下移动 10 个像素:

在此处输入图片描述

ffmpeg -i video.mp4 -i logo.png -filter_complex \
"[0:v][1:v]overlay=main_w-overlay_w-10:10" -codec:a copy out.mp4

main_w指的是“主”输入(背景或[0:v])的宽度,overlay_w指的是“覆盖”输入(徽标或[1:v])的宽度。因此,在示例中,这可以转换为overlay=320-90-10:10overlay=220:10

叠加时间

有些过滤器可以处理时间线编辑您可以使用算术表达式确定何时应用过滤器。请参阅ffmpeg -filters了解哪些过滤器支持时间线编辑。

此示例将显示徽标直至 30 秒:

ffmpeg -i video.mp4 -i logo.png -filter_complex \
"[0:v][1:v]overlay=10:10:enable=between(t\,0\,30)" -codec:a copy out.mp4

如果您想淡化徽标,请参阅mark4o 的回答

相关内容