3

私は GPUImage を初めて使用しますが、これは本当に素晴らしいと思います。よくやったブラッド。フィルターがとてもきれいに連鎖する方法が大好きです。

目標
私は次のことを結び付けようとしています:
* openGL シーンを作成する
* いくつかのフィルターを適用する (以下の説明とは無関係)
* ビデオに記録する

問題
私の問題は、録音を接続する方法がはっきりしないことです。残念ながら、opengl-es とやり取りしても、何をすべきかを理解するのに十分な詳細が得られません。

試み
パッケージ内の例から 2 つの出発点があります:
* CubeExample - 生の openGL を取得して GPUImage と対話する * SimpleVideoFileFilter - フィルタを介して新しいファイルにビデオ ファイルを再コーディングする

CubeExample から始めて、GPUImageSolidColorGenerator を videoCamera フィルターに置き換えました (余談ですが、フィルターなしで開始する方法がわかりません)。これにより、メッシュを作成してレンダリングし、操作できるようになりました。次に、映画のフィルタリングと再エンコードで指定された手順に従って GPUImageMovieWriter フィルターを追加するだけでよいと考えましたが、それには GPUImageMovie (ソース) とライターの間の調整が必要です。ソースとしてカメラ ストリームやビデオ ファイルではなく、アニメーション化された openGL シーケンスが必要なため、その方法が明確ではありません。私はvideoInputReadCallbackmovieWriterに追加しようとしました:

movieWriter.videoInputReadyCallback = ^{
    [renderer nextFrame];
    [movieWriter newFrameReadyAtTime:renderer.cmTime atIndex:0];
};

wherenextFrameは次のフレームを作成し、完了したら呼び出しendProcessing、CMTime を設定します。呼び出しがなければ、newFrameReadyAtTime:atIndex:フレームが 1 つしかないビデオを作成することを除いて、正常に動作します (画面に期待どおりにレンダリングされたアニメーション イメージ)。newFrameReadyAtTime:atIndex:電話で、メッセージを受け取ります

Problem appending pixel buffer at time: 6

これは、movieWriter がまだレンダラーにフレームを表示する準備ができていないと思わせますが、どうすればよいかわかりません。私は他の多くのことを試しましたが、役に立ちませんでした。Interacting with OpenGL-ES (上記のリンクを参照) の説明からすると、簡単なように思えますが、うまくいきません。

REQUEST
質問を他の人にとってより関連性のあるものにするために、誰かがopenGLシーン(三角形など)を作成し、それをGPUImageMovieWriterに接続してファイルに記録する例を投稿できれば幸いです。おそらく三角形を回転させて10 フレームなので、静止画以上のものが作成されていることがわかります。

ありがとう。

4

0 に答える 0