用途
captions-overlay 是一套关于嵌入式字幕工作流的叠加原则(overlay doctrine),用于补充上游的 embedded-captions 技能,应用在其之上,而非并入上游技能。它主要解决两类问题:一是如何决定每句口播内容的字幕呈现方式;二是带字幕的合成画面应如何布局。
主要能力
字幕模型:drop / rail / embed
每一句口播内容都属于以下三种之一:
- drop(丢弃):填充词,如 um/uh、结巴、自我更正,不显示。
- rail(字幕轨):默认方式,即普通口播内容(逐字),以干净的下三分之一字幕显示,位于前景、可读。重点词可以内联
emphasis高亮(强调色 / 当前词弹出),但仍留在字幕轨上。 - embed(嵌入):被提升的高潮节拍,一个大词合成在主体之后(通过遮罩遮挡),带有设计的入场与出场。
字幕轨承载大部分文本;embed 是稀缺的、需要争取的高潮——每个节拍不超过 1 个,绝不出现两个相邻或同时可见,间隔至少一个节拍。短片段通常一个 embed;长讲解视频大约每节一个。把每个词都嵌入是常见错误。
这是 Standard 模式的形态(rail = 逐字下三分之一;embed = 合成在主体之后的高潮)。Cinematic 模式去掉字幕轨,让所有内容都采用 embed 风格——仅用于纯电影化需求,绝不用于需要文字可读的讲解 / 旁白。
字幕轨优先、嵌入稀缺(关键规则)
引自 embedded-captions 的不可协商项:
- 口播 / 讲解视频以字幕轨优先。 不要嵌入整段转录——大部分文本是字幕轨,只嵌入高潮。全部嵌入是默认错误。
- 嵌入稀缺且有间隔。 每句 / 每节拍不超过 1 个 embed,绝不出现两个相邻或同时可见,间隔至少一个节拍,最多一个
apex。climax 是每个节拍的峰值,而不是“整段视频唯一的回报”。
叠加法则:字幕不是预留带
在生成的发布合成中,当启用字幕时,finalize 会把一条小而精简的逐词字幕行作为叠加层合成在整个影片之上(单行文本,底部居中,约占画布高度的底部 5-8%)。它是叠加层,不是预留区域(引自 product-launch-video 场景代理的约束 #13):
- 将合成居中于真正的垂直中心——y = H / 2(横屏 540,竖屏 960)。不要为了“给字幕腾地方”而把内容上移;一个居中在 0.42 × H 且底部有空白带的合成是 bug,不是修复。
- 内容可以延伸到画布底部。全出血主体、字幕轨和背景都欢迎。
- 一条温和的礼貌规则: 避免把关键的小号可读文本(URL 行、法律行、副字幕)正好停在底部约 80px 的中央跨度内,也就是字幕行所在的位置——叠加层会与之冲突。字幕下方的大幅图像 / 卡片 / 环境内容没问题;字幕皮肤设计为可在内容之上阅读。
- 没有机器 keep-out 门禁(旧的
captions.mjs keepout检查已退役)。Finalize 快照 QA 以视觉方式判断字幕叠在内容之上的可读性。
当字幕禁用时: 定位自由度完全相同——叠加层只是不存在。
使用方式
该技能应用在 embedded-captions 之上,不并入上游技能。在以下情况加载:为口播或发布视频添加字幕 / 副标题时;决定某句该丢弃、走逐字字幕轨,还是提升为稀缺的嵌入式高潮时;布局将承载字幕的合成时(不要预留 keep-out 带);或在字幕下将合成居中于真正的画面中心时。
适用场景
- 口播视频、讲解视频、发布视频的字幕添加。
- 决定每句口播内容的字幕呈现方式(drop / rail / embed)。
- 带字幕的合成画面布局与居中。
限制
- 该技能是叠加原则,应用在 embedded-captions 之上,不并入上游技能。
- Cinematic 模式仅用于纯电影化需求,绝不用于需要文字可读的讲解 / 旁白。
- 嵌入必须稀缺且有间隔,每节拍不超过 1 个,绝不两个相邻或同时可见。
- 没有机器 keep-out 门禁,可读性由视觉判断。
- 资料未提供具体的安装命令、代码示例、收费或价格信息。