是否可以在一行中运行cropdetect和crop,并从视频中获取经验?

像这样的东西

ffmpeg -ss 1 -i 0.flv -vf cropdetect=24:16:0,crop=w:h:x:y -vcodec mjpeg -vframes 1 -an -f rawvideo -s 240x180 0.jpg

还是可能需要两行运行,首先运行cropdetect,然后运行crop,然后从视频生成拇指,但是通过这种方式,我需要从cropdetect获得值(value)?

最佳答案

cropdetect 输出到控制台,因此您可以解析输出,然后将其用作变量:

ffmpeg -i input -t 1 -vf cropdetect -f null - 2>&1 | awk '/crop/ { print $NF }' | tail -1

这将导致类似:
crop=640:480:0:50

然后运行您的实际裁剪命令:
ffmpeg -i input -vf $cropvalue,scale=240:-1 -vframes 1 -qscale:v 2 output.jpg
  • -vcodec mjpeg-an-f rawvideo是多余的
  • 使用-qscale:v控制jpg输出质量。合理范围是2-5(值越小质量越高)。
  • 使用 scale 过滤器代替-s;特别是如果您已经在使用过滤器。同样,scale过滤器将允许您设置特定的宽度或高度,并且使用-1它将自动提供正确的值以保留宽高比。否则,如果尝试强制使用特定大小,则可能会受到压缩或拉长的风险。

  • 显然我不是PHP程序员,但这至少应该给您一个想法。

    07-26 09:36