У меня есть приложение, которое воспроизводит видео. Он совместим с 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< /а>
Вот профиль Network Link Conditioner, который его запускает: https://i.imgur.com/XWsKUeM.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, но мне все еще нужно с этим разобраться.