你大概用 ffmpeg 转过不少视频。-c:v libx264 -crf 23 顺手就写上去了,剩下的参数让 ffmpeg 自己决定。绝大多数人都是这样。但如果你会遇到编码太慢、文件太大、或者推流卡顿的问题,你可能需要认真看一眼 -preset 这个参数。
这篇文章拿实测数据说话,讲清楚 preset 到底是什么,快慢之间差多少,以及什么时候该用哪个。
x264 的 10 个预设
FFmpeg 中的 libx264 提供了 10 个 preset,从快到慢:
ultrafast → superfast → veryfast → faster → fast → medium → slow → slower → veryslow → placebo
medium 是 ffmpeg 的默认值,也是通用平衡点。往左更快、文件更大,往右更慢、文件更小。
关键认知:相同 CRF 下,所有 preset 的视觉质量完全一致。慢 preset 不是让画质变好,而是花更多时间找更高压缩率的方案。
实测数据:快慢之间差多少
以下数据基于 1 分钟 1080p 视频、CRF 23、8 核 CPU 的基准测试:
| Preset | 速度 | 编码时间 | 文件体积 | 对比 medium |
|---|---|---|---|---|
| ultrafast | ~120 fps | ~15s | ~95 MB | +58% |
| superfast | ~90 fps | ~20s | ~80 MB | +33% |
| veryfast | ~70 fps | ~25s | ~70 MB | +17% |
| faster | ~55 fps | ~33s | ~65 MB | +8% |
| fast | ~42 fps | ~43s | ~62 MB | +3% |
| medium | ~30 fps | ~60s | ~60 MB | 基准 |
| slow | ~15 fps | ~2 min | ~52 MB | -13% |
| slower | ~8 fps | ~3.5 min | ~50 MB | -17% |
| veryslow | ~4 fps | ~7.5 min | ~48 MB | -20% |
三组关键对比:
- ultrafast → medium:速度差 4 倍,文件大 58%
- medium → slow:速度慢 2 倍,文件小 13% — 这是最佳性价比区间
- slow → veryslow:速度慢 3.75 倍,文件只小 7% — 边际递减严重

场景化选择
推流/直播 → -preset ultrafast -tune zerolatency
编码速度必须跟上帧率,延迟越低越好。文件大小无所谓。
批量处理几十段视频 → -preset veryfast
每段省 30 秒,累积下来就是几十分钟。文件大 17% 可以接受。
日常通用 → -preset medium(默认)
如果没遇到问题,默认就是对的。
归档/一次编码长期存储 → -preset slow
花一次时间把体积压到最小,长期省存储空间。从 medium 到 slow 的 13% 节省是最划算的。
极致压缩 → -preset veryslow(但不推荐经常用)
上传带宽极其有限的时候考虑,但要接受 7.5 分钟的编码时间比 medium 的 1 分钟翻了好几倍。
preset 背后到底调了什么
每个 preset 是一组参数的集合。主要影响这几个:
- subme:亚像素估计精度,数值越高越花时间找最佳匹配
- me:运动估计算法,dia(快)→ hex → umh(慢但准)
- ref:参考帧数,越多压缩率越高,解码内存需求也大
- bframes:B 帧数,允许更多帧间参考
- trellis:最终量化前的精细优化
举例,ultrafast 的 subme=0、me=dia、ref=1、bframes=0,几乎不做任何优化。slow 的 subme=9、me=umh、ref=5、bframes=3,做了大量分析工作。
踩坑记录
placebo 是陷阱
新手看到「最高预设」觉得肯定最好。实际上 placebo 和 veryslow 几乎没有区别(体积好不到 1%),但慢 3-5 倍。
placebo ≈ veryslow,但慢得多。别用。
编码膨胀:preset 和 profile 要一起看
ffmpeg -i input.mp4 -c:v libx264 -preset ultrafast -profile:v baseline output.mp4
这段命令能把原始 HEVC 128MB 的视频膨胀到 813MB,6.3 倍。根因是 Baseline profile 禁用了 CABAC 和 B 帧,再配合 ultrafast 的极简参数,压缩率降到最低。

正确做法:能 -c copy 就 copy。必须重编码时用 -profile:v high -tune film。如果目标平台只能 Baseline,做好体积预期。
默认 medium 不是万能的
推流用 medium → 编码跟不上帧率。归档用 medium → 文件比 slow 大 10-15%。批量处理用 medium → 速度不够快。
按场景主动选 preset,不要让默认帮你选。
速查总结
| 场景 | preset | tune | CRF |
|---|---|---|---|
| 实时推流 | ultrafast | zerolatency | 23-25 |
| 批量处理 | veryfast | 按内容 | 23 |
| 日常通用 | medium | 按内容 | 23 |
| 最佳性价比 | slow | film/animation | 18-21 |
| 长期归档 | slower | film | 18-20 |
| 极致压缩 | veryslow | film | 17-19 |
| placebo | ❌ | ❌ | ❌ |
preset + tune + profile 三要素配合,比单独选 preset 重要得多。知道区别、按场景选,比永远用默认值好得多。