我正在尝试使用以下命令向视频添加覆盖图
ffmpeg -y -i "$videoPath" -i "$overlayPath" -filter_complex "[0:v] [1:v] overlay=$overlayPosition" -pix_fmt yuv420p -c:a copy "$outputPath"
但是,我希望能够调整将要应用于任意分辨率的叠加层的大小(不必担心保持比例)。但是,尽管我遵循了SO的一些类似解决方案(例如FFMPEG-如何调整图像叠加层的大小?),但是我对参数的含义或我需要添加的内容并不太满意。
我需要添加类似(?)的内容
[1:v]scale=360:360[z] [1:v]overlay=$overlayPosition[z]
这似乎不起作用,所以我不确定我应该瞄准什么。
如果有任何解释,我将不胜感激。
谢谢!
你已找到所有零件。让我们将它们放在一起:
ffmpeg -i "$videoPath" -i "$overlayPath" -filter_complex "[1:v]scale=360:360[z];[0:v][z]overlay[out]" -map "[out]" -map "0:a" "$outputPath"
为了说明:我们在这里执行“ filter_complex”参数中的两个过滤器,以分号“;”分隔。
首先,我们将第二个视频输入([1:v])缩放到新的分辨率,并将输出存储在变量“ z”中(你可以在此处输入任何名称)。其次,我们将第一个输入视频([0:v])和覆盖图([z])放在一起,并将输出存储在变量“ out”中。
现在是时候告诉ffmpeg他应该打包到输出文件中的内容了:-map“ [out]”(对于视频)-map“ 0:a”(对于第一个输入文件的音频)