benyq / FUSuWangDemoDroid

FUSuWangDemoDroid是集成了 Faceunity 面部跟踪和虚拟道具功能和网宿推流 SDK 的 Demo 。

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

FUQNRTCDemoDroid是集成了 FaceUnity 美颜贴纸功能和 昆瑞-集成网宿推流 的 Demo。

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

在对接过程中,自定义视频源,并发送Texture是性能最佳方式,具体内容在 MainCustomActivity 与 CameraRenderer 中


快速集成方法

一、添加 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'
        }
    }
}

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

在 MyApp(Application) 类 中初始化。

2.创建

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

在 CameraRenderer 类 onResume 方法中执行。

3. 图像处理

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

onDrawFrameSingleInput 是单输入,输入图像buffer数组或者纹理Id,输出纹理Id onDrawFrameDualInput 双输入,输入图像buffer数组与纹理Id,输出纹理Id。性能上,双输入优于单输入

@Override
public int onDrawFrame(byte[] nv21Byte, int texId, int cameraWidth, int cameraHeight, float[] mvpMatrix, float[] texMatrix, long timeStamp) {
    if (nv21Byte == null) {
        return 0;
    }
    if (mReadBack == null) {
        mReadBack = new byte[nv21Byte.length];
    }
    if (mFURenderer != null) {
        final int texture = mFURenderer.onDrawFrameDualInput(nv21Byte, texId, cameraWidth, cameraHeight);
        return texture;
    }
    return 0;
}

4. 销毁

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

在 CameraRenderer 类 onPause方法中执行。

5. 切换相机

在 MainCustomActivity 中 R.id.btn_switch 控件的点击事件中执行。 切换相机之后需要重新设置sdk参数, 详见 MainCustomActivity 480~491行

6. 旋转手机

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

使用方法:MainCustomActivity 中可见

1.implements SensorEventListener
2. onCreate()    
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
Sensor sensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
mSensorManager.registerListener(this, sensor, SensorManager.SENSOR_DELAY_NORMAL);

3.@Override
protected void onDestroy() {
    super.onDestroy();
    // 清理相关资源
    if (null != mSensorManager) {
        mSensorManager.unregisterListener(this);
    }
}
4. 
//实现接口
@Override
public void onSensorChanged(SensorEvent event) {
    //具体代码见 MainCustomActivity  类
}

注意: 上面一系列方法的使用,具体在 demo 中的 MainCustomActivityCameraRenderer 类,参考该代码示例接入即可。

三、接口介绍

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

关于 SDK 的更多详细说明,请参看 FULiveDemoDroid。如有对接问题,请联系技术支持。

About

FUSuWangDemoDroid是集成了 Faceunity 面部跟踪和虚拟道具功能和网宿推流 SDK 的 Demo 。


Languages

Language:Java 100.0%