gpt4 book ai didi

ios - 使用 AVPlayer 音频播放 AVMutableComposition 不同步

转载 作者:可可西里 更新时间:2023-11-01 03:35:11 26 4
gpt4 key购买 nike

我有一个带有 2 个音轨和一个视频轨的 AVMutableComposition。我正在使用该组合从 .mov 文件中串接大约 40 个不同的视频剪辑,将每个剪辑的视频内容放入我的组合的视频轨道中,并将音频放入音轨中。我用于音乐的第二个音轨。我还有一个用于标题图形的同步层。

当我使用 AVPlayer 播放此作品时,音频慢慢变得不同步。开始变得明显需要大约 4 分钟。似乎如果我只将少数较长的剪辑串在一起,问题就不会那么明显,当有很多剪辑较短的剪辑(在我的测试中大约 40 个)时,它会变得非常糟糕。

暂停和播放不会重新同步音频,但搜索会。换句话说,如果我让视频播放到最后,即使我暂停并播放到最后,口型同步也会明显关闭,但是,如果我在接近尾声的时候寻找时间,音频就会恢复同步。

我现在的 hacky 解决方案是每分钟左右寻找 currentTime + 1 帧。由于搜索操作的滞后,这会在视频中造成不愉快的跳跃,因此不是一个好的解决方案。

使用 ExportSession 导出不会出现此问题,音频在输出影片中保持同步。

我想知道 AVPlayer 中新的 masterClock 属性是否就是这个问题的答案,如果是,它是如何使用的?

最佳答案

我遇到了同样的问题并通过以下方式指定时间尺度来修复它,以及许多其他音频和视频问题:

CMTime(seconds: my_seconds, preferredTimescale: CMTimeScale(600))

之前,我的时间尺度是 CMTimeScale(NSEC_PER_SEC)。这让我在以不同的帧速率创作剪辑时感到紧张,加上 Eddy 在这里提到的这种音频不同步。

尽管看起来像一个神奇的数字,但 600 是 24、30、60 和 120 的公倍数。这些是用于不同目的的常用帧速率。公倍数避免了在组合多个剪辑时绕过舍入问题。

关于ios - 使用 AVPlayer 音频播放 AVMutableComposition 不同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12983315/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com