2015-08-31 78 views
20

当我在iOS上发布流时,TokBox使用默认相机。有没有办法为发布商添加实时滤镜?如何添加核心图像过滤器到OpenTok视频?

我只是想要一些简单的示例代码,介绍如何创建过滤器并将其附加到opentok发布者对象(OTVideoCapture)。

或者,如果这不是正确的方法......在订户端附加过滤器也可以。

这怎么能轻松完成?

回答

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]; 

还需要OTVideoCapture协议OpenTok本身的自定义实现。您可以使用Lets-Build-OTPublisher sampleTBExampleVideoCapture作为起点。您需要将摄像头代码替换为GPUImageVideoCamera摄像头代码才能实时使用过滤器。

+0

嗨,John,什么是“FrameProducer”?我似乎无法在我的代码中初始化它。我需要导入一些东西吗? – TIMEX

+0

'FrameProducer'是你需要实现的一个类。它必须实现'GPUImageInput'并产生框架。正如我之前所说的,在这里没有准备好使用代码。你需要这样做或要求某人来帮助你。 –

相关问题