相芯美颜

更新时间: 2023/08/02 06:22:40

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

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

准备工作

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

功能原理

相芯美颜原理.png

  1. NERTC SDK 提供了 setVideoCallback 采集数据回调的接口,将采集到的视频图像数据通过该接口回调出来。

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

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

基本概念

  • 纹理(Texture):纹理指的是一张二维的图片,把它像贴纸一样贴在图元上面,让图元看起来像贴纸所要表现的效果那样。
  • NV21:NV21是 YUV420SP 图像编码的一种类型。根据 YUV 来定义图像的颜色,其中Y 表示明亮度,U 和 V 分别表示色调和饱和度。Android 系统的相机默认的图像格式是 NV21 。它比 RGB 模型的图像更省存储空间和带宽。
  • 双输入:纹理+ YUV 双份数据输入。

基于 Demo 源码集成

您可以基于1对1 娱乐社交示例项目源码,快速集成相芯美颜。

  1. 将源码工程中的 beauty/beauty-faceunity 文件夹拷贝到您的项目目录下。

  2. 将证书文件 authpack.java 放到本地项目的 beauty/beauty-faceunity/src/main/java/com/faceunity/nama 目录下(如果存在则替换)。

  3. 在项目对应模块的 build.gradle 中加入以下行。

    // allprojects配置
    allprojects {
        repositories {
            ...
            maven { url 'https://maven.faceunity.com/repository/maven-public/' } 
            ...
        }
    }
    
  4. settings.gradle 中添加

    include(":beauty:beauty-faceunity")
    
  5. 在 Android Studio 中,单击 Sync Project with Gradle Files 按钮SyncProjectwithGradleFiles.png,同步工程依赖。

  6. 在 Application 中初始化。

    FURenderer.getInstance().init(this);
    
  7. 在视频帧的回调中增加美颜处理。

    NERtcEx.getInstance()
          .setVideoCallback(
              neRtcVideoFrame -> {
                if (isFirstInit) {
                  isFirstInit = false;
                  mHandler = new Handler(Looper.myLooper());
                  mFURendererManager.prepareRenderer(mFURendererListener);
                  return false;
                }
                int texId =
                    mFURendererManager.onDrawFrameSingleInput(
                        neRtcVideoFrame.textureId, neRtcVideoFrame.width, neRtcVideoFrame.height);
                if (mSkipFrame-- > 0) {
                  return false;
                }
                if (neRtcVideoFrame.format == NERtcVideoFrame.Format.TEXTURE_OES) {
                  neRtcVideoFrame.format = NERtcVideoFrame.Format.TEXTURE_RGB;
                }
                neRtcVideoFrame.textureId = texId;
                return true;
              },
              true);
    
  8. 在需要打开美颜的地方打开美颜页面。

    Intent intent = new Intent(context, BeautySettingActivity.class);
    intent.putExtra(BeautySettingActivity.INTENT_KEY_APP_KEY, AppConfig.getAppKey());
    context.startActivity(intent);
    

相关文档

基于 RTC SDK 集成相芯美颜的步骤请参见相芯美颜

此文档是否对你有帮助?
有帮助
去反馈
  • 准备工作
  • 功能原理
  • 基本概念
  • 基于 Demo 源码集成
  • 相关文档