Files
ai/AI_VIDEO_TEST_LESSONS.md
2026-06-15 17:45:28 +08:00

324 lines
14 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# AI 真人/漫剧视频流水线测试踩坑记录 V1
更新时间:2026-06-12
用途:
- 记录测试阶段已经遇到的问题、原因判断、系统优化点。
- 后续接入 Kling、Seedance、Wan、Vidu、Runway、Veo 等平台时,按同一套准入标准测试,避免重复烧钱。
- 本文件是运营/开发测试手册,不替代 `docs/` 里的系统需求文档。
## 当前阶段定位
当前仍是测试磨合阶段,不追求一次性自动发布。
目标顺序:
1. 跑通自动化流水线。
2. 找到各 Provider 的能力边界。
3. 把失败原因转成系统规则。
4. 形成可恢复、可路由、可统计成本的生产流程。
5. 最后再逐步提高自动化比例。
## 已验证结论
### Hailuo 适合做什么
Hailuo / MiniMax Hailuo 2.3 Fast 当前更适合:
- 都市真人短剧普通镜头。
- 中景、远景、走路、转身、递物、沉默、反应镜头。
- 咖啡厅、街道、办公室、豪车、酒店、家庭等现实场景。
- 旁白 + 字幕 + BGM 推动剧情的短剧。
- 成本敏感的批量生产。
当前实测成本:
- `minimax_hailuo_23_fast`:约 `$0.317 / 10秒`
- `minimax_hailuo_23`:约 `$0.467 / 10秒`
### Hailuo 不适合硬扛什么
Hailuo 对以下镜头可控性不足:
- 凌空翻滚、复杂武打、连续打斗。
- 精准手诀、结印、舞蹈式手部动作。
- 法相天地、千臂法身、巨型神像复杂动作。
- 一镜中塞太多高复杂动作。
- 正脸强台词口型同步。
处理原则:
- 不要在同一失败动作上无脑重跑 Hailuo。
- 如果同类复杂动作 1-2 次失败,优先切换 Provider 或补动作参考/姿势关键帧。
- 修仙、法相、打斗、次元壁穿越等镜头默认标记为高价值/高复杂度,不按普通都市镜头处理。
## 分镜时长经验
### Hailuo 时长设计规则
Hailuo 当前按真实可用规格优先设计:
- 常规可用镜头时长:6 秒 / 10 秒。
- 真人短剧主流程优先按 10 秒长镜头设计。
- 只有非常简单的过渡镜头、环境镜头、无台词动作镜头,才考虑 6 秒。
- 不再设计 7 秒、8 秒这种无法直接匹配 Hailuo 输出规格的镜头。
系统规则:
- 导演分镜上限必须允许 10 秒。
- 如果原分镜明确是 10 秒,prepare 阶段不得自动压缩成 5 秒或 8 秒。
- 负面约束里的“避免嘴部特写”不能导致镜头被误判成 insert 特写。
- “手里的道具”不能被误判成“手部特写”,只有手部/手指/手掌/手腕/手势等明确关键词才算 insert。
### 3 秒碎片问题
法相天地三段式测试暴露问题:
- 镜头切太碎,像图片拼接。
- Hailuo 实际输出常按 6 秒返回,系统再裁成 3/3/4 秒时,动作容易被截断。
- 复杂动作被拆太短,会失去电影感和动作连贯性。
结论:
- 普通反应镜头:3-5 秒可以。
- 都市剧情镜头:5-6 秒更稳。
- 复杂动作/爆点镜头:优先 8-10 秒一镜到底。
- 不能把 6 秒 Provider 输出硬裁成 3 秒作为长期策略。
### 10 秒一镜到底结论
法相天地 10 秒 Hailuo 测试已验证:
- Hailuo API 可以返回 10 秒。
- 10 秒一镜到底比 3 段裁切更连贯。
- 人物、服装、场景稳定性明显提升。
- 但复杂动作本身仍受 Provider 能力限制。
系统规则:
- `action_score >= 8``importance >= 8` 的镜头,优先生成 8-10 秒单镜头。
- 如果 Provider 不支持目标时长,再由系统拆分,不要随意裁切关键动作。
## Prompt Engine 经验
直接把剧情发给视频模型,质量不稳定。
必须通过 Prompt Engine 组装:
- 角色。
- 场景。
- 主动作。
- 镜头大小。
- 运镜。
- 动作时间轴。
- 情绪表演。
- 灯光。
- 特效时机。
- 声音卡点。
- 负面约束。
已落地:
- Motion Director Prompt。
- 10 秒仙侠一镜到底时间轴。
- Hailuo 长镜头 prompt 上限提升。
仍需注意:
- Prompt 只能提高概率,不能保证复杂动作精确执行。
- 复杂动作需要动作参考图、姿势关键帧或更强 Provider。
- 如果同一个 Prompt 多次失败,继续加形容词意义不大。
## 角色一致性经验
当前测试发现:
- 没有固定角色定妆图/锚点图时,人物容易漂移。
- 修仙/奇幻镜头更容易因为特效导致人物脸和服装变化。
- 都市短剧也需要固定林凡、陈雪、王伯这类角色锚点。
系统规则:
- 真人短剧正式验收前必须先做角色锚点图。
- 新剧首轮至少固定主角、女主、关键配角。
- Provider 小样要使用同一角色锚点和同一关键帧,避免测试结果不可比。
## 声音与字幕经验
没有声音、没有字幕、没有 BGM 的视频判定为失败。
已经遇到的问题:
- 屏幕女孩测试:无声音、无字幕,发布感不足。
- 口型镜头:语音先到,嘴型后动。
- 部分合成音量偏低,视觉还可以但情绪不够。
系统规则:
- 每条可发布视频必须包含字幕。
- 每条可发布视频必须包含 BGM 或环境底噪。
- 情绪镜头必须有 SFX:雨声、脚步、门声、心跳、低频冲击、sting 等。
- 合成后必须跑音量检测。
- 音量偏低时重新后期合成,不一定重跑视频。
## 台词与 lip-sync 经验
没有稳定 lip-sync Provider 前,不要把关键台词做成正脸大嘴型特写。
当前策略:
- `lip_sync_required=true` 但没有真实 lip-sync Provider 时:
- 改成旁白。
- 改成字幕。
- 改成中景/侧脸/轻口型。
- 避免正脸嘴部特写。
未来接入 lip-sync Provider 后:
- 只给关键正脸台词使用。
- 不全片 lip-sync,避免成本翻倍。
- lip-sync 放在视频片段生成后、FFmpeg 合成前。
## 成本控制经验
默认策略:
- 每个镜头默认只生成 1 条。
- 不默认生成 2-3 条候选。
- 只有封面级、爆点、最后反转、人工验收阶段才允许候选 2 条。
- 任何候选数增加都必须进入成本预估和审计日志。
当前后台已支持:
- AI 接入列表展示每 10 秒成本。
- Provider `cost_summary`
- 单次成本上限。
- 当日成本上限。
- `price_per_second=0` 不当成免费,而是提示需账单回填。
## Provider 路由经验
推荐基础路由:
```text
普通都市镜头
=> Hailuo
都市高价值镜头
=> Hailuo 优先,必要时 Kling / Vidu / Wan 对比
修仙 / 法相 / 打斗 / 次元壁 / 复杂动作
=> Premium Provider 候选
正脸台词
=> 有 lip-sync Provider 才允许正脸特写,否则中景/旁白/字幕
成本超预算
=> Premium -> Hailuo -> Seedance/Mock
```
不要把“平台选择”写死在业务代码里,必须走 Router。
## Provider 准入测试标准
每接入一个新视频 Provider,都按固定小样测试:
1. 同一项目。
2. 同一角色锚点图。
3. 同一关键帧。
4. 同一镜头文本。
5. 同一目标时长。
6. 同一分辨率/比例。
7. 记录真实成本。
8. 记录失败原因。
9. 记录生成耗时。
10. 记录人工观感评分。
必须记录:
- `provider_code`
- `model_name`
- `clip_id`
- `asset_id`
- `duration`
- `cost_actual`
- `quality_score`
- `human_acceptance`
- `failure_reason`
- `prompt_version`
- `keyframe_asset_id`
## 人工验收标准
当前 mock-qc 分数只能说明流程没坏,不能代表可发布。
真人视频上线前必须人工看:
- 人物是否稳定。
- 动作是否连贯。
- 镜头是否像真实拍摄。
- 字幕是否准确。
- 声音是否完整。
- BGM/SFX 是否有情绪。
- 口型是否明显穿帮。
- 是否有明显 AI 手、脸、身体变形。
- 成本是否在预算内。
## 不要重复踩的坑
- 不要把 mock-qc 通过当成真实质量通过。
- 不要无音频/无字幕就判断视频流程合格。
- 不要用 3 秒碎切测试复杂动作。
- 不要在 Hailuo 上反复烧复杂修仙动作。
- 不要把 `price_per_second=0` 当成免费。
- 不要默认生成 2-3 条候选。
- 不要让正脸台词在没有 lip-sync 时直出。
- 不要只看最终成片,要保留脚本、分镜、prompt、关键帧、音频、视频片段、合成记录。
- 不要默认认为 `mock-video` 就是全链路零成本;如果 TTS Provider 已启用真实平台,Mock 视频合成仍可能调用真实 TTS。零成本压测要显式指定 `mock-voice` 或关闭音频。
- 真实 Hailuo / Kling / Wan 等图生视频前必须先跑 preflight,确认关键帧是 PNG/JPG/WebPMock SVG 只能测流程,不能直接发给真实视频 Provider。
- Hailuo Fast 跑都市真人 10 秒镜头可用,5 条 10 秒顺序生成约 9 分钟,总成本记录 `$1.585`;后续应进入队列并在后台显示耗时。
- 只用单张临时关键帧会改善画面质感,但不能彻底解决同脸一致性;要上架必须补“角色锚点图 / 定妆图 / 同脸参考图”流程。
- 都市短剧 Hailuo 长镜头比 3-6 秒碎切更像真人短剧,但部分镜头仍会像关键帧慢推;Prompt 里要继续强化明确动作、人物走位、视线、反应和镜头结束动作。
- 角色锚点图 V1 对关键帧生成有效:同一角色的脸、服装、气质会比临时起图更稳;但 Hailuo Fast 当前按单首帧图生视频跑,不能直接吃多角色参考图,所以运动中仍可能轻微改脸。
- 锚点重跑应优先挑第 1 镜、第 3 镜、第 5 镜这类“角色出场 / 冲突 / 反转”镜头;默认候选仍为 1 条,避免成本翻倍。
- 真人短剧对白不能一镜一段 TTS 直接读完;只要 `dialogue_text` 里出现 `角色名:台词`,必须拆成多段 TTS,每段记录 `speaker_name` / `character_id` / `voice_id` / `voice_style`
- 角色声线是发布级基础配置:顾辰、林雨薇、周浩、管家这类核心角色必须先在 Character 表绑定声音;否则即使画面像真人,声音也会变成解说感。
- 主持人、旁白也要当作独立声线处理;如果没有角色记录,至少要走固定 narration / host voice,不能复用男主或女主声音。
- 多声线 TTS 只解决“谁在说话”的问题,不解决“嘴型同步”;正脸台词仍要继续走 lip-sync 或中景轻口型策略。
- TTS 声音 ID 不能只看名字想当然:`Chinese (Mandarin)_Gentle_Senior` 在老管家场景听感偏女,不适合作为中老年男管家默认声线;当前老管家默认改为 `Chinese (Mandarin)_Gentleman`,但仍需人工听感确认。
- 核心角色上线前要做“角色声线小样验收”:每个角色先生成 1-2 句固定台词试听,确认性别、年龄、气质,再进入整集成片,避免整集重合成。
- Hailuo 2.3 标准版 1080P 比 Fast 768P 清晰度和雨夜质感略好,但第 5 镜 A/B 证明它不能单独解决“像图片动”的问题;高价值反转镜头更需要三关键帧/动作参考/更强 Provider,而不是只把 Fast 换成标准版。
- Provider A/B 测试必须保护当前成片:生成候选后要恢复 `storyboard_shots.video_clip_asset_id`,避免实验 clip 自动替换正式整集。
- 动作节拍链式生成 V1 对高价值反转镜头有效:第 5 镜用 2 段 Fast 生成,第二段用第一段结尾帧作为首帧,比单首帧慢推更能呈现“递卡 -> 看卡震惊”的动作链。
- action beat 不能默认全片开启:成本、耗时都会增加,适合反转/封面/爆点/高价值动作镜头;普通对话镜头仍用单条生成。
- preflight 必须按 action beat 的真实分段估算成本,否则后台会低估费用;第 5 镜 action beat 从单条 `$0.317` 变为 2 段 `$0.3804`
- action beat 只解决“动作链更连续”,不解决“同一角色像同一个演员”;整集样片必须单独检查人物脸、年龄感、发型、服装是否跨镜稳定。
- 真实视频生成不能只传角色名字;必须把本镜出现角色的 ActorProfile 注入 provider prompt,并在 task input 记录 `actor_lock`,否则后台无法审计“这条视频到底有没有走锁脸策略”。
- prepare 阶段不要把全项目角色描述混进单镜 prompt;单镜只允许注入本镜出现的人物,否则多人项目会增加串脸概率。
- Hailuo 当前配置不是强角色参考模型,`supports_character_reference=false`;它可以做低成本图生视频,但发布级真人短剧要靠“角色锚点图生成首帧 + 强一致性 prompt + 人工抽检”,必要时横测支持角色参考的 Provider。
- 如果整集都换脸,不要继续盲目重跑全片;应先重跑第 1 / 3 / 5 镜这种出场、冲突、反转镜头,对比抽帧确认角色锁定是否有效,再决定是否整集重跑。
- 多角色音频不能把跨平台 voice_id 混用:`coral` 属于 OpenAI TTS,不能直接发给 MiniMaxProvider 层必须做 voice_id 适配或降级到当前 Provider 默认声线。
- MiniMax TTS 返回 JSON 时必须先检查 `base_resp.status_code`;否则账号权限、voice_id、group_id 等真实错误会被误报成 `EMPTY_AUDIO`
- 小说上传走 encrypted JSON/base64 时,实际 HTTP body 会比原文件大约 33%;后端 body limit 必须高于文件限制,否则会先被 `request entity too large` 拦截。
## 下一步建议
短期优先:
1. 继续围绕都市真人短剧做 Hailuo 量产质量优化。
2. 做角色锚点图/定妆图 V1。
3. 做动作参考/姿势关键帧 V1。
4. 用同一固定镜头横测 Kling / Seedance / Wan / Vidu。
5. 建 Provider 准入表:质量、成本、失败率、耗时。
6. 做 BGM/SFX 发布级音量标准。
7. lip-sync 只做关键台词小样,不先全片接入。
长期原则:
- Hailuo 做低成本量产。
- 高价值镜头交给高质 Provider。
- Router 负责自动选模型。
- QA + 人工抽检负责质量闭环。
- 成本、失败、重试、降级全部进入审计。