3. 编解码原理入门

做视频编解码这么多年,我经常被问到同一个问题:到底该选哪个编码器?说实话,没有银弹。每个Codec都有自己的脾气秉性。今天我就把这四个主流选手——H.264、H.265、VP9、AV1,掰开揉碎了聊聊。

一句话总结:H.264是老兵,兼容性无敌;H.265是当前主力,性价比高;VP9是Google的亲儿子,Web端免费;AV1是未来,但编码慢得让人抓狂。

1. H.264/AVC:老当益壮的行业标准

H.264发布于2003年,到现在快20年了。你想想看,一个20年前的标准还在广泛使用,说明它有多成功。我个人习惯把它叫做"万金油"——几乎所有的设备都支持它。

核心技术特性:

  • 宏块划分:固定16x16宏块,支持4x4到16x16的子块划分
  • 帧内预测:9种4x4模式 + 4种16x16模式
  • 帧间预测:支持1/4像素精度运动估计
  • 熵编码:CAVLC和CABAC两种选择
  • 参考帧:最多16个参考帧

适用场景:

  • 视频直播(RTMP、HLS)
  • 视频会议(WebRTC默认编码)
  • 安防监控(硬件编码器成熟)
  • 老旧设备兼容(机顶盒、低端手机)

我的经验:做直播推流时,H.264的编码延迟可以压到50ms以内。但要注意,CABAC在低码率下比CAVLC节省15%-20%码率,代价是解码复杂度翻倍。低端设备建议用CAVLC。

2. H.265/HEVC:压缩效率翻倍的接班人

H.265是2013年推出的。我记得第一次用HM编码器压了一段4K视频,同样的画质,码率只有H.264的一半。当时我就觉得,这玩意儿要火。但现实是,专利授权问题拖了它的后腿。

核心技术特性:

  • CTU结构:最大64x64编码树单元,支持递归四叉树划分
  • 帧内预测:35种模式(比H.264多了26种)
  • 运动补偿:1/4像素精度,支持DCT和DST变换
  • SAO滤波:样点自适应补偿,减少振铃效应
  • 并行处理:支持Tile和WPP(波前并行处理)

适用场景:

  • 4K/8K超高清视频
  • HEVC硬件解码普及的设备(iPhone 6+、骁龙805+)
  • 视频点播(节省带宽成本)
  • 广播级视频制作

避坑指南:我曾经在一个项目中用H.265做直播,结果发现部分Android机顶盒解码花屏。后来排查发现是B帧数量设置太多,导致解码缓冲区溢出。建议直播场景B帧不超过2个。

3. VP9:Google的Web免费午餐

VP9是Google在2013年推出的开源编码器。说白了,它就是Google为了绕开H.265的专利费而搞的替代品。YouTube从2015年开始全面使用VP9,效果还不错。

核心技术特性:

  • 超级块:最大64x64,支持递归四叉树划分
  • 帧内预测:10种模式 + 8种平滑模式
  • 变换:支持4x4到32x32的DCT和ADST
  • 熵编码:多符号算术编码(比CABAC更高效)
  • 参考帧:最多8个参考帧,支持复合参考帧

适用场景:

  • Web视频(Chrome、Firefox原生支持)
  • YouTube视频流
  • Android平台(系统级支持)
  • 开源项目(无专利费顾虑)

我的经验:VP9的编码速度是硬伤。libvpx的编码器,在同等画质下,编码时间是x264的5-10倍。但解码效率不错,和H.265差不多。如果你做Web端视频,VP9是性价比很高的选择。

4. AV1:未来的王者,现在的挑战者

AV1是2018年由开放媒体联盟(AOM)推出的。它吸收了VP10和Daala的技术精华,压缩效率比H.265再提升30%。但代价是编码复杂度爆炸——我第一次压一段10分钟的1080p视频,用了整整3个小时。

核心技术特性:

  • 超级块:最大128x128,支持递归划分到4x4
  • 帧内预测:56种模式(包括方向模式、DC、PAETH等)
  • 运动补偿:1/8像素精度,支持Warped运动模型
  • 变换:支持DCT、ADST、FLIPADST、IDTX
  • 环路滤波:CDEF + LR(恢复滤波)双重滤波
  • 帧间预测:支持OBMC(重叠块运动补偿)

适用场景:

  • 高端视频点播(Netflix、YouTube)
  • 带宽受限场景(移动网络、低码率)
  • 长期存档(压缩率优先)
  • 硬件解码普及后的未来应用

避坑指南:我曾经尝试用AV1做实时直播,结果编码延迟超过2秒。目前AV1的实时编码只有SVT-AV1和NVIDIA的NVENC勉强能用,但画质损失明显。建议非实时场景再考虑AV1。

5. 四款Codec核心参数对比

特性 H.264 H.265 VP9 AV1
发布年份 2003 2013 2013 2018
最大块尺寸 16x16 64x64 64x64 128x128
帧内预测模式 13种 35种 18种 56种
运动估计精度 1/4像素 1/4像素 1/4像素 1/8像素
相对压缩率 基准 -50% -45% -65%
编码速度 极快 中等 慢 极慢
硬件解码支持 全覆盖 广泛 中等 有限
专利许可 MPEG LA MPEG LA + 多个专利池 免费 免费

6. 选型决策框架

嗯,这里要注意。选Codec不是看谁压缩率最高就选谁。我总结了一个简单的决策树:

  1. 兼容性优先:选H.264。直播、视频会议、老旧设备,没得选。
  2. 带宽成本敏感:选H.265。4K视频、点播平台,省带宽就是省钱。
  3. Web端免费:选VP9。YouTube、Chrome生态,无专利费。
  4. 极致压缩:选AV1。离线转码、存档、高端点播,但要做好编码时间翻10倍的准备。

我的建议:如果你刚开始做视频项目,先用H.264跑通流程。等业务量上来后,再逐步引入H.265或AV1。一口吃不成胖子,编码器选型也是。

7. 知识体系总览

下面这张图展示了四款Codec的技术演进关系和选型逻辑,方便你快速把握全局。

主流视频Codec技术演进与选型框架 主流视频Codec技术演进与选型框架 2003 H.264 2013 H.265 2013 VP9 2018 AV1 H.264 16x16宏块 13种帧内模式 1/4像素运动 CABAC/CAVLC H.265 64x64 CTU 35种帧内模式 SAO滤波 Tile/WPP VP9 64x64超级块 18种帧内模式 多符号算术编码 复合参考帧 AV1 128x128超级块 56种帧内模式 1/8像素运动 CDEF+LR滤波 选型建议 兼容性→H.264 | 带宽成本→H.265 | Web免费→VP9 | 极致压缩→AV1 说明 H.264→H.265:CTU尺寸从16x16提升到64x64,压缩率提升50% VP9→AV1:超级块从64x64提升到128x128,压缩率再提升30% H.265和VP9同期发布,但专利策略不同导致生态差异

这张图把四个Codec的时间线、核心特性和选型建议都串起来了。你可以看到,从H.264到AV1,块尺寸越来越大,预测模式越来越多,压缩效率也越来越高。但每前进一步,编码复杂度都在翻倍。

好了,这一章的内容就到这里。记住,没有最好的Codec,只有最适合你场景的Codec。动手试试,比看一百篇文章都管用。