web-dev-qa-db-ja.com

ffmpeg:png画像をカスタムの透明度でビデオにオーバーレイしますか?

ビデオfoo.mkvと画像bar.png(たまたまアルファチャネルが含まれている)があるとします。この画像を次のようにビデオにブレンドできます。

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

(ここでは読みやすくするために複数の行を使用していますが、通常は1行のコマンド行です)。

次に、独自のアルファチャネルを持つpng画像に加えて、この画像をビデオにブレンドするときに、カスタム全体的な透明度も適用します。

上記の例では、画像はビデオの上に100%、または少なくともアルファチャネルが完全に不透明な部分で表示されます。

opacity=0.5などのカスタムの全体的な不透明度または透明度のブレンド係数を追加して、画像を50%だけしか表示しないようにする方法はありますか?

12
RocketNuts

geq以外の別のオプションはcolorchannelmixerです。

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

私はそれを得たと思います:

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を含めているので、それ自体のアルファチャンネルを持たないオーバーレイ画像でも機能します。

13
RocketNuts