我想使用GPUImageView
输出我从CMSampleBuffer
收到的AVCaptureVideoDataOutputSampleBufferDelegate
。所以,基本上,我不希望GPUImage框架自己管理AVCaptureSession
,我只是想让它绘制我传递给它的东西。我仍然看不到任何明显而简单的方法。它甚至可能吗?
答案 0 :(得分:1)
这是你能做的,快速而简单的:
1.使用GPUImageView设置GPUImage以照常输出帧。就像他们在例子中那样做。
潜入 GPUImageVideoCamera 课程。在那里添加一个代表。像一个:
@protocol GPUImageVideoCameraDelegate @optional
转到GPUImageVideoCamera.m,找到: - (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection method。
在那里添加您的委托电话。
if(self.delegate){ [self.delegate videoCameraCaptureOutput:captureOutput didOutputSampleBuffer:sampleBuffer fromConnection:connection]; } 强>
将您的控制器/类/任何内容设置为委托,videoCamera.delegate = self;
使用您班级中的委托方法,并使用 CMSampleBufferRef 执行任何操作。
确保您使用 CMSampleBufferRef “就地”,这意味着 - 如果您希望避免使用相对较慢的CPU而不是更快的GPU,请不要将其复制到CPU内存中。
从那里,您可以将任何图像设置为 CMSampleBufferRef 。