音频同步和多机位剪辑 — Oak Video Editor Manual

音频同步和多机位剪辑

Oak 提供基于时间码与波形的音频同步功能,以及基础的多机位剪辑支持。

音频同步

按源起始时间同步(Synchronize by Source Time)

  • 适用场景:不同机位或录音设备记录了相同的源时间码 / BWF 时间参考。

  • 操作:在时间轴中选中需要对齐的多个片段 → 右键 → 按源时间同步

  • Oak 会读取每个素材的 source_start_time,计算时间偏移并把片段移动到对应位置。

按波形同步(Synchronize by Waveform)

  • 适用场景:没有可靠时间码,但各机位/录音的音频内容相同。

  • 操作:在时间轴中选中 ≥2 个带有已缓存波形的片段 → 右键 → 按波形同步``(快捷键 ``Ctrl+Shift+W)。

  • 算法提取音频 RMS 包络,通过归一化互相关估计偏移量。

  • 窗口大小为 50 ms,最大偏移支持 10 分钟。

时间码 / BWF 自动探测

  • 导入素材时,FFmpegDecoder 会自动探测以下元数据:

    • timecode:LTC / VITC 等时间码字符串。

    • time_reference:BWF bext 块中的采样点参考。

  • 探测到的源起始时间会写入素材的 FootageDescription 并随项目保存。

  • 如果文件不含这些元数据,则无法使用“按源时间同步”。

多机位剪辑(Multicam)

Oak 的基础多机位功能允许把嵌套 Sequence 内的多个轨道作为不同“机位”进行切换。

创建多机位

  1. 先把各个机位的素材放到同一个 Sequence 的不同轨道上,并按上述方法对齐。

  2. 在时间轴中选中该嵌套 Sequence 的片段(其 connected_viewer 必须是 Sequence)。

  3. 右键 → 勾选 多机位 (Multi-Cam)。

  4. Oak 会自动创建一个 MultiCamNode,把 Sequence 的输出改接到该节点,并把各轨道接到 kSourcesInput

切换机位

  • 打开 多机位 面板(默认隐藏,通过 窗口 菜单打开),会显示各机位缩略图网格。

  • 快捷键:

    • 19:切换到对应机位,并在当前播放头处分割片段。

    • Ctrl+1Ctrl+9:切换机位但不分割片段。

  • 点击多机位面板中的网格也会切换并分割片段。

  • 切换动作会记录为撤销命令,可 Ctrl+Z 撤销。

多机位输出

  • MultiCamNodekCurrentInput 决定当前输出哪个机位。

  • 在预览模式下,RenderProcessor 会生成 multicam_output 属性供 MulticamDisplay 显示所有机位;最终输出仍由当前选中的机位决定。

限制

  • 没有专门的“多机位同步向导”,需要先手动把素材放到同一 Sequence 的不同轨道上并对齐。

  • 仅支持 Sequence MultiCamNode 的简单结构。

  • 没有切点列表(cut list)导出功能。

  • README 路线图中将“完整多机位角度切换”列为 0.5 版本目标,当前实现仍属早期。

音频同步限制

  • 波形同步依赖 AudioWaveformCache 已缓存区域;未缓存部分会用 0 填充,可能降低精度。

  • 没有手动输入 / 修改源起始时间的 UI,完全依赖素材元数据自动探测。

  • 当前只支持整体偏移对齐,不支持 stretch / 变速同步。