FFmpeg | 修改分辨率

当需要对视频进行放缩时(如720p->1080p或1080p->720p),用到的语法。

方法一

1
ffmpeg -i input.mp4 -s 1920x1080 output.mp4

这种就是使用-s参数进行转换,但是这个参数不支持自适应,所以当输入的分辨率不确定时(比如4:3或是16:9),这种方法就会将输入强行拉伸,导致视频变形。

方法二

1
ffmpeg -i input.mp4 -vf scale=-1:1080 output.mp4

这里的-1就是自适应的意思,长或宽都可以。

错误处理

在用方法二的时候可能会遇到下列错误:
width not divisible by 2 (1915x1080)
或者
scaling failed: height must be an integer

这两个错误的原因都是因为在计算自适应长宽的时候出现不规则的分辨率。
前者是宽为小数,后者是长宽为小数。

解决方法是将命令中的-1换成-2
-nn>0时,参数的意思是将计算后的长宽调整为能被n整除的数。
所以理论上来讲,-2参数会在计算结果为非偶数时将计算结果进行微调从而导致放缩结果并不完全遵守原比例,会有微小变形。
但是这种变形是一两个像素的级别,我个人感觉在视觉上并不影响观感。