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的优势尤其明显。

H264 vs H265 编码效率对比(主观画质) 0 2Mbps 4Mbps 6Mbps 8Mbps 20 30 40 50 PSNR (dB) H264 H265 低码率区(优势最明显) H264/AVC H265/HEVC

从图上能清楚看到,在相同码率下,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可能更合适。