当我在 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/