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

滤镜geq不会自动检测输入是 RGB 还是 YUV,而是根据其中一个非 alpha 平面的表达式是否存在来判断,因此必须指定其中一个。我已为 R 平面指定了一个表达式并将其设置为身份,因此它不会改变。

相关内容