本节摘要:CRF、preset、码率是编码器最核心的三个旋钮,分别控制质量、速度与体积。本节讲透三者的语义与相互作用,给出「点播/直播/存档」三个场景的参数组合,并演示如何用两遍编码(2-pass)追求极限体积。
阅读完本节,你应当能够:
同样一段 1080p 视频,用 H.264 编码,参数不同,产物可以从 50 MB 差到 500 MB。而「看起来差不多」。这个数量级的差距,全在三个旋钮的搭配上:CRF(质量)、preset(速度)、码率(体积上限)。搞懂这三者,你就拿到了转码质量的支配权。
CRF 是 H.264/HEVC 系列编码器最推荐的控制方式,值域约 0–51,越小质量越高、体积越大。语义是「让编码器自己决定每个场景花多少比特,目标是全片保持这个感知质量档」。
# CRF 18:接近无损的高画质 ffmpeg -i input.mp4 -c:v libx264 -crf 18 output_crf18.mp4 # CRF 28:高压缩,适合不重要的内容 ffmpeg -i input.mp4 -c:v libx264 -crf 28 output_crf28.mp4
CRF 与固定码率的本质区别:固定码率(-b:v 8000k)给每帧分配固定预算,简单场景浪费、复杂场景不够;CRF 让编码器按场景复杂度「按需分配」,同样画质下总体积更小。所以点播文件几乎总是用 CRF,只有对体积有硬性要求(如平台限制)才用固定码率。
preset 决定编码器花多大力气找最优解:ultrafast 最快但体积大、画质略糙,veryslow 最慢但最省流量。
| preset | 速度 | 体积 | 用途 |
|---|---|---|---|
| ultrafast | 极快 | 大 | 快速预览、临时文件 |
| medium | 中等 | 中 | 默认,通用 |
| slower | 慢 | 小 | 认真转码 |
| veryslow | 极慢 | 最小 | 追求极限压缩 |
# 追求体积小的正式转码 ffmpeg -i input.mp4 -c:v libx264 -crf 23 -preset slower output.mp4
直播等对带宽有硬约束的场景,CRF 不够用,要显式给码率:
# 固定码率 4 Mbps,直播推流常见 ffmpeg -i input.mp4 -c:v libx264 -b:v 4000k -maxrate 4000k -bufsize 8000k -pix_fmt yuv420p output.mp4
-maxrate 限峰值,-bufsize 给编码器一个缓冲窗口——允许它在峰值时借用后面简单场景的额度,让码率波动更平滑。
固定码率下想「每一帧都分配得当」,先跑一遍分析、再跑一遍正式编码:
# 第一遍:只分析,不输出 ffmpeg -i input.mp4 -c:v libx264 -b:v 3000k -pass 1 -f null NUL # 第二遍:按第一遍的统计分配码率 ffmpeg -i input.mp4 -c:v libx264 -b:v 3000k -pass 2 output.mp4
两遍编码能在固定目标码率下把画质最大化,代价是时间约翻倍。注意:第一遍的 -f null NUL(Windows 下是 NUL,Linux 下是 /dev/null)是丢弃输出。但两遍编码的收益只体现在「码率被卡死」时——用 CRF 就没有两遍一说,因为 CRF 本来就在按需分配。
| 场景 | 推荐组合 | 理由 |
|---|---|---|
| 点播存档 | -crf 18 -preset slower |
质量优先,不赶时间 |
| 平台转码 | -crf 23 -preset medium |
质量体积均衡 |
| 直播推流 | -b:v + -maxrate + -bufsize |
带宽是硬约束,不能用 CRF |
| 快速预览 | -crf 28 -preset ultrafast |
看个大概,别浪费机器 |
ffprobe -v error -show_entries stream=bit_rate -of default=noprint_wrappers=1 output.mp4

质量、体积、速度三选二。CRF 控质量、preset 控速度与体积、码率控体积上限。点播默认走 CRF+preset,直播被迫走码率控制。理解「为什么」,组合就不会记错。
⚠️ 常见坑:CRF 和固定码率别同时写,会互相干扰;直播用 CRF 会导致码率不可控、卡顿;两遍编码第一遍输出必须丢弃,否则覆盖第二次结果;
-pix_fmt yuv420p是兼容性保险,很多平台不认其他像素格式。
💡 关键直觉:先问「体积是不是硬约束」。是 → 码率参数 + 两遍;否 → CRF + preset。这一问能省下你一半的转码纠结。
下一节,管线要走出本机了——第 6 章把编码好的流送到网络上。