HLSビデオ使用時のAVPlayerViewControllerとAVPlayerを備えたiOS 13でのみビデオ再生の問題
動画を再生するアプリがあります。iOS 11、12、およびiOS 13と互換性があります。iOS11および12では、どちらか、AVPlayerViewControllerまたはを使用しても、ビデオ再生は正常に機能しますAVPlayerLayer。 しかし、iOS 13では、iOSを更新したときにかなりの数のユーザーに対して突然ビデオが読み込まれなかった(またはオーディオのみが読み込まれる、または最初のフレームのみが読み込まれる)というレポートが届き始めました。私はそれを複製するのに本当に苦労しましたが、一部はネットワークの接続不良が原因で発生したと述べ、ネットワークリンクコンディショナーでそれを再現することができたと確信しています。 これは特にHLSビデオに影響します(たとえば、Redditが使用するファンシーライブストリーム互換のもの)。MP4でも問題なく動作します。失敗したURLの例を次に示します。https://v.redd.it/gl3chx2kd4v31/HLSPlaylist.m3u8 これをトリガーするネットワークリンクコンディショナープロファイルは次のとおりです。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デバイスでまったく同じコードを試すと、完全に機能します。 …