如何将GPUImageVideoCamera作为CMSampleBufferRef处理为QuickBlox SDK

时间:2014-09-13 04:14:35

标签: ios cocoa gpuimage avcapturesession quickblox

我目前正在使用Quickblox SDK的VideoChat功能。在自定义捕获会话教程之后,我可以在两个用户之间创建自定义视频聊天会话。但是,我想在将流发送/转发到quickblox之前对流应用过滤器。

使用AVCaptureSession我使用以下代码创建一个串行队列来处理帧的处理:

dispatch_queue_t callbackQueue= dispatch_queue_create("cameraQueue", NULL);
[videoCaptureOutput setSampleBufferDelegate:self queue:callbackQueue];

然后调用该函数:

- (void)captureOutput:(AVCaptureOutput *)captureOutput  didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection {
[self.videoChat processVideoChatCaptureVideoSample:sampleBuffer];
}

其中'self.videoChat'是QBVideoChat类型。 我想获取'GPUImageVideoCamera'的输出并将其传递给过滤器,最后将处理后的视频转发到quickblox。

到目前为止,我可以通过向'GPUImageVideoCamera'添加目标来使过滤器工作,然后将'GPUImageView'作为目标添加到已处理的视频中,如下所示:

[_liveVideo addTarget:myFilter];
[myFilter addTarget:_ImageView];
[_liveVideo startCameraCapture];

因此,总而言之,我似乎无法弄清楚如何将'myFilter'的输出转发给QuickBlox videoChat,并希望有人可以指出我正确的方向。我希望这个问题足够描述,并提前感谢。

修改

好的,当我问上面的问题时,出于某种原因,当我将GPUImageVideoCamera委托设置为self时,它无法正常工作。然而,我摧毁了我的代码,直到基础,现在让代表在每一帧上触发。但是,在函数内部

-(void) WillOutputSampleBuffer (CMSampleBufferRef)sampleBuffer 

我打电话

[self.videoChat processVideoChatCaptureVideoSample:sampleBuffer];

但我的对手仍然看到一个空白的屏幕。我很肯定GPUImageVideoCamera正在工作,因为我能够初始化GPUImage并将其作为目标添加到摄像机并将GPUImage作为子层添加到我的viewController。任何和所有的建议将不胜感激。感谢。

0 个答案:

没有答案