音频同步和多机位剪辑 — 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 分钟。

  • 按波形同步(调整速度) 用于各源播放速率略有差异的情况(如 24 fps 与 25 fps 的 pull-down)。当单纯偏移对齐无法得出可信结果时,它会在 0.75–1.34 的速率范围内搜索,把估计的速率作为片段变速应用,并同时完成偏移放置;整个过程是一次可撤销操作。

时间码 / BWF 自动探测

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

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

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

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

  • 如果文件不含这些元数据,则无法使用“按源时间同步”,除非手动设置源起始时间(见下文)。

手动设置源起始时间

  • 右键素材 → 属性 打开素材属性对话框,其中包含 源起始时间 字段:一个启用复选框和一个以秒为单位的数值。

  • 适用于元数据中缺少时间码 / BWF 信息,或自动检测结果不正确的素材。

  • 对话框还会标明当前值是自动检测得到的(并注明来源元数据)还是手动设置的。

  • 该值会被 按源时间同步 使用,并随项目保存。

多机位剪辑(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 版本目标,当前实现仍属早期。