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

- 日期：2026-09-19
- 素材：`[HD]ADN-027.avi` —— 1280×720 / 29.97fps / h264 1996 kbps + mp3 48 kbps / 7043 秒 / 1.69 GiB
- 机器：GPU 机（i5-12600HX 16 线程，RTX 5060 Ti 16GB，驱动 610.43.02）
- 抽样：3 段 × 40 秒（900s / 3000s / 5200s），SSIM 为**全片段所有帧的平均值**（不是最后一帧）
- 对比页（可直接看画面）：见文末

---

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

原始推荐：`-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 6` | 1648 | — |
| 不加 `-bf` | 1745 | **+5.9%** |
| `-bf 2` | 1995 | +21% |
| `-bf 4` | 1840 | +12% |
| `-qp_cb_offset 12` | 1639 | −0.5% |
| `-multipass 2` | 1631 | −1.0% |
| `-tune uhq` 替代 hq | 1601 | −2.9% |
| `-spatial-aq 1 -temporal-aq 1` | 2347 | **+42%** |
| `-spatial-aq 1 -aq-strength 15` | 3164 | **+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.0** | **v4.2.0-73** |
| preset 4 跑 40 秒 720p | **130~140 秒（0.29× 实时）** | **16~32 秒（2.1~2.4× 实时）** |
| 同样 preset 4 crf 21 的输出 | 1235 kbps / SSIM 0.99623 | 1210 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 |
|---|---|---|
| 默认参数 | 1254 | 0.995607 |
| `enable-tf=0` | 1289 | 0.995667 |
| `enable-tf=0:tune=0` | 1298 | 0.995672 |
| `tune=0`（TF 开） | 1260 | 0.995615 |

---

## 三、全档位对比（平均码率 / 平均 SSIM，源码率 1996 kbps）

| 档位 | 平均码率 | 相对源 | 平均 SSIM | 整片预估 | 编码速度 |
|---|---|---|---|---|---|
| NVENC p3 hq **cq36** | 790 | 40% | 0.99258 | 0.67 GiB | ~15× 实时 |
| NVENC p3 hq **cq33** | 1020 | 51% | 0.99347 | 0.86 GiB | ~15× 实时 |
| NVENC p7 hq **cq32** | 1159 | 58% | 0.99404 | 0.98 GiB | ~16× 实时 |
| **SVT 4.2.0 preset 4 / crf 21** | **1210** | **61%** | **0.99585** | **1.02 GiB** | 2.1~2.4× |
| SVT 4.2.0 preset 6 / crf 21 | 1236 | 62% | 0.99568 | 1.05 GiB | 2.9~3.5× |
| SVT 1.7.0 preset 4 / crf 21 | 1235 | 62% | 0.99623 | 1.05 GiB | 0.29× |
| SVT 4.2.0 preset 3 / crf 21 | 1235 | 62% | 0.99597 | 1.05 GiB | 1.0~1.3× |
| NVENC p5 UHQ cq32 | 1311 | 66% | 0.99466 | 1.11 GiB | ~12× 实时 |
| NVENC p3 hq cq30 | 1340 | 67% | 0.99426 | 1.13 GiB | ~15× 实时 |
| SVT 4.2.0 preset 2 / crf 21 | 1343 | 67% | 0.99622 | 1.14 GiB | 0.53~0.75× |
| SVT 4.2.0 preset 4 / crf 19 | 1353 | 68% | 0.99606 | 1.14 GiB | 2.1~2.4× |
| SVT 1.7.0 preset 4 / crf 19 | 1382 | 69% | 0.99644 | 1.17 GiB | 0.29× |
| NVENC p3 hq cq26 | 1994 | 100% | 0.99525 | 1.69 GiB | ~15× 实时 |
| NVENC p7 hq cq26 | 2111 | 106% | 0.99555 | 1.79 GiB | ~16× 实时 |
| NVENC p5 UHQ cq26 | 2312 | 116% | 0.99582 | 1.96 GiB | ~12× 实时 |

### 等码率下正面对比（这才是公平比法）

| 目标码率 | SVT-AV1 4.2.0 | av1_nvenc | 差距 |
|---|---|---|---|
| ~1200 kbps | preset 4 crf 21 → **0.99585** @1210 | p7 cq32 → 0.99404 @1159 | **SVT +0.0018** |
| ~1340 kbps | preset 2 crf 21 → **0.99622** @1343 | p3 cq30 → 0.99426 @1340<br>p5 UHQ cq32 → 0.99466 @1311 | **SVT +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** 这个极窄区间里。这说明：

- SSIM 在这里已经**接近饱和**，对「边缘重影、涂抹、拖影」这类观感问题不敏感 —— 上次翻车就是 SSIM 0.9817 过线但画面糊。
- 表里的排序**只能当参考**，真正的裁决必须是眼睛。

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

（本机 ffmpeg 未编入 `libvmaf`，`vmafmotion` 可用但只能测运动复杂度，不能当质量分。）

---

## 五、复现命令

```bash
# 新版 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**

- 6 个档位 × 3 个片段（900s / 3000s / 5200s 起，各 40 秒），每个都配 h264 直拷的原片段做对照
- 三种看法：**叠加**（拖 0~100% 透明度滑杆，最容易看出重影）、**并排**、**逐帧**（◀帧/帧▶）
- 刻意放了 **NVENC p3 cq30（1340 kbps）** 和 **SVT 4.2.0 p4 crf21（1210 kbps）** 这两个**码率接近**的档位，直接 A/B 就能判断「软编那 0.0016 SSIM 的优势看不看得出来」
- 也放了 NVENC cq33 这种「激进瘦身」档，用来判断 cq 多少开始不能接受

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

---

## 七、全片编码进行中

已按质量优先档启动整片编码（GPU 机后台）：

- 参数：SVT-AV1 **v4.2.0** `preset 4 / crf 21 / enable-tf=0:tune=0 / yuv420p10le`，音频直拷，14 线程 + nice 19
- 实测速度 **2.1~2.4× 实时** → 预计 **约 50 分钟**
- 产出：`~/av1-work/out/ADN-027-av1-p4c21.mp4`
- 完成后会核对时长一致性，并传回下载中心供直接预览对比

---

## 八、待办 / 后续

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 拿不到。
