我目前正在使用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。任何和所有的建议将不胜感激。感谢。