2290 字
11 分钟
[Video] H.264、H.265 与 AV1 视频编码原理深度解析

引言#

在高清与超高清视频普及的今天,H.264 (AVC)、H.265 (HEVC) 以及新兴的 AV1 是支撑现代互联网视频流转的三大基石。本文将从核心编码概念、技术演进、AV1 的崛起以及码率控制策略四个维度进行深度拆解。


一、 视频编码与压缩:本质是一回事吗?#

在进入技术细节前,我们需要明确一个根本性问题:视频编码(Encoding)的本质,几乎等同于视频压缩(Compression)。

1. 为什么“编码”即“压缩”?#

如果不进行压缩,视频数据量是惊人的。以一个常见的 1080p、30fps、8-bit RGB 的原始视频(Raw Video)为例:

  • 计算一秒钟的数据量1920×1080(像素)×3(字节/像素)×30(帧/秒)186 MB/s1920 \times 1080 (\text{像素}) \times 3 (\text{字节/像素}) \times 30 (\text{帧/秒}) \approx 186 \text{ MB/s}
  • 这意味着一分钟的视频就需要约 11 GB 的存储空间。

因此,视频编码器的核心任务就是寻找一种“速记法”,通过去除冗余信息,用尽可能小的体积还原尽可能真实的画面。


二、 视频编码核心概念#

1. I/P/B 帧详解#

  • I 帧 (Intra-coded, 帧内编码帧)
    • 原理:完整保留一帧所有信息。它是解码的起点和随机访问点。
    • I 帧 vs IDR 帧
      • I 帧:是一个广义概念。在一个非 IDR 的 I 帧之后,后面的帧仍然可以参考该 I 帧之前的帧。这可能导致在拖动进度条时出现画面残留(花屏)。
      • IDR 帧 (Instantaneous Decoding Refresh):是一种特殊的 I 帧。它具有“强制刷新”功能,解码器在遇到 IDR 帧时会清空参考帧缓存区(DPB),确保 IDR 帧之后的帧绝对不会参考其之前的任何帧。所有 IDR 帧都是 I 帧,但并非所有 I 帧都是 IDR 帧。
  • P 帧 (Predictive, 前向预测帧)
    • 原理:只记录与前一个参考帧(I 或 P)的运动矢量差异。
  • B 帧 (Bi-predictive, 双向预测帧)
    • 原理:同时参考前后帧(通常是一个 I/P 帧和一个 P 帧)。
    • P/B 帧也有“特殊类型”吗?
      • 在 H.264/H.265 中,P/B 帧可以分为参考帧非参考帧
      • 非参考 B 帧 (Non-reference B-frame):这是最常见的 B 帧,它不被任何其他帧参考。这意味着在网络拥塞或性能不足时,可以直接丢弃非参考 B 帧而不影响后续画面的解码,这在时域分级编码 (Temporal Scalability) 中非常关键。
      • 参考 B 帧 (Reference B-frame):在更高效的编码模式下,B 帧也可以作为其他 B 帧的参考(常见于 Hierarchical B-frame 结构),从而进一步提升压缩效率。

2. GOP (Group of Pictures, 图像组) 与帧的关系#

GOP 是 I/P/B 帧的组织单元。一个 GOP 是一组连续的画面,由一个 I 帧(通常是 IDR 帧)开始,后面跟着多个 P 帧和 B 帧。

GOP 的典型结构#

一个典型的 GOP 序列如下所示: I B B P B B P B B P ... I

  • GOP 长度 (GOP Size/Length):指两个 I 帧之间的总帧数。
  • 封闭 GOP vs 开放 GOP
    • 封闭 GOP (Closed GOP):该组内的 P/B 帧只参考本组内的 I 帧。这种结构适合切片流(如 HLS/DASH),因为切片可以从任意 I 帧独立开始解码。
    • 开放 GOP (Open GOP):允许 B 帧参考前一个 GOP 的帧。压缩率更高,但拖动进度条时可能会出现短暂花屏。

关键区别:显示顺序 vs 解码顺序#

由于 B 帧需要参考“未来”的帧,这导致了视频流中存在两种顺序:

  1. 显示顺序 (PTS, Presentation Time Stamp):观众看到的画面顺序:I B B P
  2. 解码顺序 (DTS, Decoding Time Stamp):解码器处理的顺序。为了解码第二个 B 帧,必须先解码它参考的 P 帧,因此顺序变为:I P B B

GOP 长度与 FPS 的配比建议#

在实际编码中(如使用 FFmpeg、OBS 或硬件编码器),最常见的建议是 GOP 长度 = 1x 或 2x FPS(即每 1 秒或 2 秒一个 I 帧)。

为什么要这样设置?

  1. 随机访问(快进/快退):视频播放器只能从 I 帧开始解码。如果 GOP 设置为 10 秒(如 30fps,GOP=300),当你点击进度条时,播放器可能需要等待数秒来寻找最近的 I 帧,或者在解码出画面前先经历一段花屏。
  2. 抗丢包能力:在网络传输(如直播)中,如果丢失了一个 P 帧,画面会一直“糊”下去,直到下一个 I 帧出现才能恢复正常。1-2 秒的 GOP 意味着即使网络波动,画面最快能在 1 秒内自动修复。
  3. 直播延迟:在 HLS/DASH 等流媒体协议中,切片长度通常是 GOP 长度的倍数。较短的 GOP 有助于降低端到端的直播延迟。
  4. 压缩效率的平衡:虽然 GOP 越长(I 帧越少)压缩率越高,但边际效应递减。通常 GOP 超过 5 秒后,节省的码率已不明显,反而带来了巨大的解码压力和随机访问延迟。

3. NALU 与参数集 (SPS/PPS/VPS)#

视频流并不是简单的像素数据,它被封装成一个个 NALU (Network Abstraction Layer Unit, 网络提取层单元)。其中最关键的是描述视频全局配置的“参数集”。

  • SPS (Sequence Parameter Set, 序列参数集)
    • 作用:包含整个视频序列的全局信息。
    • 关键内容:编码 Profile(基准/高级)、Level、视频分辨率、帧率、色彩空间(YUV420 等)、最大参考帧数。
  • PPS (Picture Parameter Set, 图像参数集)
    • 作用:包含一帧或多帧图像的特定配置。
    • 关键内容:熵编码模式(CAVLC/CABAC)、初始量化参数(QP)、切片(Slice)组信息。
  • VPS (Video Parameter Set, 视频参数集) —— 仅 H.265/AV1
    • 作用:H.265 引入,用于描述多层视频流(如 3D 视频、可伸缩编码)的共享信息。

为什么它们至关重要?#

  1. 解码前提:解码器在收到 I 帧之前,必须先解析出 SPS 和 PPS。否则,解码器根本不知道视频的长宽或编码级别,会导致解码失败。
  2. 出现频率:在直播流(如 RTMP)或录制的 TS 文件中,SPS/PPS 通常会周期性地出现在每个 IDR 帧之前。这样当用户中途进入直播间时,能立即获取参数集并开始解码,而不需要等待文件头。
WARNING

丢包风险:如果 SPS/PPS 在传输中丢失,即便后续的 I 帧和 P 帧完整,整个 GOP 也会因为失去“解码说明书”而彻底无法播放。


三、 H.264 vs H.265:块划分的革命#

1. 从 MB (宏块) 到 CTU (编码树单元)#

  • H.264:固定 16x16 宏块。在 4K 视频中,过细的划分会导致冗余的预测数据占据过多带宽。
  • H.265:引入 CTU,最大支持 64x64。它能像拼图一样,在平坦区域用大块,在复杂区域用小块。

2. 预测模式的增强#

H.265 将帧内预测方向从 H.264 的 9 种增加到了 35 种,显著提升了画面边缘的细腻度。


四、 AV1:开源与效率的新标杆#

AV1 (AOMedia Video 1) 是由 Google、Netflix 等巨头组成的 AOM 联盟推出的开源、免专利费格式。

1. 为什么需要 AV1?#

H.265 虽然优秀,但其专利授权极其复杂且昂贵。AV1 的出现不仅解决了成本问题,更在压缩效率上实现了对 H.265 的超越。

2. 核心技术优势#

  • 更灵活的划分:AV1 支持多达 10 种 不同的块划分模式(不仅仅是 H.265 的四叉树),且块大小可达 128x128
  • 调色板编码 (Palette Mode):对于人工合成的内容(如游戏画面、网页),AV1 能识别出少数几种主要颜色进行编码,效率极大提升。
  • 胶片颗粒合成 (Film Grain Synthesis):AV1 会在编码时移除胶片噪点,并在解码端重新生成。这能节省大量浪费在“编码随机噪点”上的码率。
IMPORTANT

压缩率对比:在同等画质下,AV1 通常比 H.265 节省约 30% 的带宽,比 H.264 节省约 50% 以上。


五、 码率控制策略 (Rate Control)#

模式名称原理适用场景
CBR固定码率强制每秒输出固定数据量。带宽受限的窄带直播。
VBR动态码率复杂画面给高码率,简单画面给低码率。电影、点播视频。
CRF恒定质量因子追求视觉质量一致。离线转码、压片。

总结:该如何选择?#

特性H.264 (AVC)H.265 (HEVC)AV1
压缩效率基准 (100%)提升 ~40%提升 ~60-70%
编码速度极快中等较慢 (需硬件加速)
专利费用高昂/复杂完全免费
兼容性极其广泛现代设备普遍支持普及中 (RTX 30+, Apple A17 Pro+)

建议策略:

  1. 老旧设备兼容:无脑选择 H.264
  2. 移动端/电视 4K 点播:选择 H.265 以节省流量。
  3. 极高画质/节省 CDN 带宽:如果客户端支持硬件解码,优先使用 AV1
[Video] H.264、H.265 与 AV1 视频编码原理深度解析
https://www.eustia-astraea.top/posts/video/h264-h265-encoding/
作者
mcsl
发布于
2026-03-03
许可协议
CC BY-NC-SA 4.0