# FUNIMInteractLiveDemoDroid **Repository Path**: popboyking/FUNIMInteractLiveDemoDroid ## Basic Information - **Project Name**: FUNIMInteractLiveDemoDroid - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2022-07-12 - **Last Updated**: 2022-07-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # FUNIMDemoDroid 快速接入文档 FUNIMDemoDroid 是集成了 FaceUnity 美颜贴纸功能和 **[云信音视频通话]([https://dev.yunxin.163.com/docs/product/%E9%9F%B3%E8%A7%86%E9%A2%91%E9%80%9A%E8%AF%9D/SDK%E5%BC%80%E5%8F%91%E9%9B%86%E6%88%90/Android%E5%BC%80%E5%8F%91%E9%9B%86%E6%88%90/%E6%A6%82%E8%A6%81%E4%BB%8B%E7%BB%8D](https://dev.yunxin.163.com/docs/product/音视频通话/SDK开发集成/Android开发集成/概要介绍))** 的 Demo。 本文是 FaceUnity SDK 快速对接云信即时通讯的导读说明,SDK 版本为 **7.2.0**。关于 SDK 的详细说明,请参看 **[FULiveDemoDroid](https://github.com/Faceunity/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: ```groovy android { // ... defaultConfig { // ... ndk { abiFilters 'armeabi-v7a', 'arm64-v8a' } } } ``` 如需剔除不必要的 assets 文件,请修改 app 模块 build.gradle: ```groovy 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 设置参数。 ```java 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](https://github.com/Faceunity/FULiveDemoDroid/)**。