H264压缩比
条件:
1、YUV格式为YUV420。 乘1.5倍,rgb是3倍
2、分辨率为640x480
3、帧率为15
原视频未压缩需要6404801.5158 = 55296000(bit),约55M (一秒).
H264建议码流为500kps
结果: 约1/100
码流参考值
常用的h264建议码流都并非科学计算得出的,而是各个厂家经过大量实践得出的经验值。
常用的查询网址:
https://docs.agora.io/cn
这是声网总结的经验值,声网在音视频领域是比较权威的。
1、进入网页
2、点击视频通话
3、在基础功能里找到设置视频编码属性并点击
4、下翻找到数据
- 二人视频通话场景:
分辨率 320 × 240、帧率 15 fps、码率 200 Kbps
分辨率 640 × 360、帧率 15 fps、码率 400 Kbps - 多人视频通话场景:
分辨率 160 × 120、帧率 15 fps、码率 65 Kbps
分辨率 320 × 180、帧率 15 fps、码率 140 Kbps
分辨率 320 × 240、帧率 15 fps、码率 200 Kbps
视频属性参考表
分辨率 (宽 × 高) | 帧率 (fps) | 基准码率 (Kbps,适用于通信) | 直播码率 (Kbps,适用于直播) |
---|---|---|---|
160 × 120 | 15 | 65 | 130 |
120 × 120 | 15 | 50 | 100 |
320 × 180 | 15 | 140 | 280 |
180 × 180 | 15 | 100 | 200 |
240 × 180 | 15 | 120 | 240 |
320 × 240 | 15 | 200 | 400 |
240 × 240 | 15 | 140 | 280 |
424 × 240 | 15 | 220 | 440 |
640 × 360 | 15 | 400 | 800 |
360 × 360 | 15 | 260 | 520 |
640 × 360 | 30 | 600 | 1200 |
360 × 360 | 30 | 400 | 800 |
480 × 360 | 15 | 320 | 640 |
480 × 360 | 30 | 490 | 980 |
640 × 480 | 15 | 500 | 1000 |
480 × 480 | 15 | 400 | 800 |
640 × 480 | 30 | 750 | 1500 |
480 × 480 | 30 | 600 | 1200 |
848 × 480 | 15 | 610 | 1220 |
848 × 480 | 30 | 930 | 1860 |
640 × 480 | 10 | 400 | 800 |
1280 × 720 | 15 | 1130 | 2260 |
1280 × 720 | 30 | 1710 | 3420 |
960 × 720 | 15 | 910 | 1820 |
960 × 720 | 30 | 1380 | 2760 |
GOP
假设一秒钟有25帧,如上图所示。可以算出来帧与帧之间间隔40毫秒。
将时间拉长至10分钟时,累计的帧数就已经是十分多了,需要处理的数据增加,带来了压缩时的困难。
为了处理,则将这些帧进行了分组。
假设小人dou时看望远镜的,包括看的角度不同的,分为一组,小人所有敲键盘的分为另一组。
每一帧的敲键盘都是一个动作(按下去、抬起来、抬得不同高度等)。
所以每一个gop都是描述的目标的细微差别。所以在每一个GOP中的所有视频帧都是强相关的,而不同GOP间的视频帧相关性特别小。
所以由此可以将视频划分为很多不同的组,每一组都是强相关的视频帧,GOP即Grouo Of Picture.
GOP中帧与帧之间的差别小
通过GOP的划分,组内的压缩就容易进行了,因为差别小,数据量会很容易的下降下去。
以小人为例,每张图片的背景几乎没有差别,只是小人的望远镜方向不同,姿势不同,所以背景完全可以放在一张图里。
小人还可以进行再次划分,例如小人的头发都是相同的,也可以放在一张图里。
所以这三张(实际更多)的图片公共点非常多,背景完全一样,头发完全一样,所以只要记录每张图中的不同点,也就是望远镜角度,身体姿势等。