我是GPUImage的新手,我将GPUImage添加到默认的单视图模板Xcode 5.1.1 app。我成功了静态GPUImage库,我正在尝试自述文件中的示例。我有iO S7.1作为基础SDK。该应用程序编译并加载,视频冻结。它有或没有过滤器冻结。 我该如何解决?我想要显示实时相机预览并应用过滤器
github repo中包含的示例编译并运行正常。
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
GPUImageVideoCamera *videoCamera = [[GPUImageVideoCamera alloc] initWithSessionPreset:AVCaptureSessionPreset352x288 cameraPosition:AVCaptureDevicePositionBack];
videoCamera.outputImageOrientation = UIInterfaceOrientationPortrait;
GPUImageFilter *customFilter = [[GPUImageSepiaFilter alloc]init];
GPUImageView *filteredVideoView = [[GPUImageView alloc] initWithFrame:CGRectMake(0.0, 0.0, 320, 320)];
[self.view addSubview:filteredVideoView];
// Add the view somewhere so it's visible
[videoCamera addTarget:customFilter];
[customFilter addTarget:filteredVideoView];
[videoCamera startCameraCapture];
}
以下是运行iOS 7.1的iPhone 5的屏幕截图。
答案 0 :(得分:6)
因为你的GPUImageVideoCamera被解除分配所以它已经冻结了。您将其创建为局部变量,而不是实例变量或属性,因此只要您的安装方法完成,ARC就会解除分配。这将拆除你的图像处理管道的其余部分。
您需要将GPUImageVideoCamera实例作为类或实例变量的属性,以便在设置方法之外对其进行强引用。相机需要坚持超越该方法,因此您需要确保它。相机将对其下游的任何内容进行强有力的参考,因此您不需要为过滤器执行相同操作,除非您想在某些时候进行调整。