Ffmpeg で不透明度設定を使用して画像を重ねる

Ffmpeg で不透明度設定を使用して画像を重ねる
  • 不透明度設定で画像を重ねたい

  • 動画に画像を重ねる方法は知っていますが、不透明度を設定する方法もわかりません。動画に透かしを簡単に追加できますが、この透かしの不透明度は 100% です。

  • しかし、画像ファイルの不透明度を 50% にするにはどうすればよいでしょうか?

    例: ffmpeg -i in.mp4 -i image.png -af "pan=stereo|c0<c0+c2|c1<c1+c3,aeval=val(0)|val(1),volume=1.6" -vf "opacity=0.5" out.mp4

[AVFilterGraph @ 0000000000316dc0] そのようなフィルターはありません: 'opacity' フィルターを開くときにエラーが発生しました。

答え1

以下のコマンドを使用してください。

ffmpeg -i in.mp4 -i image.png \
-af "pan=stereo|c0<c0+c2|c1<c1+c3,aeval=val(0)|val(1),volume=1.6" \
-filter_complex "[1]geq=r='r(X,Y)':a='0.5*alpha(X,Y)'[a];[0][a]overlay" out.mp4

a='0.5*alpha(X,Y)'アルファ、つまり不透明度を設定します。

フィルターgeqは入力が RGB か YUV かを自動検出せず、非アルファ プレーンの 1 つの式の存在から判断するため、そのうちの 1 つを指定する必要があります。R プレーンの式を指定してそれを ID に設定しているので、変更されません。

関連情報