Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/106.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 当AVQueuePlayer从一个资源跳到另一个资源时,会出现恼人的延迟_Ios_Swift_Avfoundation_Mpmovieplayercontroller_Avqueueplayer - Fatal编程技术网

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