13

它可以在一行中运行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

或者可能需要在 2 行中运行,首先运行cropdetect,然后运行crop 并从视频中生成拇指,但是这样我需要从cropdetect 中获取价值?

4

1 回答 1

23

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 编码员,但这至少应该给你一个想法。

于 2013-06-23T23:47:24.010 回答