当我在iOS上发布流时,TokBox使用默认摄像头。有没有办法向发布商添加实时过滤器?
我只想要一些简单的示例代码,介绍如何创建过滤器并将其附加到opentok发布者对象(OTVideoCapture)。
或者,如果这不是正确的方法...在订户端附加过滤器也可以。
如何轻松完成?
答案 0 :(得分:8)
据我了解,您希望在发送视频数据之前以及实时应用过滤器。这里没有简单的源代码,但我可以告诉你路径。
对于实时视频过滤器,您可以使用GPUImage框架。它已准备好使用相机GPUImageVideoCamera
类。因此,您需要创建实现GPUImageInput
的类(它是GPUImage的目标),它将从输入生成OTVideoFrame
帧并将其添加到管道。
这样的事情:
videoCamera = [[GPUImageVideoCamera alloc] initWithSessionPreset:AVCaptureSessionPreset640x480 cameraPosition:AVCaptureDevicePositionBack];
videoCamera.outputImageOrientation = UIInterfaceOrientationPortrait;
videoCamera.horizontallyMirrorFrontFacingCamera = NO;
videoCamera.horizontallyMirrorRearFacingCamera = NO;
// filter
filter = [[GPUImageSepiaFilter alloc] init];
[videoCamera addTarget:filter];
// frame producer for OTVideoCapture
frameProducer = [[FrameProducer alloc] init];
[filter addTarget:frameProducer];
// camera view to show what we record
[filter addTarget:filterView];
此外,您还需要为OpenTok本身自定义OTVideoCapture
协议的实现。您可以使用Lets-Build-OTPublisher sample中的TBExampleVideoCapture
作为起点。您需要使用上述GPUImageVideoCamera
摄像头代码替换摄像头代码才能实时使用滤镜。