私は新しい iOS 開発者です。ビデオ共有サイトのビデオ プレーヤー アプリに取り組んでいます。ここでは、記録が 2 つのビデオ ストリームで構成される場合があります (1 つはプレゼンターを表示し、もう 1 つは彼の画面の記録を表示します)。この 2 番目のビデオを AVFoundation で再生して、AVPlayer を作成しようとしています。一部のビデオでは非常にうまく機能しますが、他のビデオではメモリが不足します。多くの調査の結果、ビデオ全体をメモリにバッファリングしようとしていることがわかりました。
何時間もグーグルで検索しましたが、何も見つかりませんでした。
これを実証するためだけに小さなプロジェクトを作成しました: github project . 2 つの異なるビデオ ストリーム用に 2 つの AVPlayer をセットアップし、UI を更新してプレーヤーの AVPlayerItem の loadedTimeRanges を表示します。最初のビデオでは最大 60 秒しかバッファリングされませんが、これは素晴らしいことですが、2 番目のビデオではバッファリングを続けます。
self.player1 = [AVPlayer playerWithURL:url1];
self.player2 = [AVPlayer playerWithURL:url2];
および 2 つのテキスト ラベル:
self.data1.text = [NSString stringWithFormat:@"Player 1 loadedTimeRanges: %@",
self.player1.currentItem.loadedTimeRanges];
self.data2.text = [NSString stringWithFormat:@"Player 2 loadedTimeRanges: %@",
self.player2.currentItem.loadedTimeRanges];
多分これは重要かもしれません: オーバーバッファリングビデオにはオーディオトラックがなく、ビデオだけがあります.
更新: AVPlayer の代わりに MPMoviePlayerController を使用し、playableDuration プロパティをチェックして問題を再現しました。最初のムービーでは約 60 秒で停止し、2 番目のムービーでは継続してメモリ不足になります。
更新 2 : 実際のビデオ ファイルを入手して Dropbox にアップロードし、それらをストリーミングしようとしました: 問題はありません! ムービー全体をバッファリングしますが、メモリ不足にはなりません。元のサイト (私たちのビデオ共有サイト) からストリーミングすると、メモリが不足するだけです。URL は github プロジェクトにあります。
これを引き起こす可能性のあるヒントを本当に楽しみにしています。
ありがとうございました!