Ios AVPlayerItem在玩家中只能占据一个位置';一次排队吗?
我已经看到了这一点,没有人有解决办法。我得到: AVPlayerItem一次只能占据玩家队列中的一个位置 在控制台中快速点击视图按钮后,该按钮应具有以下两种状态之一:Ios AVPlayerItem在玩家中只能占据一个位置';一次排队吗?,ios,swift,avplayeritem,avqueueplayer,Ios,Swift,Avplayeritem,Avqueueplayer,我已经看到了这一点,没有人有解决办法。我得到: AVPlayerItem一次只能占据玩家队列中的一个位置 在控制台中快速点击视图按钮后,该按钮应具有以下两种状态之一: 已成功预加载视频 只有一个视频URL,然后将加载到另一个VC中 为什么会发生这种情况?我如何解决它? 这是我的代码,它在转换到VC时处理了这个问题: if numberMedia == 0 { if selectedPost!.interimMedia[numberMedia].playerLayer !
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表示status.unknown,1表示status.readyToPlay(您想要的)。因此,如果两次打印都为0,则会失败,这就是为什么会出现错误。位置未知,但您正在尝试对playerQueue执行.play(),这当然会导致错误 我给您的建议(解决方案)是找到一种方法使AVPlayerItem中的媒体加载更快(可以将URL放入AVAsset,而不是尝试立即将URL初始化到AVPlayer中),或者可以使用KVO检测加载完成的时间(有点像completionBlock式的解决方案)