FFMPEG:使用过滤器添加透明水印

FFMPEG: using filters for adding transparent watermark

如何结合这两行代码来添加透明水印(动态大小)

ffmpeg -i 1.gif -i logo.png -filter_complex "[1]format=rgba,colorchannelmixer=aa=0.5[logo];[0][logo]overlay=(W-w)/2:H-h-5" -c:a copy output.gif

ffmpeg -i 1.gif -i logo.png -filter_complex "[1][0]scale2ref=w=oh*mdar:h=ih*0.1[logo][video];[video][logo]overlay=(W-w)/2:H-h-5" -c:a copy output.gif

我试过以下代码:

ffmpeg -i 1.gif -i logo.png -filter_complex "[1][0]scale2ref=w=oh*mdar:h=ih*0.1[logo][video];[1]format=rgba,colorchannelmixer=aa=0.5[logo];[0][logo]overlay=(W-w)/2:H-h-5" -c:a copy output.gif

我收到以下错误: 过滤器 scale2ref 有一个未连接的输出

每个过滤器的输出必须连接到某个东西,而你的 [video] 输出垫 scale2ref 不是,因此错误。

您需要将 [video] 而不是 [0] 提供给 overlay 过滤器:

您需要确保所有滤波器输入和输出垫都已连接。在您的情况下,formatoverlay 需要使用 scale2ref 的输出而不是重复使用输入流:

ffmpeg -i 1.gif -i logo.png \
  -filter_complex "[1][0]scale2ref=w=oh*mdar:h=ih*0.1[logo1][video];\
                   [logo1]format=rgba,colorchannelmixer=aa=0.5[logo];\
                   [video][logo]overlay=(W-w)/2:H-h-5" \
  -c:a copy output.gif

[编辑:修复了其他标签问题]