我有一个可以播放视频的应用程序。它与 iOS 11、12 和 iOS 13 兼容。在 iOS 11 和 12 上,视频播放可以正常使用AVPlayerViewController
甚至只是AVPlayerLayer
.
然而,在 iOS 13 上,我开始收到报告称,相当多的用户在更新 iOS 时突然无法加载视频(或仅加载音频,或仅加载第一帧)。我很难复制它,但有人提到它主要是在网络连接较差的情况下发生的,果然使用 Network Link Conditioner 我能够复制它。
它特别影响 HLS 视频(例如,Reddit 使用的一种与直播兼容的视频)。它在 MP4 上仍然可以正常工作。以下是失败的 URL 示例:https://v.redd.it/gl3chx2kd4v31/HLSPlaylist.m3u8
这是触发它的网络链接调节器配置文件:https://i.stack.imgur.com/Q2wif.jpg
这是一个触发它的示例项目,显示 AVPlayerViewController 和 AVPlayer(点击“下载”,Google 很奇怪):https://drive.google.com/file/d/1RS5DvUypdOLFCYJe1Pt2Ig0fQljZDLs2/view
下面是使用 AVPlayerViewController 展示它的示例代码:
let assetURL = URL(string: "https://v.redd.it/gl3chx2kd4v31/HLSPlaylist.m3u8")!
// The following MP4 URL *does* work, for instance
// let assetURL = URL(string: "https://giant.gfycat.com/DependentFreshKissingbug.mp4")!
let player = AVPlayer(url: assetURL)
let playerViewController = AVPlayerViewController()
playerViewController.player = player
self.present(playerViewController, animated: true) {
playerViewController.player!.play()
}
如果我在 iOS 12 设备上尝试完全相同的代码,它会完美运行。
有人对如何修复它有任何建议吗?如果你擦回到开头有时您可以让视频正确播放,但不够可靠,因此似乎可以以此为基础构建解决方案。视频内容绝对不是我在 iOS 开发中的强项,所以我开始有点摸不着头脑,任何帮助将不胜感激。
注意:我很清楚这(可能)是一个 iOS 错误,我将提交一个 Radar,但我现在仍然需要处理它。