20
当我在iOS上发布流时,TokBox使用默认相机。有没有办法为发布商添加实时滤镜?如何添加核心图像过滤器到OpenTok视频?
我只是想要一些简单的示例代码,介绍如何创建过滤器并将其附加到opentok发布者对象(OTVideoCapture)。
或者,如果这不是正确的方法......在订户端附加过滤器也可以。
这怎么能轻松完成?
当我在iOS上发布流时,TokBox使用默认相机。有没有办法为发布商添加实时滤镜?如何添加核心图像过滤器到OpenTok视频?
我只是想要一些简单的示例代码,介绍如何创建过滤器并将其附加到opentok发布者对象(OTVideoCapture)。
或者,如果这不是正确的方法......在订户端附加过滤器也可以。
这怎么能轻松完成?
据我所知,您希望在发送视频数据之前实时应用滤镜。这里没有简单的源代码,但我可以告诉你路径。
对于实时视频过滤器,您可以使用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 sample的TBExampleVideoCapture
作为起点。您需要将摄像头代码替换为GPUImageVideoCamera
摄像头代码才能实时使用过滤器。
嗨,John,什么是“FrameProducer”?我似乎无法在我的代码中初始化它。我需要导入一些东西吗? – TIMEX
'FrameProducer'是你需要实现的一个类。它必须实现'GPUImageInput'并产生框架。正如我之前所说的,在这里没有准备好使用代码。你需要这样做或要求某人来帮助你。 –