CRF 入门:恒定质量因子视频压缩新手指南
通俗易懂地讲解 CRF 是什么、如何工作以及为什么重要。涵盖 CRF 数值对照表、常见错误和使用建议,适合视频压缩新手阅读。
什么是 CRF?用大白话解释
CRF 全称 Constant Rate Factor(恒定质量因子)。它是一种控制视频压缩程度的方法。与其告诉编码器"把文件压到这个大小"或"用这么多带宽",CRF 的意思是"让视频看起来这么好"。
你可以把它想象成一个画质旋钮。你设定一个数字,编码器会自动计算视频每个部分需要多少比特才能达到那个画质水平。简单的场景(一个人站在白墙前)需要较少的比特。复杂的场景(演唱会现场人群中纷飞的彩带)需要更多比特。CRF 自动处理这种分配。
这就是为什么 CRF 是编码视频文件时最被推荐的压缩方法。它使用简单,效果出色,而且只需要一次编码。
如果你在找现成的命令,请跳转到我们的 FFmpeg CRF 实例指南。如果想深入了解 CRF 与其他方法的技术对比,请参阅 CRF 视频压缩方法指南。
CRF 为什么重要
你在网上看到的每一个视频都经过了压缩。相机拍摄的原始视频体积巨大——一分钟未压缩的 1080p 素材约为 11 GB。压缩将其缩小到可管理的大小,但你选择的压缩方法决定了:
- 视频压缩后的画质
- 文件大小
- 带宽使用效率
CRF 之所以受欢迎,是因为它以视觉质量为优化目标。编码器会在需要的地方(快速运动、精细细节、复杂纹理)花更多比特,在不需要的地方(静态背景、慢速渐变、纯色区域)花更少比特。结果是从头到尾一致的画质。
CRF 数值对照表
CRF 使用数字刻度,数字越小画质越高(文件越大),数字越大画质越低(文件越小)。
H.264 CRF 刻度(最常用)
| CRF 值 | 画质等级 | 预期效果 |
|---|---|---|
| 0 | 无损 | 与源文件数学上完全一致。文件极大。 |
| 14-17 | 近无损 | 肉眼几乎无法区分与源文件的差异。文件很大。 |
| 18-21 | 优秀 | 只有逐像素对比才能发现差异。 |
| 22-24 | 很好 | 默认范围。复杂区域略有柔化。 |
| 25-28 | 好 | 快速运动和精细细节处可见压缩痕迹。 |
| 29-33 | 一般 | 复杂场景出现明显伪影。可用于草稿。 |
| 34-40 | 差 | 明显的块状和模糊。 |
| 41-51 | 很差 | 严重劣化。仅用于极端压缩需求。 |
大多数编码器中 H.264 的默认 CRF 值是 23。这是一个合理的起点,能在中等文件大小下产出画质不错的视频。
核心原则:CRF 越低 = 画质越好 = 文件越大
这是最重要的一点。如果你的视频看起来压缩过度,就降低 CRF 数字。如果文件太大,就提高它。
CRF 变化 6 个点大约会使文件大小翻倍或减半。例如:
- CRF 从 23 降到 17,文件大约翻倍
- CRF 从 23 升到 29,文件大约减半
不同编码器的 CRF 刻度不同
不同的视频编码器使用不同的 CRF 刻度。这让很多新手措手不及。H.264 中 CRF 23 和 H.265 中 CRF 23 产出的结果差距很大。
| 编码器 | CRF 范围 | 默认值 | "好画质"范围 |
|---|---|---|---|
| H.264 (x264) | 0-51 | 23 | 18-25 |
| H.265 (x265) | 0-51 | 28 | 22-30 |
| VP9 | 0-63 | 31 | 25-35 |
| AV1 (SVT-AV1) | 0-63 | 35 | 25-40 |
为什么默认值不同?因为越新的编码器压缩效率越高。H.265 在 CRF 28 的画质大致等于 H.264 在 CRF 23 的画质,但文件小了约一半。新编码器更高的默认 CRF 反映了它需要更少的比特来实现等同画质,而不是画质更差。详细的编码器对比请参阅 H.264 vs H.265 指南 和 AV1 vs VP9 vs H.264 指南。
CRF 与其他压缩方法的区别
视频压缩有多种控制方式。了解 CRF 与其他方法的对比有助于你做出正确选择。
CRF vs 恒定码率 (CBR)
CBR 为整个视频设定固定码率。每一秒使用相同的数据量。
- 简单场景(说话的人头):获得的比特超过需求。浪费。
- 复杂场景(动作片段):获得的比特不够。画质下降。
CRF 根据内容调整码率。每个场景都获得维持画质所需的比特。
- 简单场景:使用更少比特。画质很好。
- 复杂场景:使用更多比特。画质同样很好。
何时用 CBR:直播,需要稳定带宽时。 何时用 CRF:其他所有场景——录制、归档、上传平台。
CRF vs 可变码率 (VBR)
两遍 VBR 同样根据场景复杂度调整码率,但它的目标是特定的平均码率(从而得到可预测的文件大小)。需要两次编码:第一遍分析视频,第二遍编码。
CRF 产出类似的码率变化,但只需一次编码,目标是画质而非文件大小。
何时用 VBR:需要特定文件大小时(邮件附件、存储限制)。 何时用 CRF:在意画质且对文件大小灵活时。
对比总结
| 方法 | 目标 | 编码遍数 | 文件大小 | 画质 |
|---|---|---|---|---|
| CRF | 画质 | 1 | 不可预测 | 一致 |
| CBR | 码率 | 1 | 可预测 | 不一致 |
| 两遍 VBR | 码率(平均) | 2 | 可预测 | 基本一致 |
| 恒定 QP | 量化参数 | 1 | 不可预测 | 不一致 |
你的第一次 CRF 编码
如果你安装了 FFmpeg,最简单的 CRF 编码命令如下:
ffmpeg -i input.mp4 -c:v libx264 -crf 23 output.mp4
就这么简单。这条命令:
- 以
input.mp4作为源文件 - 使用 H.264 编码器 (libx264)
- 设置 CRF 为 23(画质好,文件大小适中)
- 输出到
output.mp4
添加音频设置
基本命令会直接复制音频不重新编码。要显式设置音频编码:
ffmpeg -i input.mp4 -c:v libx264 -crf 23 -c:a aac -b:a 128k output.mp4
选择预设
-preset 选项控制编码器寻找高效压缩的努力程度。越慢的预设在相同画质下文件越小:
## 快速编码(文件较大)
ffmpeg -i input.mp4 -c:v libx264 -crf 23 -preset fast -c:a aac -b:a 128k output.mp4
## 平衡(默认)
ffmpeg -i input.mp4 -c:v libx264 -crf 23 -preset medium -c:a aac -b:a 128k output.mp4
## 更好的压缩(较慢,文件更小)
ffmpeg -i input.mp4 -c:v libx264 -crf 23 -preset slow -c:a aac -b:a 128k output.mp4
完整的各编码器实例请参阅 FFmpeg CRF 实例指南。
如何选择合适的 CRF 值
第一步:从默认值开始
每种编码器都有合理的默认 CRF 值。从那里开始:
- H.264:CRF 23
- H.265:CRF 28
- VP9:CRF 31
- AV1 (SVT-AV1):CRF 35
第二步:用短片段测试
不要用多个 CRF 值编码整个视频。取出 30 秒的代表性片段进行测试:
## 截取测试片段
ffmpeg -i input.mp4 -ss 00:01:00 -t 30 -c copy test_clip.mp4
## 用不同 CRF 值编码
ffmpeg -i test_clip.mp4 -c:v libx264 -crf 20 test_crf20.mp4
ffmpeg -i test_clip.mp4 -c:v libx264 -crf 23 test_crf23.mp4
ffmpeg -i test_clip.mp4 -c:v libx264 -crf 26 test_crf26.mp4
第三步:视觉对比
观看每个测试输出并对比。注意:
- 快速运动区域(清晰还是模糊?)
- 精细细节(头发、文字、织物纹理)
- 渐变区域(天空、墙壁——是否出现色带?)
- 暗部区域(阴影细节是否保留?)
第四步:选择看起来足够好的最高 CRF
更高的 CRF 意味着更小的文件。选择你看不出明显画质损失的最高值,这就是最高效的编码设置。
各使用场景的 CRF 推荐
| 使用场景 | H.264 CRF | H.265 CRF | 说明 |
|---|---|---|---|
| 母版归档 | 17-18 | 20-22 | 保留最高画质 |
| 专业交付 | 19-21 | 23-25 | 极高画质 |
| 通用用途 | 22-24 | 26-28 | 最佳平衡 |
| 社交媒体上传 | 23-25 | 27-29 | 平台会重新编码 |
| 邮件/即时通讯 | 26-30 | 30-34 | 文件较小,画质可接受 |
| 快速预览 | 32-38 | 36-42 | 小文件,压缩明显 |
针对特定分辨率的指导,请参阅 720p 码率与压缩指南。
新手常犯的 CRF 错误
错误一:不同编码器用同一个 CRF 值
H.264 的 CRF 23 是"好画质"。H.265 的 CRF 23 是"优秀画质"——听起来不错,但实际上你创建了一个不必要大的文件。应该用每种编码器推荐的默认值作为起点。
错误二:以为 CRF 越低一定越好
CRF 0 是无损的,但文件大得离谱。CRF 15 的画质人眼几乎无法与无损区分。对于绝大多数内容,H.264 低于 CRF 17-18 就是浪费存储空间而没有可见收益。
错误三:忽略预设
同样是 CRF 23,使用 -preset ultrafast 和 -preset slow 产出的文件大小差异很大。较慢的预设能找到更高效的压缩方式,在相同视觉质量下产出更小的文件。
错误四:用 CRF 做直播
CRF 产出可变码率输出,在复杂场景会出现码率尖峰。这会导致直播卡顿。直播应该使用 CBR 或带上限的 CRF(配合 -maxrate 和 -bufsize)。
错误五:对已压缩视频用低 CRF
如果源文件已经是压缩过的(从 YouTube 下载、低质量录制),用 CRF 18 不会恢复画质。它只会创建一个大文件而画质不比源文件好。CRF 应该匹配源文件质量——对原本就是 CRF 28 的素材用 CRF 18 毫无意义。
错误六:不先测试
每个视频都不同。适合一个片段的设置可能不适合另一个。编码几小时的素材之前,一定要先用短的代表性片段测试。
CRF、预设与文件大小的关系
这三个因素协同工作:
- CRF 设定画质目标
- 预设 决定编码器为高效压缩付出多少努力
- 文件大小 是二者的综合结果
以下是 H.264 编码 1 分钟 1080p 片段的简化示例:
| CRF | 预设 | 大致文件大小 |
|---|---|---|
| 23 | ultrafast | 65 MB |
| 23 | medium | 35 MB |
| 23 | slow | 32 MB |
| 20 | medium | 55 MB |
| 26 | medium | 22 MB |
注意:在相同 CRF 下,将预设从 ultrafast 改为 medium 几乎将文件减小了一半。这就是预设的重要性。
CRF 不适用的场景
CRF 适合大多数离线编码,但并非总是最佳选择:
直播:使用 CBR 或有上限的 VBR 来保证稳定的带宽消耗。
严格文件大小要求:使用两遍 VBR 来命中目标文件大小。例如将视频压缩到 25 MB 以内作为邮件附件。
自适应码率流(HLS/DASH):使用每段目标码率以保证片段大小一致。
硬件受限的实时编码:部分硬件编码器的 CRF 支持有限。它们的"恒定质量"模式可能不如软件 CRF 智能。
使用 Vibbit 简化压缩
如果命令行编码让你觉得有难度,Vibbit 视频压缩工具 会自动选择 CRF 参数。上传视频、选择期望的画质或目标文件大小,然后下载优化后的结果。无需了解 FFmpeg。如需转换格式并获得最佳压缩,试试我们的 视频转换工具。
常见问题
CRF 是什么意思?
CRF 全称 Constant Rate Factor(恒定质量因子)。它是一种单遍码率控制方法,通过根据场景复杂度动态调整码率来实现全片一致的画质水平。
什么是好的 CRF 值?
对于 H.264(最常用的编码器),CRF 22-24 是通用编码的好起点。这个范围在视觉质量和文件大小之间取得了良好平衡。归档用 17-20,可以接受一些画质损失时用 26-30。务必用你的具体内容测试。
CRF 越低一定画质越好吗?
CRF 越低画质越高,但收益递减。CRF 18 和 20 之间的差异大多数人几乎感知不到,但文件大小差异可能有 30-40%。而 CRF 23 和 28 之间的差异则清晰可见。找到仍然满足你画质标准的最高 CRF 值。
所有视频编码器都支持 CRF 吗?
大多数现代视频编码器都支持 CRF 或等效模式。FFmpeg 中的 H.264 (x264)、H.265 (x265)、VP9 和 AV1(libaom 和 SVT-AV1)都支持 CRF。硬件编码器(NVENC、QuickSync、AMF)通常提供"恒定质量"模式,与软件 CRF 类似但不完全相同。
为什么不同编码器的默认 CRF 值不同?
因为每种编码器的压缩效率不同。H.265 在 CRF 28 的画质大致等同于 H.264 在 CRF 23,但文件更小。H.265 更高的默认 CRF 反映的是它需要更少的比特来实现等同画质,而非画质更差。
CRF 和降低码率有什么区别?
降低码率是对数据使用量设置硬限制。CRF 设置画质目标,让编码器决定每个场景适当的码率。CRF 更聪明,因为它给复杂场景更多比特、给简单场景更少比特,保持全片一致的画质。恒定码率则不管场景复杂度,给每个场景相同的比特。
CRF 0 是无损的吗?
是的,H.264 和 H.265 中 CRF 0 产出数学上无损的输出——解码后的视频与源文件逐比特一致。但文件极其庞大(通常比原始视频还大)。实际使用中,H.264 的 CRF 17-18 被认为是"视觉无损"的,文件大小合理得多。