2026-09-19-画质优先-AV1极限压缩方案.md

不考虑速度时,怎么把「画面最好 + 体积最小」同时做到极限


一、先分清「最好」的三种含义

问「画面最好 + 文件最小用什么」,其实混了三个目标。必须拆开:

目标含义决定因素
画质最好同体积下最接近原片编码器效率 + preset 慢档 + 关掉 TF
体积最小同画质下最小同上,外加 CRF 定多高
二者兼顾这是不可能的三角只能「固定画质、体积随编码器效率走」

关键认知:画质 和 体积 不是两个可以同时优化的独立变量。 正确做法是先钉死画质靶点(CRF),让体积成为结果;能同时改善两者的只有「换更高效的编码器」和「用更慢的 RD 优化」。

⚠ 更重要的物理前提

重编码不可能让「已经压得很紧」的源片同时变小又变好 —— 那是代际损失。 只有源码编码效率低 / 码率虚高时,AV1 才能做到「画质不降、体积砍一半」。

判定标准(用每像素比特数 bpp):

bpp = 码率(bps) / (宽 × 高 × 帧率)
源码 bpp判断该怎么办
> 0.12明显虚高(老 H.264 高清、高码率 HEVC)AV1 能省 40~60%,画质还能持平或更好
0.06 ~ 0.12中等能省 20~40%,需实测
< 0.05已经压得很紧别转,重编只会掉画质。这种情况「画质最好」= 保留原片

举例:[HD]ADN-027.avi(720p,7043 秒,1.69GB)≈ 2.06 Mbps,bpp≈0.075 —— 属于「中等偏紧」。 这就是上次 crf 33 一压就糊的原因:源本身余量已经不多,再砍 73% 必然崩。


二、方案(画质优先档)

核心命令

ffmpeg -hide_banner -nostdin -i "输入.mkv" \
  -map 0:v:0 -map "0:a:0?" -c:a copy -sn \
  -c:v libsvtav1 -preset 4 -crf 21 \
  -pix_fmt yuv420p10le \
  -svtav1-params "enable-tf=0:tune=0:lp=16" -threads 16 \
  -movflags +faststart "输出.mp4"

已封进脚本,一条命令即可:

bash ~/Downloads/av1-slim.sh --archive --threads 16 --dry-run   # 先看清单
bash ~/Downloads/av1-slim.sh --archive --threads 16             # 正式跑
# 珍藏片再慢一档:
bash ~/Downloads/av1-slim.sh --archive --preset 2 --crf 19 --min-size 2000

每个参数为什么是它

参数值理由
编码器libsvtav1免费软件 AV1 里效率最高、工程最成熟的一档。HEVC(x265) 同画质体积大 15~25%,H.264 更大
-preset4(珍档 2)preset 越慢 → 同画质体积越小。12→4 每档约省 8~12%,累计约省 30%。这就是「不要速度」换来的东西
-crf21(18~22 区间)1080p 真人实拍 crf 21 基本视觉无损。老片/颗粒片 18~19,动画/干净源可到 24
enable-tf=0必须SVT-AV1 默认的时域滤波会产生块状伪影 + 运动拖影,这就是上次翻车的主因之一
tune=0VQSVT-AV1 默认 tune 是 PSNR(数值最优化),不是视觉最优。改 VQ 后按人眼偏好分配码率 —— 这条此前一直没开,白亏
-pix_fmt yuv420p10le10-bit8-bit 源也编成 10-bit:同画质省 2~5% 码率,还能消除暗部 banding。免费收益,播放兼容性没问题
-c:a copy音频直拷重编音频只会更差更大,直接复制
-movflags +faststartmoov 前置网页预览秒开(我们的下载平台正好吃这个)

✅ 本机实测过的参数可用性(SVT-AV1 v1.7.0)

不是所有教程里的参数在 v1.7.0 上都存在。逐条实测结果:

可用 ✅不可用 ❌(较新版本才有)
enable-tf=0、tune=0/2、film-grain=8、film-grain-denoise=1、enable-restoration=1、enable-cdef=1、enable-dlf=1、keyint、scd、enable-tpl-la、enable-mfmv、enable-overlays、hierarchical-levels、pred-struct、fast-decodeenable-variance-boost、variance-boost-strength、qp-max、qp-min、sharpness、ac-bias、enable-dlf=2/3、enable-restoration-filtering

⚠ 坑:写错的 svtav1-params 不会中断编码,只在日志里留一行 Error parsing option xxx,然后静默按默认值跑。 所以别抄网上的参数清单 —— 每加一条都要用 1 秒黑场试编验证(脚本里我只放了实测通过的那几个)。

别画蛇添足:enable-restoration / cdef / dlf 在 preset 4 上本来就是默认开启的,写不写一样。


三、为什么不选别的

方案为什么不选
av1_nvenc(5060 Ti 硬编)速度档。默认参数下能打赢「默认参数的软编」,但软编一旦 enable-tf=0 + preset 4,硬编的非关键帧质量仍追不上。既然不要速度,就没理由用硬编
libaom-av1 -cpu-used 2本机 ffmpeg 就有。极慢档理论上比 SVT 再省 1~3%,但慢 5~10 倍。为 1% 体积多花几天,性价比极低,不推荐
libx265(HEVC 软编)只在播放设备不支持 AV1 时用。同画质体积比 AV1 大 15~25%
librav1e效率不如 SVT-AV1,无优势

四、可选杀手锏:胶片颗粒重的老片

如果源是颗粒感很重的老片/胶片转制,把颗粒交给解码器「合成」而不是逐帧编码,体积能再砍 30~50%:

--svt-params "enable-tf=0:tune=0:film-grain=8:film-grain-denoise=1"

五、验收方法(上次的教训)

SSIM 抓不到拖影 —— 上次 SSIM 0.9817 明明过线,画面却是糊的。

手段可用性说明
ssim / psnr 滤镜✅ 本机有只能挡住「明显劣化」,不能作为放行依据
libvmaf(VMAF)❌ 本机 ffmpeg 没编进去需要另装;即使有,VMAF 对拖影也不够敏感
vmafmotion 滤镜✅ 本机有能测运动复杂度,用来挑运动最剧烈的片段做抽样
肉眼并排对比✅ 最终依据抽 3~5 个运动剧烈的 10 秒片段,同屏放大对比,看拖影/涂抹/暗部色块

脚本里的 --ssim-min 0.995(archive 模式自动提高)+ 抽样机制是兜底防线,不是验收。最终要眼睛过。


六、速度预算(估算,实跑要校准)

参照本机实测(i7-4720HQ,4 线程):preset 12 = 0.91× 实时,preset 10 = 0.48×,preset 8 = 0.28×(约每档慢 1.34 倍)。

机器preset 4(1080p)一部 2 小时片子
本机 DSH(4c/8t Haswell)≈ 0.09× 实时≈ 23 小时
GPU 机(i5-12600HX,16 线程)≈ 0.35~0.45× 实时≈ 4.5~6 小时

七、执行计划(GPU 机)

当前状态(2026-09-19 20:48 实测):GPU 机正忙 —— GPU 利用率 100%、显存 15.5/16.3 GB(ComfyUI 进程 pid 3018),不能动。

已探明的资源情况:

项值
CPUi5-12600HX(12 核 16 线程,12 代)→ 比本机快约 4~5 倍
内存32 GB(可用 16 GB)
磁盘/ 1.2 T,只剩 200 G → 并发度要控制,别一次拉太多源
ffmpeg6.1.1,SVT-AV1 v1.7.0(和本机同版本,参数可用性结论通用)

流程(等它空闲后执行):

  1. 从下载中心 HTTP 拉源片到 GPU 机临时目录;
  2. 先跑 60 秒样本定 CRF(对比 crf 19/21/24,肉眼挑),别整片盲跑;
  3. 按定下的 CRF 整片 --archive 编码;
  4. 校验时长一致 + 运动片段肉眼对比;
  5. 成品传回本机,替换前先在 ~/.av1-slim/backup.tsv 记好回滚备份。

八、结论速查

想要用什么
画质与体积的最优解(不看速度)libsvtav1 -preset 4 -crf 21 -pix_fmt yuv420p10le -svtav1-params "enable-tf=0:tune=0"
少数最值得的片子preset 2 / crf 19
颗粒重的老片上面 + film-grain=8:film-grain-denoise=1(有代价)
已压紧的低码率源(bpp<0.05)别转,保留原片就是画质最优
全库批量(要速度)见 2026-09-19-50系显卡编码选择-实测与建议.md 的 av1_nvenc 档

九、已知限制(脚本层面,需要时再补)

  1. 字幕流会被丢弃:编码行是 -map 0:v:0 -map 0:a:0? -sn,只保留第一条视频 + 第一条音轨,字幕和其他音轨不保留。需要保留的话要单独做(文本字幕可转 mov_text,PGS 图形字幕要另想办法),说一声我来加。
  2. 输出固定 .mp4:源是 .avi/.mkv 时文件名会改成 .mp4,回滚记录里有对应关系。
  3. 预估省的比例是经验值(按 CRF 粗算),真实结果取决于源码率,仅供规划磁盘用。

十、相关文档

下载此文件