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

ios – 使用AVPlayer音频播放AVMutableComposition不同步,第1张

概述我有一个带有2个音轨和一个视频轨的AVMutableComposition.我正在使用该合成来从.mov文件中串起大约40个不同的视频片段,将每个片段的视频内容放入我的合成视频轨道和音频轨道中的音频.我用于音乐的第二个音轨. 我还有一个标题图形的同步图层. 当我使用AVPlayer播放此合成时,音频慢慢变得不同步.大约需要4分钟才能开始变得明显.看起来如果我只将一小撮较长的剪辑串在一起,问题就不那 我有一个带有2个音轨和一个视频轨的AVMutableComposition.我正在使用该合成来从.mov文件中串起大约40个不同的视频片段,将每个片段的视频内容放入我的合成视频轨道和音频轨道中的音频.我用于音乐的第二个音轨.
我还有一个标题图形的同步图层.

当我使用AVPlayer播放此合成时,音频慢慢变得不同步.大约需要4分钟才能开始变得明显.看起来如果我只将一小撮较长的剪辑串在一起,问题就不那么明显了,那就是当有很多剪辑较短的剪辑(在我的测试中约为40)时,它变得非常糟糕.

暂停和播放不会重新同步音频,无论如何寻求.换句话说,如果我让视频播放到最后,即使我在整个过程中暂停和播放,唇音同步也会明显关闭,但是,如果我寻找一段时间,音频会重新同步.

我现在的Hacky解决方案是每分钟左右寻找当前时间1帧.由于搜索 *** 作的延迟,这会在视频中产生令人不快的跳跃,因此不是一个好的解决方案.

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

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

解决方法 我有同样的问题并通过以下列方式指定时间尺度来修复它,以及许多其他音频和视频内容:
CMTime(seconds: my_seconds,preferredTimescale: CMTimeScale(600))

之前,我的时间尺度是CMTimeScale(NSEC_PER_SEC).这使得我在以不同的帧速率编写剪辑时感到紧张,加上Eddy在这里提到的音频不同步.

尽管看起来像一个幻数,600是24,30,60和120的常见倍数.这些是用于不同目的的通常帧速率.常用的多个避免了在编写多个剪辑时拖动舍入问题.

总结

以上是内存溢出为你收集整理的ios – 使用AVPlayer音频播放AVMutableComposition不同步全部内容,希望文章能够帮你解决ios – 使用AVPlayer音频播放AVMutableComposition不同步所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1099710.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存