/FULpSdkDemoDroid

FULpSdkDemoDroid 是集成了 Faceunity 面部跟踪和虚拟道具功能 和 腾讯移动直播推流 的 Demo。

Primary LanguageJava

FuLpSdkDemoDroid 快速接入文档

FuLpSdkDemoDroid 是集成了 Faceunity 面部跟踪和虚拟道具功能和**腾讯移动直播推流**的 Demo。

本文是 FaceUnity SDK 快速对 腾讯推流 的导读说明,关于 FaceUnity SDK 的详细说明,请参看 FULiveDemoDroid

快速集成方法

一、导入 SDK

将 FaceUnity 文件夹全部放到工程中。

  • jniLibs 文件夹下 libnama.so 人脸跟踪及道具绘制核心静态库
  • libs 文件夹下 nama.jar java层native接口封装
  • v3.bundle 初始化必须的二进制文件
  • face_beautification.bundle 我司美颜相关的二进制文件
  • effects 文件夹下的 *.bundle 文件是我司制作的特效贴纸文件,自定义特效贴纸制作的文档和工具请联系我司获取。

二、全局配置

在 FURenderer类 的 initFURenderer 静态方法是对 Faceunity SDK 一些全局数据初始化的封装,可以在 Application 中调用,仅需初始化一次即可。

public static void initFURenderer(Context context);

三、使用 SDK

  1. 初始化

在 FURenderer类 的 onSurfaceCreated 方法是对 Faceunity SDK 每次使用前数据初始化的封装。

  1. 图像处理

在 FURenderer类 的 onDrawFrame 方法是对 Faceunity SDK 图像处理方法的封装,该方法有许多重载方法适用于不同的数据类型需求。

  1. 销毁

在 FURenderer类 的 onSurfaceDestroyed 方法是对 Faceunity SDK 数据销毁的封装。

在 demo 中的示例:

   private boolean mFirstCreate = true;
/*设置自定义视频处理回调,在主播预览及编码前回调出来,用户可以用来做自定义美颜或者增加视频特效*/
        mLivePusher.setVideoProcessListener(new TXLivePusher.VideoCustomProcessListener() {
            /**
             * 在OpenGL线程中回调,在这里可以进行采集图像的二次处理
             * @param i  纹理ID
             * @param i1      纹理的宽度
             * @param i2     纹理的高度
             * @return 返回给SDK的纹理
             * 说明:SDK回调出来的纹理类型是GLES20.GL_TEXTURE_2D,接口返回给SDK的纹理类型也必须是GLES20.GL_TEXTURE_2D
             */
            @Override
            public int onTextureCustomProcess(int i, int i1, int i2) {
                if (mFirstCreate) {
                    mFURenderer.onSurfaceCreated();
                    mFirstCreate = false;
                }
                int texId = mFURenderer.onDrawFrame(i, i1, i2);
                return texId;
            }

            /**
             * 增值版回调人脸坐标
             * @param floats   归一化人脸坐标,每两个值表示某点P的X,Y值。值域[0.f, 1.f]
             */
            @Override
            public void onDetectFacePoints(float[] floats) {

            }

            /**
             * 在OpenGL线程中回调,可以在这里释放创建的OpenGL资源
             */
            @Override
            public void onTextureDestoryed() {
                mFURenderer.onSurfaceDestroyed();
                mFirstCreate = true;
            }
        });
  1. 切换摄像头

调用 FURenderer类 的 onCameraChange 方法完成切换。

  private boolean mFrontCamera = true;
  mFURenderer.onCameraChange(mFrontCamera ? Camera.CameraInfo.CAMERA_FACING_FRONT : Camera.CameraInfo.CAMERA_FACING_BACK, 0);

四、切换道具及调整美颜参数

本例中 FURenderer类 实现了 OnFUControlListener接口,而OnFUControlListener接口是对切换道具及调整美颜参数等一系列操作的封装,demo中使用了BeautyControlView作为切换道具及调整美颜参数的控制view。使用以下代码便可实现view对各种参数的控制。

mBeautyControlView.setOnFUControlListener(mFURenderer);

PS: 本 Demo 只是简单集成了 FaceUnity SDK。关于直播 SDK 的使用请参考腾讯的文档。

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