1 Star 0 Fork 1

杭州相芯科技有限公司 / FUNIMInteractLiveDemoDroid

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

FUNIMDemoDroid 快速接入文档

FUNIMDemoDroid 是集成了 FaceUnity 美颜贴纸功能和 云信音视频通话 的 Demo。

本文是 FaceUnity SDK 快速对接云信即时通讯的导读说明,SDK 版本为 7.2.0。关于 SDK 的详细说明,请参看 FULiveDemoDroid

这个readme是关于自定义视频对接方式的

快速集成方法

一、添加 SDK

将 faceunity 模块添加到工程中,下面是对库文件的说明。

  • assets/sticker 文件夹下 *.bundle 是特效贴纸文件。
  • assets/makeup 文件夹下 *.bundle 是美妆素材文件。
  • com/faceunity/nama/authpack.java 是鉴权证书文件,必须提供有效的证书才能运行 Demo,请联系技术支持获取。

通过 Maven 依赖最新版 SDK:implementation 'com.faceunity:nama:7.2.0',方便升级,推荐使用。

其中,AAR 包含以下内容:

    +libs
      -nama.jar                        // JNI 接口
    +assets
      +graphic                         // 图形效果道具
        -body_slim.bundle              // 美体道具
        -controller.bundle             // Avatar 道具
        -face_beautification.bundle    // 美颜道具
        -face_makeup.bundle            // 美妆道具
        -fuzzytoonfilter.bundle        // 动漫滤镜道具
        -fxaa.bundle                   // 3D 绘制抗锯齿
        -tongue.bundle                 // 舌头跟踪数据包
      +model                           // 算法能力模型
        -ai_face_processor.bundle      // 人脸识别AI能力模型,需要默认加载
        -ai_face_processor_lite.bundle // 人脸识别AI能力模型,轻量版
        -ai_hand_processor.bundle      // 手势识别AI能力模型
        -ai_human_processor.bundle     // 人体点位AI能力模型
    +jni                               // CNama fuai 库
      +armeabi-v7a
        -libCNamaSDK.so
        -libfuai.so
      +arm64-v8a
        -libCNamaSDK.so
        -libfuai.so
      +x86
        -libCNamaSDK.so
        -libfuai.so
      +x86_64
        -libCNamaSDK.so
        -libfuai.so

如需指定应用的 so 架构,请修改 app 模块 build.gradle:

android {
    // ...
    defaultConfig {
        // ...
        ndk {
            abiFilters 'armeabi-v7a', 'arm64-v8a'
        }
    }
}

如需剔除不必要的 assets 文件,请修改 app 模块 build.gradle:

android {
    // ...
    applicationVariants.all { variant ->
        variant.mergeAssetsProvider.configure {
            doLast {
                delete(fileTree(dir: outputDir, includes: ['model/ai_face_processor_lite.bundle',
                                                           'model/ai_hand_processor.bundle',
                                                           'graphics/controller.bundle',
                                                           'graphics/fuzzytoonfilter.bundle',
                                                           'graphics/fxaa.bundle',
                                                           'graphics/tongue.bundle']))
            }
        }
    }
}

二、使用 SDK

1. 初始化

调用 FURenderer 类的 setup 方法初始化 SDK,可以在工作线程调用,应用启动后仅需调用一次。

在 NimApplication 类 根据是否启用美颜sdk来调用该方法。

2.创建

调用 FURenderer 类的 onSurfaceCreated 方法在 SDK 使用前加载必要的资源。

自采集的处理都在CameraRenderer 中,包含开启相机预览美颜处理切换相机

CameraRenderer继承自AVChatExternalVideoCapturer,主要实现了startCapture与stopCapture来控制采集。

在CameraRenderer.startCapture方法中会执行onSurfaceCreated

3. 图像处理

调用 FURenderer 类的 onDrawFrameXXX 方法进行图像处理,有许多重载方法适用于不同数据类型的需求。

CameraRenderer 类中,onPreviewFrame方法会获取到相机数据,在这个方法中可以处理图片

4. 销毁

调用 FURenderer 类的 onSurfaceDestroyed 方法在 SDK 结束前释放占用的资源。

在CameraRenderer.stopCapture方法中会执行onSurfaceCreated

5. 切换相机

调用 FURenderer 类 的 onCameraChanged 方法,用于重新为 SDK 设置参数。

在 CameraRenderer 中执行切换相机操作时调用

6. 旋转手机

调用 FURenderer 类 的 onDeviceOrientationChanged 方法,用于重新为 SDK 设置参数。

1. implements SensorEventListener
2. private void onCreate() {
        sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
        Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
        sensorManager.registerListener(this, sensor, SensorManager.SENSOR_DELAY_NORMAL);
   }

3.
    @Override
    protected void onDestroy() {
        if (sensorManager != null) {
            sensorManager.unregisterListener(this);
        }
        super.onDestroy();
    }
  4.
  	//实现接口
    @Override
    public void onSensorChanged(SensorEvent event) {
        //具体代码见 LiveActivity  类
    }  

上面一系列方法的使用,具体在 demo 中的 LiveActivity,请参考该代码示例接入。

三、接口介绍

  • IFURenderer 是核心接口,提供了创建、销毁、处理等功能。使用时通过 FURenderer.Builder 创建合适的 FURenderer 实例即可。
  • IModuleManager 是模块管理接口,用于创建和销毁各个功能模块,FURenderer 是其实现类。
  • IFaceBeautyModule 是美颜模块的接口,用于调整美颜参数。使用时通过 FURenderer 拿到 FaceBeautyModule 实例,调用里面的接口方法即可。
  • IStickerModule 是贴纸模块的接口,用于加载贴纸效果。使用时通过 FURenderer 拿到 StickerModule 实例,调用里面的接口方法即可。
  • IMakeModule 是美妆模块的接口,用于加载美妆效果。使用时通过 FURenderer 拿到 MakeupModule 实例,调用里面的接口方法即可。
  • IBodySlimModule 是美体模块的接口,用于调整美体参数。使用时通过 FURenderer 拿到 BodySlimModule 实例,调用里面的接口方法即可。

至此快速集成完毕,关于 FaceUnity SDK 的更多详细说明,请参看 FULiveDemoDroid

空文件

简介

取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/hangzhou_xiangxin_1/FUNIMInteractLiveDemoDroid.git
git@gitee.com:hangzhou_xiangxin_1/FUNIMInteractLiveDemoDroid.git
hangzhou_xiangxin_1
FUNIMInteractLiveDemoDroid
FUNIMInteractLiveDemoDroid
master

搜索帮助