2016-08-03 24 views
7

ビデオfoo.mkvと画像bar.png(これにはアルファチャンネルが含まれています)があるとします。私はこのような動画の上にこのイメージをブレンドすることができますffmpeg:ビデオにカスタムの透明度を持つ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%しか見えません。

答えて

8

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

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

ありがとう!私が気に入っているのは、カラーチャンネルの1つを明示的に設定する必要がないということです( 'geq'の場合と同様に、私のダミー' r = 'r(X、Y)')。明示的にカラーモデルを強制することなく、アルファを含むようにフォーマットを強制する方法を知っていますか? (私が 'format = argb'でやっているように)' format = a 'のようなものがありますか? – RocketNuts

+0

アルファチャンネルが存在する場合は上書きされません。 – Mulvya

+0

好奇心の席から、既存のアルファチャンネルを上書きする方法は何ですか? – RocketNuts

6

は、私はそれを得たと思う:0.5は不透明要因である

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 

。私はformat=argbを含んでいるので、自分自身のアルファチャンネルを持たないオーバーレイ画像でも動作します。

+0

堅牢で洗練されたソリューションです。ありがとう! –