我有一个带有 2 个音轨和一个视频轨的 AVMutableComposition。我正在使用合成从 .mov 文件中串起大约 40 个不同的视频剪辑,将每个剪辑的视频内容放在我的合成的视频轨道中,并将音频放在音轨中。我用于音乐的第二个音轨。我还有一个用于标题图形的同步层。
当我使用 AVPlayer 播放此作品时,音频会慢慢不同步。开始变得明显大约需要 4 分钟。似乎如果我只将少数较长的剪辑串在一起,问题就不那么明显了,当有很多剪辑较短的剪辑(在我的测试中约为 40 个)时,它会变得非常糟糕。
暂停和播放不会重新同步音频,但是搜索会。换句话说,如果我让视频播放到最后,即使我在整个过程中暂停和播放,唇形同步也会明显关闭,但是,如果我寻找到接近尾声的时间,音频就会恢复同步。
我现在的 hacky 解决方案是每分钟左右寻找 currentTime + 1 帧。这会在视频中产生令人不快的跳跃,这是由于查找操作的延迟而导致的,因此不是一个好的解决方案。
使用 ExportSession 导出不会出现此问题,音频在输出影片中保持同步。
我想知道 AVPlayer 中的新 masterClock 属性是否是这个问题的答案,如果是,它是如何使用的?