我正在尝试在带有 ffmpeg 的视频中的前 30 秒添加我的徽标。我有一个名为 的视频d1.mp4
和一个名为 的徽标logo.png
。
视频开始时,水印应位于视频的左上角或右上角,并在 30 秒后消失。
你能告诉我如何添加它吗?
llo*_*gan 19
overlay
视频过滤器为视频添加徽标:ffmpeg -i video.mp4 -i logo.png -filter_complex "[0:v][1:v]overlay" \
-codec:a copy out.mp4
Run Code Online (Sandbox Code Playgroud)
要理解此命令,您需要知道流说明符是什么,阅读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
Run Code Online (Sandbox Code Playgroud)
此示例将徽标从右侧移动 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
Run Code Online (Sandbox Code Playgroud)
main_w
指“主”输入(背景或[0:v]
)overlay_w
的宽度,指“覆盖”输入(徽标或[1:v]
)的宽度。因此,在示例中,这可以转换为overlay=320-90-10:10
或overlay=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
Run Code Online (Sandbox Code Playgroud)
如果您想使徽标褪色,请参阅mark4o 的回答。
mar*_*k4o 13
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
Run Code Online (Sandbox Code Playgroud)
这假设徽标是具有 Alpha 通道的单个静止图像,并且您希望将其覆盖在帧速率为 30000/1001(NTSC 速率)的视频上。-framerate
如果不同,请更改以匹配您的输入视频。如果您的徽标是视频,则省略-framerate 30000/1001 -loop 1
. 如果徽标没有 alpha 通道,请通过format=yuva420p,
在 之前插入例如添加一个fade
。
这将在 x,y 位置 10,10 处显示徽标 30 秒,然后淡出 1 秒。
归档时间: |
|
查看次数: |
29817 次 |
最近记录: |