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

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

我正在尝试运行以下 cmd,它会在视频中添加水印并将其放大。

ffmpeg -i "in.avi" -i "\logo.png" -vf scale=854:-1  -preset 
veryfast -crf 20 -filter_complex overlay=5:5 "ou.mkv"

我收到以下错误。

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.

在我尝试放大(不使用 -vf scale=854:-1)之前,cmd 可以加水印。

我怎样才能实现这两点?

我尝试过什么?

  • 将 -vf 参数移至输入前、输入后等。

答案1

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

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
  • [0:v]指的是第一个输入的视频流(input.avi在此示例中)。[1:v]是来自第二个输入的视频(logo.png在此示例中)。

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

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

  • -2在里面缩放视频过滤器用来代替,-1因为 x264 要求在输出为 4:2:0 色度子采样时,输出能够被 2 整除:

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

相关内容