HLSを使ったiOSアプリを開発しています。私たちのビデオプラットフォームでは、Nginx proxy_passモジュールを使用して、1つのオリジンが使用できなくなったときに1つのオリジンから別のオリジンにリダイレクトします(2つのオリジンがあります)。オリジンの切り替えはクライアントにとって透過的であり、バランサーによって維持されます。クライアントのプレイリストURIは変更されないままです。
QuickTimeにも表示されるこのような切り替えワークフローでAVPlayerの問題に直面しました。ネットワークログによると、次のことが起こります。
切り替えの時点で、AVPlayerはライブプレイリストを再度要求し、切り替え前にロードされたチャンクの再生が終了すると、プレイリストの次のチャンクではなく最初のチャンクの再生を開始します。また、AVPlayer currentTimeプロパティに変更はなく、最初のチャンクの切り替えがなかったように変化し続け(通常、プレイリストの開始時にcurrentTimeは0になります)、プレーヤーアイテムのステータスは変更されず、通知はスローされません。アクセスログに特別な、エラーログはまったく空です。そのため、ユーザーインターフェイス(つまり、シークバー)を更新したり、ライブストリートの別の時間にリダイレクトされたユーザーを変更したりすることはできません。また、特定のブロードキャストの範囲外のライブストリームをユーザーに表示してはならないという状況では、問題はさらに悪化します。
これを解決する方法について何か提案はありますか?それとも、AVPlayerのコアバグですか(この問題がQuicktimeにも表示される限り)?