问题描述
可以在一行中运行cropdetect和裁剪,并从视频中获取拇指?
Its possible to run cropdetect and crop in one line and get thumbs from video?
这样的
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,而不是运行裁剪并从视频中生成缩略图,但是我需要从cropdetect获取值?
Or maybe need to run in 2 line, first run cropdetect and than run crop and generate thumbs from video, but in this way i need to get value from cropdetect?
推荐答案
输出到控制台,因此您可以解析输出,然后将其用作变量:
cropdetect
outputs to the console, so you can parse the output and then use it as a variable:
ffmpeg -i input -t 1 -vf cropdetect -f null - 2>&1 | awk '/crop/ { print $NF }' | tail -1
这将导致如下:
crop=640:480:0:50
然后运行您的实际裁剪命令:
Then run your actual crop command:
ffmpeg -i input -vf $cropvalue,scale=240:-1 -vframes 1 -qscale:v 2 output.jpg
-
-vcodec mjpeg
,-an
和-f rawvideo
是多余的使用
-qscale:v
来控制输出质量。一个合理的范围是2-5(较低的值是更高的质量)。Use
-qscale:v
to control jpg output quality. A sane range is 2-5 (a lower value is a higher quality).使用过滤器而不是
-s
;特别是如果您已经在使用过滤器。另外,scale
filter将允许您设置一个特定的宽度或高度,并使用-1
它将自动提供正确的价值保留方面。否则,如果你试图强制一个特定的大小,你可能会有一个挤压或拉伸的产出风险。Use the
scale
filter instead of-s
; especially if you're already using filters. Also thescale
filter will allow you to set a specific width or height and with-1
it will automatically provide the correct value to preserve aspect. Otherwise if you try to force a specific size you can risk a squished or stretched output.显然我不是一个PHP编码器,但这至少应该给你一个想法。
Obviously I'm not a PHP coder, but this should give you an idea at least.
这篇关于ffmpeg从cropdetect获取值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!