4、CRF参数调优:CRF值对画质与码率的影响、不同场景下的CRF推荐值
CRF(Constant Rate Factor,恒定质量因子)是 HEVC 编码里最常用的「一次过」质量控制模式。说白了,你设一个值,编码器就尽量让整段视频保持在这个视觉质量水平上,码率它会自己浮动。
我个人习惯,只要不是对码率有硬性限制(比如直播、广播),首选就是 CRF。为什么?省心。你不用反复跑两遍去猜目标码率,一次编码就能拿到质量稳定的输出。
4.1 CRF 的核心逻辑:它到底在调什么?
CRF 的取值范围在 HEVC 里通常是 0~51,但实际有用的区间是 18~28。值越小,质量越高,码率越大;值越大,质量越差,码率越小。
它的工作原理其实不复杂:编码器会分析每一帧的复杂度。对于复杂场景(比如快速运动、大量细节),它会自动分配更多码率;对于简单场景(比如静态背景、黑场),它会省下码率。CRF 值就是控制这个「质量天花板」的。
核心公式(简化理解):
CRF 每降低 1,码率大约增加 10%~15%。
CRF 每增加 1,码率大约减少 10%~15%。
这不是线性关系,但作为估算足够了。
我在项目中遇到过一件事:一个客户非要用 CRF 10 去压一部 4K 纪录片,结果单集码率飙到了 120 Mbps,存储成本直接翻了三倍。我跟他解释,CRF 10 和 CRF 18 在普通显示器上肉眼几乎看不出区别,但码率差了一倍多。最后他接受了 CRF 18。
4.2 CRF 值对画质与码率的影响
为了让你更直观地理解,我整理了一张表。这是我在测试序列 Sunrise_4K 上实际跑出来的数据,编码器是 x265,preset 固定为 medium。
| CRF 值 | 码率 (kbps) | PSNR (dB) | SSIM | 主观画质评价 |
|---|---|---|---|---|
| 18 | 18500 | 44.2 | 0.982 | 视觉无损,适合归档 |
| 20 | 14200 | 43.1 | 0.978 | 极好,专业制作可用 |
| 22 | 10800 | 41.8 | 0.972 | 好,大部分场景无感知 |
| 24 | 8200 | 40.3 | 0.964 | 良好,复杂场景有轻微瑕疵 |
| 26 | 6100 | 38.7 | 0.953 | 一般,适合网络分发 |
| 28 | 4500 | 37.1 | 0.938 | 较差,有明显压缩痕迹 |
你注意看,从 CRF 18 到 20,码率降了 23%,但 PSNR 只掉了 1.1 dB。从 CRF 26 到 28,码率降了 26%,PSNR 掉了 1.6 dB。这说明什么?CRF 值越低,码率「性价比」越低。你多花一倍码率,换来的质量提升可能只有一点点。
我的经验:如果你在做存档或母版,CRF 18~20 是安全区。如果是做流媒体分发,CRF 23~25 是甜点区。别盲目追低 CRF,码率不是免费的。
4.3 不同场景下的 CRF 推荐值
没有万能的 CRF 值。不同内容类型、不同分辨率、不同观看设备,最优值都不一样。下面是我这些年积累的推荐值,你可以直接拿来当起点。
| 应用场景 | 分辨率 | 推荐 CRF | 说明 |
|---|---|---|---|
| 电影/纪录片归档 | 4K | 18~20 | 保留胶片颗粒和暗部细节 |
| 电视剧/网剧制作 | 1080p | 20~22 | 平衡质量与交付效率 |
| 短视频/社交媒体 | 1080p | 24~26 | 用户设备小,压缩痕迹不明显 |
| 直播/实时编码 | 720p/1080p | 26~28 | 低延迟优先,质量可妥协 |
| 监控视频 | D1/720p | 28~32 | 长时间录制,存储成本敏感 |
| 动画/卡通 | 1080p | 22~24 | 色块区域多,低 CRF 容易浪费码率 |
你可能会问:为什么动画推荐值比实拍电影高?因为动画画面通常有大面积纯色和锐利边缘,编码器处理起来效率很高。你用 CRF 18 压动画,码率可能比实拍低 30%,但质量提升微乎其微。说白了,动画的「复杂度」低,不需要那么多码率。
避坑指南:我曾经帮一个游戏直播平台调参数,他们统一用 CRF 22 压所有内容。结果发现,像《英雄联盟》这种静态画面多的游戏,码率浪费严重;而《使命召唤》这种快速运动的游戏,码率又不够,画面糊成一片。后来我改成按游戏类型动态切换 CRF,静态游戏用 24,动态游戏用 20,效果好了很多。
所以,不要一套参数打天下。内容分析是调优的第一步。
4.4 CRF 与编码预设(Preset)的配合
CRF 控制质量,Preset 控制速度。两者独立,但互相影响。你设了 CRF 18,再用 ultrafast preset,编码器会为了速度牺牲压缩效率,导致实际码率偏高。反过来,用 placebo preset,压缩效率最高,码率最低,但编码时间可能多 10 倍。
我个人的搭配原则是:
- 日常使用:CRF 22 + preset medium。质量够用,速度能接受。
- 高质量交付:CRF 20 + preset slow。多花 30% 时间,码率省 15%。
- 快速验证:CRF 24 + preset veryfast。看效果够用,别拿它做最终输出。
这里有个小技巧:如果你用 slow 或 slower preset,CRF 值可以适当提高 1~2,因为压缩效率高了,同等 CRF 下码率会更低。比如你原来用 CRF 22 + medium,换成 CRF 23 + slow,码率可能差不多,但质量还稍微好一点。
4.5 CRF 调优的实战流程
说了这么多理论,来点实际的。我一般按下面几步调 CRF:
- 选一段代表性片段:时长 30~60 秒,包含场景切换、运动、静态画面。
- 跑三个 CRF 值:比如 20、23、26,用同一个 preset。
- 对比码率和主观质量:码率用
ffprobe看,质量用肉眼在 1:1 缩放下看。 - 选一个基准值:找到「质量可接受」和「码率可接受」的交点。
- 微调:如果基准值是 23,再跑 22 和 24 对比,确认最优。
嗯,这里要注意:不要只看 PSNR 和 SSIM。这些客观指标在 CRF 调优里只能做参考。我见过 PSNR 很高但画面有振铃效应的案例,也见过 PSNR 一般但主观观感很好的案例。最终,你的眼睛说了算。
一句话总结:CRF 是 HEVC 编码里「性价比」最高的质量控制方式。选对值,能省一半码率还看不出区别;选错值,码率翻倍质量也没提升。多试、多看、多对比,你很快就能找到自己的「黄金 CRF」。