gpt4 book ai didi

ios - AVPlayer "freezes"开始缓冲音频流的应用程序

转载 作者:IT王子 更新时间:2023-10-29 07:37:49 25 4
gpt4 key购买 nike

我正在使用 AVQueuePlayer 的子类,当我添加带有流式 URL 的新 AVPlayerItem 时,应用会卡住大约一两秒。卡住是指它不响应用户界面上的触摸。此外,如果我已经播放了一首歌曲,然后将另一首歌曲添加到队列中,AVQueuePlayer 会在播放第一首歌曲时自动开始预加载歌曲。这使得应用程序在两秒钟内不响应 UI 上的触摸,就像添加第一首歌曲但歌曲仍在播放时一样。所以这意味着 AVQueuePlayer 正在主线程中执行某些导致明显“卡住”的操作。

我正在使用 insertItem:afterItem: 添加我的 AVPlayerItem。我测试并确保这是导致延迟的方法。也许这可能是 AVPlayerItem 在将其添加到队列时被 AVQueuePlayer 激活时所做的事情。

必须指出,我正在使用 Dropbox API v1 beta 通过使用此方法调用来获取流式 URL:

[[self restClient] loadStreamableURLForFile:metadata.path];

然后当我收到流 URL 时,我将它发送到 AVQueuePlayer,如下所示:

[self.player insertItem:[AVPlayerItem playerItemWithURL:url] afterItem:nil];

所以我的问题是:如何避免这种情况?我应该在没有 AVPlayer 帮助的情况下自己预加载音频流吗?如果是这样,我该怎么做?

谢谢。

最佳答案

不要使用 playerItemWithURL 它是同步的。当您收到带有 url 的响应时,试试这个:

AVURLAsset *asset = [[AVURLAsset alloc] initWithURL:url options:nil];
NSArray *keys = @[@"playable"];

[asset loadValuesAsynchronouslyForKeys:keys completionHandler:^() {
[self.player insertItem:[AVPlayerItem playerItemWithAsset:asset] afterItem:nil];
}];

关于ios - AVPlayer "freezes"开始缓冲音频流的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7701212/

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