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

时间:2016-08-03 21:13:28

标签: video filter ffmpeg transparency alpha

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

ffmpeg 
 -i foo.mkv 
 -i bar.png 
 -filter_complex "[0:v][1:v]overlay" 
 -vcodec libx264 
 myresult.mkv

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

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

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

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

2 个答案:

答案 0 :(得分:10)

我想我明白了:

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

0.5是不透明度因子。我包括format=argb,所以它也适用于没有自己alpha通道的叠加图片。

答案 1 :(得分:9)

geq之外的另一个选项是colorchannelmixer

[1:v]format=argb,colorchannelmixer=aa=0.5[zork]