1. 视频编码概览:为什么需要视频编码?H264与H265的前世今生
大家好,我是你们这趟编码之旅的向导。说实话,每次开新课前我都在想,第一讲到底该聊什么。直接扔一堆公式?那太劝退了。但光讲概念,又怕你们觉得虚。
所以这一章,咱们先不碰比特流,也不碰变换量化。先搞清楚三件事:我们为什么需要视频编码?H.264 和 H.265 到底是怎么来的?以及,这背后站着哪些组织、又藏着哪些专利雷区?
嗯,把这些背景摸透了,后面啃硬骨头的时候,你才知道自己站在哪块土地上。
1.1 为什么需要视频编码?
先算一笔账。你想想看,一部 1080p、24fps、时长 2 小时的电影,如果不压缩,原始数据量是多少?
- 分辨率:1920 × 1080 ≈ 2,073,600 像素/帧
- 每像素:RGB 各 8 位,共 24 位 = 3 字节
- 每帧数据量:2,073,600 × 3 ≈ 6.22 MB
- 每秒数据量:6.22 MB × 24 ≈ 149.28 MB
- 整部电影:149.28 MB × 7200 秒 ≈ 1.05 TB
1.05 TB。 就一部电影。你现在的硬盘能装几部?
核心结论:视频编码的本质,就是用算法消除视频信号中的冗余信息,在尽量保持视觉质量的前提下,把数据量压缩到原始体积的 1/100 甚至 1/200。
我在早期做嵌入式流媒体项目时,遇到过一块板子,内存只有 256MB,还得同时跑解码和渲染。当时我就深刻体会到:没有编码,流媒体根本不存在。 别说 4K、8K 了,连 720p 都跑不动。
视频里的冗余主要分四类:
| 冗余类型 | 说明 | 编码器怎么处理 |
|---|---|---|
| 空间冗余 | 同一帧内相邻像素相似(比如蓝天) | 帧内预测 + 变换编码(DCT) |
| 时间冗余 | 相邻帧之间内容相似(比如静止背景) | 运动估计 + 运动补偿 |
| 统计冗余 | 某些符号出现的概率更高 | 熵编码(CAVLC / CABAC) |
| 视觉冗余 | 人眼对高频细节不敏感 | 量化(丢掉不重要的高频系数) |
说白了,编码器就是一个「找茬专家」——它不存完整画面,只存「变化的部分」和「预测的差值」。你想想看,如果每一帧都完整存下来,那跟存照片序列有什么区别?
1.2 H.264 与 H.265 的前世今生
聊编码标准,绕不开两个组织:ITU-T(国际电信联盟)和 ISO/IEC(国际标准化组织)。
ITU-T 出的标准叫 H.26x 系列,主要面向实时通信(视频通话、电视会议)。ISO/IEC 出的标准叫 MPEG-x 系列,主要面向存储和广播(DVD、数字电视)。
但这两家后来发现,老打架没意思,不如合作。于是就有了 JVT(联合视频组)和 JCT-VC(联合协作组)。
H.264 / AVC(2003 年)
H.264 的正式名称是 MPEG-4 Part 10 / AVC。它可以说是视频编码史上的一座里程碑。在我个人看来,H.264 最大的贡献不是某个单一算法,而是把编码框架标准化到了极致。
- 引入了灵活的块划分(从 16×16 到 4×4)
- 多参考帧运动补偿
- 1/4 像素精度运动估计
- CABAC 熵编码
- 去块效应滤波器
我记得 2008 年左右,我在做手机上的视频播放器,那时候 H.264 Baseline Profile 是唯一能在低端 ARM 芯片上软解跑流畅的格式。换 MPEG-4 ASP?卡成幻灯片。
一个小知识:H.264 定义了多种 Profile(档次)和 Level(级别)。Baseline Profile 用于低延迟场景,Main Profile 用于广播,High Profile 用于蓝光光盘。选错了 Profile,解码器可能不认。
H.265 / HEVC(2013 年)
H.265 也叫 HEVC(High Efficiency Video Coding)。它诞生的直接驱动力是:4K 来了,H.264 扛不住了。
H.265 的目标很简单:在同等画质下,码率比 H.264 再降 50%。
怎么做到的?核心改进包括:
- CTU(编码树单元):从 H.264 的 16×16 宏块扩展到最大 64×64
- 更灵活的块划分:四叉树结构,支持非对称划分
- 更多的帧内预测模式:从 9 种增加到 35 种
- SAO(样点自适应补偿):减少振铃效应
- 并行处理优化:Tile 和 WPP 支持
但 H.265 也有个硬伤——专利授权太混乱了。 这一点我后面会细说。
注意:H.265 的编码复杂度大约是 H.264 的 3-5 倍。如果你在低功耗设备上做实时编码,H.265 的算力开销可能让你吃不消。我曾经在一个 IoT 项目里试过用 H.265 做 1080p 实时编码,结果芯片直接过热降频了。
1.3 编码标准组织与专利生态
这部分比较敏感,但作为工程师,你必须了解。
标准组织
| 组织 | 典型标准 | 主要应用领域 |
|---|---|---|
| ITU-T VCEG | H.261, H.263, H.264, H.265 | 实时通信、视频会议 |
| ISO/IEC MPEG | MPEG-1, MPEG-2, MPEG-4 | DVD、广播、存储 |
| JVT (联合) | H.264 / AVC | 两者兼顾 |
| JCT-VC (联合) | H.265 / HEVC | 4K/8K、UHD 蓝光 |
| AOM (开放联盟) | AV1 | 互联网流媒体(开源免专利费) |
专利生态——一个绕不开的坑
这里我要说点大实话。H.264 和 H.265 都不是免费的。
H.264 的专利由 MPEG LA 统一管理。早期对互联网免费内容不收专利费,后来政策收紧,但总体来说还算清晰。你只要找 MPEG LA 买授权就行,一口价。
但 H.265 就乱了。目前有 三个专利池:
- MPEG LA HEVC 专利池
- HEVC Advance 专利池
- Velos Media 专利池
除此之外,还有大量专利权人没有加入任何专利池,选择私下授权。这意味着什么?你做一个 H.265 的产品,理论上需要跟多个专利池 + 多个专利权人分别谈。授权成本可能比 H.264 高出数倍。
我的建议:如果你在做商业产品,尤其是面向海外市场的,一定要在项目早期就把专利授权成本算进预算里。我曾经见过一个创业团队,产品都量产了,突然收到专利律师函,最后不得不花大价钱和解。
这也是为什么近年来 AV1(由开放媒体联盟 AOM 推动)越来越受关注——它完全免专利费。但 AV1 的编码复杂度比 H.265 还高,这是另一个故事了。
1.4 本章知识体系总览
下面这张图,是我自己梳理的本章核心逻辑。你可以把它当作一张「地图」,后面每学一个新概念,都能在这张图上找到位置。
这张图把本章内容分成了三块:冗余类型(为什么压)、标准演进(压成什么样)、组织与专利(谁来定、谁来收费)。后面每一章,都会在这张图上不断添加细节。