Ios GPUImage:内存警告后超出帧缓冲区
我开发了一个使用GPUImage框架的应用程序。我有一些问题。应用程序从摄像机捕获视频,在每一帧上添加一些附加信息,并将其存储在文件中。视频写入可由用户或系统中断,并可重新启动。在多次开始/停止录制迭代后,应用程序收到内存警告,并且应用程序在断言中崩溃:Ios GPUImage:内存警告后超出帧缓冲区,ios,objective-c,gpuimage,Ios,Objective C,Gpuimage,我开发了一个使用GPUImage框架的应用程序。我有一些问题。应用程序从摄像机捕获视频,在每一帧上添加一些附加信息,并将其存储在文件中。视频写入可由用户或系统中断,并可重新启动。在多次开始/停止录制迭代后,应用程序收到内存警告,并且应用程序在断言中崩溃: NSAssert(framebufferReferenceCount > 0, @"Tried to overrelease a framebuffer, did you forget to call -useNextFrameForIm
NSAssert(framebufferReferenceCount > 0, @"Tried to overrelease a framebuffer, did you forget to call -useNextFrameForImageCapture before using -imageFromCurrentFramebuffer?");
以下是我如何配置GPUImage:
首先,我打开相机并配置预览:
-(void)openCamera:(NSString *)preset
{
self.camera = [[GPUImageVideoCamera alloc] initWithSessionPreset:preset
cameraPosition:AVCaptureDevicePositionBack];
self.camera.outputImageOrientation = self.orientation;
[self.camera addTarget:self.preview];
[self.camera startCameraCapture];
}
第二,当用户按下按钮时,我开始录制
-(void)addMovieWriter
{
self.writingChain = [GPUImageFilter new];
self.blendFilter = [GPUImageNormalBlendFilter new];
[self.writingChain addTarget:self.blendFilter];
self.uiElement = [[GPUImageUIElement alloc] initWithView:_internalView];
[self.uiElement addTarget:self.blendFilter];
__weak typeof(self) weakSelf = self;
[self.writingChain setFrameProcessingCompletionBlock:^(GPUImageOutput *output, CMTime time) {
[weakSelf.uiElement update];
}];
self.writer = [[GPUImageMovieWriter alloc] initWithMovieURL:self.movieURL size:[self writerSize]];
[self.blendFilter addTarget:self.writer];
[self.camera addTarget:self.writingChain];
[self.writer startRecording];
}
第三,我这样打断写作:
-(void)removeMovieWriter
{
[self.camera removeTarget:self.writingChain];
[self.writingChain removeAllTargets];
[self.writer finishRecording];
self.writer = nil;
self.uiElement = nil;
self.writingChain = nil;
}
我怎样才能避免这个问题。也许我弄错了什么地方。谢谢你的帮助