Ios 当AVQueuePlayer从一个资源跳到另一个资源时,会出现恼人的延迟
我有一个Ios 当AVQueuePlayer从一个资源跳到另一个资源时,会出现恼人的延迟,ios,swift,avfoundation,mpmovieplayercontroller,avqueueplayer,Ios,Swift,Avfoundation,Mpmovieplayercontroller,Avqueueplayer,我有一个AVQueuePlayer,它应该按顺序播放表示一个连续视频的连续片段的avurlaste数组 每当一个片段结束而另一个片段开始时,都会出现一个小故障(帧保持约0.2秒,声音变弱) 我试着研究如何绕过这个问题,但没有发现任何东西。我试着通过让2个AVQueuePlayer来解决这个问题,并在每个片段结束前大约0.2秒在两者之间切换。这个问题没有解决 有没有办法解决这个问题 注意:当使用mp4 joiner软件将mp4片段连接在一起时,输出是一个平滑的视频,没有任何小故障。我们已经完全了解
AVQueuePlayer
,它应该按顺序播放表示一个连续视频的连续片段的avurlaste
数组
每当一个片段结束而另一个片段开始时,都会出现一个小故障(帧保持约0.2秒,声音变弱)
我试着研究如何绕过这个问题,但没有发现任何东西。我试着通过让2个AVQueuePlayer
来解决这个问题,并在每个片段结束前大约0.2秒在两者之间切换。这个问题没有解决
有没有办法解决这个问题
注意:当使用mp4 joiner软件将mp4片段连接在一起时,输出是一个平滑的视频,没有任何小故障。我们已经完全了解了这一点。无论你做什么,你都会经历那个小故障。原因是
AVQueuePlayer
的工作方式。当前一个项目结束时,它将加载下一个项目。因此,如果你的视频很大,你也可能会看到2-3秒的空白屏幕。一个解决方案就是您提到的,即使用两个AVQueuePlayer
。但正如你所说,它对你不起作用,即使你让它起作用,它也会很笨拙
更好、更干净的解决方案是AVMutableComposition
。一开始它可能看起来很复杂,但它的速度很快,而且是一次性的任务。您可以创建所有视频的合成,并在一个简单的AVPlayer
中播放。在你的情况下,我假设你只需要玩它,所以你甚至不需要导出它
要了解如何使用AVMutableComposition
,请完成以下步骤。它将用您需要的确切代码进行解释。正如您所说,“2个AVQueuePlayer”方式仍然存在问题(一些声音故障)。
我面临同样的问题,并使用HLS解决了它
您可以播放本地TS文件
首先,从原始电影文件制作m3u8和TS文件
e、 g
然后,将资源文件添加到iOS设备。您可以从iTunes添加文件,添加为资源,或使下载功能和从应用程序获取
运行http服务器,然后将本地URL传递给AVPlayerController。我使用cocoaHttpServer
我在这里举了一个简单的例子
这个答案对您有帮助吗?
mediafilesegmenter -t 10 sample.mp4