Appleex
Appleex
Published on 2023-07-13 / 275 Visits
0
0

技巧 | 视频压缩相关知识梳理

视频压缩相关知识梳理

前言

最近使用 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 的关系表:

CodecCRF取值范围CRF默认值CRF建议值
x2640-51
2318-28
x2650-512831(1080P高清视频)
VP90-63-15-35

CRF 与码率的对应关系:

CRF最小码率bitrate-min 最大码率bitrate-max 
20420
1200
213701000
23300700
25220500
26200432

CRF 与码率的关系图

如果你无法确定需要的 CRF 值,你可以从默认值开始慢慢尝试。如果质量低于预期则减小 CRF,如果文件太大则增大 CRF。每当 CRF 增大/减小 6,文件尺寸将减半/加倍。

帧率与对应的码率

24帧2400kbs
30帧3000kbs
505000kbs
606000kbs

FAQ

如何在保证画面质量的情况下压缩视频大小呢

保留原帧数,选取满足需求的分辨率,按照对应的推荐码率进行压缩。此外只有原视频质量高的时候,才能有比较良好的压缩效果。

如何让 handbrake 压缩时保持原视频尺寸

  • 描述

我用 handbrake 压缩视频时,原本视频是 1920x1080 的,压缩了之后尺寸变成了 1980x910 压缩格式用的是 fast 1080p30

  • 操作

一般尺寸被改了应该是视频有黑边,自动被裁剪了,选择无,不裁剪就好了

结尾

通过对上面的整理,我们已经知道

  1. 视频清晰度与分辨率、码率相关
  2. 码率的合适取值与选取的分辨率相关
  3. 视频文件大小与码率相关
  4. 画面流畅度与帧数相关

Comment