对接第三方插件
提示
在基于 SDK 建立通话基础上,使用 GPUImage 库可以实现本地视频滤镜和水印等视频纹理的渲染处理。
SDK 5.2.3 及以上版本
在 RCRTCCameraOutputStream 的父类 RCRTCVideoOutputStream 中的属性 streamEventDelegate
的 outputVideoStream:captureVideoFrame:
方法,会同步返回采集的视频帧 RCRTCVideoFrame,您可以直接对该视频帧的内存数据 pixelBuffer
进行美颜、水印处理。
实现流程
1. 设置代理
Objective C
#import <RongRTCLib/RongRTCLib.h>
[RCRTCEngine sharedInstance].defaultVideoStream.streamEventDelegate = self;
2. 实现视频采集代理方法
接口原型
Objective C
- (void)outputVideoStream:(RCRTCVideoOutputStream *)stream captureVideoFrame:(nullable RCRTCVideoFrame *)videoFrame;
参数说明
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
stream | RCRTCVideoOutputStream * | 是 | 采集的视频帧数据所属接收到的流 |
videoFrame | RCRTCVideoFrame * | 否 | 采集的视频数据,类型为 RCRTCVideoFrameFormatNV12 |
代码示例
Objective C
#import <RongRTCLib/RongRTCLib.h>
// 实现视频采集代理方法
- (void)outputVideoStream:(RCRTCVideoOutputStream *)stream captureVideoFrame:(nullable RCRTCVideoFrame *)videoFrame {
if (videoFrame && videoFrame.pixelBuffer) {
// 对 videoFrame 中的 pixelBuffer 进行美颜、水印处理
// 注意:修改该视频帧会影响本地渲染和编码发送的视频帧数据,不支持修改数据格式
}
}
提示
- 采集的视频数据,如果修改该视频帧,会影响本地渲染和编码发送的视频帧数据
- 不支持修改数据格式
- 此功能从 5.2.3 版本开始支持
SDK 5.2.3 以下版本
在 RCRTCCameraOutputStream 类中的 videoSendBufferCallback
中,处理后同步返回的视频 CMSampleBufferRef
会作用于本地视频显示和发送的视频数据。