我想叠加具有不透明度设置的图像
我知道如何在视频上叠加图像,但我不明白如何设置其不透明度。我可以轻松地在视频上添加水印,但这个水印的不透明度为 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 平面指定了一个表达式并将其设置为身份,因此它不会改变。