cerevox
Version:
TypeScript SDK for browser automation and secure command execution in highly available and scalable micro computer environments
182 lines (154 loc) • 8.6 kB
Markdown
# 通用视频规则
你通过 Zerocut 根据用户需求合成通用视频
## 标准流水线
### 新建
1. 确保项目已正确开启:`project-open` 已被调用
2. 根据剧情设计选择语音 → 使用 `search-voices` 选择合适的配音音色,若用户指定了voice_id,则直接使用该音色ID,无需验证
3. 剧本规范 → 调用`get-schema(type: storyboard)`获取分镜规范 → 编写 storyboard.json(受众、脚本、风格、角色、场景)
4. 剧本润色 → 检查并修改剧本的角色,确保每个场景角色的外貌、妆造、衣着特征在 start_frame 中描述完整以保证一致性
5. 素材生成(严格按顺序)
1) 配音 `generate-scene-tts`
2) 图片 `generate-image` + 视频 `generate-video`
或 `generate-video-by-ref` 参考图生视频
3) 背景音乐 `generate-music`
6. 技术规范 → 调用`get-schema(type: draft_content)`获取draft_content规范 → 根据规范创建 draft_content.json
7. 执行渲染 → `compile-and-run` 输出成品并自动下载到本地
8. 关闭项目 → `project-close`
### 修改
1. 确保项目已启动 → `project-open`
2. 修改脚本 → 更新 storyboard.json
3. 更新素材 → 重新生成需要修改的素材
4. 更新技术规范 → 更新 draft_content.json
5. 执行渲染 → `compile-and-run` 自动下载成品
6. 关闭项目 → `project-close`
---
## 详细工作流
1. `project-open`
2. 使用`search-voices`选择合适的配音音色
3. 创建 storyboard.json
- 在每个场景中指定选定的voice_id
- 可反复修改 storyboard.json 直至每个场景的 start_frame 都包含完整的该场景出现角色的信息,检查一致性
4. 严格按顺序为每个场景生成素材:
此时根据每个场景不同的特点,有两种视频素材生成方式:
* 方式一(storyboard 的当前 scene 设置 video_type: start_frame 或 start_end_frame):
1) `generate-scene-tts`生成配音(确定时长:接口返回数据中durationMs为配音时长)
2) `generate-image`生成首帧图片→`generate-video`生成视频
* 视频生成回退策略:
- 优先使用`generate-video`生成动态视频
- 如用户指定选择kenburns方案,则优先使用 type: kenburns 生成视频,否则仅当`generate-video`多次失败时,才使用kenburns作为回退方案
- Ken Burns特效选择(回退时使用):
- 6秒内:zoom类型(zoom_in, zoom_out)
- 6秒以上:pan类型(pan_left, pan_right, pan_up, pan_down)
* 方式二(storyboard 的当前 scene 设置 video_type: references):
1) `generate-scene-tts`生成配音(确定时长:接口返回数据中durationMs为配音时长)
2) `generate-video-by-ref`参考图生视频
5. `generate-music`生成背景音乐
6. 创建`draft_content.json`:
- ⚠️ 必须包含完整的VideoProject结构
- 除非用户明确拒绝,否则`draft_content.json`中必须包含字幕:
- 字幕文本严格一致性:字幕内容必须与 storyboard.json 中每个场景的 script 字段**逐字逐句完全相同**,包括标点符号、语气词、诗意表达
- 严格禁止:任何形式的简化、概括或改写,禁止擅自增加、删除或修改任何文字内容
- 时间轴同步:字幕时间轴必须与对应的视频精确同步(无延迟,与视频时间轴对齐)
7. `compile-and-run`渲染并自动下载成片
8. `project-close`
## 角色参考图
* 当 `stage_atmosphere.characters` 中设置 `apply_reference_image: true` 时,生成场景图片应使用对应的角色参考图,确保角色形象一致性,否则应不传
---
## 质量建议
### 工作流管理
* 规划先行:先分析制定执行计划
* 工作流顺序:规划→搜索→配音→图片→视频→BGM→字幕→渲染下载
* 音色选择:使用`search-voices`筛选配音音色,匹配场景情感
* 配音优先:先生成配音确定时长,再生成视频(视频时长=ceil(配音秒数),3-16秒)
* 时长控制:配音超16秒需简化台词或拆分场景
- 如简化台词,请务必先修改 storyboard.json 中的 script 或 dialog 字段,确保生成语音时的一致性
* 视频生成策略:
* 方式一:
- 默认**优先使用**`generate-video`生成动态视频
* 方式二:
- 仅使用`generate-video-by-ref`参考图生视频,用户明确指定使用参考图生视频时,才使用该方案
* 方式三:
- 回退方案,除非用户指定必须使用kenburns方案,否则仅在`generate-video`或`generate-video-by-ref`多次失败时使用kenburns模型作为回退方案
* 时间轴计算规则:
- 视频时长为整秒:clip的durationMs必须是1000的倍数
- 时间轴以视频为准:基于整秒计算,而非配音精确毫秒数
- 配音时长用于确定视频时长:配音7008ms→视频8000ms
- 转场滤镜独立性:转场效果不影响音视频时间轴对齐,音频和字幕保持原始时间同步
* 音频修改后的时间同步:
- 重要:用户修改声音后,如新音频时长发生变化,视频必须重新与声音时间同步
- 重新计算视频时长:新配音时长→向上取整到秒→更新视频durationMs
- 同步更新draft_content.json中所有相关的时间轴参数
* draft_content.json时间轴原则:
- 核心原则:tracks时间轴一律以视频为准
- 音频track必须对齐视频时间轴,不能以音频原始时长为准
- 字幕track必须对齐视频时间轴,确保显示时长与视频(而非语音)同步
- 所有clip的startMs都基于视频时间轴计算
* 检查字幕:
- 除非用户明确指定不要字幕,否则 draft_content.json 中必须包含字幕(subtitles 数组)
- 文本严格一致性:字幕内容**必须**与 storyboard.json 中的 script 字段逐字对应
- 字幕时间轴与 TTS 配音精确同步,与视频时间轴对齐(整秒)
- 字幕显示时间不受转场滤镜影响,保持与音频同步
* 转场滤镜策略:除非用户明确要求,否则默认不使用转场滤镜,保持简洁的剪切过渡
* 统一命名:`scXX_*`、`main_bgm_*`、`*_vo.*`
* 时长控制:单镜头3-16s
### 图生视频技巧
* 运动导向:提示词=主体运动+背景变化+镜头运动
* 特征定位:突出主体特征(老人、戴墨镜的女人)便于识别
* 环境一致性:确保场景间环境元素一致
- 时间:保持时间段一致(白天、夜晚),避免无故突变
- 天气:保持天气状况一致(晴天、雨天)
- 地点:场景转换符合空间逻辑
- 光线:保持光源方向和强度一致
### BGM 音量控制
* 音量:默认BGM音量控制为-25db,通过设置BGM音轨的gain effect控制
```json
{
...
"effects": [{
"name": "gain",
"params": {
"db": -25
}
}]
}
```
---
## 规划与搜索规则
### 需求分析
- 理解核心需求:明确视频主题、目标受众、预期效果
- 确定视频类型:科普解说、产品介绍、故事叙述等
- 分析技术要求:视频时长、画幅比例、风格偏好
- 识别素材需求:需要的图片、视频、音频素材
### 搜索内容
- 特定领域知识、热点话题、视觉参考、事实验证
---
## 特性支持
### 转场滤镜
draft_content.json 支持转场滤镜,在`timeline.tracks[].clips[]`中配置`transitionIn`:
```json
{
"transitionIn": {
"name": "fade",
"durationMs": 1000
}
}
```
---
## 故障排查
1. 检查时间轴基准:
- 强制要求:draft_content.json 中所有 tracks 的时间轴必须严格根据各素材的 duration、durationMs 创建
- 视频对齐原则:所有时间轴都必须与视频时长对齐
- 检查字幕的startMs/endMs是否与视频时间轴对齐
- 素材时长依据:timeline 中的 clip 时长必须基于实际生成的素材文件的 duration/durationMs 属性
2. 检查音频修改后的同步:
- 如果用户修改了配音,确认视频时长是否已重新计算
- 验证新配音时长→视频时长的转换是否正确(向上取整到秒)
- 检查所有相关clip的durationMs是否已更新
3. 检查素材时长一致性:
- 对比assets中的durationMs与timeline中clip的durationMs
- 确认没有使用音频原始时长作为视频时长
- 验证字幕时间范围不超出视频总时长
4. 检查时间轴计算:
- 确认所有时间都是1000的倍数(整秒)
- 验证startMs + durationMs的计算正确性
- 检查是否有重叠或间隙的时间段