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

190 lines
6.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# **LiveBeauty**
## **一、模块介绍**
### **模块职责**
**LiveBeauty**模块,为**美颜前处理**模块主要负责对Queen SDK的封装一站式使用美颜处理。
## **二、前置条件**
**1.申请License**
参考文档:[获取美颜特效SDK License](https://help.aliyun.com/zh/live/user-guide/obtain-a-license-of-queen-sdk/)
**2.配置License**
参考项目 README.md 文档里面的**配置License**环节。
## **三、接入流程**
**1.引入插件模块**
如果使用 LiveBeauty 功能,请注意引入 live_queenbeauty 模块:
```groovy
implementation project(':LiveBeauty:live_queenbeauty')
```
**2.美颜处理逻辑**
```java
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布局**
```xml
<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声明**
```java
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的包名被修改请注意同步在代码中修改包名否则在实例化失败导致美颜调用无效**
```java
public class BeautyConstant {
// 由于beauty模块是插件化因此beauty实例是通过反射进行实例化请注意修改美颜具体实现impl类名以免出现美颜初始化失败导致美颜失效的问题
public static final String BEAUTY_QUEEN_MANAGER_CLASS_NAME = "com.alivc.live.queenbeauty.QueenBeautyImpl";
}
```
### 依赖关系
```groovy
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](https://www.aliyun.com/activity/cdn/video/rtc_race)基础版和高级版区别,详见:[Android端集成美颜特效SDK](https://help.aliyun.com/zh/live/user-guide/integrate-queen-sdk-for-android)
* **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](https://help.aliyun.com/zh/live/developer-reference/push-sdk)
[音视频终端SDK](https://help.aliyun.com/product/261167.html)
[美颜特效SDK](https://help.aliyun.com/zh/apsara-video-sdk/developer-reference/queen-sdk/)
[美颜特效SDK通用问题](https://help.aliyun.com/zh/apsara-video-sdk/developer-reference/faq-related-to-queen-sdk)
### **FAQ**
如果您在使用推流SDK有任何问题或建议欢迎通过钉钉搜索群号32825314或44911608加入推流SDK开发者生态群。
您在美颜特效SDK使用过程中有任何问题或建议请通过开发者支持群联系我们钉钉搜索群号34197869加入。