# 《霜刃》片头曲 · 05 音乐定稿与 18 镜网格

> **主音轨定稿**：`music/v1-male.flac`（《霜刃引》男声独唱版）
> **锁定时间**：2026-09-20 03:30
> **网格**：17 镜 × 192 帧 + 1 镜 × 124 帧 = **3388 帧 / 141.17 秒**
> **前置文档**：`01-角色与场景设定` · `02-分镜脚本与生产计划` · `03-素材出图提示词全集` · `04-素材核对与就位记录`

---

## 一、为什么是 v1-male

三个版本（同一歌词、同一 seed=20260920、同一编曲骨架，只换声部）实测对比：

| 版本 | 时长 | 速度 | 调性 | 段落结构 | 4 小节/镜 → 镜头数 |
|---|---|---|---|---|---|
| **v1 男声独唱（采用）** | **2:21.5** | **120** | G | 前奏 / 主歌×2 / 副歌 / 尾奏 | **18 镜** |
| v2 女声独唱 | 3:04.9 | 121 | G | 前奏/主歌/副歌×2/桥段/间奏/尾奏 | 23 镜 |
| v3 男女对唱 | 2:17.0 | 120 | G | 前奏 / 主歌 / 副歌×2 / 间奏 | 17 镜 |

**采用 v1 的理由**：时长最贴电视剧片头（2:21），男声独唱最贴《刀剑如梦》那种「中快板中国风摇滚 + 豪迈苍凉」的目标气质，且镜头数最少、总生成时间最省。

**风格实现**：style 文本里 "mid-tempo driving 4/4 **around 120 BPM**" 被模型准确执行（三版都落在 120–121 BPM）。⚠️ 但 style 里的 "minor key" **未被遵循**，三版都是 G 大调——大调在这个中国风五声骨架下依然听得出苍劲，故未重跑。

---

## 二、音乐分析（这决定了整个镜头网格）

### 2.1 精确参数

| 项 | 值 | 来源 |
|---|---|---|
| 时长 | **141.519 s**（2:21.5） | ffprobe |
| 速度 | **Q:1/4=120** | ABC 乐谱头部（精确，比音频估计可靠） |
| 拍号 | 4/4 | ABC `M:4/4` |
| 调性 | G | ABC `K:G` |
| 小节长度 | **2.0000 秒（整）** | 4×60/120 |
| 总小节 | ≈ 70.76 | 时长 / 小节 |

### 2.2 关键工程结论：4 小节 = 192 帧 = 8.000 秒

```
小节 = 4 × 60 / 120 = 2.000 秒（整数）
4 小节/镜 = 8.000 秒 = 192 帧
```

且 **192 本身就落在 H3 的 17k+5 帧数网格上**（192 = 17×11+5），无需吸附修正。

由此得到的好处：
1. **剪辑点正好落在 4 小节乐句边界**，与鼓点严丝合缝；
2. 单镜 192 帧比原设计的 260 帧短 **26%** → 单镜预计 **40–63 分钟**（260 帧实测 54–86 分钟），**离 90 分钟硬挂红线更远**；
3. 原 14 镜方案 => **18 镜**，切点更密，片头节奏更活。

### 2.3 音频能量曲线（内容强度的依据）

> 注意：ABC 的段落标记（`% intro` / `% verse` / …）是**规划阶段**的标注，与最终渲染出的音频编排**并不一致**（例如 ABC 说前 34 秒是纯器乐，但实测 0:04–0:32 已经是很响的器乐全奏）。因此内容强度按**实测能量包络**排布，切点按 4 小节网格排布。

每 8 秒（=1 镜）的 RMS 相对强度：

```
镜 1   0-8s    ██          0%    ← 极安静（前奏起）
镜 2   8-16s   ██████     57%
镜 3  16-24s   ████████   77%
镜 4  24-32s   ████████   80%
镜 5  32-40s   ██████     54%
镜 6  40-48s   ████       37%    ← 全片最安静
镜 7  48-56s   ██████     70%
镜 8  56-64s   ████████   82%
镜 9  64-72s   ████████   96%    ← 副歌爆发
镜10  72-80s   ████████   95%
镜11  80-88s   ████████   97%
镜12  88-96s   ████████  100%    ← 全片峰值
镜13  96-104s  ████████   88%
镜14 104-112s  ████████   90%
镜15 112-120s  ████████   95%
镜16 120-128s  ████████   93%
镜17 128-136s  ████████   93%
镜18 136-141s  ████       41%    ← 尾奏衰减
```

---

## 三、18 镜网格（定稿）

| 镜 | 时间码 | 帧 | 段落能量 | 画面内容 | 参考图 |
|---|---|---|---|---|---|
| 1 | 0:00.0–0:08.0 | 192 | 0% | 雪原古战场大远景，断旗猎猎，地平线上玄衣刀客的极小剪影 | `sc_snowfield` |
| 2 | 0:08.0–0:16.0 | 192 | 57% | 极特写：缠素麻布的右手握紧无鞘断刀，指节发白，血滴落雪 | `sc_snowfield` + `prop_hand_bandage` |
| 3 | 0:16.0–0:24.0 | 192 | 77% | 竹海夜雨：青石阶上一柄带鞘长刀，竹梢灯笼在风雨中摇晃 | `sc_bamboo_rain` + `prop_lantern` |
| 4 | 0:24.0–0:32.0 | 192 | 80% | 剑冢：玄空白发背影独坐万剑之间，落雪压肩 | `sc_sword_graveyard` + `char_xuankong` |
| 5 | 0:32.0–0:40.0 | 192 | 54% | 药庐：苏晚晾药，听见脚步侧身回眸，朱红披帛被风掀起 | `sc_herb_hut` + `char_suwan_turnaround` |
| 6 | 0:40.0–0:48.0 | 192 | **37%** | 破庙回忆：逆光尘柱中，一只小女孩的手递出素银簪（不给正脸） | `sc_ruined_temple` + `prop_silver_hairpin` |
| 7 | 0:48.0–0:56.0 | 192 | 70% | 沈砚推门而出，狐裘滑落，走进风雪，雪地留下一串脚印 | `sc_herb_hut` + `char_shenyan_turnaround` |
| 8 | 0:56.0–1:04.0 | 192 | 82% | 城楼夜：裴无涯缓缓抬眸，银半面具反光，皮指套轻叩石栏三下 | `sc_city_tower` + `char_peiwaya_turnaround` |
| 9 | 1:04.0–1:12.0 | 192 | 96% | 冰湖：沈砚单膝跪地，断刀倒插冰中，蛛网裂纹向外扩散 | `sc_frozen_lake` + `char_shenyan_turnaround` |
| 10 | 1:12.0–1:20.0 | 192 | 95% | 断崖：落日云海之上，两个逆光剪影对峙而立 | `sc_cliff_sunset` + 沈砚 + 裴无涯 ★续接首段 |
| 11 | 1:20.0–1:28.0 | 192 | 97% | 刀剑相击：断刀与横刀极近距离相交，火星四溅，衣袂被气劲掀开 | 同镜10 ★**AV latent 续接** |
| 12 | 1:28.0–1:36.0 | 192 | **100%** | 城楼：苏晚立于垛口前俯瞰万家灯火，抬手轻触发间银簪 | `sc_city_tower` + `char_suwan_turnaround` |
| 13 | 1:36.0–1:44.0 | 192 | 88% | 剑冢剑林：沈砚独行穿过万剑，衣袂翻飞，脚步不停 | `sc_sword_graveyard` + `char_shenyan_turnaround` |
| 14 | 1:44.0–1:52.0 | 192 | 90% | 城楼：裴无涯背对镜头凭栏，身后随从林立成剪影，大氅铺开 | `sc_city_tower` + `char_peiwaya_turnaround` |
| 15 | 1:52.0–2:00.0 | 192 | 95% | 雪原：苏晚在漫天飞雪中奔跑回望，朱红披帛拖出一道颜色 | `sc_snowfield` + `char_suwan_turnaround` |
| 16 | 2:00.0–2:08.0 | 192 | 93% | 断崖：两柄兵器相交后错身而过的极宽剪影，云海落日 | `sc_cliff_sunset` + 沈砚 + 裴无涯 |
| 17 | 2:08.0–2:16.0 | 192 | 93% | 雪中擦肩：沈砚与苏晚一左一右走过，谁都没有回头 | `sc_snowfield` + 沈砚 + 苏晚 |
| 18 | 2:16.0–2:21.2 | **124** | 41% | 雪地断刀特写：落雪填平刀身水波纹 → 剧名定格 | `sc_snow_blade` |

**合计 3388 帧 / 141.17 秒**（音乐 141.52 秒，画面收在音频尾奏的余韵里）

### 与原 14 镜方案的差异

原方案有 14 个设计镜头；按新网格扩到 18 镜，**新增 4 个镜头**（填补 96–136 秒这一段持续高能量区）：

- **镜13 剑冢独行**（沈砚穿过万剑，中景跟移）——承上启下
- **镜14 城楼群像**（裴无涯背影 + 随从林立剪影）——压迫感
- **镜15 雪中奔跑**（苏晚回望，朱红披帛是画面唯一暖色）——情感推进
- **镜16 断崖错身**（极宽剪影，两兵器相交后分开）——与镜11 的局部特写形成「局部/全局」对照

原设计里的镜头全部保留，只是时长从 260 帧压到 192 帧。

---

## 四、生成配置（严格复刻 13 小时零挂机那次）

| 项 | 值 |
|---|---|
| 节点图 | `UNETLoader` → **`MiniMaxH3ReferenceToVideo`（comfy_extras 官方节点）** → `MiniMaxH3MotionContextLoadLatent` → `MiniMaxH3MotionContext` → `BasicGuider` + `BasicScheduler` + `SamplerCustomAdvanced` → `VAEDecode`/`VAEDecodeAudio` → `MiniMaxH3MotionContextTrim` → `CreateVideo` → `SaveVideo` → `MiniMaxH3MotionContextSaveLatent` |
| **加速节点** | **一个都没有**：无 `PathchSageAttentionKJ`、无 `MiniMaxH3MemoryEfficientSageAttentionPatch`、无 MemCache、无 Turbo LoRA、无 Director |
| 底座 | `Minimax-h3_Singularity_ref2va_Pruned_v1.3_int8.safetensors` |
| CLIP / VAE | `qwen3vl_32b_minimax_h3_nvfp4_awq` / `minimax_h3_video_vae_fp16` + `minimax_h3_audio_vae_fp32` |
| 画布 | 1344×768 |
| 采样 | `res_multistep` + `simple`，**12 步**，denoise 1.0，**单采** |
| 参考图 | `ref_images` 是 `COMFY_AUTOGROW_V3`（数量无上限）；本片按镜用 1–3 张 |
| 续接 | 仅镜10→镜11 用 AV latent（`h3_ctx_duizhi`，22 帧画面 + 24 帧音频 @40Hz） |
| `non_diegetic_music` | 全部 **N/A** —— 配乐统一来自 YuE2 歌曲，H3 只出环境音/音效，后期叠加 |

### 安全纪律（09-15 / 09-17 两次整机硬挂的教训）

1. **每镜一个独立任务**，绝不把多镜塞进一个任务；绝不开 Director 段间引导；
2. 单镜 **192 帧**（≈40–63 分钟），远离 90 分钟红线；
3. **每镜后强制冷却**：基础 `sleep 300`，然后**轮询 GPU 温度，等回落到 ≤62°C 才开下一镜**（期间记录温度/显存/负载/宿主可用内存）；
4. 已出片即跳过（断点续跑）；任一镜失败**立即停止**，不带病继续；
5. 宿主内存哨兵：冷却时读 `MemAvailable`（09-15 那次冻死的土壤就是内存被吃干）。

---

## 五、后期总装（滤镜链已实测通过）

| 阶段 | 处理 | 产物 |
|---|---|---|
| 1 拼接 | 18 镜顺序 concat（H.264 CRF16） | `post/01_concat.mp4` |
| 2 调色 | 冷青 + 去饱和 0.90 + 胶片曲线 + 暗角 | `post/02_grade.mp4` |
| 3 裁幅+剧名 | 裁 2.39:1（1344×562）+ 黑边 + 剧名 alpha 淡入 | `post/03_final_239.mp4` |
| 4 混音 | 《霜刃引》0dB + H3 环境音 −14dB（压缩/限幅） | `post/04_成片_2.39x1_混音.mp4` |
| — | 另出 16:9 母版（不裁幅、不叠字） | `post/04_母版_16x9_混音.mp4` |

**剧名排版**：`国标小标宋`（`/usr/share/fonts/fonts-gb/GB_XBS_GB18030.ttf`）——比楷体更重、4 秒内可读性更好；宽字距 + 冰蓝冷白 + 柔和外发光 + 副题下细横线。落在镜18 的**左上留白区**，淡入时刻 135.2s（1.4s 淡入），持续到片尾。
素材：`title/title_xiaobiaosong_1344x768.png`（带 alpha 的叠加层）、备选 `title_kaiti_*.png`。

---

## 六、执行入口

| 脚本 | 作用 |
|---|---|
| `~/Downloads/h3-tasks/sd-yin/h3_shot.py` | 逐镜执行器（官方节点图 + 冷却 + 断点续跑） |
| `~/Downloads/h3-tasks/sd-yin/shots_a.json` / `shots_b.json` | 18 镜清单（含完整六段式提示词、参考图、seed、latent 配置） |
| `~/Downloads/h3-tasks/sd-yin/post_produce.py` | 后期总装（拼接/调色/裁幅/剧名/混音） |
| `~/Downloads/h3-tasks/sd-yin/make_title.py` | 剧名排版器 |
| `~/Downloads/h3-tasks/sd-yin/music_to_grid.py` | 歌曲 → 镜头网格换算 |
| `~/Downloads/h3-tasks/sd-yin/abc_sections.py` | ABC 乐谱段落解析 |
| `~/Downloads/h3-tasks/sd-yin/yue2_three_versions.py` | 三版本歌曲生成 |
| `~/Downloads/h3-tasks/sd-yin/h3_run.log` | 生成运行日志 |

```bash
# 全量生成（已启动，约 16–17 小时）
cd ~/Downloads/h3-tasks/sd-yin
~/Downloads/vlm-env/bin/python -u h3_shot.py --manifest shots_a.json shots_b.json \
    --cooldown 300 --temp-target 62

# 后期总装（生成完成后）
~/Downloads/vlm-env/bin/python post_produce.py
```

> ⚠️ 执行器必须用 `~/Downloads/vlm-env/bin/python`（系统 python3 没有 `requests`）。
