MV Production Standard Skill
AI MV 制作标准流程 — 每一步都有明确产出,不允许跳步。
触发条件
用户要求制作/生成/合成 MV、音乐视频、music video,或任何"给这首歌配视频"的需求。
铁律(违反 = P0 事故)
| # | 铁律 | 说明 | |---|------|------| | 1 | 音频版本 | 必须确认用户指定的版本,不许自作主张换版本。如果用户说"用那个长的",就问清楚是哪个。 | | 2 | 视频时长 | 视频时长必须与指定音频版本一致(可略长 ≤2s,不可短)。 | | 3 | 歌词字幕 | 必须有歌词字幕烧录,且对齐到歌曲时间轴。不允许交付无字幕的 MV。 | | 4 | 口型对齐 | 如果有人物/歌手画面,必须做 lip-sync。不允许人物张嘴但没声音或声音不同步。 | | 5 | 不允许假视频 | Ken Burns / 静态图推拉不算视频。如果预算/工具不允许生成真视频,必须提前告知用户并取得同意。 |
完整流程
Phase 1: 素材确认
目标: 锁定所有输入素材,避免后期返工。
步骤:
-
确认音频版本
- 列出所有可用音频版本(文件名、时长、大小)
- 直接问用户:"有 v1(270s), v2(274s), v3(236s) 三个版本,你要用哪个?"
- 等用户明确回复后再继续
- 记录选择的版本到工作日志
-
获取歌词
- 确认歌词来源(用户提供 / 网上查找)
- 获取带时间轴的歌词(LRC/SRT),或准备好手动打轴
- 如果没有时间轴歌词,在 Phase 3 补上
-
确认风格与分镜需求
- 问用户:需要什么风格?(动画/真人/混合)
- 是否有人物出镜?→ 决定是否需要 lip-sync
- 大致场景数量和主题
-
确认输出规格
- 分辨率(1080p / 4K)
- 格式(MP4 / MOV)
- 是否需要硬字幕 / 软字幕
产出文件:
output/{project-name}/
├── config.json # 素材确认记录(音频版本、歌词路径、输出规格)
├── audio/ # 指定版本的音频文件
└── lyrics/ # 歌词文件(纯文本 + LRC/SRT)
关键检查:
- [ ] 用户已明确指定音频版本
- [ ] 歌词文件已获取
- [ ] 是否有人物出镜已确认
Phase 2: 分镜 → 视频(AI生成或实拍)
目标: 为每个场景生成视频素材。
步骤:
-
编写分镜脚本
- 根据歌词内容和歌曲结构划分场景
- 每个场景指定:起止时间、画面描述、运动方式、是否有人物
- 输出:
storyboard.json或storyboard.md
-
生成/获取视频素材
- AI生成: 使用 Kling / Runway / Pika 等工具
- 每个 clip 建议 5-10s
- 有人物说话的场景标记为需要 lip-sync(Phase 6 处理)
- 实拍: 如果用户提供实拍素材,直接使用
- ⚠️ 禁止: 不允许用 Ken Burns(静态图推拉)冒充视频。如果用户明确同意"用图片做过渡"则可以,但必须在分镜中标注
- AI生成: 使用 Kling / Runway / Pika 等工具
-
素材质量检查
- 每个 clip 检查分辨率、时长、画面质量
- 剔除模糊、闪烁、明显错误的 clip
产出文件:
output/{project-name}/
├── storyboard.md # 分镜脚本
├── clips/ # 各场景视频片段
│ ├── scene01.mp4
│ ├── scene02.mp4
│ └── ...
└── storyboards/ # 分镜图片(如有)
关键检查:
- [ ] 所有场景都有对应的视频素材(非静态图)
- [ ] 总视频素材时长 ≥ 音频时长
- [ ] 有人物的场景已标记
Phase 3: 音频分析(beat / section / 歌词时间轴)
目标: 分析音频结构,建立时间轴。
步骤:
-
节拍分析
- 使用
av-sync-workflow或音频分析工具 - 提取 BPM、beat 时间点
- 标记歌曲段落:前奏 / 主歌 / 副歌 / 桥段 / 尾奏
- 输出:
beats.json
- 使用
-
歌词时间轴对齐
- 使用
lyrics-video-sync工具 - 如果有 LRC 文件,解析时间轴
- 如果没有,手动/半自动打轴:听歌标记每句歌词的起止时间
- 每句歌词精确到 0.1s
- 输出:
lyrics.srt或lyrics.ass
- 使用
-
节拍-画面映射
- 将分镜场景对齐到歌曲段落
- 关键节拍(副歌起拍、鼓点)对应画面转场
- 输出:
sync-plan.json(每个转场点的时间 + 对应场景)
产出文件:
output/{project-name}/
├── beats.json # 节拍时间点
├── sections.json # 歌曲段落划分
├── lyrics.srt # 带时间轴的歌词
└── sync-plan.json # 节拍-画面同步计划
关键检查:
- [ ] 歌词时间轴已对齐(听一遍确认每句歌词时间正确)
- [ ] 节拍点已提取
- [ ] 场景-段落映射已建立
Phase 4: 音视频同步(卡点对齐)
目标: 视频片段精确对齐到歌曲节拍和段落。
步骤:
-
根据 sync-plan.json 剪辑视频片段
- 按节拍点调整每个场景的起止时间
- 副歌前的场景在鼓点处切换
- 长段落(主歌)可根据内容细分
-
转场处理
- 场景间使用交叉淡化(crossfade),默认 0.5-1s
- 禁止硬切(除非用户要求或艺术效果需要)
- 副歌进入时可使用更剧烈的转场(闪白、缩放)
-
时长校准
- 如果素材过长:减速或裁剪
- 如果素材过短:使用时间拉伸 / 补充素材
- 确保: 总视频时长 ≥ 音频时长
-
粗合成(无字幕)
- 将所有剪辑后的片段拼接成时间线
- 铺上指定版本的音频
- 输出:
draft_v1.mp4(粗剪版,不含字幕)
产出文件:
output/{project-name}/
├── timeline.json # 最终时间线(每个片段的起止时间)
├── transitions.json # 转场设置
└── video/
└── draft_v1.mp4 # 粗剪版(含音频,无字幕)
关键检查:
- [ ] 视频总时长 ≥ 音频时长(误差 <2s)
- [ ] 关键节拍有对应的画面变化
- [ ] 转场流畅,无明显硬切
- [ ] 草稿版看起来节奏感正确
Phase 5: 歌词字幕(SRT/ASS + 烧录)
目标: 生成精确对齐的字幕并烧录到视频。
步骤:
-
字幕文件准备
- 使用 Phase 3 产出的
lyrics.srt - 如果使用 ASS 格式,设置样式:
- 字体大小、颜色、描边
- 位置(底部居中或随画面调整)
- 动画效果(淡入淡出、逐字显示等)
- 使用 Phase 3 产出的
-
字幕时间轴校验
- 在视频播放器中加载字幕,逐句确认对齐
- 重点检查:歌词换气处、副歌重复段落
- 修正偏移量
-
烧录字幕到视频
- 使用 ffmpeg 烧录:
ffmpeg -i draft_v1.mp4 \ -vf "subtitles=lyrics.ass:force_style='FontSize=24'" \ -c:a copy \ draft_v2_with_subtitles.mp4 - 或使用
video-lyrics-subtitleskill
- 使用 ffmpeg 烧录:
产出文件:
output/{project-name}/
├── lyrics.ass # 带样式的字幕文件
└── video/
└── draft_v2_with_subtitles.mp4
关键检查:
- [ ] 字幕时间轴与音频精确对齐
- [ ] 字幕样式美观、可读
- [ ] 无遗漏歌词
- [ ] 烧录后视频质量无明显下降
Phase 6: Lip-sync(人物口型对齐)
目标: 人物画面中口型与歌曲同步。
⚠️ 仅当有人物出镜时需要此阶段。
步骤:
-
标记需要 lip-sync 的场景
- 从 storyboard 中找出有人物说话/唱歌的片段
- 确认这些片段的时间范围
-
使用 digital-human-api 进行口型对齐
- 输入: 视频片段 + 对应时间段的音频
- 生成: 口型对齐后的视频片段
- 如果工具不可用,使用替代方案:
- Wav2Lip / SadTalker 等开源工具
- 或重新用 AI 视频生成工具生成带口型的片段
-
替换原片段
- 将 lip-sync 后的片段替换回时间线
- 检查拼接处是否平滑
产出文件:
output/{project-name}/
├── clips_synced/ # 口型对齐后的片段
│ ├── scene08_synced.mp4
│ └── scene09_synced.mp4
└── video/
└── draft_v3_lipsynced.mp4
关键检查:
- [ ] 人物口型与歌词匹配
- [ ] 口型过渡自然(不卡顿、不扭曲)
- [ ] 替换后时间线无偏移
Phase 7: 最终合成 + 质量检查
目标: 输出最终 MV,通过全部质量检查。
步骤:
-
最终合成
- 整合所有阶段产出
- 确认音频为用户指定版本
- 添加片头/片尾(如需要)
- 输出:
final_mv.mp4
-
质量检查清单(全部通过才能交付):
| # | 检查项 | 通过标准 | |---|--------|----------| | 1 | 音频版本 | = 用户指定版本(文件名、时长都匹配) | | 2 | 视频时长 | ≥ 音频时长,误差 <2s | | 3 | 歌词字幕 | 已烧录,时间轴正确,无遗漏 | | 4 | 口型对齐 | 有人物场景口型已同步(如适用) | | 5 | 转场 | 场景切换流畅,无硬切 | | 6 | 音画同步 | 关键节拍有对应画面变化 | | 7 | 画质 | 无明显压缩伪影,分辨率符合要求 | | 8 | 总体观感 | 连续看完一遍,主观感受流畅 |
-
生成交付包
output/{project-name}/deliver/ ├── final_mv.mp4 # 最终MV ├── lyrics.srt # 外挂字幕(可选) ├── lyrics.ass # ASS字幕(可选) ├── config.json # 素材配置记录 └── README.md # 制作说明
产出文件:
output/{project-name}/deliver/
└── final_mv.mp4 # 最终交付文件
目录结构标准
output/{project-name}/
├── config.json # Phase 1: 素材确认
├── audio/ # Phase 1: 音频文件
│ └── {version}.mp3
├── lyrics/ # Phase 1: 歌词
│ ├── lyrics.txt
│ └── lyrics.srt
├── storyboard.md # Phase 2: 分镜
├── clips/ # Phase 2: 视频素材
├── beats.json # Phase 3: 节拍
├── sections.json # Phase 3: 段落
├── sync-plan.json # Phase 3: 同步计划
├── timeline.json # Phase 4: 时间线
├── transitions.json # Phase 4: 转场
├── clips_synced/ # Phase 6: 口型对齐片段
├── video/ # 各阶段视频产出
│ ├── draft_v1.mp4 # Phase 4: 粗剪
│ ├── draft_v2_with_subtitles.mp4 # Phase 5: 加字幕
│ ├── draft_v3_lipsynced.mp4 # Phase 6: 加口型
│ └── final_mv.mp4 # Phase 7: 最终版
└── deliver/ # 交付包
└── final_mv.mp4
常见问题
Q: 用户没有指定音频版本怎么办?
A: 停下来问。 列出所有版本和时长,等用户回复。绝不自作主张。
Q: 工具不足以完成某个 Phase 怎么办?
A: 诚实告知用户。 说明缺少什么工具、有什么替代方案、需要多少额外时间/成本。不要偷工减料。
Q: 时间紧迫,可以跳过某些步骤吗?
A: 可以,但必须告知用户跳过了什么、影响是什么。 让用户做权衡决策。默认不可跳过 Phase 1(素材确认)和 Phase 7(质量检查)。
Q: Ken Burns 效果什么时候可以用?
A: 仅当用户明确同意用图片过渡时使用。 且必须在分镜中标注为"静态图过渡"。不能把静态图当真视频交付。
相关 Skills
| Skill | 用途 |
|-------|------|
| av-sync-workflow | 音视频同步、节拍对齐 |
| lyrics-video-sync | 歌词时间轴对齐 |
| video-lyrics-subtitle | 字幕烧录 |
| digital-human-api | Lip-sync 口型对齐 |
| mv-generator | MV 管线集成 |
版本历史
| 版本 | 日期 | 说明 | |------|------|------| | 1.0 | 2026-04-12 | 初始版本,基于《樱花落尽时》MV 制作教训总结 |