|
|
@@ -22,14 +22,15 @@ fmode-mv providers # 能力现状(哪条通道能用)
|
|
|
## 一、产线全景
|
|
|
|
|
|
```
|
|
|
-① 作曲填词 [chat ✅] → work/song.json
|
|
|
-② 分镜脚本 [chat ✅] → work/storyboard.json
|
|
|
-③ AI 音乐 [music ⚠️] → work/audio/music.mp3
|
|
|
-④ 音轨分离 [本地 ◐] → work/audio/vocals.wav + instrumental.wav
|
|
|
-⑤ 关键帧 [image ✅] → work/frames/shot-XX.png
|
|
|
-⑥ 图生视频 [video ⚠️] → work/clips/shot-XX.mp4
|
|
|
-⑦ 唇形驱动 [lipsync ⚠️] → work/lipsync/lip-XX.mp4
|
|
|
-⑧ 剪辑合成 [本地 ✅] → out/mv.mp4
|
|
|
+① 作曲填词 [chat ✅] → work/song.json
|
|
|
+② 分镜脚本 [chat ✅] → work/storyboard.json
|
|
|
+③ AI 音乐 [music ❌] → work/audio/music.mp3(未开通,可自备音频)
|
|
|
+④ 音轨分离 [本地 ◐] → work/audio/vocals.wav + instrumental.wav
|
|
|
+⑤ 人物资产 [即梦 ✅] → out/character/{1-定妆照,2-上半身,3-全身,4-多视图}.png ★v0.2新增
|
|
|
+⑥ 场景图+关键帧 [即梦 ✅] → work/scene/shot-XX.png(无人)+ work/frames/shot-XX.png(有人)★v0.2
|
|
|
+⑦ 图生视频 [即梦 ✅] → work/clips/shot-XX.mp4(真 AI 生成) ★v0.2
|
|
|
+⑧ 唇形驱动 [lipsync ❌] → 可用即梦数字人替代
|
|
|
+⑨ 剪辑合成 [本地 ✅] → out/mv.mp4
|
|
|
```
|
|
|
|
|
|
一条命令跑完全程:
|
|
|
@@ -156,62 +157,88 @@ fmode-mv separate work/audio/music.mp3
|
|
|
|
|
|
---
|
|
|
|
|
|
-## 六、⑤ 场景 & 人物关键帧 ✅
|
|
|
+## 六、⑤ 人物资产(★v0.2 新增,不换脸的关键)
|
|
|
|
|
|
```bash
|
|
|
-fmode-mv keyframe --from work/storyboard.json # 全部镜头
|
|
|
-fmode-mv keyframe --from work/storyboard.json --shot 3 # 只做第 3 镜
|
|
|
-fmode-mv keyframe --from work/storyboard.json --dry-run # 只看 prompt,不花钱
|
|
|
+fmode-mv character-sheet --desc "25岁东亚女性,栗棕色长直发,身穿米色针织开衫和白色长裙,清冷安静" --limit 1
|
|
|
+fmode-mv character-sheet --desc "..." --limit 4 # 完整四步
|
|
|
```
|
|
|
|
|
|
-**产物**:`work/frames/shot-XX.png` + `work/frames/keyframes.json`(含每张的 prompt,便于复现)。
|
|
|
+四步流水线:**① 定妆照(3候选) → ② 上半身 → ③ 全身 → ④ 多视图**,每步图生图参考上一步 + 锐度自动择优。
|
|
|
|
|
|
-**要点**:
|
|
|
-- 实测可用:`gpt-image-2.5-sunburst`,`--tier large` 出 1792×1024,约 3MB/张。
|
|
|
-- **先 `--dry-run` 看 prompt**,确认人物锚点进去了再花钱。这是最省钱的习惯。
|
|
|
-- 风格统一靠 `styleKeywords`(自动拼入);不一致时手工把它写具体,
|
|
|
- 例:`"neo-noir city pop, sodium orange and cyan teal palette, 35mm film grain"`。
|
|
|
+**产物** `out/character/{1-定妆照,2-上半身,3-全身,4-多视图}.png` + `candidates/` + `character-sheet.json`。
|
|
|
+
|
|
|
+**为什么必须有这一步**:纯 AI 出片最容易翻车的就是「同一人物跨镜头换脸」。
|
|
|
+只靠 prompt 里的 `appearanceAnchor` 是**软约束**;有了多视图做图生图参考,才是**像素级硬约束**。
|
|
|
+
|
|
|
+**费用**:`--limit 1` ¥0.60(3 张候选);完整四步 ¥1.98(9 张候选)。`--dry-run` 零费用。
|
|
|
|
|
|
**避坑**:
|
|
|
-- **首镜最重要**:第 1 镜定调,人物/场景一致性从它开始。先只跑 `--shot 1`,满意了再批量。
|
|
|
-- 图里的**文字/招牌** AI 会写成乱码或错字。若在意,在 prompt 里避免要求文字招牌,
|
|
|
- 或在 `styleKeywords` 加 `no text, no signage`。
|
|
|
-- 图生视频需要**同一角色不同机位**时,用 `--anchor` 显式传锚点,别指望模型自己记住。
|
|
|
+- 服装请写在 `--desc` 里(如「身穿…」),否则会退回默认兜底并在日志里警告。
|
|
|
+- `--single` 每步只出 1 张、跳过择优(省钱,但质量靠运气)。
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 七、⑥ 场景图 + 关键帧 ✅(★v0.2 重构)
|
|
|
+
|
|
|
+```bash
|
|
|
+fmode-mv scene --from work/storyboard.json --character out/character/4-多视图.png
|
|
|
+fmode-mv scene --from work/storyboard.json --shot 3 --limit 1 # 试跑
|
|
|
+fmode-mv scene --from work/storyboard.json --scene-only # 只出场景图
|
|
|
+```
|
|
|
+
|
|
|
+**两步法**(v0.2 的核心改进):
|
|
|
+1. **场景图(无人/纯环境)** ← 文生图,为每镜铺环境;
|
|
|
+2. **关键帧(有人)** ← 图生图多图参考:`[场景图, 人物多视图]`。
|
|
|
+
|
|
|
+**为什么拆两步**:一次推理里同时解决空间/光线/人脸三件事,结果往往是背景每镜都不一样、
|
|
|
+人物和背景光照打架。拆开后背景一致、光照统一。
|
|
|
+相邻镜头还会把「上一镜场景描述」注入本镜 prompt 做一致性约束。
|
|
|
+
|
|
|
+**产物** `work/scene/shot-XX.png` + `work/frames/shot-XX.png` + `work/scene/scenes.json`。
|
|
|
+
|
|
|
+**费用**:每镜 ¥0.42(场景图 ¥0.20 + 关键帧 ¥0.22)。
|
|
|
+
|
|
|
+> 旧的 `fmode-mv keyframe`(走 `/v1/images/generations`)保留可用,作为即梦不可用时的回退。
|
|
|
|
|
|
---
|
|
|
|
|
|
-## 七、⑥ 图生视频 ⚠️ 通道未开通
|
|
|
+## 八、⑦ 图生视频 ✅(★v0.2 已接通真实通道)
|
|
|
|
|
|
```bash
|
|
|
-fmode-mv video --from work/storyboard.json
|
|
|
+fmode-mv video --from work/storyboard.json # auto:走即梦真通道
|
|
|
+fmode-mv video --from work/storyboard.json --limit 1 # 先试 1 镜(≈¥1.41)
|
|
|
+fmode-mv video --from work/storyboard.json --mode still # 零费用:Ken Burns 兜底
|
|
|
```
|
|
|
|
|
|
-**现状实测**:`POST /v1/video/generations` 返回 **503 `No available channel for model doubao-seedance-1-0-pro`**。
|
|
|
-模型在清单里,但没有可用渠道。
|
|
|
+**实测**:`/getVideoV3_720p`,121 帧(5 秒),实扣 **¥1.41**,返回 h264 mp4(2.4MB)。
|
|
|
+旧通道 `/v1/video/generations` 仍是 503,已由即梦替代。
|
|
|
|
|
|
**`--mode` 三种模式**:
|
|
|
|
|
|
| 模式 | 行为 |
|
|
|
|---|---|
|
|
|
-| `auto`(默认) | 先探活;通就走真通道,不通**自动降级**为 Ken Burns 兜底 |
|
|
|
-| `provider` | 只走真通道,不通即失败(用于通道开通后强制验证) |
|
|
|
-| `still` | 强制用关键帧做 Ken Burns 运镜 |
|
|
|
+| `auto`(默认) | 探活;通就走即梦真通道,不通**自动降级**为 Ken Burns 兜底 |
|
|
|
+| `jimeng` | 只走即梦,不通即失败(用于强制验证) |
|
|
|
+| `still` | 强制用关键帧做 Ken Burns 运镜(零 API 费用) |
|
|
|
+
|
|
|
+**三条硬约束(v0.2 实测修正,KB 未记载)**:
|
|
|
|
|
|
-**兜底是什么**:把关键帧做成 2 倍画布上的缓慢推拉(`zoompan`),按镜头序号交替推近/拉远。
|
|
|
-产物文件名是 **`shot-XX.fallback.mp4`** —— 一眼能看出这不是真 AI 生成视频。
|
|
|
+1. **`frames` 必须 ∈ {121,145,169,193,217,241}**(既在 `[121,241]` 内,又要 `≡1 (mod 24)`)。
|
|
|
+ → **单镜只能是 5/6/7/8/9/10 秒的整数秒**。分镜阶段就按时长设计最省事。
|
|
|
+2. **`method=3`(首尾帧)需要 2 张同比例图**;第一镜用下一镜的关键帧作尾帧。
|
|
|
+3. **`method=3` 失败会自动降级 `method=2`**,返回带 `degraded: true` 并在日志写明(不静默)。
|
|
|
|
|
|
**避坑**:
|
|
|
-- 兜底片段**体积偏大**(1080p 十余 MB/段),因为静态图用低 CRF 编码。要压小可加 `--tier standard` 生成小图。
|
|
|
-- 单段**必须 5~8 秒**(技能已把分镜时长钳制在此区间)——真通道一般也就支持 4~10 秒,
|
|
|
- 长镜头要靠多段拼接,而不是让单段变长。
|
|
|
-- 真通道开通后**一键替换**:
|
|
|
- ```bash
|
|
|
- fmode-mv video --from work/storyboard.json --mode provider --force
|
|
|
- ```
|
|
|
+- **场景跨度大时别用 `method=3`**(室内→室外、人物→空镜这类两帧会崩坏)——
|
|
|
+ 硬规则:首尾帧只用于同场景连续动作 / 相似场景过渡 / 状态渐变。
|
|
|
+- 首帧图**长边/短边 ≤ 3**,否则被拒。
|
|
|
+- 兜底片段体积偏大(低 CRF 编码静态图)。
|
|
|
+- 真通道开通/重新开通后**一键替换**:`fmode-mv video --from work/storyboard.json --force`。
|
|
|
|
|
|
---
|
|
|
|
|
|
-## 八、⑦ 唇形驱动 ⚠️ 平台暂无通道
|
|
|
+## 九、⑧ 唇形驱动 ❌ → 改用即梦数字人 ✅
|
|
|
|
|
|
```bash
|
|
|
fmode-mv lipsync --probe # 先看通道状态
|
|
|
@@ -219,21 +246,25 @@ fmode-mv lipsync --probe # 先看通道状态
|
|
|
|
|
|
**现状**:网关**没有** `/lipsync/generations` 这条路由(返回前端兜底页)。
|
|
|
|
|
|
-**三条替代路线**(按推荐度排):
|
|
|
+**v0.2 的替代(实测可用)**:
|
|
|
+
|
|
|
+```bash
|
|
|
+fmode-mv jimeng digital-human \
|
|
|
+ --ref out/character/3-全身.png \
|
|
|
+ --audio work/audio/vocals.wav \
|
|
|
+ --prompt "固定机位,头部随节奏轻微摆动,神情投入,眼神直视镜头"
|
|
|
+```
|
|
|
+
|
|
|
+走即梦数字人 v1.5 三步流程,**¥1/秒**,是真人对口型。
|
|
|
+
|
|
|
+**其余替代路线**(按推荐度):
|
|
|
|
|
|
| 方案 | 做法 | 观感 |
|
|
|
|---|---|---|
|
|
|
+| 即梦数字人 | 上面那条命令 | **最好**(¥1/秒) |
|
|
|
| C. 纯空镜 + 字幕 | 不标 `lipSync`,全片走 B-roll | 纯音乐 MV 最常见,零风险 |
|
|
|
| B. 表情微动镜头 | 演唱镜头走图生视频(表情/头部微动),不严格对口型 | 成片观感可接受 |
|
|
|
-| A. 自建服务 | 部 Wav2Lip / SadTalker / LatentSync,`export FEME_LIPSYNC_ENDPOINT=https://your-host/lipsync` | 最好,但要部署 |
|
|
|
-
|
|
|
-**自建对接的请求约定**(技能会这样调你的服务):
|
|
|
-
|
|
|
-```jsonc
|
|
|
-POST <FEME_LIPSYNC_ENDPOINT>
|
|
|
-{ "image": "<人脸图片URL或base64>", "audio": "<音频URL>", "model": "..." }
|
|
|
-// 期望返回:{ "data": { "video_url": "https://..." } } 或任何含视频 URL 的结构
|
|
|
-```
|
|
|
+| A. 自建服务 | 部 Wav2Lip / SadTalker / LatentSync,`export FEME_LIPSYNC_ENDPOINT=...` | 需部署 |
|
|
|
|
|
|
**避坑**:
|
|
|
- 唇形镜头**全片别超过 4 个**:每个都需要人脸正脸关键帧 + 人声干声,成本和翻车率都高。
|
|
|
@@ -241,7 +272,10 @@ POST <FEME_LIPSYNC_ENDPOINT>
|
|
|
|
|
|
---
|
|
|
|
|
|
-## 九、⑧ 剪辑合成 ✅
|
|
|
+## 十、⑨ 剪辑合成 ✅
|
|
|
+
|
|
|
+```bash
|
|
|
+## 十、⑨ 剪辑合成 ✅
|
|
|
|
|
|
```bash
|
|
|
fmode-mv assemble \
|
|
|
@@ -273,7 +307,7 @@ fmode-mv assemble \
|
|
|
|
|
|
---
|
|
|
|
|
|
-## 十、端到端速查
|
|
|
+## 十一、端到端速查
|
|
|
|
|
|
```bash
|
|
|
# 全自动(能跑的都跑,跑不了的如实跳过并降级)
|