用途:当同一次活动由多台摄像机、手机或独立录音设备录制时,计算各素材相对同一参考时间线的时间偏移,供下游按需对齐。
实现:算法位于开源 polysync 包,本技能不再自带脚本。先安装:python3 -m pip install -U polysync(需 ffmpeg/ffprobe 在 PATH 中)。常用命令:polysync sync REFERENCE SOURCE(把 SOURCE 对齐到 REFERENCE 并写边车);polysync sync REFERENCE SOURCE --partial(源只覆盖会话一部分);polysync verify REFERENCE SOURCE SOURCE.sync.json(独立残差校验)。每个非参考机位各跑一次,参考同一参考文件。
主要能力:先按响度自动选择音轨(多轨专业机如 Sony FX6 MXF 的 a:0/a:1 常为静音,话筒在 a:2,故不能直接用 0:a:0);提取 8 kHz 单声道 PCM,计算 100 Hz 对数能量包络并高通滤波;FFT 互相关得粗偏移,再用 60 秒探针做样本级细化;每约 3 分钟多点探测做线性漂移拟合,取中点规范偏移。输出 .sync.json 边车,字段含 source、reference、delta_seconds、drift_slope、overlap_in_reference、overlap_in_source、verification(median_residual_ms、residual_spread_ms、probe_count)。参考输入也会得到 delta_seconds 为 0 的边车,以便统一处理。
设计原则:不改原始文件、不复制、不重编码。早期版本会生成 *_synced.MOV,现已移除,理由是磁盘翻倍、重编码有损且耗时。下游用 ffmpeg 的 -itsoffset 在消费时应用偏移;注意 -itsoffset 必须放在对应输入的 -i 之前;输出到无头原始 PCM(-f s16le)时该参数无效,需在 numpy 里做索引偏移。校验通过标准为 median_residual_ms < 15 且残差离散小于一帧;离散超限但中位数很小通常是远场话筒噪声,剪辑可忽略,仅长时口型同步才需处理。
适用与限制:适合多机位同场素材;单机素材、已在剪辑时间线对齐的素材不适用。相机剪辑通常可忽略漂移(drift_slope 置 0);超过 30 分钟的口型同步才需按 atempo = 1 + drift_slope 应用漂移。同步之后的自动剪辑/切换/画中画请用 wjs-editing-multicam。其他平台支持、收费与价格信息暂未提供。