Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.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 尝试在失败后再次播放AVPlayerItem_Ios_Swift - Fatal编程技术网

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流上不起作用?如果是这样,您可能应该提交一份错误报告。