1

複数のビデオ ファイルからフレームをデコードし、opengl テクスチャとして使用しようとしています。

AVAssetReader オブジェクトを使用して h264 ファイルをデコードする方法は知っていますがstartReading、. 私がしたいのは、電話をかけて、いつでもどこでも電話することです。このようにして、AVAssetReader から新しいビデオ リーダー クラスを作成し、opengl テクスチャとして使用したいときにいつでも複数のビデオ ファイルからビデオ フレームをロードできます。whilestatusAVAssetReaderStatusReadingstartReadingcopyNextSampleBuffer

これは実行可能ですか?

4

1 に答える 1

0

簡単な答えはイエスです。一度に 1 フレームずつデコードできます。デコード ロジックを自分で管理する必要があります。最も簡単な方法は、BGRA ピクセルのバッファーを割り当ててから、フレームバッファー データを一時バッファーにコピーすることです。これらすべてを実行する小さなコード スニピットを見つけることができない可能性が高いことに注意してください。つまり、ムービーから OpenGL にすべてのデータをストリーミングするのは簡単ではありません。これを自分でやろうとするのは避けて、難しいものをすでに実装しているサードパーティのライブラリを使用することをお勧めします。すでに実装されているこのようなものの完全な例を見たい場合は、私のブログ投稿Load OpenGL textures with alpha channel on iOSをご覧ください。. この投稿では、ビデオを OpenGL にストリーミングする方法を示しますが、このアプローチを使用して、最初に h.264 からディスクにデコードする必要があります。他のライブラリを使用して同じことを行うこともできますが、複数のビデオを同時に再生するとリソースが大量に消費されるため、ハードウェア デバイスで実行できることの限界にすぐに達する可能性があることに注意してください。また、実際に OpenGL テクスチャが必要ない場合は、iOS で直接 CoreGraphics API を操作する方がはるかに簡単です。

于 2015-11-21T19:04:23.697 に答える