在Ffmpeg中使用不透明度设置叠加图像


1
  • 我想用不透明度设置覆盖图像
  • 我知道如何在视频上叠加图像,但我不明白如何设置其不透明度级别。我可以轻松地在我的视频上添加水印,但此水印的不透明度为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]没有这样的过滤器:'不透明'   打开过滤器出错!


你的理由是什么? pan=stereo|c0<c0+c2|c1<c1+c3,aeval=val(0)|val(1)?我经常看到这个或类似的变体,但没有人知道他们为什么添加它。
llogan

这只是一个例子:)
Ffmpeg fans

Answers:


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 filter不会自动检测输入是RGB还是YUV,并且从其中一个非alpha平面的表达式中获取其提示,因此必须指定其中一个。我已经为R平面指定了一个表达式并将其设置为identity,因此它不会被更改。


我试过,但图片没有显示不透明度
Ffmpeg fans

显示完整的控制台输出。添加到Q.
Gyan

嘿@Mulvya,我想添加命令来裁剪视频和视频格式,但这是一个错误,我没有得到对待,你可以帮助我吗? :ffmpeg -i in.mp4 -i image.png -af“pan = stereo | c0&lt; c0 + c2 | c1&lt; c1 + c3,aeval = val(0)| val(1),volume = 1.6”-filter_complex“ 作物= IW / 1.3:IH / 1.3,标度= 640:480 ,[1] geq = r ='r(X,Y)':a ='0.5 * alpha(X,Y)'[a]; [0] [a]重叠“out.mp4 /// === &gt;错误:[AVFilterGraph @ 00000000027af4c0]为“geq”过滤器指定的输入太多。初始化复杂过滤器时出错。
Ffmpeg fans

使用 -filter_complex "[0]crop=iw/1.3:ih/1.3,scale=640:480[base];[1]geq=r='r(X,Y)':a='0.5*alpha(X,Y)'[a];[base][a]‌​overlay"
Gyan

嘿@Mulvya,这是错误的: [AVFilterGraph @ 00000000004b3760]没有这样的过滤器:'ΓÇîΓÇïoverlay'初始化复杂过滤器时出错。无效的论点
Ffmpeg fans
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.