# AI 视频生产管线

**主题**：从剧本到成片的完整技术链路  
**适用项目**：[Suchka-Velvet](../entities/Suchka-Velvet.md)、[CineCog-Studio](../entities/CineCog-Studio.md)

## 完整流程

```
剧本/分镜
  → 角色参考图（Gemini / ComfyUI Z-Image）
  → 关键帧生成（Wan 2.2 / Seedance）
  → I2V 运动视频（gpu-local ComfyUI）
  → TTS 配音（Fun-CosyVoice 3.0）
  → LongCat-Video-Avatar lipsync
  → MMAudio 音效
  → ffmpeg 混音
  → 后期合成（MP4 输出）
```

## 图像生成

### 本地（gpu-local ComfyUI）

| 模型 | 用途 | 参数 |
|------|------|------|
| Z-Image Base | 高质量角色肖像 | cfg=2.5, steps=20 |
| Z-Image Turbo | 快速预览 | cfg=1.0, steps=8 |
| Wan 2.2 Remix NSFW v2.0 | I2V 主力 | 默认 cuda:1 端口 8189 |

### 云端

| 平台 | 模型 | 价格 |
|------|------|------|
| Replicate | Seedance 1 Pro Fast | $0.075/5s |
| Replicate | LTX-2.3 Pro | 最快 |
| Replicate | **Seedream 4.5** | 角色一致性强 |

### Storyboard Grid 模型对比实验（2026-04-24）

**实验**：以《小男孩找到了彩虹》为例，测试 3 款模型生成 9 格 3×3 横版分镜板  
**统一 Prompt**：Pixar 3D 风格，16:9 横版，3×3 grid，无边框

| 模型 | 布局控制 | 格数 | 方向 | 一致性 | 画质 | 推荐 |
|------|----------|------|------|--------|------|------|
| **Google Gemini 3 Pro** | ✅ | 9格 | 横版 3×3 | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ✅ 首选 |
| ByteDance Seedream 4.5 | ❌ | 8格 | 竖版 2列 | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ❌ 不支持 grid |
| **ByteDance Seedream 5 Lite** | ✅ | 9格 | 横版 3×3 | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ✅ 可用 |

**关键结论**：
- **Seedream 4.5**：架构限制，无法遵循 grid 布局指令，强化 prompt 无效
- **Seedream 5 Lite**：成功生成 3×3 横版，但 Panel 5（中间格）只有彩虹无人物（小异常）
- **Gemini 3 Pro**：布局最稳定，画质最高，首选
- 两款模型风格相似（Pixar 3D），未来需在成品中清晰标注来源模型

**进阶方案（更精确布局）**：  
程序化拼接——单独生成 9 张图 + PIL/Python 合成 → 100% 精确布局，消除格子内容缺失问题

---

### Seedream 4.5 多图输出（2026-04-24 实测）

- **`sequential_image_generation: true`** + **`max_images: 1-15`** 支持一次生成最多 15 张风格一致的图
- 角色一致性强，适合 character sheet、多角度展示
- **Storyboard grid**：靠 prompt 描述 `3x3 storyboard grid` 等布局，模型把格子画进一张图里（非独立输出）
- **Gemini API 澄清**：Gemini 同样不支持原生多图输出，`candidate_count=1` 限制；两者都是 prompt 描述布局

### NVIDIA RTX Video Super Resolution (VSR)（2026-04-23）

- **ComfyUI 节点**：`Nvidia_RTX_Nodes_ComfyUI`（搜 Manager "RTX" 安装）
- **原理**：Tensor Cores 单 pass 完成超分 + 去压缩噪声（无需独立 denoise 步骤）
- **输入**：标准 `IMAGE` tensor，单张 PNG = batch of 1，和视频帧完全相同
- **缩放**：1x–4x 或指定目标尺寸
- **质量档**：LOW / MEDIUM / HIGH / ULTRA；最大输出 ~16MP
- **要求**：RTX 30 / 40 系列（依赖 NVIDIA NVVFX SDK）

## TTS / 语音

- **默认**：Fun-CosyVoice 3.0（本地 gpu-local）
  - 最佳中文参考音：`jixian-ref-zh4.wav`
  - 最佳英文参考音：`jixian-ref-en.wav`
  - 路径：`/home/jixian/work/cosyvoice2/`
- **备选**：Qwen3-TTS VoiceDesign（seed 锁定音色）
- **MiniMax Speech-2.6-HD**：外部 API
  - ✅ 音量规则（永久确定，2026-04-14）：**原始输出直接用，不加任何增益**
  - +7dB / +9dB / loudnorm 全部放弃，直接用原始音频
- **Gemini TTS 男声列表**：
  - **Charon** — 中低音，沉稳权威（推荐首选）
  - **Fenrir** — 低沉男声
  - **Puck** — 轻快男声
  - **Orus** — 中性男声
  - 默认为 Kore（女声），用于 voice conversion 需改用男声

### Seed-VC（声音转换）

**功能**：将任意 TTS 音色转换为目标声音（如 Jixian 声音）

- **安装路径**：`gpu-local:/home/jixian/work/Seed-VC/`
- **venv**：`/home/jixian/work/seedvc-venv/`
- **推荐参数**：`--diffusion-steps 50 --inference-cfg-rate 0.9`
- **调用方式**：
```bash
cd /home/jixian/work/Seed-VC
source /home/jixian/work/seedvc-venv/bin/activate
python inference.py \
  --source /path/to/tts_output.wav \
  --target /storage/jixian-assets/voice/jixian-voice-30s.wav \
  --output /path/to/output.wav \
  --diffusion-steps 50 \
  --inference-cfg-rate 0.9
```
- **适用场景**：Gemini TTS（情感控制更好）转换为 Jixian 音色

### MOSS-TTS（Zero-shot 声音克隆）

- **来源**：复旦 OpenMOSS 团队
- **模型**：`OpenMOSS-Team/MOSS-TTS`（8B 参数）
- **安装路径**：`gpu-local:/home/jixian/work/moss-tts/`
- **venv**：`/home/jixian/work/moss-tts-venv/`
- **功能**：Zero-shot 声音克隆，支持中文/英文，无需训练
- **状态**：安装完成，推理结果待评估（与 MiniMax / CosyVoice 对比）
- **加载注意**：需 `device_map="auto"` + `accelerate`，避免 GPU OOM

## 视频录制方案（HTML Slides → MP4）

### capture_v10（当前最佳实践，2026-04-13 验证）

- **工具**：System Chrome `--app` + `ffmpeg x11grab` + Playwright 控制
- **脚本**：`capture_v10_clean.py`
- **优点**：真实 30fps，无 browser UI 遮挡，流畅度远超截图拼接
- **关键规则**：
  - `ffmpeg filter_complex` 必须用 `subprocess.run(list)`，不能 `shell=True`
  - 首张幻灯片需 pre-hide content，避免 GSAP 动画前闪烁
  - 音频格式：24000Hz mono（MiniMax 输出）
  - 多段 concat：两段 AAC profile 不一致时用全重编码，不用 `-c copy`

### capture_v12（v12 crop 方案，2026-04-20 确认）

**解决 `--no-sandbox` 警告条问题**：
- 录制分辨率 `1920x1088` → crop top 40px → bottom pad 8px → 输出干净 `1920x1080`
- 这是 Chrome 在 Docker/Xvfb 环境下的必要处理步骤

**独立页面策略（交叉干扰防护）**：
- 在捕获流程中实施**每张幻灯片独立的 Playwright 页面**。
- 这避免了连续播放多张幻灯片时的内存泄漏和 DOM 交叉干扰，确保了图像与音频的最终同步质量。

### capture_v5（旧方案，已弃用）

- fake clock + Playwright 截图 → ffmpeg 拼接
- 问题：非真实帧，动画不连贯

## HTML Slides 开发规范

### 翻译栏防护（必须）

- **问题**：Chrome 对中文页面自动弹出 Google Translate 工具栏，遮挡录制画面
- **修复**：所有需要录制的 HTML 页面必须在 `<html>` 标签声明 `translate="no"`：
  ```html
  <html lang="zh" translate="no">
  ```
- **适用范围**：`index.html`、`player.html`，以及所有幻灯片 HTML

### 多幻灯片播放器：合并 HTML 优于 iframe

| 方案 | 问题 |
|------|------|
| iframe 嵌套 | crossfade 闪黑 + postMessage 时序不可靠 |
| **单页合并 HTML** ✅ | 无闪烁，GSAP 动画完全可控 |

**合并方案要点**：
- 所有幻灯片内联为 `<div class="slide" id="sN">`
- CSS ID 用 `sN-` 前缀做命名空间
- 每张幻灯片独立 `playS{N}()` 函数
- 幻灯片退出时调用 `killLoops()` 清除 `repeat:-1` 的 tween

### X11 截图注意（SSH 环境）

- SSH 到 gpu-local 后 `$DISPLAY=:99`，但 `import` 等工具无法连接 X11 socket
- **正确做法**：用 subagent 本地执行截图（subagent 的 SSH 是真实登录 shell，继承完整 X11 环境）

## 字幕系统（SubtitleEngine）

**首次应用**：Gemma4 越狱视频（2026-04-16）

### 打字机字幕效果
- 工具：SubtitleEngine（内嵌 JS）
- 速度：40ms/字
- 样式规范：
  - ❌ 不用半透明黑底 `background: rgba(0,0,0,0.5)`
  - ✅ 纯白文字 + `text-shadow`（多重阴影增强可读性）
  - 位置：`bottom: 52px`
  - 字号：`font-size: 26px`
  - 最大宽度：`max-width: 75%`

## WaveGlow 音频可视化

**参考来源**：http://design.bot.regdesk.ai/regdesk-presentation/

### 实现原理
- JS 文件：`waveglow.js`、`centerwave.js`、`captions.js`
- 架构：3 个 canvas 叠加
  - `center-wave-glow2`（外发光层）
  - `glow`（中间光晕）
  - `canvas`（主波形）
- CSS `filter: blur()` 制造发光效果
- 播放时显示，暂停/结束时自动隐藏

## 素材资源（Stock Footage）

**工具**：`stock-footage` skill（2026-04-15 扩展）

| 级别 | 平台 | 接入方式 |
|------|------|----------|
| Tier 1 | Pexels | API（已集成）|
| Tier 1 | Pixabay | API（Key 已配置）|
| Tier 2 | Mixkit / Coverr / Life of Vids | 浏览器抓取 |
| Tier 3 | Dareful / Videezy / Motion Elements | 手动下载 |

- API Key 路径：`skills/stock-footage/references/api-keys.md`

## 关键规则

- 数字必须写英文全拼（CosyVoice 对符号不稳定）
- 单段 TTS ≤12s，超长拆段 + ffmpeg concat
- 每条 TTS 必须 Whisper QA 验证完整性
- 所有子任务丢 subagent，不阻塞主 session

## 相关

- [gpu-local-基础设施](gpu-local-基础设施.md)
- [CineCog-Studio](../entities/CineCog-Studio.md)
- [角色宇宙](角色宇宙.md)
