iOS 10 HLS 404播放列表错误处理

时间:2016-11-01 16:35:52

标签: ios http-status-code-404 hls

在iOS 10中,如果m3u8主播放列表请求返回404,则AVPlayerItem上的status属性不会转换为Failed状态(AVPlayerItemStatusFailed)。这使得错误处理程序在https://developer.apple.com/reference/avfoundation/avplayeritem

的AVPlayerItem文档中指示不起作用

有没有人找到任何替代方案?

2 个答案:

答案 0 :(得分:0)

如果您的意思是网址返回404代码状态,而不是在播放或添加项目之前,您可以使用包含该网址的请求制作 URLSession ,然后您可以检查退回。如果它的状态代码为200,则意味着它是好的,如果它的值为404,那么它就是错误的。

Swift 3中的示例

    let request = NSMutableURLRequest(url: URL(string: "http://yourstringhere.com")!)
            request.httpMethod = "GET"
let task = URLSession.shared.dataTask(with: request as URLRequest) {
        data, response, error in
        //handle if error != nil and if response.statusCode is 200 or 404
    }

    task.resume()

答案 1 :(得分:0)

Swift 4解决方案

您可以跟踪AVPlayerItemNewErrorLogEntry通知。对于404错误,以下代码将打印" HTTP 404:找不到文件"

NotificationCenter.default.addObserver(forName: .AVPlayerItemNewErrorLogEntry, object: avPlayer?.currentItem, queue: .main) { [weak self] _ in
        print(avPlayer.currentItem?.errorLog()?.events.last?.errorComment)
}

此外,本视频的后半部分提供了有关客户端错误处理的最佳做法的有用信息。 {{3}}