如何在 ffmpeg 上使用 filter_complex 裁剪和更改图像大小

如何在 ffmpeg 上使用 filter_complex 裁剪和更改图像大小

我正在使用代码将一些图像组合在一起并制作一个不断循环播放的视频。

我正在使用的代码是这样的:

-filter_complex "[0]reverse[r];[0][r]concat,loop=2:80,setpts=N/13/TB" -vcodec libx264 -pix_fmt yuv420p -crf 17

效果很好,但我需要添加一个滤镜来裁剪图片并更改其大小。不幸的是,我不知道如何使用我使用的代码来实现这一点。

有人可以帮忙吗?

这是可以运行的完整代码:

-hide_banner -r 13.000 -threads:v 8 -i "C:/01/test-%02d.JPG" -codec:v copy -filter_complex "[0]reverse[r];[0][r]concat,loop=2:80,setpts=N/13/TB" -vcodec libx264 -pix_fmt yuv420p -crf 23 -an "C:/01/test.mp4"

我已经尝试将过滤器放在反向过滤器之前,我可能尝试错了。例如:

-crop=3300:3300 -scale=900:900

我会解释得更清楚。我使用的是 Avanti GUI,它有裁剪和缩放选项,但当我使用 -filter_complex 时它们不起作用。我不知道如何正确手动添加过滤器。

答案1

您只需将cropscale过滤器添加到reverse过滤器前面即可。您可以一次完成(例如[0:v]crop,scale,reverse[r],但您需要将其同时应用于原始视频和反转视频,因此请创建两个过滤器链:

ffmpeg -i "C:/01/test-%02d.JPG"  -filter_complex "\
  [0:v]crop=3300:3300,scale=900:900[vid]; \
  [0:v]crop=3300:3300,scale=900:900,reverse[r]; \
  [vid][r]concat,loop=2:80,setpts=N/13/TB[out]" \
  -map "[out"] \
  -vcodec libx264 -pix_fmt yuv420p -crf 23 -an \
  "C:/01/test.mp4"

注意:不要使用-codec:v copy——当您使用过滤器时,您需要让 ffmpeg 重新编码视频。

相关内容