だから私は、AVPlayer と AVPlayerLayer を使用してライブ ビデオとオーディオ ストリームを再生するアプリに取り組んでいます。ユーザーがアプリを離れたり、デバイスをロックしたりしたときに、オーディオをバックグラウンドで再生できるようにしたいと考えています。これまでのところ、うまく機能しています。
AppDelegate.m でのこのための私のコードは、基本的に次のとおりです。
-(void)applicationDidEnterBackground:(UIApplication *)application {
[playerView setPlayer:nil];
}
-(void)applicationDidBecomeActive:(UIApplication *)application {
[playerView setPlayer:streamPlayer];
}
playerView は私の AVPlayerLayer であり、streamPlayer は私の AVPlayer です。
私が抱えている問題は、アプリが再びアクティブになると、オーディオがスキップし、ストリームが安定して再び正常に再生されるまでに約 1 秒かかることです。私が達成しようとしているのは、オーディオをバックグラウンドで再生することです。その後、アプリが再びアクティブになると、オーディオに中断はなく、ビデオが再びアクティブになり、オーディオに同期します。
applicationDidBecomeActiveで、同じストリームに接続されたAVPlayerの別のインスタンスを作成しようとしましたが、オーディオはミュートされ、そのプレーヤーをplayerViewのプレーヤーとして設定しました。これにより、元のAVPlayerからのオーディオが中断されなくなりましたが、ビデオとオーディオは異なる AVPlayer からのものであるため同期していないため、これは機能しません。
この問題を解決する方法について何か提案はありますか?