H.264 编码调参
本教程共 32 篇 · 第 20 篇 · 更新于 2026-08-09 · 约 4 分钟阅读
本节目标:把 libx264 最常用的 preset、CRF、profile、tune 四个旋钮拧明白,遇到不同片源知道该调哪一个。
H.264 是最常用的视频编码器,FFmpeg 里对应的软件实现叫 libx264。它参数极多,但 90% 的场景只需动四个旋钮:preset、CRF、profile、tune。
一、preset:速度与压缩率的交换
preset 决定编码器花多少时间去寻找最优压缩方案。越慢压得越小(同画质下),但耗时越长。
ffmpeg -i input.mp4 -c:v libx264 -preset medium -crf 23 output.mp4
从快到慢十个档位:
ultrafast → superfast → veryfast → faster → fast → medium(默认)→ slow → slower → veryslow → placebo
- ultrafast / superfast:录制屏幕、实时直播、来不及慢慢压时用,体积大。
- veryfast / faster:快速预览、批量转码的折中选择。
- medium:默认,日常使用足够。
- slow / veryslow:最终成片、归档、追求小体积时用,编码时间可能是 medium 的 2–5 倍。
- placebo:几乎不省体积却极慢,别用。
Tippreset 只影响编码速度和文件体积,不影响画质。真正决定画质的是 CRF。所以常规策略是:先用能接受的最慢 preset,再调 CRF 找画质。
实际经验:medium 和 slow 的体积差距通常在 5%–10%,但 slow 可能慢一倍。着急就 veryfast,不着急就 slow,中间档位差异不明显。
二、CRF:画质的总开关
CRF 在上一章详细讲过,这里说它在 x264 里的实践要点:
ffmpeg -i input.mp4 -c:v libx264 -preset slow -crf 22 output.mp4
- 1080p 片源,CRF 20–22 通常视觉无损,适合存档。
- 手机拍摄、屏幕录像,CRF 23–25 体积友好,画质够用。
- 想再小一档,CRF 26–28 可接受,但暗场和运动画面会出块。
- CRF 每次调 1 个点就能看出差别,别一次跳 5 个点。
一个常用组合是 -preset slow -crf 22,压出来的视频又小又清楚。
三、profile 与 level:兼容性约束
profile 规定编码器能用哪些高级特性。越高的 profile 压缩效率越好,但老设备可能解不了。
| profile | 特性 | 适用 |
|---|---|---|
baseline | 最少特性,不支持 B 帧 | 超老设备、早期安卓 |
main | 增加 B 帧等 | 标清设备 |
high(默认常用) | 8x8 变换等高级特性 | 主流高清设备 |
high10 | 10-bit 色深 | HDR、高质量归档 |
绝大多数情况下用 high 就对了,2015 年后的设备都支持。只有明确要兼容老款手机、旧投影仪时,才降到 main 或 baseline。
level 约束分辨率、帧率、码率的上限,比如 4.0 对应 1080p@30,4.2 对应 1080p@60 / 4K@30。不指定时 x264 会自动根据视频参数选,一般不用手动设。
ffmpeg -i input.mp4 -c:v libx264 -profile:v high -level 4.0 -crf 23 output.mp4
四、tune:按片源类型优化
tune 告诉编码器视频的内容类型,从而调整一组内部参数。
| tune 值 | 适用内容 |
|---|---|
film | 电影、真实拍摄画面 |
animation | 动画、卡通(平涂色块、锐利边缘) |
grain | 胶片颗粒感强的老片 |
stillimage | 幻灯片为主 |
fastdecode | 让解码更轻松(低端设备) |
zerolatency | 直播、低延迟,禁用缓冲 |
ffmpeg -i anime.mkv -c:v libx264 -tune animation -crf 22 output.mp4
动画用 animation、直播用 zerolatency 是最常见的两个。不确定就不写,x264 会用通用设置。
五、常用组合速查
| 场景 | 命令 |
|---|---|
| 日常压片 | -preset slow -crf 22 |
| 快速预览 | -preset veryfast -crf 23 |
| 屏幕录制 | -preset veryfast -crf 18 -tune stillimage |
| 动画归档 | -preset slow -crf 20 -tune animation |
| 直播推流 | -preset veryfast -tune zerolatency -b:v 4000k -maxrate 4000k -bufsize 8000k |
| 老设备兼容 | -profile:v main -level 3.1 -crf 24 |
六、查看编码器全部选项
x264 的参数远不止这些。想查看当前 FFmpeg 里 libx264 支持的所有私有选项:
ffmpeg -h encoder=libx264
输出里会列出 preset、tune、profile、crf、maxrate、bufsize、g(GOP)等所有可配置项,以及它们的取值范围。这是最权威的参考。
Note一条命令里同时写
-crf和-b:v时,x264 以 CRF 为准;要做 two-pass 才用-b:v,此时不写 CRF。下一章讲 HEVC/VP9 时,你会发现它们的 preset 名字和 CRF 范围与 x264 不完全一样,别照搬数字。