相芯美颜

更新时间: 2025/06/11 16:45:39

网易云信 NERTC SDK 支持接入相芯等第三方专业美颜滤镜厂商,实现美颜、美妆、滤镜、贴纸等美颜特效。在娱乐社交、在线教育等场景中,您可以快速构建具备美颜特效能力的应用,让用户在进行视频通话或直播时,呈现更良好的肌肤状态和精神面貌。

相芯美颜(Faceunity Nama SDK,下文简称 Nama SDK)的详细功能介绍请参考 人脸特效

准备工作

根据本文操作前,请确保您已经完成了以下设置:

  1. 下载相芯美颜 SDK
  2. 获取相芯美颜 SDK 的证书,具体请联系网易云信商务经理。
  3. 获取相芯美颜资源文件,具体请联系网易云信商务经理。

功能原理

相芯美颜原理.png
  1. NERTC SDK 提供了 onCaptureVideoFrame 采集数据回调的接口,将采集到的视频图像数据通过该接口回调出来。

  2. Nama SDK 通过回调获取视频图像数据,进行美颜处理后,通过参数返回给 NERTC SDK。

  3. NERTC SDK 将美颜后的数据进行编码和传输。

注意事项

  • 该设置仅在加入房间之前设置才有效。

  • onCaptureVideoFrame 回调必须同步返回,且保证 data 的地址值不被改变,分辨率不改变。

示例项目源码

网易云信提供 第三方美颜的示例项目源码,您可以参考该源码实现第三方美颜。

第一步:集成相芯美颜

  1. 将证书文件 authpack.h 放到本地项目的 Beauty 目录下。

  2. 将所需的美颜模型和道具放到本地项目的 Resource 目录下。

  3. 集成相芯美颜 SDK,具体步骤请参考 Faceunity Nama 相关文档

第二步:初始化相芯美颜 SDK

具体步骤请参考 Faceunity Nama 相关文档

第三步:视频图像处理

  1. 调用 setParameters 接口,将 kNERtcKeyEnableVideoCaptureObserver 的值设置为 YES,开启摄像头采集数据的回调。

    • V5.3.0 及之后版本需要执行该步骤。
    • V4.6.X 版本请忽略该步骤。
  2. 在成功加入房间后,调用 enableLocalVideo 方法开启本地视频采集,并设置 NERtcVideoStreamTypekNERTCVideoStreamMain,否则美颜效果不会生效。

  3. 在代理方法 onCaptureVideoFrame 中,将原始视频图像数据通过回调发给相芯美颜的接口,做相应的美颜处理。

    相关参数的含义如下:

    参数名称 参数含义
    data 采集视频数据
    type 视频类型
    width 视频宽度。
    height 视频高度
    count 视频 plane count
    offset 视频 offset
    stride 视频 stride
    rotation 视频旋转角度
  4. 调用相芯美颜的接口,从 NERTC 回调中获取原始视频图像数据,对视频图像数据进行美颜处理,美颜后的视频数据再通过参数返回给 NERTC 代理。

    示例代码

    C++std::string params("{\"enable_video_capture_observer\":1}");
    rtcEngine->setParameters(params.c_str());
    
    rtcEngine->enableLocalVideo(nertc::kNERTCVideoStreamMain, true);
    
    void onCaptureVideoFrame(void *data,
        NERtcVideoType type,
        uint32_t width,
        uint32_t height,
        uint32_t count,
        uint32_t offset[kNERtcMaxPlaneCount],
        uint32_t stride[kNERtcMaxPlaneCount],
        NERtcVideoRotation rotation)
    {
        //请自行实现美颜相关逻辑
    }
    

第四步:设置美颜效果

美颜、美妆、滤镜、贴纸效果的具体参数设置,请参考 Faceunity Nama 相关文档

API 参考

方法 功能描述
enableLocalVideo 开启本地视频采集。
setParameters 设置摄像头采集数据的回调。
onCaptureVideoFrame 视频帧数据回调。

常见问题

使用美颜后画面会闪一下,怎么办?

  • 可能原因:相芯 7.x.x 版本 SDK 前 5 帧存在渲染问题。

  • 解决方案

    • 升级相芯版本至 8.x.x 版本。
    • 若不想升级相芯版本,在美颜处理时,建议您丢弃前 5 帧。

使用美颜后画面出现闪屏、黑屏,怎么办?

  • 可能原因:美颜拿到了采集的过程数据没拿到结果数据。
  • 解决方案
    • 初始化相芯 SDK 时,调用 fuSetUseTexAsync(true) 方法。
    • 升级 NERTC SDK 至 4.6.50 及以后的版本。详情请参考 升级指南

使用美颜后出现画面卡顿,怎么办?

  • 可能原因 1:采集帧率设置太高,例如 30 帧,美颜也会按照 30 帧率进行处理。在一些低端机上,高帧率会对整个系统产生较大的压力,美颜处理时间可能会超过每一帧预期的帧间隔,引发画面卡顿。

  • 解决方案:降低采集帧率,在 NERTC SDK 的视频配置中,将帧率设置为 15。

  • 可能原因 2:相芯 SDK 日志级别太低,导致每处理一帧都会打印大量日志,影响整体性能。

  • 解决方案:在初始化时,关闭相芯 SDK 日志,将日志级别设置为 OFF

    C++fuSetLogLevel(FU_LOG_LEVEL_OFF);
    
此文档是否对你有帮助?
有帮助
去反馈
  • 准备工作
  • 功能原理
  • 注意事项
  • 示例项目源码
  • 第一步:集成相芯美颜
  • 第二步:初始化相芯美颜 SDK
  • 第三步:视频图像处理
  • 第四步:设置美颜效果
  • API 参考
  • 常见问题
  • 使用美颜后画面会闪一下,怎么办?
  • 使用美颜后画面出现闪屏、黑屏,怎么办?
  • 使用美颜后出现画面卡顿,怎么办?