有没有办法让GPUImageView输出现有的CMSampleBuffer?

时间:2016-12-09 15:46:51

标签: ios avfoundation gpuimage

我想使用GPUImageView输出我从CMSampleBuffer收到的AVCaptureVideoDataOutputSampleBufferDelegate。所以,基本上,我不希望GPUImage框架自己管理AVCaptureSession,我只是想让它绘制我传递给它的东西。我仍然看不到任何明显而简单的方法。它甚至可能吗?

1 个答案:

答案 0 :(得分:1)

这是你能做的,快速而简单的:

1.使用GPUImageView设置GPUImage以照常输出帧。就像他们在例子中那样做。

  1. 潜入 GPUImageVideoCamera 课程。在那里添加一个代表。像一个:

    @protocol GPUImageVideoCameraDelegate @optional

    • (void)videoCameraCaptureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection; @end
  2. 转到GPUImageVideoCamera.m,找到: - (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection method。

  3. 在那里添加您的委托电话。

  4. if(self.delegate){     [self.delegate videoCameraCaptureOutput:captureOutput didOutputSampleBuffer:sampleBuffer fromConnection:connection]; }

    1. 将您的控制器/类/任何内容设置为委托,videoCamera.delegate = self;

    2. 使用您班级中的委托方法,并使用 CMSampleBufferRef 执行任何操作。

    3. 确保您使用 CMSampleBufferRef “就地”,这意味着 - 如果您希望避免使用相对较慢的CPU而不是更快的GPU,请不要将其复制到CPU内存中。

      从那里,您可以将任何图像设置为 CMSampleBufferRef