Android

DingRTC SDK为您提供基础美颜功能和第三方美颜接入功能的接口和回调。通过阅读本文,您可以了解使用基础美颜以及第三方美颜的相关流程。

基础美颜

  • 功能简介

    基础美颜功能,包含了美白和磨皮两种功能。您可以在直播、视频通话、视频会议等场景中,通过美颜功能提高使用体验。

  • 实现方法

    DingRTC SDK 通过 enableBeautyFace 方法设置是否启用基础美颜。

    public abstract int enableBeautyFace(boolean enable, DingRtcBeautyFaceOptions options);

    参数

    类型

    描述

    enable

    boolean

    是否启用基础美颜,取值:true:开启美颜,false:关闭美颜。默认false。

    options

    DingRtcBeautyFaceOptions

    基础美颜参数。

第三方美颜

  • 功能简介

    功能简介DingRTC SDK 在 3.2 及以上版本中提供了支持第三方美颜功能,通常第三方美颜SDK接受以下两种类型的数据回调处理:

    • I420等不同格式的裸数据。

    • openGL 纹理数据用于最终做美颜效果的处理。

  • 接入流程

    以下第三方美颜功能以接入opengl纹理为例:

    1. 初始化 RtcEngine对象。

    2. 实现一个美颜处理的类,假设为BeautyFaceObserver, 里面继承 DingRtcEngine.DingRtcVideoObserver,并根据具体第三方美颜库实现相关方法,onLocalVideoSample方法中实现美颜处理的具体代码。

    3. enableVideoSampleObserver选择回调的时机,registerVideoSampleObserver注册视频流观察者回调。

    4. 在每一帧的视频处理中,会回调到onLocalVideoSample进行视频流的处理,根据处理的结果,可以设置返回的textureId的值,如果成功处理,则返回更新的textureId的值,否则保持原来的textureId的值。

    5. onDestroy 做第三方算法BeautyFaceObserver的销毁工作。

第三方美颜接口调用

  • DingRTC SDK 在接入第三方美颜的时候,需要订阅采集之后的前处理数据,所以在 startPreview 之后需要调用 enableVideoSampleObserverregisterVideoSampleObserver 接口获取采集前处理数据并处理。

    // @param enable 是否允许数据回调。
    // @param position 视频数据类型。
    public abstract int enableVideoSampleObserver(boolean enable, int position);

    // @param observer 视频数据输出对象。
    public abstract void registerVideoSampleObserver(com.ding.rtc.DingRtcEngine.DingRtcVideoObserver observer);
  • 订阅成功后,将会回调 DingRtcVideoObserveronLocalVideoSample 参数。

    // @param sourceType, 视频流类型
    // @param videoSample, 帧数据
    public boolean onLocalVideoSample(DingRtcEngine.DingRtcVideoSourceType sourceType, DingRtcEngine.DingRtcVideoSample videoSample) {
        return false;
    }

    返回说明

    • return true:需要写回SDK(默认写回,需要操作DingRtcVideoSample.data时必须要写回)

    • return false:不需要写回SDK。(不需要写回SDK(需要直接操作DingRtcVideoSample.dataFrameY、DingRtcVideoSample.dataFrameU、DingRtcVideoSample.dataFrameV时使用)