基本GPUImage iOS7应用视频冻结/无法正常工作

时间:2014-08-21 19:43:17

标签: ios objective-c xcode5 gpuimage

我是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的屏幕截图。

camera with frozen video

1 个答案:

答案 0 :(得分:6)

因为你的GPUImageVideoCamera被解除分配所以它已经冻结了。您将其创建为局部变量,而不是实例变量或属性,因此只要您的安装方法完成,ARC就会解除分配。这将拆除你的图像处理管道的其余部分。

您需要将GPUImageVideoCamera实例作为类或实例变量的属性,以便在设置方法之外对其进行强引用。相机需要坚持超越该方法,因此您需要确保它。相机将对其下游的任何内容进行强有力的参考,因此您不需要为过滤器执行相同操作,除非您想在某些时候进行调整。