3

AVAssetReader または AVPlayerItemVideoOutput を使用してビデオ フレームをビデオ ファイルから生のピクセル データとして取得し、それを使用して OpenGL テクスチャにアップロードする方法を説明する多くの投稿を読みました。ただし、これにより、(グラフィックス カードではなく) CPU を使用してビデオ フレームをデコードするという不必要な手順が作成され、ピクセル データの不要なコピーが作成されるようです。

AVFoundation がビデオ再生プロセスのすべての側面を所有できるようにする方法はありますが、必要に応じて OpenGL コンテキストに描画できる、作成した OpenGL テクスチャ ID へのアクセスも提供しますか? 誰かがこのようなものに出くわしましたか?

つまり、次の擬似コードのようなものです。

初期化:

  • ムービー ファイルを開き、opengl コンテキストを提供します。
  • OpenGL テクスチャ ID を取得します。

すべての opengl ループ:

  • テクスチャ ID を描画します。
4

1 に答える 1

1

Video Decode Acceleration FrameworkOS X でを使用するとCVImageBufferRef、デコードされたフレームを「表示」するときにが提供さCVOpenGLTextureGetName (...)れ、OpenGL ソフトウェアでネイティブ テクスチャ ハンドルとして使用するために呼び出すことができます。

もちろん、これはあなたの質問よりも低いレベルですが、特定のビデオ形式では間違いなく可能です。これは、私が個人的に経験した唯一のテクニックです。ただし、QTMovieより高いレベルで同様の機能も備えており、探しているすべての機能を提供する可能性が高いと思います.

AVFoundation についてコメントできればと思いますが、10.6 以降、OS X での開発作業は行っていません。プロセスは似ているはずだと思いますが、CoreVideo の上に重ねる必要があります。

于 2013-08-29T03:57:07.197 に答える