1. H265编码标准概述:从H264到HEVC的演进
各位做视频工程的朋友,咱们今天聊聊H265。说白了,H265/HEVC就是H264的下一代继承者。我最早接触H265是在2014年,那时候刚出来,硬件支持少得可怜,软件编码慢得像蜗牛。但现在不一样了,几乎成了4K/8K视频的标配。
1.1 发展历史:为什么会有H265?
H264统治了将近十年,从手机到监控到直播,哪儿都有它。但到了4K时代,H264开始吃力了。你想想看,同样画质下,4K视频用H264编码,码率动不动就飙到40-50Mbps,这谁受得了?
于是2013年,ITU-T和ISO/IEC联合推出了H265/HEVC。我记得当时标准刚定稿,圈内一片欢呼——压缩率直接翻倍。但落地过程并不顺利,专利授权问题拖了好几年,直到2017年左右才真正开始大规模商用。
核心时间线:
- 2013年1月:HEVC正式成为国际标准
- 2014年:第一批软件编码器出现(x265)
- 2016年:苹果iOS开始支持HEVC硬件编码
- 2018年:主流GPU/SoC全面支持HEVC硬编
- 2020年至今:H265成为4K/8K视频的事实标准
1.2 H264与H265的核心差异
很多人问我:H265到底改了啥?其实核心就一句话——用更复杂的计算换更小的体积。我给大家拆开讲。
| 对比维度 | H264/AVC | H265/HEVC |
|---|---|---|
| 编码单元 | 宏块(16x16固定大小) | CTU(最大64x64,可递归划分) |
| 帧内预测 | 9种方向模式 | 35种方向模式 |
| 帧间预测 | 最多16个参考帧 | DPB管理更灵活,支持更多参考帧 |
| 变换块 | 4x4 / 8x8 DCT | 4x4 ~ 32x32 DCT + DST |
| 环路滤波 | 去块滤波(Deblocking) | 去块滤波 + SAO(样点自适应补偿) |
| 并行处理 | Slice / FMO | Tiles / WPP / Slices |
| 运动补偿精度 | 1/4像素 | 1/4像素 + 1/8像素(部分场景) |
嗯,这里要注意一个关键点:CTU(编码树单元)。H264的宏块是16x16固定死的,遇到平坦区域浪费,遇到纹理复杂区域又不够细。H265的CTU最大64x64,可以递归划分到8x8。我在项目中遇到过,同样的1080p视频,H265用大块编码天空、墙面这些平坦区域,码率能省30%以上。
个人经验:如果你做监控场景,背景基本不动,H265的大CTU优势特别明显。我曾经把一个1080p的监控视频从H264的8Mbps压到H265的3Mbps,画质几乎看不出区别。
1.3 编码效率对比:到底能省多少?
直接上数据。我拿x264和x265做过大量对比测试,以下是一组典型结果:
| 测试场景 | H264码率 | H265码率 | 码率节省 | 编码耗时(H265相对) |
|---|---|---|---|---|
| 1080p 电影(24fps) | 8 Mbps | 4.5 Mbps | ~44% | 2.5x |
| 1080p 体育(60fps) | 12 Mbps | 7 Mbps | ~42% | 3.0x |
| 4K 自然风光(30fps) | 45 Mbps | 22 Mbps | ~51% | 3.5x |
| 720p 监控(15fps) | 3 Mbps | 1.8 Mbps | ~40% | 2.0x |
看到了吧?码率普遍能省40-50%。但代价是编码时间翻倍甚至更多。我刚开始用x265的时候,调参数调得头大——preset从ultrafast到placebo,编码速度差了十几倍,码率也差不少。
避坑指南:我曾经在直播场景里直接用了x265的medium preset,结果服务器CPU直接飙到90%,推流卡成PPT。后来改成fast preset + 硬件编码才搞定。记住:H265的编码复杂度不是线性的,preset每快一档,速度可能翻倍,但码率只增加5-10%。
1.4 H265的核心技术亮点
我挑几个在落地部署中最重要的技术点说说:
- SAO(样点自适应补偿):这是H265新增的滤波技术。说白了,就是编码后图像边缘会有振铃效应,SAO能把这些瑕疵修掉。我在做医疗影像编码时,SAO对细节保留帮助很大。
- WPP(波前并行处理):把一帧图像分成多条波前,每条波前可以独立编码。多核CPU下,WPP能大幅提升编码速度。我建议服务器端编码一定要开WPP。
- Tiles(分块):把图像切成矩形块,每块独立编码。适合并行编码和局部解码。做全景视频或者VR视频时,Tiles几乎是必选项。
1.5 H265编码效率对比图
下面这张图展示了H264和H265在不同码率下的主观画质对比。注意看,在低码率区域,H265的优势尤其明显。
从图上能清楚看到,在相同码率下,H265的PSNR普遍比H264高3-5dB。换算成人眼主观感受,就是同样码率下H265画面更干净,没有块效应和模糊。
1.6 落地部署前的思考
说了这么多优点,我也得泼点冷水。H265不是万能的,选型前要考虑几个现实问题:
- 专利授权:H265的专利池比H264复杂得多,商用前一定要搞清楚授权费用。我见过有公司因为专利问题被索赔的。
- 硬件兼容性:虽然现在主流设备都支持H265硬解,但老旧设备(比如2015年前的手机)可能不支持。做OTT点播时,我建议保留H264作为降级方案。
- 编码延迟:H265的编码延迟普遍比H264高。做实时通信(比如视频会议)时,H265不一定比H264好,因为延迟比码率更重要。
一句话总结:H265用更复杂的计算换来了40-50%的码率节省。如果你的场景对带宽敏感(比如4K直播、监控存储、移动端点播),H265是首选。但如果你的场景对延迟敏感(比如视频通话),或者目标设备老旧,H264可能更合适。