MV Generator — 音乐视频生成管线
MediaClaw 内置的音乐视频端到端生成技能。
触发词
- 生成MV
- MV制作
- 音乐视频
- mv generator
- 虚拟歌手MV
管线流程
音频文件 + 歌词 + 角色卡
│
▼
┌────────────────────────────┐
│ Step 1: 音频分析 │
│ scripts/audio-analyzer.py │
│ → 时长、BPM、场景时间线 │
└────────────┬───────────────┘
│
▼
┌────────────────────────────┐
│ Step 2: 歌词解析 │
│ scripts/lyrics-parser.py │
│ → 段落结构、情绪曲线 │
└────────────┬───────────────┘
│
▼
┌────────────────────────────┐
│ Step 3: 场景+帧设计 │
│ scripts/scene-design.py │
│ → 场景类型、运镜、首尾帧prompt │
└────────────┬───────────────┘
│
▼
┌────────────────────────────┐
│ Step 4: 帧图像生成 │
│ qingyun gpt-image-1 API │
│ → 每场景 first+last frame │
└────────────┬───────────────┘
│
▼
┌────────────────────────────┐
│ Step 5: 视频片段生成 │
│ kling-2 / veo-3.1 / etc │
│ → 首帧→尾帧 5s 视频片段 │
└────────────┬───────────────┘
│
▼
┌────────────────────────────┐
│ Step 6: 最终合成 │
│ FFmpeg merge │
│ → 音轨对齐+转场+字幕 │
└────────────────────────────┘
输入
| 参数 | 必填 | 说明 |
|------|------|------|
| audio_file | ✅ | 音频文件路径 (.mp3/.wav/.m4a) |
| lyrics | ✅ | 歌词文本 |
| character_card | ✅ | 角色卡 JSON(外貌、声音、风格) |
| style | ❌ | cinematic / realistic / anime / ethereal |
| num_scenes | ❌ | 分镜数(默认 9) |
| output_dir | ❌ | 输出目录(默认: MediaClaw/output/<project>/) |
输出目录结构
output/<project-name>/
├── README.md ← 项目概要 + 时间轴
├── frames/ ← 首尾帧图像
│ ├── 01_first.png
│ ├── 01_last.png
│ └── ...
├── audio/ ← 音频文件(多版本)
│ └── song_v1.mp3
├── script/ ← MV 剧本
│ ├── mv_final.json ← 精准时间轴 JSON
│ ├── mv_final.md ← 人类可读剧本
│ └── character.json ← 角色卡
├── docs/ ← 文档和参考素材
│ └── avatar.png
└── video/ ← 生成的视频片段(Step 5 产出)
├── scene_01.mp4
└── ...
经验总结(来自 Chloe《樱花落尽时》项目)
图像生成最佳实践
| 项目 | 推荐 | 备注 |
|------|------|------|
| 模型 | qingyun gpt-image-1 | 成功率最高 |
| API | /v1/images/generations | 比 edits 更稳定 |
| 尺寸 | 1024x1536(竖版) | 必须用规定尺寸 |
| 并发 | 2-3 并发 | 过多会 SSL EOF |
| 重试 | 失败单独重试 | 不整批重跑 |
角色一致性技巧
- 统一 prompt prefix: 包含角色核心外貌特征
- 参考图: 用 edits API 传入角色头像(但成功率低)
- 场景限定词: 每帧 prompt 固定前缀 + 场景变量
音频同步
- 用
mutagen读 MP3 时长(无需 ffprobe) - 场景时间按歌曲结构比例分配
- BPM 检测需
librosa(可选)
视频模型选择
| 情绪 | 模型 | 场景类型 | |------|------|---------| | ≤ 6.0 | kling-1.6 | 静态/自然/国风 | | 6.0-8.0 | kling-1.6 或 kling-2 | 过渡 | | ≥ 8.0 | kling-2 | 爆发/力量 | | 360°旋转 | veo-3.1 | 特殊运镜 |
依赖
- Python: mutagen, requests
- 外部 API: qingyun (图像), xingjiabi (视频), Google (veo-3.1)
- 可选: librosa (BPM), ffmpeg (合成)
参考
- audio-analyzer.py — 音频分析
- Chloe 项目完整输出
- virtual-singer-mv-script — 独立 MV 剧本 skill