gpt4 book ai didi

ios - 一个 AVPlayerItem 一次只能占据玩家队列中的一个位置?

转载 作者:行者123 更新时间:2023-12-05 06:25:58 24 4
gpt4 key购买 nike

我看过many questions对此,没有人有解决方案。我得到:

An AVPlayerItem can occupy only one position in a player's queue at a time

在控制台中快速点击一个应该具有以下两种状态之一的 View 按钮:

  1. 成功预加载视频
  2. 只有一个 videoURL,然后将在另一个 VC 中加载。

为什么会发生这种情况,我该如何解决?

这是我的代码,它在转换到 VC 时处理了这个:

if numberMedia == 0 {

if selectedPost!.interimMedia[numberMedia].playerLayer != nil {
playCurrentMediaVid(currentMedia: selectedPost!.interimMedia[numberMedia])
} else {

let videoURL = selectedPost!.interimMedia[numberMedia].videoURL

if videoURL != nil {
//if we did not preload the video but have the cached vidURL
preloadVideo(media: selectedPost!.interimMedia[numberMedia])
playCurrentMediaVid(currentMedia: selectedPost!.interimMedia[numberMedia])
} else {
//if we dont have the cached vid url
selectedPost!.interimMedia[numberMedia].videoURL = getVideoURL(stringUrl: selectedPost!.interimMedia[numberMedia].videoURLString)
preloadVideo(media: selectedPost!.interimMedia[numberMedia])
playCurrentMediaVid(currentMedia: selectedPost!.interimMedia[numberMedia])
}
}

}

最佳答案

我调查了这个问题,发现了以下问题:

如果您打印 playerQueue 的 status.rawValue 和 AVPlayerQueue(AVPlayer 的子类)的 currentItem(AVPlayerItem),您会发现状态将为 0 或 1。供引用:0 表示状态。 unknown 和 1 表示 status.readyToPlay(你想要的那个)。因此,如果两次打印都为 0,则失败,这就是您收到错误的原因。该位置未知,但您正在尝试 .play() playerQueue,这当然会导致错误。

我对你的建议(修复)是找到一种方法来加快 AVPlayerItem 中媒体的加载速度(这可以通过将 URL 放入 AVAsset 而不是立即将 URL 初始化为AVPlayer),或者可以使用 KVO 来检测它何时完成加载(有点像 completionBlock-esque 解决方案)。

关于ios - 一个 AVPlayerItem 一次只能占据玩家队列中的一个位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56551087/

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