FFmpeg缩放滤波器的缩放算法是什么?

Atr*_*rin 2 ffmpeg

我使用以下命令放大和缩小了图像。

ffmpeg -s:v 1280:720 -r 25 -i input.yuv -vf scale=1920x1080 -c:v rawvideo -pix_fmt yuv420p out.yuv

我想知道使用哪种缩放算法来进行缩小(双线性,双三次,...)?

如果此命令中没有过滤器,如何更改或添加过滤器?

llo*_*gan 8

这取决于你的 FFmpeg 版本

如果使用 FFmpeg > 4.4,或从提交 lavfi/vf_scale 时的 git master 分支构建:使用scaler 的默认 swscale 标志,则默认缩放算法为bicubic

如果使用 FFmpeg 4.4 或更早版本

  • 使用时-vf默认的缩放算法是bicubic
  • 使用时-filter_complex默认的缩放算法是双线性的

您可以使用以下选项选择算法flags

-vf scale=1920x1080:flags=lanczos
Run Code Online (Sandbox Code Playgroud)

您可以通过以下方式查看算法列表:

ffmpeg -h filter=scale
Run Code Online (Sandbox Code Playgroud)

它们将列在默认-sws_flags显示双三次的选项下。

  • 我做了一些检查,默认情况并没有什么不同,但 filter_complex 初始化不考虑 sws_flags。将研究代码并看看是否可以修补它。 (2认同)
  • 现在 -filter_complex 的默认值也是双三次的。请参阅:https://github.com/FFmpeg/FFmpeg/commit/9f14396a5103ec80893db801035ece5d14c0d3c5 (2认同)