🎬 编解码技术可视化

通过对比表格和流程图深入理解视频编码标准

主流编码标准对比

特性 H.264/AVC H.265/HEVC AV1 VP9
发布年份 2003 2013 2018 2013
开发组织 ITU-T/ISO ITU-T/ISO AOMedia Google
专利授权 💰 收费 💰 收费 ✅ 免费 ✅ 免费
压缩效率 基准 +50% +30% +20%
编码复杂度 ⭐⭐⭐ ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐⭐⭐ ⭐⭐⭐⭐
硬件支持 ✅ 广泛 ✅ 良好 ⚠️ 发展中 ✅ 良好
应用场景 实时通讯、直播 4K/8K视频 流媒体平台 WebRTC
编码效率与复杂度关系
graph LR
    A[H.264/AVC
基准] --> B[VP9
+20%效率] B --> C[H.265/HEVC
+50%效率] C --> D[AV1
+30%效率] A --> A1[编码速度: 快] B --> B1[编码速度: 中等] C --> C1[编码速度: 慢] D --> D1[编码速度: 很慢] style A fill:#c8e6c9 style B fill:#fff9c4 style C fill:#bbdefb style D fill:#f3e5f5

H.264/AVC 详解

H.264编码架构
flowchart TB
    subgraph Input["输入处理"]
        A[原始帧] --> B[帧类型判断]
    end
    
    subgraph Prediction["预测编码"]
        B --> C{帧类型}
        C -->|I帧| D[帧内预测]
        C -->|P/B帧| E[帧间预测]
        E --> F[运动估计]
        F --> G[运动补偿]
    end
    
    subgraph Transform["变换量化"]
        D --> H[残差]
        G --> H
        H --> I[DCT变换]
        I --> J[量化]
    end
    
    subgraph Encoding["熵编码"]
        J --> K[CAVLC/CABAC]
        K --> L[输出码流]
    end
    
    subgraph Loop["解码环路"]
        J --> M[反量化]
        M --> N[反变换]
        N --> O[重建帧]
        O --> P[去块滤波]
        P --> Q[参考帧缓存]
        Q --> G
    end
    
    style Input fill:#e3f2fd
    style Prediction fill:#f3e5f5
    style Transform fill:#fff9c4
    style Encoding fill:#c8e6c9
                            

帧内预测

  • 4×4块: 9种模式
  • 16×16块: 4种模式
  • 利用空间相关性
  • I帧的核心技术

帧间预测

  • 运动估计精度: 1/4像素
  • 多参考帧: 最多16帧
  • 宏块分割: 7种模式
  • P/B帧的核心

熵编码

  • CAVLC: 较简单
  • CABAC: 压缩率更高
  • 基于上下文
  • 自适应编码

H.265/HEVC 详解

H.265 vs H.264 技术对比
graph TB
    subgraph H264["H.264/AVC"]
        A1[宏块: 16×16]
        A2[帧内预测: 9种]
        A3[变换: 4×4/8×8 DCT]
        A4[运动矢量精度: 1/4像素]
    end
    
    subgraph H265["H.265/HEVC"]
        B1[CTU: 64×64]
        B2[帧内预测: 35种]
        B3[变换: 4×4~32×32]
        B4[运动矢量精度: 1/4像素]
    end
    
    A1 --> B1
    A2 --> B2
    A3 --> B3
    A4 --> B4
    
    style H264 fill:#e3f2fd
    style H265 fill:#c8e6c9
                            
技术特性 H.264 H.265 改进
编码单元 宏块 16×16 CTU 64×64 更灵活的分割
帧内预测 9种模式 35种模式 更精细的方向
变换尺寸 4×4, 8×8 4×4 ~ 32×32 更大变换块
并行工具 有限 Tile/WPP 更好的并行
环路滤波 去块滤波 去块+SAO 减少伪影
CTU编码树单元结构
graph TB
    A[CTU 64×64] --> B[Cu分割]
    B --> C[CU 32×32]
    B --> D[CU 32×32]
    B --> E[CU 32×32]
    B --> F[CU 32×32]
    
    C --> C1[PU预测单元]
    C --> C2[TU变换单元]
    
    E --> E1[进一步分割]
    E1 --> E2[CU 16×16]
    E1 --> E3[CU 16×16]
    
    style A fill:#667eea,color:#fff
    style C fill:#c8e6c9
    style D fill:#c8e6c9
    style E fill:#f3e5f5
    style F fill:#c8e6c9
                            

AV1 编码标准

AV1编码特性
graph TB
    A[AV1 AOMedia Video 1] --> B[开源免费]
    A --> C[先进编码工具]
    A --> D[超高压缩效率]
    
    B --> B1[无专利费用]
    B --> B2[AOMedia联盟]
    B --> B3[Google主导]
    
    C --> C1[更大的SB 128×128]
    C --> C2[更多的帧内模式]
    C --> C3[CDEF约束方向增强]
    C --> C4[LR环路恢复滤波]
    C --> C5[多符号算术编码]
    
    D --> D1[比VP9节省30%]
    D --> D2[与H.265相当]
    D --> D3[编码时间更长]
    
    style A fill:#667eea,color:#fff
    style B fill:#c8e6c9
    style C fill:#fff9c4
    style D fill:#f3e5f5
                            

🎬 AV1 应用现状

  • YouTube:支持AV1编码播放
  • Netflix:部分内容采用AV1
  • 浏览器支持:Chrome、Firefox、Edge原生支持
  • 硬件解码:新一代GPU逐步支持

VP9 编码标准

VP9编码流程
flowchart LR
    A[输入帧] --> B[超级块分割
64×64] B --> C[帧内/帧间预测] C --> D[变换编码] D --> E[量化] E --> F[熵编码] F --> G[输出码流] E --> H[反量化] H --> I[反变换] I --> J[环路滤波] J --> K[参考帧存储] K --> C style A fill:#e3f2fd style G fill:#c8e6c9

VP9 优势

  • 完全免费开源
  • 编码速度快于AV1
  • 硬件支持广泛
  • WebRTC首选

VP9 劣势

  • 压缩效率低于AV1
  • 编码工具较少
  • 不支持屏幕内容
  • 生态不如H.264

视频编码通用流程

混合编码框架完整流程
flowchart TB
    subgraph Input["输入模块"]
        A1[原始视频] --> A2[预处理]
        A2 --> A3[帧划分]
    end
    
    subgraph Prediction["预测模块"]
        A3 --> B1{预测选择}
        B1 -->|I帧| B2[帧内预测]
        B1 -->|P/B帧| B3[帧间预测]
        B3 --> B4[运动估计]
        B4 --> B5[运动补偿]
    end
    
    subgraph Transform["变换量化模块"]
        B2 --> C1[预测残差]
        B5 --> C1
        C1 --> C2[整数变换 DCT/DST]
        C2 --> C3[量化 QP控制]
    end
    
    subgraph Encoding["熵编码模块"]
        C3 --> D1[量化系数]
        D1 --> D2[CABAC/CAVLC/Range Coding]
        D2 --> D3[输出码流]
    end
    
    subgraph Loop["解码环路"]
        C3 --> E1[反量化]
        E1 --> E2[反变换]
        E2 --> E3[重建残差]
        E3 --> E4[预测值相加]
        E4 --> E5[重建帧]
        E5 --> E6[环路滤波 Deblock/SAO]
        E6 --> E7[参考帧缓存]
        E7 --> B5
    end
    
    style Input fill:#e3f2fd
    style Prediction fill:#f3e5f5
    style Transform fill:#fff9c4
    style Encoding fill:#c8e6c9
    style Loop fill:#bbdefb
                            
1. 预测
2. 变换
3. 量化
4. 熵编码

编码核心四步骤

🔑 编码器选择指南

应用场景 推荐编码 原因
实时通讯 H.264 硬件支持好、延迟低
4K/8K视频 H.265 压缩效率高、硬件支持
Web视频 AV1/VP9 免费、浏览器支持
视频会议 VP9 WebRTC优化、免费