私の目標は、openglフレームの短いシーケンス(約200フレーム)からビデオを作成することです。したがって、これを行うために、次のコードを使用して画像の配列を作成します。
NSMutableArray* images = [NSMutableArray array];
KTEngine* engine = [KTEngine sharedInstance]; //Opengl - based engine
for (unsigned int i = engine.animationContext.unitStart; i < engine.animationContext.unitEnd ; ++i)
{
NSLog(@"Render Image %d", i);
[engine.animationContext update:i];
[self.view setNeedsDisplay];
[images addObject:[view snapshot]];
}
NSLog(@"Total image rendered %d", [images count]);
[self createVideoFileFromArray:images];
したがって、これはシミュレーターでは完全に正常に機能しますが、デバイス(retina iPad)では機能しません。したがって、私の推測では、デバイスはそれほど多くのUIイメージをサポートしていません(特に2048 * 1536)。クラッシュは常に38フレーム程度後に発生します。
解決策としては、10フレームごとに動画を作成し、それらをすべてまとめて添付することを考えましたが、十分なスペースがあるかどうかはいつわかりますか(自動解放プールが空になっていますか?)。
スレッドを使用して10個の画像を処理し、終了したら次の10フレームで再度起動する必要がありますか?
何か案が?