在 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] 沒有這樣的過濾器:「不透明度」開啟過濾器時出錯!

答案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)'alpha 即不透明度。

濾波器geq不會自動偵測輸入是 RGB 還是 YUV,而是從非 Alpha 平面之一的表達式的存在中取得提示,因此必須指定其中一個。我已經為 R 平面指定了一個表達式並將其設為恆等式,因此它不會被更改。

相關內容