0

3 つの短いビデオ ファイル (それぞれ 3 分) からすべてのフレームをメモリ (NSArrayCMSampleBufferRef) に読み込む必要があります。AVAssetAVAssetReader、およびループ内AVAssetReaderTrackOutputでの呼び出しcopyNextSampleBufferを使用した典型的なアプローチを使用しました。while

1 つのファイルで問題なく動作します。3570 個のサンプルがすべて読み込まれます。さらに 2 つのファイルを (順番に) ロードしようとすると、2 番目は 1820 サンプルのみをロードし、3 番目はエラー -1189 (開くことができません) で 0 をロードします。そして、メインスレッド、バックグラウンドスレッド、および指定されたスレッドの両方を試しました(dispatch_queue_t同時またはシリアル-同じ効果)。

3つすべてを同時にロードしようとすると(それぞれに独自の がありますdispatch_queue_t)、3つすべてが約1800個のサンプルをエラーなしでロードします(これはビデオの全長ではありません)。

Xcode でアプリを実行した後の奇妙な副作用として、システム全体 (Chrome、Finder、ウィンドウのドラッグ時に) でウィンドウ (および Web ページ) のレンダリングに不具合が発生します。

バックグラウンドで複数のビデオからすべてのビデオ サンプルを配列にロードして、UI を (同時にまたは順次に) ロックしないようにするための正しいアプローチは何でしょうか?

4

0 に答える 0