3 つの短いビデオ ファイル (それぞれ 3 分) からすべてのフレームをメモリ (NSArray
のCMSampleBufferRef
) に読み込む必要があります。AVAsset
、AVAssetReader
、およびループ内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 を (同時にまたは順次に) ロックしないようにするための正しいアプローチは何でしょうか?