ビデオ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%だけしか表示しないようにする方法はありますか?
geq
以外の別のオプションはcolorchannelmixer
です。
[1:v]format=argb,colorchannelmixer=aa=0.5[zork]
私はそれを得たと思います:
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
を含めているので、それ自体のアルファチャンネルを持たないオーバーレイ画像でも機能します。