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 本章知识体系总览

下面这张图,是我自己梳理的本章核心逻辑。你可以把它当作一张「地图」,后面每学一个新概念,都能在这张图上找到位置。

视频编码概览:知识体系 为什么需要视频编码? 视频冗余类型 空间冗余 时间冗余 统计冗余 视觉冗余 编码标准演进 H.264 / AVC H.265 / HEVC AV1(开源) VVC / H.266 标准组织 & 专利 ITU-T / ISO MPEG LA HEVC Advance AOM(免专利费) 核心:消除冗余 → 降低码率 → 平衡画质与算力

这张图把本章内容分成了三块:冗余类型(为什么压)、标准演进(压成什么样)、组织与专利(谁来定、谁来收费)。后面每一章,都会在这张图上不断添加细节。