同一份 metadata
任意子功能提交后都写回同一份成片配置。再次打开任意入口,都用最新 metadata 恢复表单和预览。
评估范围是同一个画布视频编辑器底座下的两个入口:添加字幕、视频画中画。用户看到的是不同工具入口;底层应读取和写回同一份成片 metadata,避免字幕、PIP、布局互相不同步。
不要实现两个互不感知的独立工具。前端应实现一个 video composition editor:字幕调整、PIP 调整只是不同子功能面板;多个画布菜单入口只决定默认打开哪个面板和隐藏哪些不相关控件。
任意子功能提交后都写回同一份成片配置。再次打开任意入口,都用最新 metadata 恢复表单和预览。
字幕层、PIP 层、分屏安全区、输出画幅使用同一个预览模型。PIP 面板里的字幕预览不能另做一套。
用户仍看到“调整字幕”“视频画中画”等入口;进入后只是打开同一编辑器的不同 tab / panel。
line-groups 重组,不由前端估算时间。第一阶段只对两个特定技能产出的资产开放入口。技能产出时必须写入可恢复的 composition metadata,包括字幕 line-groups、词级 timing、当前样式和 PIP 配置;缺少必要入参时对应入口置灰。第二阶段再为普通视频补 ASR / Whisper、资产选择、上传等补齐能力。
演示中卡片会先显示处理中,再切换为已完成;实际以任务状态回写为准。
工具初始化必须读取当前资产真实配置,不能只套前端默认值。
前端预览使用的参数名、范围、单位要和后端任务参数一致。
后端输出要匹配提交前预览,并把最终参数快照回写到新资产 metadata。
| 需要后端 / metadata 提供 | 用于什么 | 评估结论 |
|---|---|---|
统一的 composition metadata:字幕 line-groups、词级 timing、样式配置、大小写、语言 / 字体和 PIP 配置快照。 |
任意入口打开编辑器时恢复当前产物;前端按 word_indices / page_index 调整断句和换行,时间由词级 timing 推导。 |
需要统一 metadata 契约 |
结构化字幕重渲能力:line-groups、样式预设、字号、上下位置、大小写、字幕安全区和逐词高亮。 |
GUI 编辑提交结构化配置,由后端重渲;complete_ass_url 只作为最终产物或老接口兜底。 |
需要服务支持 |
| PIP 关联视频 URL / assetId / 名称,以及同一份 composition metadata 中的 PIP 配置快照。 | 打开 PIP 面板时恢复布局、大小、位置、取景、音量、抠像、描边,同时复用字幕层。 | 需要结果回写 |
| 资产选择 / 上传后转可访问 URL。 | 当 metadata 没有关联 PIP 视频时,允许用户补齐第二路视频。 | 第二阶段或首版兜底 |
| 无字幕 metadata 视频的 ASR / Whisper 转写服务。 | 未来普通视频打开字幕工具前,先生成准确词级 timing 和 line-groups。 |
第二阶段补齐 |
| 抠像预览资源:alpha、mask、segmentation 或低清预览渲染接口。 | 真实预览人物抠像和抠后人物描边。 | 首版可不做真实预览 |
参数映射以完整合并版原型为准。前端展示的是两个入口,提交时应包装成同一份 video composition payload;后端需要返回可恢复的 metadata 快照,保证再次打开任意入口时预览和表单一致。
| 现有原型调整维度 | 对应参数 / metadata | 说明 | 范围 | 默认值 | 对齐动作 |
|---|---|---|---|---|---|
| 字幕句子列表 | line_groups.words[] + line_groups.lines[] |
左侧列表用于改错字、大小写、标点、断句和换行;逐词高亮依赖后端返回的词级 timing。 | 词级权威时间 + 行 / 屏分组。 | 读取 metadata 中的 line-groups。 |
后端需回写 line-groups |
| 回车拆分 / 退格合并 | page_index / word_indices 重组 |
Enter / Backspace 只改变展示分组:一句话可拆成多行,多行可合并成一行,不改变 TTS 内容和词级时间。 | 每个词必须被分配且只分配到一个 page;page 连续且非空。 | 无。 | 前端需按后端协议改造 |
| 样式预设 | caption_style |
首版不提供单独基础颜色修改,只提供四种样式预设;样式包含高亮、描边、阴影等 ASS 规则。 | purple_highlight / yellow_outline / bluegreen_gradient / word_pop |
purple_highlight |
前端枚举按后端规范传参 |
| 字体大小 | caption.fontSize / override_fontsize |
画布可拖拽缩放,表单滑轴同步;最终输出需和预览字号一致。 | 16 - 52 px | 28 px | 双方需对齐单位 |
| 大小写 | caption.text_case |
仅影响显示和最终烧录文本,不改变原始口播音频。 | uppercase / original |
uppercase |
后端需支持可恢复配置 |
| 字幕安全间距与自动换行 | caption.safeArea / caption.lineWrap |
不提供给用户配置。后端需按视频尺寸返回左右安全间距、最多 2 行和自动换行结果,前端按同一份配置预览。 | 随画幅、字体、语言和样式变化。 | 后端返回;一句话能放下一行时只显示一行。 | 后端需返回可恢复配置 |
| 字幕上下位置 | caption_position / caption_anchor_pct |
按后端标准定义;上下分屏跟随开启时由分屏比例自动计算并同步表单值。 | 4% - 82% | 读取后端 metadata;上下分屏跟随时贴近分屏交界处。 | 前端按后端锚点标准实现 |
| 字幕位置跟随分屏 | caption.followSplit / captionPlacement.mode |
只在上下分屏提供。左右分屏不自动调整字幕位置。 | true / false |
上下分屏默认 true;用户手动拖动后 false |
前端已原型化 |
| 现有原型调整维度 | 对应参数 / metadata | 说明 | 范围 | 默认值 | 对齐动作 |
|---|---|---|---|---|---|
| 画中画来源 | pip_video_url / pip_asset_id |
优先读取技能产物 metadata,但用户界面展示视频文件名;允许从当前画布选择其他视频资源或上传。 | URL / assetId | metadata 中关联的视频文件。 | 后端需回写关联资产 |
| 是否存在 PIP | metadata.hasPip |
字幕入口根据该字段决定是否显示 PIP;没有 PIP 时字幕工具只显示主视频。 | true / false |
由资产 metadata 决定。 | 后端需提供判断字段 |
| 布局 | pip.layout / layout |
决定后续显示浮窗配置、分屏配置、取景和音量。 | overlay / split-left / split-top |
overlay |
双方需对齐枚举 |
| 浮窗位置 | overlay_position / overlay_x/y |
四角快捷位和画布拖拽位置共用;拖拽后可写入 custom 坐标。 | 左上 / 右上 / 左下 / 右下 / custom | 右上 | 双方需对齐百分比坐标 |
| 浮窗大小 | overlay_size |
浮窗占主画布宽度比例;画布四角缩放同步该值。 | 18% - 58% | 30% | 前端已原型化 |
| 浮窗形状 | overlay_shape |
影响预览裁切容器和后端合成 mask。 | circle / square / vrect / hrect |
circle |
双方需对齐枚举 |
| 分屏比例 | split_pip_ratio + split_pip_side |
数字人区域占比。上下分屏默认数字人在上方;同时驱动字幕跟随位置。 | 24% - 50% | 34%;上下分屏 split_pip_side = first |
后端默认需和 UE 技能产物对齐 |
| 画面取景目标 | cropTarget |
浮窗模式只调整画中画取景;分屏模式可在主视频取景和画中画取景之间切换。 | pip;分屏时增加 main |
浮窗默认 pip |
前端已原型化 |
| 水平 / 垂直取景 | main_framing.x/y、pip_framing.x/y |
百分比平移,用于调整视频在容器内的取景范围;主视频取景只在分屏裁切场景提供。 | -60 - 60 | 0 | 双方需对齐变换公式 |
| 取景缩放 | main_framing.scale、pip_framing.scale |
用于主视频或 PIP 视频取景缩放;主视频取景只在分屏裁切场景提供。 | 70% - 220% | 100% | 双方需对齐 transform |
| 人物抠像 | pip_cutout |
仅浮窗布局下展示。抠像在最终渲染输出时处理,不支持实时预览。 | true / false |
false |
后端需提供抠像能力 |
| 描边 | stroke.enabled/color/width |
仅浮窗布局下展示;抠像开启时最终描边对象是抠后人物,前端首版不真实预览。 | 颜色 + 2 - 18 px | 关闭;白色;6 px | 后端需支持抠后描边 |
| 主视频音量 | main_volume |
合成输出中的主视频音量,不等同播放器预览音量。 | 0 - 100 | 30 | 双方需对齐音量曲线 |
| 数字人音量 | pip_volume |
用户理解为“口播讲解音量”。实际技能产物中讲解声音可能来自独立 TTS 音轨,而不是 PIP 视频本身,开发需评估合成链路如何映射。 | 0 - 100 | 100 | 需确认 TTS / PIP 音频来源 |
| 参数 / 服务 | 前端处理方式 | 原因 |
|---|---|---|
PIP 管道字段:instruction、source_system、capability、gateway_task_id、callback_url |
任务系统自动填。 | 不属于用户配置。 |
main_video_url、pip_video_url |
主视频来自画布选中资产;PIP 视频来自 metadata、资产选择或上传。 | 用户不手填 URL。 |
overlay_x/y、overlay_margin、split_pip_side、main_framing、pip_framing |
通过拖拽、方向按钮、取景控件或默认配置生成。 | 用户看画面,不看接口结构。 |
user_brief |
由表单快照自动生成。 | 给 agent / 任务记录使用。 |
override_primary_color、ass_style_sample_url、srt_url、complete_ass_url |
首版只暴露样式预设;字幕文件 URL 由服务生成。 | 避免用户理解中间文件和底层样式字段。 |
line-groups。line-groups 重组 page_index / word_indices,时间由词级 timing 自动推导,不由前端估算。metadata 或 URL。