2026-09-19-ADN-027编码实测-NVENC均衡档与SVT-AV1-4.2.md

ADN-027 编码实测:NVENC「均衡档」逐条验证 + 一个改变结论的发现


一、先回答「那条均衡档命令能不能用」

原始推荐:-c:v av1_nvenc -preset p3 -tune hq -bf 6 -lookahead_level 2 -qp_cb_offset 12

结论:能用,但真正起作用的只有一半。

选项实测结果
-preset p3 -tune hq✅ 正常
-bf 6✅ 真起作用:同 cq 下体积小 5.5%(1648 vs 1745 kbps)
-lookahead_level 2❌ 空操作。-lookahead_level 1 / 2 / 5 三档输出字节数完全相同(8304792),说明这个驱动+构建下它没接上
-qp_cb_offset 12⚠️ 只有 −0.5%(1639 vs 1648),可忽略
-bf 8 / -bf 16❌ 直接编码失败(Nothing was written into output file)。SDK 13.1 宣传的「B 帧扩展到 31 帧」在这个驱动上拿不到
-bf 6 -lookahead_level 5 -rc-lookahead 32❌ 组合起来直接失败
-rc-lookahead 32⚠️ 能用,但同 cq 下码率涨到 1798(+9%),是在花更多码率换质量,不是省码率

前提问题:GPU 机的系统 ffmpeg 是 6.1.1,它的 av1_nvenc 根本没有 -bf 和 -lookahead_level。 必须换新版 —— 我从 GitHub 镜像拉了 ffmpeg N-126636(2026-09-18 master 静态构建)放到 GPU 机 ~/av1-work/ffmpeg,它才有这两个选项(还多了 -tune uhq)。

逐旋钮实测(p3 / tune hq / cq 30 / 900s 段,基准 -bf 6 = 1648 kbps)

改动码率相对基准
基准 -bf 61648—
不加 -bf1745+5.9%
-bf 21995+21%
-bf 41840+12%
-qp_cb_offset 121639−0.5%
-multipass 21631−1.0%
-tune uhq 替代 hq1601−2.9%
-spatial-aq 1 -temporal-aq 12347+42%
-spatial-aq 1 -aq-strength 153164+92%

⚠️ 这些都是在固定 cq 下比体积:体积变小 ≠ 画质变好。cq 是画质靶点,-bf/uhq 让同样靶点下更省码率,那才是真收益。 ⚠️ 输出里用 ffprobe 看帧类型,全部是 I/P,没有 B 帧。-bf 确实改变了编码结果,但 AV1 的 B 帧/隐藏参考帧在 pict_type 里体现不出来,所以这一点只能靠码率差佐证。


二、意外发现:新版 ffmpeg 自带的 SVT-AV1 v4.2.0 比系统版快 7~8 倍

系统 ffmpeg 6.1.1新版 ffmpeg N-126636
SVT-AV1 版本v1.7.0v4.2.0-73
preset 4 跑 40 秒 720p130~140 秒(0.29× 实时)16~32 秒(2.1~2.4× 实时)
同样 preset 4 crf 21 的输出1235 kbps / SSIM 0.996231210 kbps / SSIM 0.99585

同一个 preset 编号,新版本快 7~8 倍、输出基本一样。 这意味着「画质优先」的整片时间从 6.7 小时(旧版 preset 4)掉到 约 50 分钟,慢档 preset 2 也降到 约 3 小时(0.53~0.75× 实时)。

顺带验证:v4.2.0 上 TF 的影响已经只剩 ~3% 码率差(v1.7.0 时代是拖影元凶),说明默认参数本身修好了。脚本里仍保留 enable-tf=0:tune=0 作保险,代价约 3%。

v4.2.0 preset 4 / crf 21 / 900s 段码率SSIM
默认参数12540.995607
enable-tf=012890.995667
enable-tf=0:tune=012980.995672
tune=0(TF 开)12600.995615

三、全档位对比(平均码率 / 平均 SSIM,源码率 1996 kbps)

档位平均码率相对源平均 SSIM整片预估编码速度
NVENC p3 hq cq3679040%0.992580.67 GiB~15× 实时
NVENC p3 hq cq33102051%0.993470.86 GiB~15× 实时
NVENC p7 hq cq32115958%0.994040.98 GiB~16× 实时
SVT 4.2.0 preset 4 / crf 21121061%0.995851.02 GiB2.1~2.4×
SVT 4.2.0 preset 6 / crf 21123662%0.995681.05 GiB2.9~3.5×
SVT 1.7.0 preset 4 / crf 21123562%0.996231.05 GiB0.29×
SVT 4.2.0 preset 3 / crf 21123562%0.995971.05 GiB1.0~1.3×
NVENC p5 UHQ cq32131166%0.994661.11 GiB~12× 实时
NVENC p3 hq cq30134067%0.994261.13 GiB~15× 实时
SVT 4.2.0 preset 2 / crf 21134367%0.996221.14 GiB0.53~0.75×
SVT 4.2.0 preset 4 / crf 19135368%0.996061.14 GiB2.1~2.4×
SVT 1.7.0 preset 4 / crf 19138269%0.996441.17 GiB0.29×
NVENC p3 hq cq261994100%0.995251.69 GiB~15× 实时
NVENC p7 hq cq262111106%0.995551.79 GiB~16× 实时
NVENC p5 UHQ cq262312116%0.995821.96 GiB~12× 实时

等码率下正面对比(这才是公平比法)

目标码率SVT-AV1 4.2.0av1_nvenc差距
~1200 kbpspreset 4 crf 21 → 0.99585 @1210p7 cq32 → 0.99404 @1159SVT +0.0018
~1340 kbpspreset 2 crf 21 → 0.99622 @1343p3 cq30 → 0.99426 @1340<br>p5 UHQ cq32 → 0.99466 @1311SVT +0.0016 ~ +0.0020

NVENC 要用 cq 26(1994~2312 kbps,比原片还大)才能摸到 0.9952~0.9958,仍然低于 SVT 在 1210 kbps 的水平。

结论

  1. 等码率下,SVT-AV1 v4.2.0 完胜 av1_nvenc,优势约 0.0016~0.0020 SSIM。而本次全部 15 个档位的 SSIM 区间只有 ~0.004 —— 这个差距占了整个区间的近一半,不是噪声。
  2. NVENC 的 cq 数值不能直接类比 crf:cq26 对这条 2 Mbps 的 720p 源属于「过度奢侈」,产出比原片还大。
  3. 上一份报告里「硬编默认参数打赢软编」的社区结论前提已变:那是拿旧版 SVT-AV1 的默认 TF 比的。v4.2.0 默认 TF 已修好,再加上 enable-tf=0,软编反超,且速度差距从「7 分钟 vs 6.7 小时」缩小到「7 分钟 vs 53 分钟」。
  4. 所以质量优先仍选软编;只有在需要极速批处理(比如上千个文件)时,NVENC 的 15× 实时才有意义,代价是同等体积下画质略差一档。

四、⚠️ 关于 SSIM 的自证

本次所有档位的 SSIM 都挤在 0.9926 ~ 0.9964 这个极窄区间里。这说明:

→ 对比页就是为此做的:同一段素材、同一帧位、叠加/并排/逐帧三种看法。见文末地址。

(本机 ffmpeg 未编入 libvmaf,vmafmotion 可用但只能测运动复杂度,不能当质量分。)


五、复现命令

# 新版 ffmpeg(含 -bf/-lookahead_level/-tune uhq,且自带 SVT-AV1 v4.2.0)
# 已放在 GPU 机 ~/av1-work/ffmpeg

# ① 你要试的 NVENC 均衡档(实测有效部分)
~/av1-work/ffmpeg -i in.avi -map 0:v:0 -map "0:a:0?" -c:a copy -sn \
  -c:v av1_nvenc -preset p3 -tune hq -bf 6 -cq 30 -qp_cb_offset 12 \
  -pix_fmt yuv420p -movflags +faststart out.mp4
#   ⚠ 别加 -lookahead_level(空操作);-bf 别超过 6(8 会失败)
#   ⚠ 想要画质而不是速度,把 -tune hq 换 -tune uhq

# ② 质量优先(推荐)
~/av1-work/ffmpeg -i in.avi -map 0:v:0 -map "0:a:0?" -c:a copy -sn \
  -c:v libsvtav1 -preset 4 -crf 21 \
  -svtav1-params "lp=14:enable-tf=0:tune=0" -threads 14 \
  -pix_fmt yuv420p10le -movflags +faststart out.mp4

六、对比页(用眼睛裁决)

http://192.168.31.76:8899/05-下载服务维护/ADN-027-编码对比/index.html?inline=1

页面里的对比是有损二次参考(浏览器又解码了一次),要更准可以直接下载同目录下的原始 mp4 用本地播放器看。


七、全片编码进行中

已按质量优先档启动整片编码(GPU 机后台):


八、待办 / 后续

  1. 把新版 ffmpeg 用起来:本机(DSH)的 av1-slim.sh 还在用系统 ffmpeg 6.1.5 + SVT-AV1 1.7.0。若换用这套新构建,本地整库瘦身时间预计也能压缩 5 倍以上(本机 4 线程 Haswell,具体要实测)。
  2. 新版 SVT-AV1 可用的参数比 1.7.0 多(enable-variance-boost 等),值得重新扫一遍最优参数集。
  3. NVENC 侧的 -bf 8~31 需要更新的驱动/SDK 才能用,当前驱动 610.43.02 拿不到。
下载此文件