1. 不压缩有多大
按常见的 1080p、每秒 30 帧、8 位 4:2:0 采样计算:亮度每像素 1 字节,两路色度各只保留四分之一。
| 项目 | 计算 | 结果 |
|---|---|---|
| 每帧像素 | 1920 x 1080 | 2,073,600 |
| 每帧数据 | 像素数 x 1.5 字节 | 约 3.1 MB |
| 每秒数据 | x 30 帧 | 约 93.3 MB,即 746 Mbit |
| 两小时电影 | x 7200 秒 | 约 672 GB |
| 流媒体高清建议带宽 | Netflix 官方建议 | 5 Mbit/s |
采样方式见 《Wikipedia:Chroma subsampling》;带宽见 《Netflix:Internet connection speed recommendations》。表中数值为按上述条件自行计算。
2. 帧内压缩:一张图里的重复
画面切成小块,每块换算成频率成分。平缓的区域只剩少数几个数,细节中人眼不敏感的部分被舍弃。这一步和 JPEG 压照片的思路相同。
3. 帧间预测:只记变化
大部分帧不单独存整张图,只存和参考帧的差别:哪块从哪儿移过来,移动后还差多少。
依据:《Wikipedia:Video compression picture types》;标准原文见 《ITU-T H.264》。
4. 为什么有时会糊
| 场景 | 结果 | 原因 |
|---|---|---|
| 对话、静态画面 | 很清晰 | 帧间变化小,码率够用 |
| 下雨、烟花、快速转镜 | 出现方块和糊 | 每帧变化大,同样码率下只能多丢细节 |
| 拖动进度条要等一下 | 从最近的 I 帧开始解码 | P 帧和 B 帧离开参考帧无法单独显示 |
资料链接
| 资料 | 地址 |
|---|---|
| 《Wikipedia:Chroma subsampling》 | https://en.wikipedia.org/wiki/Chroma_subsampling |
| 《Netflix:Internet connection speed recommendations》 | https://help.netflix.com/en/node/306 |
| 《Wikipedia:Video compression picture types》 | https://en.wikipedia.org/wiki/Video_compression_picture_types |
| 《ITU-T H.264》 | https://www.itu.int/rec/T-REC-H.264 |