使用ffmpeg缩放视频,改变视频尺寸,固定分辨率或者保持视频宽高比的办法

 xiezixing @ 2019-01-22 16:18:29

本教程是根据ffmpeg官方教程翻译而来,很多网友在使用ffmpeg的时候,不知道怎么利用参数来生成固定分辨率或者自适应视频宽高比的视频文件,今天这个教程之后,大家应该就都会使用ffmpeg来缩放视频文件了。

比如我们有一个视频文件,1.mp4,分辨率为720P,也就是1280x720像素。

假如我们想要使用ffmpeg根据1.mp4生成一个小一点分辨率的视频,比如我们想要生成一个640x480的视频文件,我们应该怎么做呢,一句命令行搞定:

ffmpeg -i 1.mp4 -vf scale=640:480 output.mp4

这样就会生成一个固定尺寸,分辨率为640x480的视频output.mp4。但是这里有个问题,源分辨率1280x720,宽高比为1.77,但是生成的分辨率640x480,宽高比为1.33,生成的视频播放出来视频就已经被强行改变了宽高比,视频被拉伸观影体验非常不自然,那么问题来了,如果我们想要保持宽高比,并且还要缩放视频,我们怎么办。

保持宽高比缩放也很简单,也是一句命令行:

ffmpeg -i 1.mp4 -vf scale=640:-1 output.mp4

这个命令行的意思是,设置宽为640,但是保持宽高比1.77,并且智能计算出来高度,最后生成的高度为361。

但是如果使用libx264转码一个视频为mp4格式,如果高度为361,则会抛出一个错误:高度不能被2整除,这个错误可以看我以前写的帖子,今天只讲如何解决这个问题,解决这个问题也很简单,设置-1为-2即可。

ffmpeg -i 1.mp4 -vf scale=640:-2 output.mp4

如此就解决了这个问题,生成的高度为360。

最后总结一下:
缩放为固定分辨率的命令行:

ffmpeg -i 1.mp4 -vf scale=640:480 output.mp4

缩放为自适应宽高比的命令行:

ffmpeg -i 1.mp4 -vf scale=640:-2 output.mp4