Warm tip: This article is reproduced from serverfault.com, please click

其他-如何使用ffmpeg调整覆盖图像的大小?

(其他 - How can I resize an overlay image with ffmpeg?)

发布于 2020-11-27 13:25:03

我正在尝试使用以下命令向视频添加覆盖图

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]

这似乎不起作用,所以我不确定我应该瞄准什么。

如果有任何解释,我将不胜感激。

谢谢!

Questioner
Andrei Dascalu
Viewed
0
martinr92 2020-11-28 22:11:57

你已找到所有零件。让我们将它们放在一起:

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”(对于第一个输入文件的音频)