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的四大核心技术模块。块划分是基础,帧内和帧间预测是核心,环路滤波是画质保障。后面几章我会逐一深入讲解每个模块的实现细节。
1.5 实际应用中的选择建议
说了这么多,到底什么时候用H265?我给大家几个实际建议:
- 带宽受限场景:比如移动直播、视频通话,H265能省一半带宽
- 超高清视频:4K/8K内容,H265是标配,H264根本扛不住
- 存储成本敏感:监控录像、视频存档,H265能省一半硬盘
- 实时性要求高:注意H265编码延迟比H264高,需要做优化
避坑提醒:我曾经在一个嵌入式项目里直接移植PC端的H265编码器,结果跑不动。后来才发现,H265的计算复杂度是H264的3-4倍,嵌入式设备必须用硬件编码器或者做大量算法简化。大家选型时一定要评估硬件能力。
好了,第一章就讲到这里。H265的核心优势大家应该都清楚了:更灵活的块划分、更精细的预测、更先进的滤波、更好的并行支持。这些技术细节,后面几章我会手把手带大家实现。