1. H265编码标准概述:从H264到HEVC的演进之路

各位同学好,我是老张。做视频编解码这行十几年了,今天咱们聊聊H265,也就是HEVC。说实话,我第一次接触H265是在2013年,那时候刚发布标准,我还在想:这玩意儿能比H264强多少?结果一测,嗯,真香。

核心结论:H265/HEVC在同等画质下,码率比H264降低约50%。这不是吹的,我在多个项目中实测过,码率节省在40%-55%之间浮动。

1.1 发展历史:从无到有的十年

H265的发展,说白了就是视频压缩技术的一次大升级。我给大家捋一下关键时间点:

  • 2004年:ITU-T开始研究下一代视频编码标准,那时候H264刚火起来
  • 2010年:联合视频编码组(JCT-VC)正式成立,H265项目启动
  • 2013年1月:HEVC正式成为国际标准,版本1发布
  • 2014年:我开始在项目中尝试用H265替代H264,踩了不少坑
  • 2016年:HEVC版本2发布,增加了3D视频和可分级编码扩展
  • 2020年后:H265全面普及,现在几乎所有新设备都支持

为什么花了将近10年?因为视频编码标准这东西,牵一发而动全身。我参与过一些标准化讨论,光是一个块划分方案,各家公司就能吵半年。

1.2 H264 vs H265:到底差在哪?

很多刚入行的同学问我:H265不就是H264的升级版吗?其实没那么简单。我做个对比表,大家一看就明白:

对比维度 H264/AVC H265/HEVC
编码效率 基准 提升约50%
最大块大小 16×16(宏块) 64×64(编码树单元)
帧内预测方向 9种 35种
运动补偿精度 1/4像素 1/4像素(更优插值)
变换块大小 4×4, 8×8 4×4到32×32
环路滤波 去块滤波 去块滤波 + SAO
并行处理 有限 WPP、Tile等
计算复杂度 1x 约2-4x

看到没?H265不是简单改改参数,而是整个架构都变了。我刚开始做H265编码器优化时,发现它的计算量是H264的3倍左右。但换来的是码率砍半,这笔账怎么算都划算。

我的经验:如果你在做视频传输系统,带宽有限的情况下,H265绝对是首选。我曾经帮一个直播平台做优化,从H264切到H265后,同样的带宽下,分辨率从720p直接升到了1080p,用户反馈画质明显提升。

1.3 核心技术优势:为什么能省50%码率?

H265能省一半码率,靠的是几项关键技术。我一个个说:

1.3.1 更灵活的块划分

H264用的是固定16×16宏块,说白了就是一刀切。H265引入了编码树单元(CTU),最大支持64×64,还能递归划分成32×32、16×16、8×8。你想想看,平坦区域用大块,纹理复杂区域用小块,这不比一刀切强多了?

我在项目中遇到过这种情况:一段蓝天白云的视频,H264用16×16块编码,蓝天部分全是残差数据。换成H265后,64×64大块直接搞定,码率省了将近60%。

1.3.2 更精细的帧内预测

H264有9种帧内预测方向,H265直接干到35种。多了26种方向,意味着什么?意味着预测更准,残差更小,码率自然就低了。

我记得有一次做屏幕编码测试,有一段文字滚动的视频。H264的帧内预测总是有锯齿,H265的35种方向能精确匹配文字边缘,码率省了40%以上。

1.3.3 样本自适应偏移(SAO)

这是H265新增的滤波技术。H264只有去块滤波,H265在去块滤波之后又加了一道SAO。SAO的作用是补偿像素重建过程中的失真,说白了就是让画面更干净。

我刚开始做H265解码器时,SAO这块折腾了好久。它的原理其实不复杂:把像素分成不同类别,对每个类别加一个偏移量。但实现起来要注意边界处理,否则容易出现条纹。

1.3.4 并行处理架构

H265引入了WPP(波前并行处理)和Tile技术。WPP允许一行CTU处理完后立即开始下一行,不用等整帧处理完。Tile则可以把一帧切成多个矩形区域,独立编码。

这对多核处理器特别友好。我做过测试,4核处理器上开启WPP,编码速度提升了将近3倍。如果你在做实时编码系统,这个特性一定要用好。

注意:WPP和Tile不能同时开启,否则会冲突。我刚开始不知道这个限制,调试了整整两天才发现问题。大家记住:WPP适合低延迟场景,Tile适合高并行场景,按需选择。

1.4 H265知识体系总览

下面这张图是我自己整理的H265核心知识框架,大家先有个整体印象:

H265/HEVC 核心技术体系 H265/HEVC 块划分结构 帧内预测 帧间预测 环路滤波 CTU 64×64 递归划分 35种方向 1/4像素插值 Merge模式 SAO滤波 核心目标:同等画质下码率降低50%,支持4K/8K超高清视频

这张图展示了H265的四大核心技术模块。块划分是基础,帧内和帧间预测是核心,环路滤波是画质保障。后面几章我会逐一深入讲解每个模块的实现细节。

1.5 实际应用中的选择建议

说了这么多,到底什么时候用H265?我给大家几个实际建议:

  • 带宽受限场景:比如移动直播、视频通话,H265能省一半带宽
  • 超高清视频:4K/8K内容,H265是标配,H264根本扛不住
  • 存储成本敏感:监控录像、视频存档,H265能省一半硬盘
  • 实时性要求高:注意H265编码延迟比H264高,需要做优化

避坑提醒:我曾经在一个嵌入式项目里直接移植PC端的H265编码器,结果跑不动。后来才发现,H265的计算复杂度是H264的3-4倍,嵌入式设备必须用硬件编码器或者做大量算法简化。大家选型时一定要评估硬件能力。

好了,第一章就讲到这里。H265的核心优势大家应该都清楚了:更灵活的块划分、更精细的预测、更先进的滤波、更好的并行支持。这些技术细节,后面几章我会手把手带大家实现。