我的目标是用一小段 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];
所以这在模拟器上工作得很好,但在设备(视网膜 iPad)上却不行。所以我的猜测是该设备不支持这么多的UIimages(特别是2048 * 1536)。崩溃总是发生在 38 帧左右之后。
现在至于解决方案,我想为每 10 帧创建一个视频,然后将它们全部连接在一起,但是我什么时候才能知道我是否有足够的空间(自动释放池是否已耗尽?)。
也许我应该使用一个线程,处理 10 张图像,然后在它结束后再次触发接下来的 10 帧?
任何想法?