我使用这个命令。
ffmpeg -i Input.mp4 -i logo.png -c:v h264_nvenc -filter_complex "[0:v]scale=-1:720[video];[1:v][video]scale2ref=(iw/ih)*ih/8/sar:ih/8[wm][base];[base][wm]overlay=10:10" output.mp4
但这意味着什么?
scale2ref=(iw/ih)*ih/8/sar:ih/8
要了解
-filter_complex
语言,有必要阅读ffmpeg文档的小章节。
您也可以将过滤器描述放入文件中并使用
-filter_complex_script <file>
。
将过滤器与函数进行比较。参数之间用
:
分隔。按位置只是value
,其他字典式name=value
。要启动参数列表,您也可以使用 =
。
实际数据通过标签
[<inlabel>]<filter>[<outlabel>]
。
在一系列过滤器(由 ,
分隔)中,标签不是必需的。
链条由 ;
分隔。
ffmpeg -filters | grep scale2ref
将为您提供
scale2ref
过滤器 (VV->VV
) 的输入和输出通道,
即 2 个视频,输入和输出。
ffmpeg -help filter=scale2ref
为您提供有关过滤器参数的信息。
参数的顺序不是那么明显,在本例中,w
后面是width
。
但w
和width
是一样的。所以实际的顺序是输出的 width,height
。
(iw/ih)*ih/8/sar:ih/8
因此是 width=(iw/ih)*ih/8/sar:height=ih/8
。
scale2ref=(iw/ih)*ih/8/sar:ih/8
的作用是将图像高度缩放到视频高度的1/8,并将图像宽度缩放到一个奇怪的值。如果比例是为了保留图像的纵横比,请使用
scale2ref=oh*mdar:ih/8
(FFmpeg 版本 4.0 至 7.1)
编辑:自 FFmpeg 7.1 起,
scale2ref
已合并到现有的 scale
过滤器中,并具有辅助参考输入:
scale=-1:rh/8
请注意,此过滤器输出修改后的单个流,而不是两个视频流。