/FUQiniuRTCDemoDroid

FUQiniuRTCDemoDroid 是集成了 Faceunity 面部跟踪和虚拟道具功能 和 七牛RTC (牛会议) 的 Demo。

Primary LanguageJava

FUQNRTCDemoDroid是集成了 FaceUnity 美颜贴纸功能和 七牛实时音视频云 的 Demo。

SDK 版本为 7.4.1.0。关于 SDK 的详细说明,请参看 FULiveDemoDroid

这个README是关于自定义视频对接方式的 使用七牛sdk采集相机数据,并处理的代码在 RoomActivity 与 UserTrackViewFullScreen 类中

快速集成方法

一、添加 SDK

1. build.gradle配置

1.1 allprojects配置

allprojects {
    repositories {
        ...
        maven { url 'http://maven.faceunity.com/repository/maven-public/' }
        ...
  }
}

1.2 dependencies导入依赖

dependencies {
...
implementation 'com.faceunity:core:7.4.1.0' // 实现代码
implementation 'com.faceunity:model:7.4.1.0' // 道具以及AI bundle
...
}
备注

集成参考文档:FULiveDemoDroid 工程 doc目录

2. 其他接入方式-底层库依赖

dependencies {
...
implementation 'com.faceunity:nama:7.4.1.0' //底层库-标准版
implementation 'com.faceunity:nama-lite:7.4.1.0' //底层库-lite版
...
}

如需指定应用的 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,可以在工作线程调用,应用启动后仅需调用一次。

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

2.创建

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

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

在CameraRenderer.onResume 方法中会执行prepareRenderer

3. 图像处理

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

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

4. 销毁

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

在CameraRenderer.onPause 方法中会执行release。CameraRenderer.onPause方法可在Activity onPause方法中执行。

5. 切换相机

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

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

6. 旋转手机

CustomRoomActivity 中调用 FURenderer 类 的 setDeviceOrientation 方法,用于重新为 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) {
        //具体代码见 CustomRoomActivity  类
    }

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

三、接口介绍

  • IFURenderer 是核心接口,提供了创建、销毁、渲染等接口。
  • FaceUnityDataFactory 控制四个功能模块,用于功能模块的切换,初始化
  • FaceBeautyDataFactory 是美颜业务工厂,用于调整美颜参数。
  • PropDataFactory 是道具业务工厂,用于加载贴纸效果。
  • MakeupDataFactory 是美妆业务工厂,用于加载美妆效果。
  • BodyBeautyDataFactory 是美体业务工厂,用于调整美体参数。

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