cang-ying/broadcast/BC-006-IMAGE-FIRST-PRODUCTION.hdlp

216 lines
7.5 KiB
Plaintext
Raw Permalink Normal View History

# BC-006 · 图片优先低成本漫剧生产协议
> HLDP://cang-ying/broadcast/BC-006-IMAGE-FIRST-PRODUCTION
> 类型: 广播执行协议 · 管线切换依据
> 状态: ACTIVE · 待耳耳蛋/鉴影执行回执
> 签发: 冰朔 ICE-GL∞ · 2026-07-13
> 整理执行: 铸澜 ICE-GL-ZL-001
---
```text
HLDP://cang-ying/broadcast/bc-006/image-first
├── trigger
│ └── 纯视频成本高、人物漂移、重复抽卡;现有“静态图+动态运镜”方向没有接入执行入口
├── emergence
│ ├── 已有: Seedream资产、FFmpeg编辑器、zoompan关键帧、字幕/配音/混音模块
│ ├── 缺口: 没有逐镜动态分级,默认仍是全部生成视频
│ └── △: 图片负责一致性,本地动画负责大多数运动,视频模型只负责关键表演
├── lock
│ ├── ⊢ 默认不是图生视频API默认是图片→本地动态视频
│ ├── ⊢ 先完成整集低成本动态分镜,再花钱生成关键镜头
│ ├── ⊢ 任何镜头必须先得到 motion_route、理由、预算、停止条件
│ ├── ⊢ 同一路线最多2次付费重跑失败后退回资产/分镜修正
│ └── ⊢ 剧本、角色、场景、道具资产锁继续有效
└── why
└── 漫剧的目标是连续可看,不是证明每一秒都由视频模型生成。
```
## 一、先纠正一个概念
```text
错误理解:
图片 → 每张都送图生视频模型 → 仍按秒付费
正确路线:
图片 → 本地关键帧/图层/字幕/声音 → 大多数镜头完成
↘ 只有必须真实运动的少数镜头 → AI图生视频
```
图片优先不等于“全部图生视频”。真正省钱的是减少视频模型秒数。
## 二、五级镜头动态路由
| 路由 | 名称 | 适用镜头 | 执行方式 | 视频模型费 |
|---|---|---|---|---:|
| `STILL_HOLD` | 静帧叙事 | 旁白、反应、场景交代、道具特写 | 静帧+字幕+声音+轻微淡入淡出 | ¥0 |
| `LOCAL_MOTION` | 本地运镜 | 对话、环境、情绪特写、信息镜头 | FFmpeg缩放/平移/旋转/裁切/转场 | ¥0 |
| `LAYERED_2_5D` | 2.5D分层 | 前中后景明显、氛围镜头 | 背景/人物/前景分层,以不同速度移动 | ¥0模型费 |
| `LOCAL_LIPSYNC` | 局部动态 | 正面对白、轻微表情 | 静态角色+音频驱动嘴型/眨眼;背景不重生成 | 本地或低成本 |
| `AI_I2V` | AI图生视频 | 打斗、奔跑、转身、复杂表演、大范围真实运动 | 批准首帧/参考图→Seedance等I2V | 按秒计费 |
`AI_T2V` 不属于默认生产路由,只允许做无资产、无连续性要求的实验镜头。
## 三、逐镜判断规则
按顺序提问,第一个“是”就是路由:
```text
1. 只靠构图、声音和字幕能讲清楚吗?
→ STILL_HOLD
2. 只需要推近、拉远、横移、轻摇或画面震动吗?
→ LOCAL_MOTION
3. 前景/人物/背景分开移动就有空间感吗?
→ LAYERED_2_5D
4. 只有嘴、眼、头发、衣摆需要动吗?
→ LOCAL_LIPSYNC / 局部动态
5. 必须出现身体动作、复杂互动或真实空间变化吗?
→ AI_I2V
```
“感觉视频会更高级”不是调用 `AI_I2V` 的理由。
## 四、图片如何变成简单视频
### 4.1 静态图片生成指定时长片段
编辑器必须识别 PNG/JPG 输入,为图片增加循环输入,再按镜头时长输出视频。核心语义:
```text
image + duration + fps + resolution
→ loop still frame
→ scale/crop/pad
→ optional zoom/pan/rotate
→ H.264片段
```
现有 `engines/video-editor.js` 已有 `zoompan`、平移、旋转和调色;需要补的是“图片输入循环”和图片/视频分流。
### 4.2 六种免费运镜模板
```yaml
slow_push: zoom 1.00 → 1.10 # 情绪靠近、人物特写
slow_pull: zoom 1.12 → 1.00 # 揭示环境、孤独感
pan_left: x 右 → 左 # 展示空间/队伍/建筑
pan_right: x 左 → 右 # 跟随视线/信息展开
tilt: y 下 → 上 / 上 → 下 # 建筑、人物全身、压迫感
impact: 短促zoom + 轻震 + cut # 巨响、冲击、惊讶
```
动作要轻每镜通常只使用一种主运动避免“PPT乱飞”。
### 4.3 2.5D分层
```text
原图/生成阶段
├── BG: 背景场景
├── CHAR: 透明人物层
├── FG: 前景遮挡层
└── FX: 烟雾/光/粒子层
合成阶段
├── BG慢移
├── CHAR中速移动/缩放
├── FG稍快移动
└── FX循环/淡入淡出
```
没有分层资产时先从单图慢运镜开始不得为了做2.5D重新抽大量素材。
### 4.4 对白镜头
```text
先生成对白音频
→ 锁定字幕时间轴
→ 选择静态运镜或局部口型
→ 只有表演强度确实需要时才调用AI_I2V
```
对白是否好看,主要由构图、停顿、字幕、声音和反应镜头决定,不要求整张画面一直变化。
## 五、图片优先生产管线
```text
01 script_lock 锁剧本与台词
02 breakdown 拆角色/场景/道具/声音
03 asset_lock 批准可复用图片资产
04 shot_design 设计镜头目的与时长
05 motion_route 每镜选择五级路由
06 audio_first 先做临时配音/字幕时间轴
07 animatic 全集静态图+本地运镜预演
08 human_review 苍耳先看完整节奏
09 expensive_select 只圈出必须AI_I2V的镜头
10 ai_generation 批准首帧后按镜生成最多2次
11 final_edit 替换关键镜头、混音、字幕、转场
12 qc_writeback 连续性/成本/失败原因回写
```
硬门槛第07步没有完整 animatic不进入第09步。
## 六、深海迷航 EP01 立即改路
旧方案10镜、86秒全部按 Seedance 计价,预计约 ¥43仓库记录的整集预计成本约 ¥60。
新方案的目标分布:
```text
10镜
├── 6~7镜: STILL_HOLD / LOCAL_MOTION
├── 1~2镜: LAYERED_2_5D / LOCAL_LIPSYNC
└── 2~3镜: AI_I2V关键动作
```
按仓库当前 ¥0.5/秒记录估算AI视频只保留约20~30秒时视频模型预算约 ¥10~15最终以 dry-run 为准。
立即动作:
```text
1. 暂停按旧计划继续 M03~M10 全量生成。
2. 为 M01~M10 增加 motion_route、route_reason、asset_refs、local_motion、ai_required。
3. 先用现有批准图片生成完整低成本 animatic。
4. 苍耳看完整节奏后圈定必须重生成的2~3镜。
5. 再调用 Seedance其余镜头本地完成。
```
## 七、执行代码必须更新的位置
```text
engines/video-editor.js
→ 支持 PNG/JPG 静帧循环、指定时长、关键帧模板、分层叠加
video-ai-system/lib/composer.py
→ 修正 video-editor.js 实际路径;失败必须显式报错,不得静默退回简单拼接
video-ai-system/lib/cli.py
→ gen 前强制 motion_routeLOCAL路由禁止调用视频API
video-ai-system/tools/run_prompts.js
→ 不再默认每镜输出Seedance提示词只给 AI_I2V 生成提示词和成本
MODEL-ROUTER.hdlp / COST-LOG.hdlp
→ 增加本地动态路由和新旧预算对比
```
## 八、BC-006回执格式
```yaml
broadcast_id: BC-006
persona: PTS-VA-001-EED | PTS-VA-001-JY
status: RECEIVED | PIPELINE_UPDATED | DRY_RUN_READY
active_anchor: broadcast/ACTIVE-PIPELINE.hdlp
project: deep-sea-voyage/EP01
shots_routed: 10
local_shots: 0
ai_i2v_shots: 0
old_budget: 0
new_budget: 0
changed_files: []
blockers: []
```
> ⊢ 先用图片把整集讲明白,再让视频模型只动最值得动的地方。