feat(video-pipeline): 重构视频流水线,优化成片时间线规则和状态管理
- 引入 manifest.json 作为唯一状态源,所有子 Agent 操作回写 manifest - 重构 timebuilder 逻辑,支持四种视频适配策略(加速/裁剪/放缓/画面停顿) - 统一 TTS 阶段输出结构,单句和多句均写入 segments[] - 重写字幕和配音生成,基于 segments 精确时长实现音画同步 - 新增 confirm 命令支持按 id 范围确认,上传阶段分离图片和视频 - 添加中间产物写入 output/ 目录的约束,清理废弃配置参数
This commit is contained in:
@@ -15,6 +15,14 @@ async function phaseAssemble(manifest, manifestPath, options) {
|
||||
const hasVideos = videoItems.length > 0
|
||||
const mode = hasVideos ? 'videos' : 'images'
|
||||
|
||||
// 前置校验:图片模式下检查 file 字段
|
||||
if (mode === 'images') {
|
||||
const missingFile = manifest.items.filter(it => !it.file)
|
||||
if (missingFile.length > 0) {
|
||||
throw new Error(`${missingFile.length} 个 item 缺少 file 字段(id: ${missingFile.map(it => it.id).join(', ')}),请先运行 images 阶段生成图片`)
|
||||
}
|
||||
}
|
||||
|
||||
const assembleArgs = {
|
||||
input: dir,
|
||||
manifest: manifestPath,
|
||||
@@ -22,7 +30,6 @@ async function phaseAssemble(manifest, manifestPath, options) {
|
||||
format: manifest.format || accountConfig.defaultFormat || '9:16',
|
||||
subtitles: mode === 'images' ? 'true' : 'false',
|
||||
voiceover: manifest.items.some(it => it.audio) ? 'true' : 'false',
|
||||
duration: '4',
|
||||
animation: capcutConfig.animation || '渐显+放大',
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user