1. 课程导入
大家好,欢迎来到这门课的第一章。今天咱们聊聊视频编码的“前世今生”。
你可能会问:为什么非得压缩视频?直接存原始数据不行吗?
我跟你算笔账。一段 1080p、30fps、每像素 24 位的彩色视频,一秒钟的数据量是多少?
1920 × 1080 × 30 × 3 ≈ 186 MB/s。一部两小时的电影,大概 1.3 TB。这还没算音频。
所以,不压缩,寸步难行。
从模拟到数字:一场静悄悄的革命
早年间,电视信号是模拟的。模拟信号有个毛病——抗干扰差,复制一次就损失一次。我记得刚入行时,老师傅还跟我聊过当年用磁带翻录视频,翻三代画面就糊得没法看了。
数字化的好处很明显:
- 无损复制:拷贝一万次,跟原版一模一样
- 抗干扰:只要没丢包,画面就不会花
- 可压缩:这才是我们今天要聊的核心
但数字化也带来了新问题——数据量暴增。模拟时代一帧画面就是一条连续的波形,数字化后变成了海量的 0 和 1。所以,压缩成了刚需。
视频编码标准发展史:从 H.261 到 VVC
编码标准的发展,说白了就是一场“用更少的比特,换更好的画质”的竞赛。我参与过几个项目的编解码器选型,每次新标准出来,心里都又爱又恨——爱它省带宽,恨它算力要求高。
下面这张表,是我整理的几个关键标准:
| 标准 | 发布年份 | 核心特点 | 典型应用 |
|---|---|---|---|
| H.261 | 1988 | 首个实用数字视频编码标准,基于 DCT + 运动补偿 | ISDN 视频会议 |
| MPEG-2 | 1995 | 引入帧间预测、B 帧,支持隔行扫描 | DVD、数字电视 |
| H.264/AVC | 2003 | 多参考帧、CABAC、去块滤波,压缩率比 MPEG-2 提升 50%+ | 蓝光、YouTube、视频 |
| H.265/HEVC | 2013 | 四叉树划分、更大变换块、SAO 滤波,压缩率再提升 50% | 4K 视频、HEIF 图片 |
| AV1 | 2018 | 开源、免专利费、基于块的多方向预测、CDEF 滤波 | YouTube、Netflix、浏览器 |
| VVC | 2020 | 更灵活的块划分、MTS、ALF,比 HEVC 再省 30-40% 码率 | 8K、VR、直播 |
我的经验之谈:H.264 是“黄金标准”,兼容性最好。AV1 是“未来之星”,但编码慢得让人抓狂。VVC 是“性能怪兽”,但专利费问题还没完全解决。选型时,别只看压缩率,还要看你的硬件能不能扛得住。
编码器与解码器的基本工作流程
编码器和解码器,就像一对双胞胎,一个负责“打包”,一个负责“拆包”。
编码器的核心流程,我习惯用五个词来记:预测 → 变换 → 量化 → 熵编码 → 输出。
解码器反过来:输入 → 熵解码 → 反量化 → 反变换 → 重建。
下面这张图,是我手绘的编码器流程图,你感受一下:
你看,编码器不是简单地把像素存起来。它先做预测——猜一猜当前块跟上一帧或者周围像素有什么关系。猜对了,只需要存一个很小的差值。然后做变换,把像素值变成频率系数。再量化,把不重要的高频细节扔掉。最后用熵编码,把符号压缩成二进制流。
一个小技巧:量化参数(QP)是编码器里最关键的旋钮。QP 越大,压缩率越高,但画质越差。我调过不少编码器,经验是:QP 每增加 6,码率大约减半,但画质下降肉眼可见。所以,别为了省带宽把 QP 拉得太高。
解码器:反向操作的艺术
解码器的工作,就是把压缩码流还原成视频帧。流程是编码器的逆过程:
- 熵解码:把二进制流还原成量化后的系数和运动矢量
- 反量化:把系数乘回原来的尺度(但丢失的信息回不来了)
- 反变换:把频域系数变回像素差值
- 重建:把差值加到预测帧上,得到最终画面
这里有个坑,我踩过。解码器必须跟编码器用完全一样的预测方式,否则画面会花掉。所以编码器内部会有一个“本地解码器”,模拟解码器的行为,保证两边同步。
注意:编码器和解码器的复杂度严重不对称。编码器通常比解码器慢 5-10 倍,因为编码器要做大量的模式搜索和率失真优化。所以,别指望手机能实时编码 4K 视频,但解码 4K 视频是没问题的。
为什么编码标准一直在演进?
说白了,就是需求在推着技术走。从 480p 到 1080p,再到 4K、8K,分辨率越来越高。从 24fps 到 60fps、120fps,帧率越来越快。从 SDR 到 HDR,色彩越来越丰富。
每一代新标准,都在做同一件事:用更少的比特,表达更丰富的画面。H.264 比 MPEG-2 省一半码率,HEVC 比 H.264 再省一半,AV1 和 VVC 继续压榨。
但代价是什么?算力。我记得当年第一次跑 AV1 编码器,一个 10 秒的 4K 片段,编码花了整整 40 分钟。所以,选标准时,要权衡压缩率和编码时间。