Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/120.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios GPUImage:内存警告后超出帧缓冲区_Ios_Objective C_Gpuimage - Fatal编程技术网

Ios 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

我开发了一个使用GPUImage框架的应用程序。我有一些问题。应用程序从摄像机捕获视频,在每一帧上添加一些附加信息,并将其存储在文件中。视频写入可由用户或系统中断,并可重新启动。在多次开始/停止录制迭代后,应用程序收到内存警告,并且应用程序在断言中崩溃:

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;
}
我怎样才能避免这个问题。也许我弄错了什么地方。谢谢你的帮助