GPUImage显示图像而不是实时视频

时间:2014-02-24 21:14:22

标签: objective-c xcode ios7 gpuimage

我已经浏览了obj-c GPUImage框架,并且根据文档中的示例,我添加了以下代码片段,旨在显示已过滤的实时视频:

    CGRect mainScreenFrame = [[UIScreen mainScreen] applicationFrame];
    GPUImageVideoCamera *videoCamera = [[GPUImageVideoCamera alloc] initWithSessionPreset:AVCaptureSessionPreset640x480 cameraPosition:AVCaptureDevicePositionBack];
    videoCamera.outputImageOrientation = UIInterfaceOrientationPortrait;

    GPUImageFilter *customFilter = [[GPUImageFilter alloc] initWithFragmentShaderFromFile:@"PositionColor"];
    GPUImageView *filteredVideoView = [[GPUImageView alloc] initWithFrame:mainScreenFrame];

    // Add the view somewhere so it's visible
    [self.view addSubview:filteredVideoView];
    [videoCamera addTarget:customFilter];
    [customFilter addTarget:filteredVideoView];

    [videoCamera startCameraCapture];

它有效,但不是视频我得到一个静止图像。我已经查看了它并查看了示例,但无法确定它为何无法正常工作。任何帮助将不胜感激。

谢谢!

1 个答案:

答案 0 :(得分:6)

您需要在某处继续使用GPUImageVideoCamera。如果将上述内容放在方法中,并为项目启用ARC,则GPUImageVideoCamera实例将在该方法退出时立即释放。这将终止视频捕获并可能导致其他令人不安的伪像。

在您的类中创建一个GPUImageVideoCamera实例变量,并将其用于上述内容。您也需要这样做,这样您就可以在完成后暂停和停止相机。