ffmpeg 错误:-vf/-af/-filter 和 -filter_complex 不能一起使用

cec*_*i0n 7 ffmpeg

我正在尝试运行以下 cmd,它应该为视频添加水印并对其进行放大。

ffmpeg -i "in.avi" -i "\logo.png" -vf scale=854:-1  -preset 
veryfast -crf 20 -filter_complex overlay=5:5 "ou.mkv"
Run Code Online (Sandbox Code Playgroud)

我收到以下错误。

Filtergraph 'scale=854:-1' was specified through the 
-vf/-af/-filter option for output stream 0:0, which is fed from 
a complex filtergraph. -vf/-af/-filter and -filter_complex 
cannot be used together for the same stream.
Run Code Online (Sandbox Code Playgroud)

在我尝试升级(没有 -vf scale=854:-1)之前,cmd 可以添加水印。

我怎样才能做到这两点?

我尝试过什么?

  • 在输入之前,输入之后移动 -vf 参数等。

llo*_*gan 17

您可以使用一个filtergraph进行所有过滤:

ffmpeg -i input.avi -i logo.png -filter_complex \
"[0:v]scale=854:-2[scaled]; \
 [scaled][1:v]overlay=5:5[out]" \
-map "[out]" -map 0:a -c:v libx264 -c:a copy output.mkv
Run Code Online (Sandbox Code Playgroud)
  • [0:v]指的是第一个输入的视频流(input.avi在本例中)。[1:v]是来自第二个输入的视频(logo.png在本例中)。

  • 在这个例子中,音频是蒸汽复制的,而不是重新编码;假设您的第一个输入有音频。

  • 最佳实践是手动命名过滤器输入和输出,例如在本例中,而不是依赖可能导致不正确的流选择的默认值。

  • -2比例视频过滤器中使用而不是-1因为 x264 要求输出在输出到 4:2:0 色度子采样时可以被 2 整除:

如果其中一个值是 -n 且 n > 1,则缩放过滤器还将使用一个值来保持输入图像的纵横比,该值是从另一个指定维度计算的。但是,之后它会确保计算出的尺寸可以被 n 整除,并在必要时调整该值。