老版本的ffmpeg有bottom, left, right, top选项,但是现在已经被废弃了,而改用crop filter来进行描述。
值ow可从oh中得到,反之亦然,但是不可以从x和y中得到,因为x和y是从ow和oh中推断出来的。值x可从y中获取,反之亦然。比如:剪切输入帧的左第三,中第三,右第三,可以用下面的命令。
ffmpeg -i input -vf crop=iw/3:ih:0:0 output
ffmpeg -i input -vf crop=iw/3:ih:iw/3:0 output
ffmpeg -i input -vf crop=iw/3:ih:iw/3*2:0 output
当我们想剪裁帧的中间区域的时候,crop filter可以不使用x和y参数。默认的x和y是:
这就意味着剪切区域就在输入帧的中间位置。剪切语法如下:
ffmpeg -i input_file -vf crop=w:h out_file
剪切中间的一般帧,用命令:
ffmpeg -i input.avi -vf crop=iw/2:ih/2 output.avi
为了探索一个非黑的区域,我们可以使用cropdetect filter。此自动剪切对于输入帧中包含一些黑色区域的情况非常有用,通常用于分辨率在4:3和16:9之间切换的时候。
limit参数描述了多少的黑色颜色被使用,0意味着全部的黑色都被剪切掉。下面是一个例子:
ffmpeg -i input.mpg -vf cropdetect=limit=0 output.mp4
播放器一般都有一个进度条,能切换跳过多少时间等。但是大部分的实现是鼠标先拖动一段时间才能进行显示。ffmpeg有一个testsrc视频源包含一个timer,可以用下面的命令看到。
ffplay -f lavfi -i testsrc
testsrc默认是320*240pixels,并且里面的计时的数字有29*52像素,位置是从左上角为水平256像素,垂直94像素,为了剪切这个数字区域,我们可以用下面的命令。
ffmpeg -f lavfi -i testsrc -vf crop=29:52:256:94f -t 10 timer1.mpg
然后我们想用这个命令创建定时器显示多个数字,filter的描述和可以持续显示的时间都在下面表内:
如果我们想要高于52像素的数字,可以使用下面的命令:
ffplay -f lavfi -i testsrc=size=vga,然后就可以尝试上面表格中的命令。
尝试改变数字的颜色,可以使用lut filter,会在Color Correction章节进行介绍。