Ios 尝试在失败后再次播放AVPlayerItem
我有一个Ios 尝试在失败后再次播放AVPlayerItem,ios,swift,Ios,Swift,我有一个AVPlayer,它加载HLS livestream的URL。问题是,当我第一次收到流的URL时,URL存在,但是URL处的视频不存在。只有在大约10秒后,视频才会工作(因为输出HLS流时存在延迟) 我观察我的AVPlayerItem的状态如下: observationToken = player?.currentItem?.observe(\.status, options: [.new]) { [weak self] (item, change) in Dispatc
AVPlayer
,它加载HLS livestream的URL
。问题是,当我第一次收到流的URL
时,URL
存在,但是URL
处的视频不存在。只有在大约10秒后,视频才会工作(因为输出HLS流时存在延迟)
我观察我的AVPlayerItem
的状态如下:
observationToken = player?.currentItem?.observe(\.status, options: [.new]) { [weak self] (item, change) in
DispatchQueue.main.async {
self?.spinner.stopAnimating()
switch item.status {
case .readyToPlay:
print("PLAY THE STREAM")
// Player item is ready to play.
self?.player?.play()
case .failed:
print("FAILED", item.error)
// Player item failed. See error.
break
case .unknown:
print("THE PLAYER ISN'T REASDY YET")
// Player item is not yet ready.
break
@unknown default:
print("SOME OTHER THING")
break
}
}
}
发生的情况是状态更改为
.failed
,并显示错误消息“HTTP 404:未找到文件”。当它达到。失败
状态时,我如何让它重试?如果你观察AVPlayer的时间控制状态
,会怎么样?@matt Apple的文档说这是针对网络条件的。这是一个从不存在到存在的网络视频是的,我明白你的意思苹果在这里有示例代码和讨论:他们似乎说您所描述的是正常的,当流准备就绪时,状态将再次更新。AVPlayerItem
状态在转到失败后不会改变。我尝试了isPlayable
,当状态为failed
时,返回true
,因此没有帮助:(因此苹果示例代码在您的HLS流上不起作用?如果是这样,您可能应该提交一份错误报告。