Files
babelive_and/LiveBeauty
2026-02-06 14:55:21 +08:00
..
2026-02-06 14:55:21 +08:00

LiveBeauty

一、模块介绍

模块职责

LiveBeauty模块,为美颜前处理模块主要负责对Queen SDK的封装一站式使用美颜处理。

二、前置条件

1.申请License

参考文档:获取美颜特效SDK License

2.配置License

参考项目 README.md 文档里面的配置License环节。

三、接入流程

1.引入插件模块

如果使用 LiveBeauty 功能,请注意引入 live_queenbeauty 模块:

implementation project(':LiveBeauty:live_queenbeauty')

2.美颜处理逻辑

private BeautyInterface mBeautyManager;

mAlivcLivePusher.setCustomFilter(new AlivcLivePushCustomFilter() {
    @Override
    public void customFilterCreate() {
        initBeautyManager();
    }

    @Override
    public int customFilterProcess(int inputTexture, int textureWidth, int textureHeight, long extra) {
        if (mBeautyManager == null) {
            return inputTexture;
        }

        return mBeautyManager.onTextureInput(inputTexture, textureWidth, textureHeight);
    }

    @Override
    public void customFilterDestroy() {
        destroyBeautyManager();
        Log.d(TAG, "customFilterDestroy---> thread_id: " + Thread.currentThread().getId());
    }
});

private void initBeautyManager() {
    if (mBeautyManager == null) {
        Log.d(TAG, "initBeautyManager start");
        // 从v6.2.0开始基础模式下的美颜和互动模式下的美颜处理逻辑保持一致QueenBeautyImpl
        mBeautyManager = BeautyFactory.createBeauty(BeautySDKType.QUEEN, mContext);
        // initialize in texture thread.
        mBeautyManager.init();
        mBeautyManager.setBeautyEnable(isBeautyEnable);
        mBeautyManager.switchCameraId(mCameraId);
        Log.d(TAG, "initBeautyManager end");
    }
}

private void destroyBeautyManager() {
    if (mBeautyManager != null) {
        mBeautyManager.release();
        mBeautyManager = null;
    }
}

3.美颜UI面板逻辑

  • UI布局
<com.aliyunsdk.queen.menu.QueenBeautyMenu
    android:id="@+id/beauty_beauty_menuPanel"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true" />
  • UI声明
QueenMenuPanel beautyMenuPanel = QueenBeautyMenu.getPanel(context);
beautyMenuPanel.onHideMenu();
beautyMenuPanel.onHideValidFeatures();
beautyMenuPanel.onHideCopyright();

QueenBeautyMenu beautyBeautyContainerView = findViewById(R.id.beauty_beauty_menuPanel);
beautyBeautyContainerView.addView(beautyMenuPanel);

四、模块实现

模块介绍

LiveBeauty负责美颜处理的基础模块分为live_beauty和live_queenbeauty两个模块。

live_beauty模块主要负责对于直播场景下美颜接口的抽象

live_queenbeauty是基于live_beauty抽象接口对Queen美颜SDK的封装与具体实现。

实现逻辑

  • 对外接口BeautyInterface
  • 核心实现QueenBeautyImpl
  • 创建实例BeautyFactory

由于模块实现了插件化因此beauty实例是通过反射进行实例化

BeautyInterface类负责抽象出一套统一的对外接口

BeautyFactory类通过反射创建实例

QueenBeautyImpl类为Queen SDK美颜实现(核心逻辑)

注意如果QueenBeautyImpl的包名被修改请注意同步在代码中修改包名否则在实例化失败导致美颜调用无效

public class BeautyConstant {
    // 由于beauty模块是插件化因此beauty实例是通过反射进行实例化请注意修改美颜具体实现impl类名以免出现美颜初始化失败导致美颜失效的问题
    public static final String BEAUTY_QUEEN_MANAGER_CLASS_NAME = "com.alivc.live.queenbeauty.QueenBeautyImpl";
}

依赖关系

dependencies {
    api project(':LiveBeauty:live_beauty')

    // 美颜UI面板
    api "com.aliyun.maliang.android:queen_menu:6.7.0-official-pro-tiny"

    // 一体化SDK包含基础美颜功能
    implementation "com.aliyun.aio:AliVCSDK_InteractiveLive:6.7.0"

    // 此处引用外部独立版本高级功能Queen
    implementation "com.aliyun.maliang.android:queen:6.7.0-official-pro"
}

注意: 直播独立SDK不包含基础美颜功能一体化SDK包含基础美颜功能Queen SDK包含基础美颜+高级美颜功能。

注明: Queen SDK基础版和高级版区别,详见:Android端集成美颜特效SDK

  • queen_menu

Queen SDK官网提供的UI库美颜UI面板及美颜资源加载库

可扩展

BeautyInterface为抽象化的美颜接口类客户可以基于该接口类对接其它美颜SDK实现一套基于其它美颜SDK的实现参考QueenBeautyImpl

在BeautyConstant里面定义实现类的包路径在BeautySDKType里面定义美颜SDK类型通过BeautyFactory指定美颜SDK类型完成反射实例化。

五、重要更新

  • v4.4.4~v6.1.0基础直播下的美颜处理逻辑参考BeautySDKType.QUEENQueenBeautyImpl互动直播下的美颜处理逻辑参考BeautySDKType.INTERACT_QUEENInteractQueenBeautyImpl

  • v6.2.0~v6.6.0互动直播下的美颜与基础直播下的美颜完成统一处理逻辑保持一致QueenBeautyImpl

  • v6.7.0开始一体化SDK只包含基础美颜功能高级美颜功能需要单独集成美颜SDK详见模块文档

六、用户指引

文档

推流SDK

音视频终端SDK

美颜特效SDK

美颜特效SDK通用问题

FAQ

如果您在使用推流SDK有任何问题或建议欢迎通过钉钉搜索群号32825314或44911608加入推流SDK开发者生态群。

您在美颜特效SDK使用过程中有任何问题或建议请通过开发者支持群联系我们钉钉搜索群号34197869加入。