视频压缩相关知识梳理
前言
最近使用 handbrake 压缩视频时,发现压缩后视频的尺寸发生变化,为了解决这个问题,所以在网上搜集相关视频压缩的资料进行梳理。
快速了解
概述
视频文件的大小由码率决定。 码率=文件实际大小 (kb)*8/时长 (s),通过公式可以看到影响文件大小的因素只有码率和视频时长
码率是什么呢,码率又叫比特率,是单位时间能够传输的数据位数,它决定了视频清晰度。视频清晰度除了取决于码率,还取决于视频分辨率
分辨率就是我们常说 480p、1080p,表示视频(尺寸)大小,通常 480p 指长宽为 640480,此处的尺寸大小、长宽不是日常理解的长 640mm 高 480mm,而是指整个页面一共 640*480 个像素点,其中视频垂直方向有 480 条扫描线,每条线里有 640 像素点
码率越高,分辨率越大,则视频的清晰度越高,但是码率不是越大越好,无效的高码率只会导致文件冗余,不同分辨率对应合适的码率
阿里云视频点播的推荐参数,可供参考:
清晰度 | 推荐码率 | 推荐分辨率 | 分辨率区间 |
---|---|---|---|
流畅 | 400 | 640×360 | 128×128~640×360 |
标清 | 900 | 960×540 | 641×361~960×540 |
高清 | 1500 | 1280×720 | 961×541~1280×720 |
超清 | 3000 | 1920×1080 | 1281×721~1920×1080 |
2K | 3500 | 2560×1440 | 1920×1080~2560×1440 |
4K | 6000 | 2560×1440 | 2560×1440~3840×2160 |
除了视频文件大小、清晰度以外,还有一个大家比较关心的是视频在页面播放时显示的尺寸,这个叫做视频比例,一般分为 1:1、16:9、9:16、4:3、3:4 五种,较为常见的是横屏 16:9 和竖屏 9:16
此外,视频的帧数决定画面流畅度,通常肉眼观看帧率 25 的动画已经能感觉到流畅,不建议采取更低的帧数
公式
计算视频⼤⼩和码率的公式如下:
((⾳频码率+视频码率)/1024)×时⻓/8=视频⼤⼩(MB)
((视频⼤⼩×8)/时⻓)×1024-⾳频码率=视频码率(kbps)
注:码率的单位为
kbps
,时⻓的单位为s
计算出来视频存储大小的单位为 KB,注意单位换算:1MB=1024KB
解释
CRF(Constant Rate Factor),这种码率控制方式是非常优秀的,以至于可以无需 2pass 压制,即使 1pass 也能实现非常好的码率分配利用。
CRF(Constant Rate Factor) 恒定码率因子/ CQF(Constant Quality Factor) 恒定质量因子.
视频质量 | CRF赋值 | 备注 |
无损 | 1-18 | CRF取值范围1.0 - 51.0 一般设置为21-25,此值越大码率越低。 21可以压制出高码率; 网络播放设为24即可。 |
高质量 | 19-21.5 | |
中质量 | 22-26 | |
低质量 | 27-50 | |
最差画质 | 51 |
编码与 CRF 的关系表:
Codec | CRF取值范围 | CRF默认值 | CRF建议值 |
x264 | 0-51 | 23 | 18-28 |
x265 | 0-51 | 28 | 31(1080P高清视频) |
VP9 | 0-63 | - | 15-35 |
CRF 与码率的对应关系:
CRF | 最小码率bitrate-min | 最大码率bitrate-max |
20 | 420 | 1200 |
21 | 370 | 1000 |
23 | 300 | 700 |
25 | 220 | 500 |
26 | 200 | 432 |
CRF 与码率的关系图
如果你无法确定需要的 CRF 值,你可以从默认值开始慢慢尝试。如果质量低于预期则减小 CRF,如果文件太大则增大 CRF。每当 CRF 增大/减小 6,文件尺寸将减半/加倍。
帧率与对应的码率
24帧 | 2400kbs |
30帧 | 3000kbs |
50帧 | 5000kbs |
60帧 | 6000kbs |
FAQ
如何在保证画面质量的情况下压缩视频大小呢
保留原帧数,选取满足需求的分辨率,按照对应的推荐码率进行压缩。此外只有原视频质量高的时候,才能有比较良好的压缩效果。
如何让 handbrake 压缩时保持原视频尺寸
- 描述
我用 handbrake 压缩视频时,原本视频是 1920x1080
的,压缩了之后尺寸变成了 1980x910
压缩格式用的是 fast 1080p30
。
- 操作
一般尺寸被改了应该是视频有黑边,自动被裁剪了,选择无,不裁剪就好了
结尾
通过对上面的整理,我们已经知道
- 视频清晰度与分辨率、码率相关
- 码率的合适取值与选取的分辨率相关
- 视频文件大小与码率相关
- 画面流畅度与帧数相关