4、H.265/HEVC编码参数:x265预设与调优、ctu大小、tu大小、rd级别、psy-rd与psy-rdoq参数调优

H.265/HEVC 的编码复杂度比 H.264 高了一个数量级。我刚接触 x265 时,面对那一大堆参数,说实话有点懵。但用久了你会发现,真正决定编码质量和效率的核心参数,其实就那么几个。

这一章,我们就来拆解 x265 的预设体系,以及 CTU、TU、RD 级别和 psy 调优这几个关键点。掌握了这些,你就能在画质、码率和编码速度之间找到自己的平衡点。

4.1 x265 预设体系:从 ultrafast 到 placebo

x265 的预设(preset)是一组预定义参数的集合。它控制着编码器的“思考深度”。

预设名称 编码速度 压缩效率 典型应用场景
ultrafast 极快 低 实时预览、直播推流
superfast 很快 较低 快速转码、移动端录制
veryfast 快 中等 日常批量处理
faster 较快 中等偏上 高质量直播、非编代理
fast 中等偏快 良好 个人视频归档
medium 中等 良好 默认值,通用场景
slow 较慢 高 高质量压制
slower 慢 很高 高码率电影、存档级
veryslow 很慢 极高 极限压缩、蓝光原盘
placebo 极慢 最高 学术研究、追求极致
我的建议: 日常使用,slow 或 slower 是性价比最高的选择。从 veryslow 到 placebo,编码时间翻倍,但码率节省通常不到 1%。除非你有特殊需求,否则别碰 placebo。

命令行用法很简单:

ffmpeg -i input.mp4 -c:v libx265 -preset slow -crf 23 output.mp4

4.2 CTU 大小:编码树单元的“粒度”

CTU(Coding Tree Unit)是 HEVC 的基本处理单元。你可以把它想象成一块“积木”。H.264 的宏块最大是 16x16,而 HEVC 的 CTU 最大可以到 64x64。

CTU 越大,编码器在平坦区域(比如天空、墙壁)的压缩效率就越高。但在复杂纹理区域,太大的 CTU 反而会浪费计算资源。

CTU 大小 优势 劣势 推荐场景
16 精细控制,适合低延迟 压缩率低,码率偏高 屏幕录制、文字内容
32 平衡点 中庸 通用视频
64 高压缩率,平坦区域表现好 复杂场景可能效率下降 电影、纪录片、自然风光
注意: 我曾经在压一个 4K 的航拍视频时,把 CTU 设成了 16,结果码率直接飙到了 50Mbps,画质却没提升多少。后来改成 64,码率降了 30%,肉眼几乎看不出区别。所以,高分辨率视频,优先用 64。

参数设置:

ffmpeg -i input.mp4 -c:v libx265 -x265-params "ctu=64" output.mp4

4.3 TU 大小:变换单元的“精度”

TU(Transform Unit)是进行 DCT 变换的最小单位。CTU 是“大块”,TU 是“小块”。TU 的大小范围是 4x4 到 32x32。

TU 越小,对细节的保留越好,但码率也会增加。TU 越大,压缩率越高,但可能丢失高频细节。

我个人习惯用 tu-intra-depth 和 tu-inter-depth 来控制 TU 的递归深度。深度越大,编码器尝试的 TU 组合就越多,质量越好,速度越慢。

# 允许 TU 从 4x4 到 32x32 的完整递归
ffmpeg -i input.mp4 -c:v libx265 -x265-params "tu-intra-depth=4:tu-inter-depth=4" output.mp4
核心思路: CTU 决定“分块”的宏观策略,TU 决定“变换”的微观精度。两者配合,才能发挥 HEVC 的真正实力。

4.4 RD 级别:率失真优化的“深度”

RD(Rate-Distortion)级别是 x265 最核心的调优参数之一。它控制着编码器在“码率”和“失真”之间做权衡时的计算量。

RD 级别从 0 到 6,数字越大,编码器尝试的候选模式越多,决策越精确。

RD 级别 行为描述 速度影响
0 完全不进行 RD 计算,纯靠经验 极快
1-2 快速模式,用于低延迟场景 快
3-4 中等模式,平衡质量和速度 中等
5 高精度模式,用于高质量压制 慢
6 最高精度,开启全部 RD 工具 极慢
避坑指南: 我曾经在压一个动画片时,把 RD 级别设成了 6,结果编码时间从 2 小时变成了 12 小时,码率只节省了 3%。对于大多数内容,RD 级别 4 或 5 已经足够。RD 6 只适合那些对码率极其敏感的场景,比如低码率直播。

参数设置:

ffmpeg -i input.mp4 -c:v libx265 -x265-params "rd=5" output.mp4

4.5 psy-rd 与 psy-rdoq:心理视觉调优

这两个参数是 x265 的“画质魔法”。它们利用人眼的视觉特性,在编码时故意保留一些“瑕疵”,来换取更好的主观观感。

  • psy-rd:心理视觉率失真优化。它会让编码器在平坦区域保留更多纹理,减少“水波纹”和“色块”。
  • psy-rdoq:心理视觉率失真优化量化。它会在量化阶段,优先保留人眼敏感的高频细节。

说白了,这两个参数就是让画面看起来更“锐利”、更“自然”,而不是一味追求 PSNR 指标。

参数范围通常是 0.0 到 2.0。值越大,效果越明显,但也可能引入噪声。

# 开启 psy-rd 和 psy-rdoq,强度适中
ffmpeg -i input.mp4 -c:v libx265 -x265-params "psy-rd=1.0:psy-rdoq=1.0" output.mp4
注意: psy 参数不是万能的。对于低码率场景(比如 500kbps 以下),过高的 psy 值会引入大量噪声,反而降低观感。我建议在 CRF 18-23 的范围内使用 psy 调优,效果最明显。

4.6 核心逻辑关系图

下面这张图,帮你理清这几个参数之间的关系:

x265 核心参数关系图 x265 核心参数关系图 预设 (Preset) CTU / TU 大小 RD 级别 psy 调优 ctu=64 tu-intra-depth=4 rd=4 rd=5 psy-rd=1.0 psy-rdoq=1.0 输出质量 / 码率 预设决定整体策略,CTU/TU 控制分块粒度,RD 级别决定决策深度,psy 调优提升主观画质

4.7 实战组合推荐

说了这么多理论,来点实际的。下面是我在不同场景下的参数组合:

场景 预设 CTU TU 深度 RD psy-rd psy-rdoq
快速转码 veryfast 32 2 3 0.5 0.5
高质量电影 slow 64 4 5 1.0 1.0
低码率直播 faster 32 2 4 0.3 0.3
存档级压制 veryslow 64 4 6 1.5 1.5
最后说一句: 参数是死的,人是活的。每个视频内容都不一样,没有一套参数能通吃所有场景。我的建议是,先用 slow 预设 + CRF 23 跑一遍,看看效果。如果觉得码率太高,再逐步调整 CTU、RD 和 psy 参数。编码调优,本质上就是一场“试错”的游戏。