集成呼叫组件和第三方美颜

更新时间: 2022/11/24 07:38:24

如果您的产品中集成了呼叫组件,同时又想要集成相芯等第三方美颜,您可以参考本文中的示例代码进行实现。

业务场景

在社交娱乐或教育场景中,用户在进行视频通话或直播的过程中,常常希望向对方呈现良好的肌肤状态和精神面貌。NERTC SDK 提供了采集数据回调的 API 方法,帮助您轻松接入相芯等第三方专业美颜滤镜厂商。

呼叫组件(NERtcCallKit)是基于 NERTC 和 IM 封装的融合性场景组件,包含了呼叫和音视频通话能力。如果您的产品中集成了呼叫组件,同时又想要集成相芯等第三方美颜,您可以参考本文中的示例代码进行实现。

注意事项

该场景中无需执行初始化 RTC 的步骤,因为初始化呼叫组件时已经自动执行了初始化 RTC 的相关流程。

实现方法

  1. 初始化呼叫组件。

  2. 设置呼叫组件 engineDelegate 针对 RTC 回调的转发代理。

  3. 调用 NERTC 的 setParameters 接口,将 kNERtcKeyVideoCaptureObserverEnabled 参数设置为 YES,开启视频数据采集回调。

    • 如果是主叫,请在 call 之后,调用以上命令开启视频数据采集回调。
    • 如果是被叫,请在 accept 之前,调用以上命令开启视频数据采集回调。
    • 如果没有开启视频数据采集回调,默认只回调视频首帧。
  4. NERTC 通过 onNERtcEngineVideoFrameCaptured:rotation: 回调获取视频数据,之后对回调返回的视频数据做相应的美颜处理。

示例代码

- (void)setupCallKit {
    NERtcEngine *coreEngine = [NERtcEngine sharedEngine];    
    
    // 呼叫组件初始化
    NERtcCallOptions *option = [NERtcCallOptions new];
    option.APNSCerName = @"your apns cer name";
    NERtcCallKit *callkit = [NERtcCallKit sharedInstance];
    [callkit setupAppKey:@"your app key" options:option];
    
    //呼叫组件设置rtc代理中转
    callkit.engineDelegate = self;
    
     // 美颜设置。主叫请在 call 之后调用,被叫请在 accept 之前调用。
    NSDictionary *params = @{
        kNERtcKeyVideoCaptureObserverEnabled: @YES  // 开启视频数据采集回调
    };
    [coreEngine setParameters:params];
}
 
// 在代理方法中对视频数据进行处理
- (void)onNERtcEngineVideoFrameCaptured:(CVPixelBufferRef)bufferRef rotation:(NERtcVideoRotationType)rotation
{
    // 对视频数据 bufferRef 进行处理, 务必保证 CVPixelBufferRef 的地址值不变,分辨率不变
}

相关文档

此文档是否对你有帮助?
有帮助
去反馈
  • 业务场景
  • 注意事项
  • 实现方法
  • 示例代码
  • 相关文档