ffmpeg geq 选项的使用

ffmpeg geq 选项的使用

我正在尝试使用 ffmpeg 在视频中叠加透明图像。我发现

geq=g='g(X,Y)':a='0.3*alpha(X,Y)'

用于改变图像的透明度。我知道它根据小数乘以改变图像的透明度。我想知道

  1. 需要 g='g(X,Y)'。我得到了亮度或 RGB 表达式是必需的如果我将其删除。
  2. X 和 Y 的值是多少?根据文档当前样本的坐标。 https://www.ffmpeg.org/ffmpeg-all.html#geq

如果需要的话,我会使用完整命令

ffmpeg -i video1.mp4 -i img.jpg -filter_complex "[1]scale=50:50,geq=g='g(X,Y)':a='0.3*alpha(X,Y)'[unni];[0][unni]overlay=W-w-10:main_h-overlay_h-10" out.mp4

它也适用于geq=r='r(X,Y)':a='0.3*alpha(X,Y)'

答案1

X 和 Y 不指任何特定的像素坐标。geq 过滤器对视频帧的所有像素进行操作,每次一个。它们是表示当前正在评估的像素坐标的变量。

geq 过滤器可以对编码为 RGB 或 YUV 的像素进行操作。但实际使用的代码不同,因此它需要知道哪种类型。为了表示输入是 RGB,至少应设置 RG 或 B 表达式之一。对于 YUV,应设置 Y(亮度)expr。您只需将值设置为标识(p(X,Y))。

答案2

g='g(X,Y)'orr='r(X,Y)'语句不执行任何操作,但对于 RGB 颜色空间,过滤器需要它们。它们基本上将输入的所有像素的绿色/红色值设置为像素的当前绿色/红色值。

alpha(X,Y)逐个像素地获取每个坐标的当前 alpha 值。然后将其乘以0.3使其更加透明。

相关内容