云信美颜
更新时间: 2023/04/26 19:33:24
NERoom SDK 提供云信自研的基础美颜和高级美颜功能,帮助用户在音视频通话或互动直播场景中,对人脸进行美肤、美型等美颜调整,或通过画面滤镜改变视频的色调与氛围。
前提条件
- 请在官网首页右侧通过在线消息、微信或电话联系云信商务经理,获取对应的美颜资源或模型。
- 已集成 NERoom SDK,并实现了基础音视频通话或互动直播流程。
基础美颜
云信基础美颜可免费使用。
云信基础美颜支持美白、磨皮、红润和锐化 4 种效果,程度可调节,具体参数如下表所示。
分类 | 项 | 枚举值 | 描述 |
---|---|---|---|
美肤 | 美白 | Whiten | 强度范围 0~1,默认值为 0,推荐值为 0.80 |
磨皮 | Smooth | 强度范围 0~1,默认值为 0,推荐值为 0.65 | |
红润 | FaceRuddy | 强度范围 0~1,默认值为 0,推荐值为 0.30 | |
锐化 | FaceSharpen | 强度范围 0~1,默认值为 0,推荐值为 0.10 |
基础美颜的实现方法和高级美颜一样,具体步骤请参见高级美颜中的实现方法。
高级美颜
云信高级美颜提供美白、磨皮、瘦脸、大眼等多种美肤、美型效果。NERoom SDK 基础美颜、高级美颜的实现方法如下:
准备工作
向商务经理获取美颜资源,将美颜资源放到 assets
目录下。目录结构类似如下:
实现预览时开启美颜
-
开启预览。
在开启视频之前,调用 startPreview 开启预览。
-
启用美颜模块。
调用 startBeauty 开启美颜功能模块。开启美颜功能之后才能使用美颜、滤镜等美颜效果。
-
调整美颜效果。
您可以调用 setBeautyEffect 手动设置各种美颜效果,并调整对应的效果强度,具体请参见高级美颜枚举值。
参数说明beautyType
指定美颜效果。目前支持美白、磨皮等美颜效果。 level
指定美颜强度。取值范围为 [0,1],各种美颜效果的默认值不同。取值越大,美颜强度越大,请根据业务需要自定义设置美颜强度。 美白、磨皮等美颜效果可以互相叠加,也可以和滤镜效果互相叠加,但是不能同时使用多款滤镜。
-
(可选)暂停和恢复美颜。
您可以调用 enableBeauty暂停或恢复美颜功能,参数说明如下:
- false: 暂停美颜。暂停后,所有美颜和滤镜效果都会暂时取消,直至重新启用美颜效果。
- true: 恢复美颜。
-
结束美颜模块。
无需使用美颜效果时,需要调用 stopBeauty 结束美颜功能模块,此时 SDK 会自动销毁美颜引擎并释放资源。
-
停止预览。
调用 stopPreview 停止预览。
实现房间内开启美颜
-
开启视频。
进入房间后,调用unmuteMyVideo接口开启本端视频。
-
启用美颜模块。
调用 startBeauty 开启美颜功能模块。开启美颜功能之后才能使用美颜、滤镜等美颜效果。
-
调整美颜效果。
您可以调用 setBeautyEffect 手动设置各种美颜效果,并调整对应的效果强度,具体请参见高级美颜枚举值。
参数说明beautyType
指定美颜效果。目前支持美白、磨皮等美颜效果。 level
指定美颜强度。取值范围为 [0,1],各种美颜效果的默认值不同。取值越大,美颜强度越大,请根据业务需要自定义设置美颜强度。 美白、磨皮等美颜效果可以互相叠加,也可以和滤镜效果互相叠加,但是不能同时使用多款滤镜。
-
(可选)暂停和恢复美颜。
您可以调用 enableBeauty暂停或恢复美颜功能,参数说明如下:
- false: 暂停美颜。暂停后,所有美颜和滤镜效果都会暂时取消,直至重新启用美颜效果。
- true: 恢复美颜。
-
结束美颜模块。
无需使用美颜效果时,需要调用 stopBeauty 结束美颜功能模块,此时 SDK 会自动销毁美颜引擎并释放资源。
高级美颜枚举值
高级美颜目前有 23 种效果,程度可调节,且包含了基础美颜的 4 种效果。
分类 | 项 | 枚举值 | 描述 |
---|---|---|---|
美肤 | 美白 | Whiten | 强度范围 0~1,默认值为 0,推荐值为 0.80 |
磨皮 | Smooth | 强度范围 0~1,默认值为 0,推荐值为 0.65 | |
红润 | FaceRuddy | 强度范围 0~1,默认值为 0,推荐值为 0.30 | |
锐化 | FaceSharpen | 强度范围 0~1,默认值为 0,推荐值为 0.10 | |
脸型 | 瘦脸 | ThinFace | 强度范围 0~1,默认值为 0,推荐值为 0.35 |
V 脸 | VFace | 强度范围 0~1,默认值为 0,推荐值为 0.00 | |
窄脸 | NarrowFace | 强度范围 0~1,默认值为 0,推荐值为 0.00 | |
小脸 | SmallFace | 强度范围 0~1,默认值为 0,推荐值为 0.10 | |
面部 | 瘦颧骨 | CheekBone | 强度范围 0~1,默认值为 0,推荐值为 0.30 |
瘦下颌 | UnderJaw | 强度范围 0~1,默认值为 0,推荐值为 0.30 | |
瘦下巴 | Jaw | 强度范围 0~1,默认值为 0,推荐值为 0.40 | |
人中调整 | Philtrum | 强度范围 0~1,默认值为 0.50,推荐值为 0.50 | |
眼睛 | 大眼 | BigEye | 强度范围 0~1,默认值为 0,推荐值为 0.30 |
圆眼 | RoundEye | 强度范围 0~1,默认值为 0,推荐值为 0.80 | |
亮眼 | LightEye | 强度范围 0~1,默认值为 0,推荐值为 0.60 | |
开眼角 | EyeCorner | 强度范围 0~1,默认值为 0,推荐值为 0.30 | |
眼距调整 | EyeDis | 强度范围 0~1,默认值为 0.50,推荐值为 0.50 | |
眼角调整 | EyeAngle | 强度范围 0~1,默认值为 0.50,推荐值为 0.50 | |
鼻子 | 小鼻 | SmallNose | 强度范围 0~1,默认值为 0,推荐值为 0.40 |
鼻长调整 | LongNose | 强度范围 0~1,默认值为 0.50,推荐值为 0.50 | |
嘴巴 | 美牙 | WhiteTeeth | 强度范围 0~1,默认值为 0,推荐值为 0.30 |
嘴角调整 | MouthAngle | 强度范围 0~1,默认值为 0.50,推荐值为 0.50 | |
嘴型调整 | Mouth | 强度范围 0~1,默认值为 0.50,推荐值为 0.50 |
滤镜
云信美颜支持通过美颜资源或模型打造多种个性化的滤镜,用户可以在视频预览时或者加入房间后,开启滤镜,实现方法如下:
准备工作
请向云信商务经理获取对应的滤镜资源。将滤镜资源放到 assets
目录下,App 启动后再把 assets\filter_portrait
目录下您需要的滤镜效果拷贝到 SD 卡上,下图以 filter_style_FN1 滤镜为例。
实现预览时开启滤镜
-
开启预览。 在开启视频之前,调用 startPreview 开启预览。
-
启用美颜模块。
调用 startBeauty 开启美颜功能模块。开启美颜功能之后才能使用美颜、滤镜等美颜效果。
-
调用
addBeautyFilter
添加滤镜效果。您可以通过
setBeautyFilterLevel
设置滤镜强度。滤镜效果可以和美颜等效果互相叠加,但是不支持叠加多个滤镜。
需要更换滤镜时,重复调用此接口使用新的滤镜资源即可。
参数 说明 path
指定滤镜模型所在路径。 level
指定滤镜强度,取值范围为 [0,1],默认为 0.5。取值越大,滤镜越明显,请根据业务需要自定义设置滤镜强度 -
不需要使用滤镜效果时,调用
removeBeautyFilter
移除滤镜。 -
结束美颜模块。
无需使用美颜效果时,需要调用 stopBeauty 结束美颜功能模块,此时 SDK 会自动销毁美颜引擎并释放资源。
-
停止预览。
调用 stopPreview 停止预览。
实现房间内开启滤镜
-
开启视频。
进入房间后,调用unmuteMyVideo接口开启本端视频。
-
启用美颜模块。
调用 startBeauty 开启美颜功能模块。开启美颜功能之后才能使用美颜、滤镜等美颜效果。
-
调用
addBeautyFilter
添加滤镜效果。您可以通过
setBeautyFilterLevel
设置滤镜强度。滤镜效果可以和美颜等效果互相叠加,但是不支持叠加多个滤镜。
需要更换滤镜时,重复调用此接口使用新的滤镜资源即可。
参数 说明 path
指定滤镜模型所在路径。 level
指定滤镜强度,取值范围为 [0,1],默认为 0.5。取值越大,滤镜越明显,请根据业务需要自定义设置滤镜强度 -
不需要使用滤镜效果时,调用
removeBeautyFilter
移除滤镜。 -
结束美颜模块。
无需使用美颜效果时,需要调用 stopBeauty 结束美颜功能模块,此时 SDK 会自动销毁美颜引擎并释放资源。
示例代码
实现预览时开启美颜和滤镜
NERoomService service = NERoomKit.getInstance().getService(NERoomService.class);
service.previewRoom(new NEPreviewRoomParams(), new NEPreviewRoomOptions(), new NECallback<NEPreviewRoomContext>() {
@Override
public void onResult(int code, @Nullable String message, @Nullable NEPreviewRoomContext previewRoomContext) {
//1. 开启预览
previewRoomContext.getPreviewController().startPreview();
//2. 开启美颜
previewRoomContext.getPreviewController().startBeauty();
//3. 根据需要是否暂停美颜功能,false: 暂停美颜,true: 恢复美颜
previewRoomContext.getPreviewController().enableBeauty(true);
//4. 根据需要调用setBeautyEffect,addBeautyFilter接口来设置美颜及强度,滤镜效果
previewRoomContext.getPreviewController().setBeautyEffect(NERoomBeautyEffectType.Whiten, 0.5F);
//5. 选择本地应用存储路径
String externalPath = Environment.getExternalStorageDirectory().getAbsolutePath();
previewRoomContext.getPreviewController().addBeautyFilter(externalPath);
//6. 根据需要设置filter强度
previewRoomContext.getPreviewController().setBeautyFilterLevel(1.0F);
//7. 停止美颜
previewRoomContext.getPreviewController().stopBeauty();
//8. 停止预览
previewRoomContext.getPreviewController().stopPreview();
}
});
实现房间内开启美颜和滤镜
NERoomService service = NERoomKit.getInstance().getService(NERoomService.class);
service.joinRoom(new NEJoinRoomParams("roomUuid","userName", "avatar", "role", "password", new HashMap<>()), new NEJoinRoomOptions(), new NECallback<NERoomContext>() {
@Override
public void onResult(int code, @Nullable String message, @Nullable NERoomContext roomContext) {
//1. 开启视频
roomContext.getRtcController().unmuteMyVideo(callback);
//2. 开启美颜
roomContext.getRtcController().startBeauty();
//3. 根据需要是否暂停美颜功能,false: 暂停美颜,true: 恢复美颜
roomContext.getRtcController().enableBeauty(true);
//4. 根据需要调用setBeautyEffect,addBeautyFilter接口来设置美颜及强度,滤镜效果
roomContext.getRtcController().setBeautyEffect(NERoomBeautyEffectType.Whiten, 0.5F);
//5. 选择本地应用存储路径
String externalPath = Environment.getExternalStorageDirectory().getAbsolutePath();
roomContext.getRtcController().addBeautyFilter(externalPath);
//6. 根据需要设置filter强度
roomContext.getRtcController().setBeautyFilterLevel(1.0F);
//7. 停止美颜
roomContext.getRtcController().stopBeauty();
}
});
API 参考
接口 | 说明 |
---|---|
startBeauty | 开启美颜功能模块。 |
stopBeauty | 结束美颜功能模块。 |
enableBeauty | 暂停或恢复美颜效果。 |
setBeautyEffect | 设置美颜效果。 |
addBeautyFilter | 添加滤镜效果。 |
setBeautyFilterLevel | 设置滤镜强度。 |
removeBeautyFilter | 移除滤镜。 |