OpenGLのUVマップされた3Dオブジェクトにビデオファイルの内容を表示しようとしています(今のところオーディオなしで言いましょう)。私はOpenGLでかなりのことをしましたが、ビデオファイルの処理をどこから始めればよいかわかりません。そこにある例のほとんどは、カメラからビデオフレームを取得するためのもののようですが、これは私が求めているものではありません。
現時点では、ビデオの個々のフレームをCGImageRefとして取得できるかどうかを感じているので、これをどのように行うのか疑問に思っています。おそらく、これを行うためのより良い方法がありますか?どこから始めればよいですか?iOSでビデオを再生するための最も簡単なファイル形式は何ですか? .mov?
謝罪; iPhoneで入力するので、少し簡単に説明します。
ビデオのURLを使用してAVURLAssetを作成します。必要に応じてローカルファイルのURLにすることもできます。 QuickTimeでできることは何でも問題ないので、H.264のMOVまたはM4Vがおそらく最良のソースです。
タイプAVMediaTypeVideoのトラックのアセットをクエリします。ソースビデオにそのようなものの複数のカメラアングルがない限り、1つだけを取得する必要があるため、objectAtIndex:0を取得するだけで、必要なAVAssetTrackが得られます。
これを使用して、AVAssetReaderTrackOutputを作成します。おそらく、kCVPixelFormatType_32BGRAを指定する必要があります。
アセットを使用してAVAssetReaderを作成します。アセットリーダートラック出力を出力として添付します。そして、startReadingを呼び出します。
今後は、トラック出力でcopyNextSampleBufferを呼び出して、新しいCMSampleBufferを取得し、カメラから入力を取得する場合と同じ位置に配置できます。したがって、それをロックしてピクセルコンテンツを取得し、AppleのBGRA拡張機能を介してそれらをOpenGLにプッシュできます。