用途:在 beat-timings.md 定稿后的阶段使用,规范旁白式 Remotion 视频的四种模式,使音频驱动时间线正确运行。
主要能力:timing.ts 作为 beat 边界的唯一事实来源;beat-local 时间,即每个场景在自己的 <Sequence> 内读取 useCurrentFrame(),其 T 常量以 beat 本地秒为单位;补隙序列,每个场景的 durationInFrames 延伸到下一个 beat 起点,并用背景 AbsoluteFill 垫底,避免场景间出现黑帧;片尾卡模式,固定为 lockup + 网站 URL,不使用标语叠加。
规则文件:rules/timing-ts.md 给出 timing.ts 结构;rules/beat-local-time.md 说明场景为何使用 beat-local T 常量及音频变化时如何重新计时;rules/gap-fill-sequence.md 给出 endFrame = next ? Math.floor(next.start*fps) : totalFrames 模式;rules/end-card-pattern.md 说明 lockup + url、springs、无标语。
场景结构:每个场景文件遵循统一形状,注释标注 Beat N 与 VO 提示(本地秒),导入 useCurrentFrame、useVideoConfig,定义 T 常量,导出 BeatN 组件,按 t 与 T.* 触发揭示。
主合成:用补隙序列组装每个 beat,并在顶层挂载一次音频;premountFor={30} 让场景提前一秒挂载,使 spring 入场在切换时已在进行。
片尾卡:配置 lockup 与网站资源,最后一个 beat 无旁白、约 5 秒,淡入 lockup、绘制绿色横线、再显示 URL,无标语叠加。
音频变化:硬性规则是音频变化即重新推导一切——阶段产出新 transcript.json 与 beat-timings.md,更新 timing.ts 的起止值,按新的子提示绝对时间重算各场景 T 常量,再重新渲染;切勿凭听感修改 T 常量。
限制:更深入的 Remotion API 参考见上游 remotion-best-practices 技能;具体资源路径与 URL 以配置为准,资料未提供实际值。