H265、H264编码原理
答:核心在于更灵活的编码单元(CTU 替代宏块)、更多预测模式(35 种帧内方向、1/8 像素运动向量)、优化的变换量化(可变大小变换)及新增工具(SAO、IBC 等),提升冗余去除效率,同等画质下码率降低 50% 左右。答:GOP 越长(I 帧间隔越大),码率越低(I 帧占比减少),但随机访问延迟越大(需解码到 I 帧才能开始),且丢包后错误扩散范围更大(P/B 帧依赖前帧);GOP 越短则相反
一、H.264/H.265 编码原理(基于混合编码框架)
H.264(AVC)和 H.265(HEVC)均采用混合编码框架(预测+变换+量化+熵编码),核心目标是通过去除视频冗余(空间冗余、时间冗余、信息熵冗余)实现高效压缩。但 H.265 在 H.264 基础上做了大幅优化,同等画质下可节省 50% 左右码率。
1. 核心编码步骤(H.264 与 H.265 对比)
步骤 | H.264 实现细节 | H.265 实现细节(优化点) |
---|---|---|
1. 帧类型划分 | 分为 I 帧( intra,帧内编码,无参考)、P 帧( predictive,前向参考)、B 帧( bi-predictive,双向参考)。 | 保留 I/P/B 帧,新增 IBC(帧内块复制) 用于屏幕内容编码(解决重复纹理,如PPT、游戏)。 |
2. 编码单元划分 | 基本单元为 宏块(MB,16x16 像素),可细分为 8x8、4x4 子块。 | 采用 CTU(编码树单元,最大 128x128 像素),通过四叉树/三叉树灵活划分为 CU(编码单元,8x8~128x128),适配不同纹理复杂度(细节多的区域用小 CU,平坦区域用大 CU)。 |
3. 帧内预测(去空间冗余) | 亮度块支持 9 种方向预测(0°、45°、90° 等)+ 1 种 DC 预测(平均),色度块支持 4 种模式。 | 亮度块支持 35 种方向预测(角度更精细)+ 平面预测(平滑区域),色度块与亮度块预测模式关联(减少冗余),新增 PDPC(像素点依赖预测) 优化边缘细节。 |
4. 帧间预测(去时间冗余) | 基于宏块的运动估计(ME)和运动补偿(MC),搜索范围最大 ±16 像素(可扩展),运动向量精度 1/4 像素。 | 运动估计支持 更大搜索范围(±128 像素),运动向量精度提升至 1/8 像素,新增 Merge 模式(直接复用相邻块运动信息,减少计算量)和 AMVP(高级运动向量预测) 提升预测精度。 |
5. 变换与量化(去空间冗余) | 基于 4x4 或 8x8 整数 DCT 变换(减少高频冗余),量化步长随 QP(量化参数)增大而增大(QP 0-51)。 | 采用 32x32 以下可变大小变换(如 4x4、8x8、16x16、32x32),适配不同 CU 大小;新增 NSST(非对称变换) 优化边缘区域,量化矩阵更灵活(动态调整)。 |
6. 熵编码(去信息熵冗余) | 支持 CAVLC(基于上下文的可变长编码,低复杂度)和 CABAC(基于上下文的自适应二进制算术编码,压缩率更高)。 | 仅保留 CABAC(优化上下文模型,压缩效率比 H.264 的 CABAC 高 10-15%),并支持变换系数扫描顺序自适应。 |
7. 环路滤波(提升画质) | 采用 Deblocking Filter(去块效应滤波),消除块边界伪影。 | 新增 SAO(样本自适应偏移) 和 ALF(自适应环路滤波):SAO 对重建像素分类偏移补偿,ALF 对局部区域自适应滤波,进一步减少编码失真。 |
2. H.265 相对 H.264 的核心优势
- 更大编码单元:128x128 CTU 相比 16x16 宏块,更适合 4K/8K 高分辨率视频(减少块边界冗余)。
- 更精细预测模式:35 种帧内预测方向 + 1/8 像素运动向量,提升预测精度(减少残差数据)。
- 灵活变换量化:可变大小变换适配不同纹理,降低高频冗余。
- 新增工具:IBC、SAO、ALF 等,针对性优化屏幕内容、画质细节。
二、常用配置参数(H.264/H.265 通用与差异)
编码参数直接影响画质、码率、编码速度,核心参数如下:
1. 基础参数(通用)
- 分辨率(Resolution):如 1920x1080(1080P)、3840x2160(4K)。分辨率越高,原始数据量越大,需更高码率支撑。
- 帧率(Framerate):如 25fps(PAL)、30fps(NTSC)、60fps(高动态场景)。帧率越高,时间冗余越小,码率需求越高(约与帧率成正比)。
- 位深(Bit Depth):H.264 主要支持 8bit,H.265 支持 8/10/12bit(10bit 可表示 10.7 亿色,减少色带)。位深每增加 2bit,原始数据量翻倍。
- 色彩空间(Color Space):主流为 YUV420(亮度 Y + 色度 U/V 按 4:2:0 采样,平衡画质与数据量),H.265 支持 YUV444(全采样,画质更高但码率大)。
2. 编码控制参数(核心)
-
Profile & Level:
- Profile:定义编码工具集(功能支持)。
- H.264:Baseline(无 B 帧,用于实时通信)、Main(支持 B 帧,用于流媒体)、High(支持 8bit 高分辨率,用于蓝光)。
- H.265:Main(8bit)、Main10(10bit)、MainStillPicture(静态图)等。
- Level:限制最大分辨率、帧率、码率(性能上限)。例如 H.264 Level 4.1 支持最大 1080P@30fps,H.265 Level 5.1 支持 4K@60fps。
- Profile:定义编码工具集(功能支持)。
-
GOP 结构(图像组):
- 定义 I 帧间隔(如 GOP=120 表示每 120 帧一个 I 帧),影响随机访问能力和码率。
- I 帧间隔越长:码率越低(I 帧码率高),但随机访问延迟大(需解码到 I 帧才能开始),丢包后恢复慢。
- 典型配置:实时场景(如视频会议)GOP=1-2 秒(如 30fps 下 GOP=30-60);存储场景(如监控)GOP=5-10 秒。
-
量化参数(QP,Quantization Parameter):
- 范围:0-51(H.264/H.265 通用),QP 越小,量化越精细(残差保留越多),画质越好但码率越高。
- 对应关系:QP 每增加 6,码率约减半(近似指数关系)。例如 QP=24 码率是 QP=30 的 2 倍。
- 实际使用:通常设置 QP 范围(如 22-30),配合码率控制。
-
码率控制方式(Rate Control):
- CBR(Constant Bit Rate,恒定码率):码率固定(如 4Mbps),适合带宽受限场景(如直播),但复杂场景可能画质下降(为保码率被迫增大 QP)。
- VBR(Variable Bit Rate,可变码率):根据内容复杂度动态调整码率(简单场景低码率,复杂场景高码率),画质更稳定,适合存储(如本地录像)。
- CRF(Constant Rate Factor,恒定质量因子):不限制码率,通过固定 CRF 值(0-51,越小画质越好)保证主观画质一致,适合非带宽敏感场景(如视频制作)。
3. H.265 特有参数
- CTU 大小(CTU Size):可选 16x16、32x32、64x64、128x128(默认 64x64)。大 CTU 适合平坦区域(如天空),小 CTU 适合细节区域(如人脸),但 128x128 会增加编码耗时。
- SAO/ALF 开关:SAO 提升边缘画质(默认开启),ALF 进一步优化细节(但增加计算量,实时场景可能关闭)。
三、码率计算规则
码率(Bitrate)是单位时间内的视频数据量(单位:Mbps 或 kbps),直接影响存储体积和传输带宽。
1. 原始视频码率(未压缩)
计算公式:
原始码率(Mbps) = 分辨率宽度 × 分辨率高度 × 帧率 × 位深 × 采样率 ÷ 10^6
- 采样率:YUV420 为 1.5(每个像素含 1 个 Y + 0.5 个 UV),YUV444 为 3(1Y+1U+1V)。
示例:
- 1080P(1920x1080)、30fps、8bit、YUV420:
原始码率 = 1920×1080×30×8×1.5 ÷ 1e6 ≈ 746 Mbps
2. 压缩后码率(编码后)
压缩后码率由编码效率决定,H.264 压缩比约 100:1~50:1,H.265 约 200:1~100:1(同等画质)。
影响因素:
- 分辨率/帧率:正相关(分辨率翻倍,码率约翻倍;帧率翻倍,码率约翻倍)。
- 内容复杂度:动态场景(如体育)> 静态场景(如会议),码率需求高 2-3 倍。
- 画质要求:QP 越小(或 CRF 越小),码率越高。
经验推荐码率:
分辨率 | H.264 推荐码率(Mbps) | H.265 推荐码率(Mbps) | 场景 |
---|---|---|---|
720P | 2-4 | 1-2 | 直播/监控 |
1080P | 4-8 | 2-4 | 流媒体/存储 |
4K | 15-25 | 8-15 | 高清影视/监控 |
3. 码率与存储体积换算
存储体积(GB) = 码率(Mbps) × 时长(秒) ÷ 8 ÷ 1024
示例:1080P H.265 视频(4Mbps),1 小时存储体积 = 4×3600÷8÷1024 ≈ 1.76 GB
四、常见面试题
-
H.265 相比 H.264 为什么能节省码率?
答:核心在于更灵活的编码单元(CTU 替代宏块)、更多预测模式(35 种帧内方向、1/8 像素运动向量)、优化的变换量化(可变大小变换)及新增工具(SAO、IBC 等),提升冗余去除效率,同等画质下码率降低 50% 左右。 -
QP 与码率的关系?为什么 QP 不能无限小?
答:QP 越小,量化越精细,残差数据越多,码率越高(近似 QP 每增 6,码率减半)。但 QP 过小(如 <10)时,残差接近原始数据,压缩率极低,且画质提升不明显(人眼分辨极限)。 -
CBR 和 VBR 各适合什么场景?
答:CBR 适合带宽固定的场景(如直播、视频会议),避免码率波动导致卡顿;VBR 适合存储场景(如本地录像、影视点播),通过动态调整码率平衡画质与存储,复杂场景用高码率,简单场景用低码率。 -
GOP 长度对编码有什么影响?
答:GOP 越长(I 帧间隔越大),码率越低(I 帧占比减少),但随机访问延迟越大(需解码到 I 帧才能开始),且丢包后错误扩散范围更大(P/B 帧依赖前帧);GOP 越短则相反,适合实时交互场景。
通过理解编码原理、参数含义及码率规律,可根据实际场景(分辨率、帧率、带宽、存储)优化编码配置,平衡画质、码率与性能。
更多推荐
所有评论(0)