这个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];
}
}
参考文章
版权属于:东哥笔记 - DongGe.me
本文链接:https://dongge.org/blog/570.html
自2017年12月26日起,『转载以及大段采集进行后续编辑』须注明本文标题和链接!否则禁止所有转载和采集行为!