ios - AVQueuePlayer 从 Assets 跳转到另一个 Assets 时出现恼人的滞后

标签 ios swift avfoundation mpmovieplayercontroller avqueueplayer

我有一个 AVQueuePlayer,它应该按顺序播放一组 AVURLAsset,代表一个连续视频的连续片段。

每当一个片段结束而另一个片段开始时,就会出现一个可以很好地注意到的小故障(帧保持大约 0.2 秒并且声音被静音)

我尝试研究如何解决该问题,但没有找到任何结果。我尝试通过使用 2 个 AVQueuePlayer 来解决它,并在每个片段结束前大约 0.2 秒之间切换。问题未解决。

关于如何解决这个问题有什么想法吗?

注意:使用 mp4 连接器软件将 mp4 片段连接在一起时,输出是一个没有任何故障的流畅视频。

最佳答案

正是经历了这一切。无论您做什么,您都会遇到这种故障。原因在于 AVQueuePlayer 的工作方式。它在上一个项目结束时加载下一个项目。因此,如果您的视频很大,您可能还会看到 2-3 秒的空白屏幕。一种解决方案是您提到的,即使用两个 AVQueuePlayer。但正如你所说,它不适合你,即使你让它工作,它也会很笨拙。

更好、更干净的解决方案是 AVMutableComposition。起初它可能看起来很复杂,但它是快速且一次性的任务。您创建所有视频​​的合成并在简单的 AVPlayer 中播放。对于您的情况,我假设您只需要播放它,所以您甚至不必导出它。

要了解如何使用 AVMutableComposition,请阅读此 link .它将用您需要的确切代码进行解释。

关于ios - AVQueuePlayer 从 Assets 跳转到另一个 Assets 时出现恼人的滞后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31601330/

相关文章:

swift - Swift 中的特例模式是多余的吗?

swift - 无法关闭键盘,UITextField 委托(delegate)被调用 OK

ios - webview 加载完成后,事件指示器不会停止

ios - StreamReader 的 Swift 版本仅流式传输整个文件(不是按 block 传输,这是需要的)

ios - 从 HealthKit 获取一系列血糖记录

Swift 3 - AVCapture 自定义相机 View

swift 3 : Get length of AVAudioPCMBuffer as TimeInterval?

iphone - 查找设备相机分辨率iOS的方法

iphone - 在标签栏 View 之前查看

iphone - 'NSInternalInconsistencyException',原因 : 'The NIB data is invalid.' for CustomCell