跳到主要内容

美颜处理

本文描述如何在融云音视频 SDK 基础上实现美颜功能。

官方美颜插件

您可以使用融云官方提供了基础美颜插件。

步骤 1:插件集成

集成要求使用的 CallLib 或 RTCLib 版本不小于 5.1.4。有以下两种集成方式:

Maven 集成

app/build.gradle 中填入:

dependencies {
...
// x.y.z,请填写具体的 SDK 版本号,需与 CallLib 或 RTCLib 的版本号保持一致。
implementation 'cn.rongcloud.sdk:face_beautifier:x.y.z' // 美颜扩展库(可选)
}

本地集成

  1. 融云 官网下载 手动集成,选择美颜选项 sdk 下载。

  2. 将下载的 FaceBeautifier 模块引用到您的工程中。在使用音效的 Module 中添加依赖:

    implementation project(':FaceBeautifier')

步骤 2:插件使用

目前融云 Android 音视频 SDK 只支持 Texture 纹理类型为 RGB 视频格式的美颜。即需要在代码中打开 enableEncoderTexture 设置,美颜功能才会生效:

RCRTCEngine.getInstance().init(getApplicationContext(), RCRTCConfig.Builder.create().enableEncoderTexture(true).build());

美颜参数设置分为基础值设置和滤镜设置。详细值及接口说明请参考 接口文档

美颜基础参数

基础参数目前包括:美白、磨皮、亮度、红润四个参数,取值范围为 [0-10],0 代表无效果,10 代表最大效果。代码示例如下:

RCRTCBeautyOption beautyOption = RCRTCBeautyEngine.getInstance().getCurrentBeautyOption();
if (seekTypId == R.id.beauty_whiteness) {
beautyOption.setWhitenessLevel(progress); // 设置美白参数
} else if (seekTypId == R.id.beauty_smooth) {
beautyOption.setSmoothLevel(progress); // 设置磨皮参数
} else if (seekTypId == R.id.beauty_bright) {
beautyOption.setBrightLevel(progress); // 设置亮度参数
} else if (seekTypId == R.id.beauty_ruddy) {
beautyOption.setRuddyLevel(progress); // 设置红润参数
}
RCRTCBeautyEngine.getInstance().setBeautyOption(true, beautyOption); // true 是使用美颜,false 不使用美颜

美颜滤镜设置

滤镜目前包括:唯美、清新、浪漫三种风格,代码示例如下:

 RCRTCBeautyFilter beautyFilter = RCRTCBeautyEngine.getInstance().getCurrentFilter();
switch (checkedId){
case 0:{
RCRTCBeautyEngine.getInstance().setBeautyFilter(RCRTCBeautyFilter.NONE); // 不使用美颜滤镜
break;
}
case 1:{
RCRTCBeautyEngine.getInstance().setBeautyFilter(RCRTCBeautyFilter.ESTHETIC); // 唯美
break;
}
case 2:{
RCRTCBeautyEngine.getInstance().setBeautyFilter(RCRTCBeautyFilter.FRESH); // 清新
break;
}
case 3:{
RCRTCBeautyEngine.getInstance().setBeautyFilter(RCRTCBeautyFilter.ROMANTIC); // 浪漫
break;
}
default:{
Log.e(TAG, "onCheckedChanged: [group, checkedId]" + checkedId);
break;
}
}

相芯美颜插件

注意

从 5.4.0 版本开始,融云 CallLib/CallKit SDK 支持相芯美颜插件。使用相芯美颜需要购买相关授权,详情请咨询融云商务。

相芯美颜插件支持美颜、滤镜、美形和美肤功能。后续版本将完善对相芯 SDK 的封装。如需实现更多特效,您可以直接集成相芯 SDK。

当前不支持同时使用官方美颜和相芯美颜插件。

插件对应的相芯 SDK 的版本号为 8.3.0。暂不支持加载用户自定义的 bundle。

集成相芯美颜插件

声明融云 Maven 仓库后,请在 app/build.gradle 文件中添加下面内容:

dependencies {
...
// x.y.z,请填写具体的 SDK 版本号,请注意保持 CallLib 版本号保持一致。
implementation 'cn.rongcloud.sdk:fu_beautifier:x.y.z' // 相芯美颜扩展库(可选)
}

注意

x.y.z 代表当前 CallLib 的具体版本号。您可以在融云下载页或融云 Maven 仓库进行查询。如果集成了 CallKit,则必须保持 CallKit、CallLib、fu_beautifier 插件版本号前三位一致。

初始化

初始化时请提供有效的相芯美颜的授权文件(请联系融云商务购买)。应用运行期间只调用一次即可,建议在 Application#onCreate 中初始化。

RCRTCFUBeautifierEngine.getInstance().register(null, authpack.A());

美颜开关

打开美颜开关后设置的美颜效果才会生效;关闭开关美颜会失效。

RCRTCFUBeautifierEngine.getInstance().setBeautyEnable(enabled);

滤镜设置

滤镜可设置自然、白亮、冷色调、粉嫩、黑白、暖色调、蜜桃等效果。参数分两种:滤镜类别、滤镜级别。

RCRTCFUBeautifierEngine.getInstance().setFilter(FaceBeautyFilterEnum.FENNEN_1, (float) val);

美型设置

美型可设置瘦脸程度、V脸程度、窄脸程度、小脸程度、瘦鼻程度、嘴巴调整程度、开眼角强度、眼睛间距、鼻子长度、人中长度、微笑嘴角强度、瘦颧骨强度等效果。下面是设置瘦脸程度的接口调用示例,其他接口请参考相芯美颜插件 Javadoc 文档。

RCRTCFUBeautifierEngine.getInstance().setCheekThinningLevel((float) val);

美肤设置

可设置磨皮、美白、红润、锐化、亮眼、美牙、去除黑眼圈、去除法令纹强度等。下面是设置磨皮强度的接口调用示例,其他接口请参考相芯美颜插件 Javadoc 文档。

// 设置磨皮强度
RCRTCFUBeautifierEngine.getInstance().setSkinBlurLevel((float) val);

重置所有美颜效果

执行此方法后,会重置所有美颜美形效果,并释放素材和模型资源,但不会关闭美颜引擎。下次启用美颜需要重新启用。

RCRTCFUBeautifierEngine.getInstance().reset();