在iOS 10中,如果m3u8主播放列表请求返回404,则AVPlayerItem上的status属性不会转换为Failed状态(AVPlayerItemStatusFailed)。这使得错误处理程序在https://developer.apple.com/reference/avfoundation/avplayeritem
的AVPlayerItem文档中指示不起作用有没有人找到任何替代方案?
答案 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)
您可以跟踪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}}