Tôi có một ứng dụng phát lại video. Nó tương thích với iOS 11, 12 và iOS 13. Trên iOS 11 và 12, phát lại video hoạt động đúng như mong đợi bằng cách sử dụng AVPlayerViewController
hoặc thậm chí chỉ AVPlayerLayer
.
Tuy nhiên, trên iOS 13, tôi bắt đầu nhận được báo cáo rằng đột nhiên video không tải (hoặc sẽ chỉ tải âm thanh hoặc chỉ khung đầu tiên) cho khá nhiều người dùng khi họ cập nhật iOS. Tôi đã rất khó khăn để sao chép nó, nhưng một số đề cập đến nó xảy ra chủ yếu với các kết nối mạng kém, và chắc chắn với Bộ điều hòa liên kết mạng tôi có thể sao chép nó.
Nó đặc biệt ảnh hưởng đến video HLS (ví dụ như video livestream ưa thích mà Reddit sử dụng). Nó tiếp tục hoạt động tốt với MP4. Đây là một URL ví dụ không thành công: https://v.redd.it/gl3chx2kd4v31/HLSPlaylist.m3u8
Đây là hồ sơ điều hòa liên kết mạng kích hoạt nó: https://i.imgur.com/XWsKUeM.jpg
Đây là một dự án mẫu kích hoạt nó, hiển thị cả AVPlayerViewControll và AVPlayer (nhấn Tải xuống, Google thật kỳ lạ): https://drive.google.com/file/d/1RS5DvUypdOLFCYJe1Pt2Ig0fQljZDLs2/view
Đây là mã mẫu hiển thị nó với AVPlayerViewControll:
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()
}
Nếu tôi thử chính xác mã đó trên thiết bị iOS 12 thì nó hoạt động hoàn hảo.
Có ai có bất cứ đề nghị về cách khắc phục nó? Nếu đôi khi bạn chà lại từ đầu bạn có thể khiến video phát lại đúng cách, nhưng không đủ đáng tin cậy để dường như xây dựng một giải pháp từ đó. Công cụ video chắc chắn không phải là sở trường của tôi trong phát triển iOS vì vậy tôi bắt đầu gãi đầu một chút, bất kỳ trợ giúp nào cũng sẽ được đánh giá cao.
Lưu ý: Tôi khá biết đây là (rất có thể) một lỗi iOS và tôi sẽ gửi Radar, nhưng tôi vẫn phải xử lý ngay.