这个BUG新版本已经解决,在老版本中会存在这个问题,原因是GPUImage是基于OpenGL 的,而OpenGL ES在进入后台后是直接退出的,所以需要注册通知监听程序进入后台(UIApplicationWillResignActiveNotification)和进入前台(UIApplicationDidBecomeActiveNotification),然后做出相应的动作。
通过下面方法即可解决相机界面进入后台崩溃的问题。

[[NSNotificationCenter defaultCenter] addObserver:_aSharedJLXCommonTools selector:@selector(pauseRecord) name:UIApplicationWillResignActiveNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:_aSharedJLXCommonTools selector:@selector(resumeRecord) name:UIApplicationDidBecomeActiveNotification object:nil];

如果是在打开相机界面的崩溃

- (void)goToBack

{

  [self.stillCamera pauseCameraCapture];

  [self.stillCamera stopCameraCapture];

  runSynchronouslyOnVideoProcessingQueue(^{

      glFinish();

});

}

- (void)gotoFore

{

[self.stillCamera resumeCameraCapture];

[self.stillCamera startCameraCapture];

}

而如果是在加水印等生成的过程中崩溃的,就可以先停止,等重新进入的时候再处理

-(void)pauseRecord{
    if (self.startMakeVideo) {
        [movieWriter cancelRecording];
        [movieFile cancelProcessing];
    }
}

-(void)resumeRecord{
    if (self.startMakeVideo) {
        [self saveVedioPath:m_vedioPath WithFileName:m_fileName andCallBack:self.completionHandler];
    }
}

参考文章


☟☟可点击下方广告支持一下☟☟

最后修改:2017 年 05 月 30 日
请我喝杯可乐,请随意打赏: ☞已打赏列表