当我在iOS上发布流时,TokBox使用默认相机。有没有一种方法可以向发布商添加实时过滤器?

我只想要一些简单的示例代码,以了解如何创建过滤器并将其附加到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];

此外,您还需要针对OpenTok本身自定义OTVideoCapture协议(protocol)的实现。您可以使用Lets-Build-OTPublisher sample中的TBExampleVideoCapture作为起点。您需要用上述GPUImageVideoCamera相机代码替换相机代码,才能实时使用过滤器。

关于ios - 如何向OpenTok视频添加核心图像滤镜?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32308904/

10-11 12:59