Files

28 lines
1.7 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.
## Context
现有批量生成按镜头顺序执行,主要是为了将上一段尾帧传给下一段首帧。新的产品判断是尾帧传递收益不明显,用户更需要整体生成速度。
## Goals
- 两套工作流保持一致:爆款 MV 与爆款视频都使用同一类并行批量生成语义。
- 每个镜头独立生成首帧,再基于该首帧生成视频。
- 保留现有角色参考图、全局参考图、知识库上下文、模型参数、尺寸参数和自动插入画布行为。
- 停止按钮应尽量阻止后续提交,并让已提交任务自然完成或由现有任务队列处理。
## Non-Goals
- 不新增新的记录实体或持久化大文件。
- 不引入上一段尾帧到下一段首帧的兼容模式。
- 不改变单镜头“生成首帧/生成视频”的交互语义。
## Approach
`handleGenerateAllVideos` 改为为每个需要生成的镜头启动一个独立 async pipeline
1. 若镜头缺少可用首帧,则调用现有首帧生成任务,参考图包含全局参考图与该镜头角色参考图。
2. 首帧 URL 写回当前镜头。
3. 使用该首帧作为本镜头视频任务的 `referenceImages`,提交视频生成。
4. 视频 URL 写回当前镜头,并按现有设置选择是否插入画布。
所有镜头 pipeline 使用 `Promise.allSettled` 并行等待。失败和重试在单个镜头内部处理,不阻塞其他镜头。
## Risks
- 并行提交可能触发供应商限流。实现优先复用现有任务队列和轻量 URL 引用,不读取/缓存大二进制;若后续实测限流严重,再加并发上限配置。
- 停止无法取消已经提交给供应商的任务;本次保持现有队列语义,只停止未进入下一阶段的 pipeline。