提示

返回博客列表

ffmpeg 转码别再盲调参数了:CRF、preset、tune 全程拆解

ffmpeg 转码别再盲调参数了:CRF、preset、tune 全程拆解

每次看到有人贴命令 -i a.mp4 -crf 18 -preset veryslow 然后问"为什么又糊又大",我点开他的参数基本都能找到问题。这篇文章想把这三个最常被误用的参数讲透,再给几套可以直接抄的场景化命令,省得大家反复踩。

一、CRF:决定"画质底线"的那个数

CRF(Constant Rate Factor)范围 0–51,默认 23。数越小画质越好、文件越大。它不是"码率",而是一种"质量目标"——ffmpeg 会自动分配码率去维持这个质量,动态场景多给、静态少给。

我的经验值(libx264):
- 18:肉眼几乎无损,文件偏大,适合存档母带。
- 20~21:我的日常分享甜点区,发朋友圈/内部传都够。
- 23:默认平衡值。
- 28+:明显糊,但体积小,适合弱网或预览。

关键认知:CRF 不是越低越好。压到 10 以下,文件暴涨但肉眼看不出区别,纯浪费。我用 ffprobe 对比过:同一段 1080p 动画,CRF 18 和 CRF 12 在 2 米外屏幕上我分不出差别,但体积差了快一倍。

ffmpeg -i in.mp4 -c:v libx264 -crf 20 -c:a copy out.mp4

注意 -c:a copy 别动音频,省时间。除非源音频是奇怪的格式(比如真 flac 你想要兼容性),否则没必要重编码。

二、preset:花多少时间换压缩率

preset 从 ultrafastveryslow 共 10 档(外加 placebo,别用,纯浪费电)。越慢压缩率越高(同画质下文件更小),但不影响画质本身。

很多人迷信 veryslow,其实收益边际递减得很厉害:

preset 相对编码时间 同画质体积
ultrafast 0.2x 最大(约 +40%)
medium 1x 基准
slow 2~3x 约 -8%
slower 4~5x 约 -10%
veryslow 8~10x 约 -11%

看清了:mediumslow 省 8%,slowveryslow 只多省 1%~2%,时间却翻几倍。我日常用 slow,批量任务用 medium,只有压一次就不压了的珍藏片才上 veryslow

三、tune:给特定内容"开小灶"

tune 告诉编码器"这视频长啥样",可选 filmanimationgrainfastdecodezerolatency 等。
- 真人实拍电影:-tune film(优化胶片质感)
- 动画/二次元:-tune animation(对色块边缘、纯色区域处理更好)
- 老胶片带颗粒感:-tune grain(保留颗粒,别被当作噪点压掉)
- 实时推流:-tune zerolatency(关掉前瞻,降延迟)

我翻过一次车:压动画片用了默认,结果边缘出现抖动噪点、色彩发灰,加了 -tune animation 立刻干净。这种小参数很多人根本不知道存在。

四、CRF 和 preset 怎么配合

它们不冲突:CRF 定"目标质量",preset 定"为达到该质量愿意算多久"。组合:

ffmpeg -i in.mp4 -c:v libx264 -crf 20 -preset slow -tune film \
  -c:a aac -b:a 128k out.mp4

音频我习惯重压成 128k AAC,因为原片音频码率经常虚高(320k AAC 人耳分不出),砍下来再省一截。

五、两遍(2-pass)什么时候用

CRF 是"单遍质量目标",无法控制最终体积。如果你有"这个视频必须压到 500MB 以内上传"的硬约束,得用 2-pass 限定码率:

ffmpeg -i in.mp4 -c:v libx264 -b:v 2000k -pass 1 -an -f null /dev/null
ffmpeg -i in.mp4 -c:v libx264 -b:v 2000k -pass 2 -c:a aac -b:a 128k out.mp4

-pass 1 先分析全片统计,-pass 2 再分配码率。注意两遍要用相同参数。2-pass 比 CRF 更适合"体积封顶"场景,但画质通常略逊于同体积下的 CRF(因为 CRF 是全局优化质量)。

六、硬件编码:快但不省体积

有独显可以上 NVENC / Intel QSV / AMD AMF,速度起飞:

ffmpeg -i in.mp4 -c:v h264_nvenc -cq 23 -c:a copy out.mp4

但硬件编码同画质下体积比 CPU(libx264)大 10%~30%,且可调控参数少。我的用法:临时预览/快速转格式走硬件编码,正式存档走 CPU。别拿硬件编码去追求"最小体积"。

七、HEVC 呢?

-c:v libx265 同体积画质确实更好,但编码慢 3~5 倍,且老设备/Safari 外兼容性差。除非你在乎那 30% 体积,否则 H.264(libx264)仍是省心首选。终端用户设备不可控时,别赌 HEVC。

八、常见误区速查

误区 真相
"我加了 -b:v 2000k 为什么 CRF 没效果?" 你同时指定了码率,CRF 被覆盖,二选一
"preset 越慢越清晰" 错,preset 只影响体积不影响画质
"CRF 越低越清晰无上限" 过 12 后肉眼无差,纯涨体积
"HEVC 一定更好" 同体积更好,但慢且兼容性差
"硬件编码更省体积" 反了,同画质体积更大

九、直接抄的场景命令

  • 存档母带-c:v libx264 -crf 18 -preset slow -tune film
  • 网络分享-c:v libx264 -crf 21 -preset medium
  • 动画压制成品-c:v libx264 -crf 20 -preset slow -tune animation
  • 体积封顶 500M-b:v 2000k -pass 1/2(2-pass)
  • 快速格式转换(不重编码)-c copy(最快,但仅源目标兼容时)

十、结语

转码没有"万能参数",只有"适合场景的参数"。先把 CRF 定在 20 附近,preset 用 slow,tune 按内容选,基本不会翻车。剩下的交给眼睛看,别盯着数字较劲——参数表背得再熟,不如实际拖进播放器扫一眼。

想亲手试试?用 VidDown 一键解析下载

粘贴视频链接即可解析,多平台支持、网页端即用;下载桌面客户端解锁海外平台本地解析,开通会员更享不限次下载。

顶部