使用ubuntu上的ffmpeg在视频中裁剪黑条会改变视频大小

时间:2011-01-13 15:18:51

标签: ubuntu ffmpeg crop

我的源视频大小为720x576,顶部和底部有黑色矩形。

我想删除黑色矩形并将输出视频大小设置为640x352。

我尝试了-vf cropdetect,它给出的值是640:192:0:80。

但是,在crop=<parameter>中放置相同的值会更改输出视频大小。

我该如何解决这个问题?

E.g:

ffmpeg -i all_the_best_test.mpg -s 640x352 -deinterlace -b 500k -minrate 500k \
-maxrate 500k -aspect 1.82 -force_fps -vcodec libx264 -me_method 10 \
-vf crop=640:192:0:80 -r 25 -acodec libfaac -ac 2 -ar 44100 -ab 96k -subq 6 \
-vpre medium /vod/Movies/final/allthebest-crop-2.mp4

1 个答案:

答案 0 :(得分:0)

当你指定-s 640x352作为应用于输出的第一个命令时,你期望ffmpeg最后会处理它吗?从你的结果来看,我认为它必须首先应用它(对于黑框仍然完整的电影)。因此,黑色框架将与电影一起调整大小。然后,您将为原始大小影片检测到的裁剪应用于此新的较小影片。没有绘制东西很难解释,但是这会扭曲你的宽高比,如果将裁剪作为要保留的几何图形,则从边距中删除一些内容(请记住:在应用原始裁剪之前,你使视频变小了)。换句话说,它不只是扭曲,但人们应该有一些失踪的头发,附肢和东西?

为什么不做一个简单的测试用例。如果我使用黑色框架电影进行基本方法,它的效果非常好。

第1步保持不变。做ffmpeg -i movie.mp4 -vf cropdetect temp.mp4并读取它对crop的说法,就像你的crop = 640:192:0:80。

第2步:简化命令行测试:ffmpeg -i movie.mp4 -vf crop = 640:192:0:80 movie_without_borders.mp4。确保在播放器中播放结果,该播放器将自己的边界设置为文件大小(或者可以配置为执行此操作 - 如果您使用的是底池播放器,请按2)。新电影没有扭曲,黑色边框消失了。

对于我的测试文件,发生了两次大小更改。首先,显然,新的几何尺寸是我们为作物指定的。其次,文件大小略有下降,可能是因为使用了少量空间来保存黑匣子。使用libx264和相对压缩的低质量文件,没有太多移动,切出与图片相同区域的黑盒子,文件大小从3.99减少到3.76(对于n = 1 ..)。但很可能你的意思是这张照片似乎“扭曲了”。