ffmpeg:在具有自定义透明度的视频上叠加png图像?

Roc*_*uts 10 video transparency alpha ffmpeg filter

假设我有一个视频foo.mkv和一个图像bar.png(恰好包含一个alpha通道).我可以将此图像混合在视频上,如下所示:

ffmpeg 
 -i foo.mkv 
 -i bar.png 
 -filter_complex "[0:v][1:v]overlay" 
 -vcodec libx264 
 myresult.mkv
Run Code Online (Sandbox Code Playgroud)

(为了便于阅读,这里使用多行,通常这是一个命令行).

现在,除了具有自己的alpha通道的png图像之外,我还会在将此图像混合到视频上时应用自定义整体透明度.

在上面的示例中,图像在视频顶部100%可见 - 或至少在其Alpha通道完全不透明的部分.

有没有办法添加自定义整体不透明度或透明度混合因子,类似于opacity=0.5什么,什么,这将使图像只有50%可见?

Roc*_*uts 12

我想我明白了:

ffmpeg 
 -i foo.mkv 
 -i bar.png 
 -filter_complex "[1:v]format=argb,geq=r='r(X,Y)':a='0.5*alpha(X,Y)'[zork]; 
   [0:v][zork]overlay" 
 -vcodec libx264 
 myresult.mkv
Run Code Online (Sandbox Code Playgroud)

0.5不透明度因子在哪里.我包括format=argb所以它也适用于没有自己的alpha通道的叠加图像.


Gya*_*yan 9

另外一个选择geqcolorchannelmixer.

[1:v]format=argb,colorchannelmixer=aa=0.5[zork]
Run Code Online (Sandbox Code Playgroud)