云信美颜

更新时间: 2023/12/08 02:54:05

NERoom SDK 提供云信自研的基础美颜和高级美颜功能,帮助用户在音视频通话或互动直播场景中,对人脸进行美肤、美型等美颜调整,或通过画面滤镜改变视频的色调与氛围。

前提条件

  • 请在官网首页右侧通过在线消息、微信或电话联系云信商务经理,获取对应的美颜资源或模型。
  • 已集成 NERoom SDK,并实现了基础音视频通话或互动直播流程。
  • 已在项目中添加美颜功能的依赖。若还未添加,请参考集成 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 目录下。目录结构类似如下:

美颜资源目录.png

实现预览时开启美颜

  1. 开启预览。

    在开启视频之前,调用 startPreview 开启预览。

  2. 启用美颜模块。

    调用 startBeauty 开启美颜功能模块。开启美颜功能之后才能使用美颜、滤镜等美颜效果。

  3. 调整美颜效果。

    您可以调用 setBeautyEffect 手动设置各种美颜效果,并调整对应的效果强度,具体请参见高级美颜枚举值

    参数
    说明
    beautyType 指定美颜效果。目前支持美白、磨皮等美颜效果。
    level 指定美颜强度。取值范围为 [0,1],各种美颜效果的默认值不同。取值越大,美颜强度越大,请根据业务需要自定义设置美颜强度。

    美白、磨皮等美颜效果可以互相叠加,也可以和滤镜效果互相叠加,但是不能同时使用多款滤镜。

  4. (可选)暂停和恢复美颜。

    您可以调用 enableBeauty暂停或恢复美颜功能,参数说明如下:

    • false: 暂停美颜。暂停后,所有美颜和滤镜效果都会暂时取消,直至重新启用美颜效果。
    • true: 恢复美颜。
  5. 结束美颜模块。

    无需使用美颜效果时,需要调用 stopBeauty 结束美颜功能模块,此时 SDK 会自动销毁美颜引擎并释放资源。

  6. 停止预览。

    调用 stopPreview 停止预览。

实现房间内开启美颜

  1. 开启视频。

    进入房间后,调用unmuteMyVideo接口开启本端视频。

  2. 启用美颜模块。

    调用 startBeauty 开启美颜功能模块。开启美颜功能之后才能使用美颜、滤镜等美颜效果。

  3. 调整美颜效果。

    您可以调用 setBeautyEffect 手动设置各种美颜效果,并调整对应的效果强度,具体请参见高级美颜枚举值

    参数
    说明
    beautyType 指定美颜效果。目前支持美白、磨皮等美颜效果。
    level 指定美颜强度。取值范围为 [0,1],各种美颜效果的默认值不同。取值越大,美颜强度越大,请根据业务需要自定义设置美颜强度。

    美白、磨皮等美颜效果可以互相叠加,也可以和滤镜效果互相叠加,但是不能同时使用多款滤镜。

  4. (可选)暂停和恢复美颜。

    您可以调用 enableBeauty暂停或恢复美颜功能,参数说明如下:

    • false: 暂停美颜。暂停后,所有美颜和滤镜效果都会暂时取消,直至重新启用美颜效果。
    • true: 恢复美颜。
  5. 结束美颜模块。

    无需使用美颜效果时,需要调用 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 滤镜为例。

滤镜资源目录.png

实现预览时开启滤镜

  1. 开启预览。 在开启视频之前,调用 startPreview 开启预览。

  2. 启用美颜模块。

    调用 startBeauty 开启美颜功能模块。开启美颜功能之后才能使用美颜、滤镜等美颜效果。

  3. 调用 addBeautyFilter 添加滤镜效果。

    您可以通过setBeautyFilterLevel 设置滤镜强度。

    滤镜效果可以和美颜等效果互相叠加,但是不支持叠加多个滤镜。

    需要更换滤镜时,重复调用此接口使用新的滤镜资源即可。

    参数 说明
    path 指定滤镜模型所在路径。
    level 指定滤镜强度,取值范围为 [0,1],默认为 0.5。取值越大,滤镜越明显,请根据业务需要自定义设置滤镜强度
  4. 不需要使用滤镜效果时,调用 removeBeautyFilter 移除滤镜。

  5. 结束美颜模块。

    无需使用美颜效果时,需要调用 stopBeauty 结束美颜功能模块,此时 SDK 会自动销毁美颜引擎并释放资源。

  6. 停止预览。

    调用 stopPreview 停止预览。

实现房间内开启滤镜

  1. 开启视频。

    进入房间后,调用unmuteMyVideo接口开启本端视频。

  2. 启用美颜模块。

    调用 startBeauty 开启美颜功能模块。开启美颜功能之后才能使用美颜、滤镜等美颜效果。

  3. 调用 addBeautyFilter 添加滤镜效果。

    您可以通过setBeautyFilterLevel 设置滤镜强度。

    滤镜效果可以和美颜等效果互相叠加,但是不支持叠加多个滤镜。

    需要更换滤镜时,重复调用此接口使用新的滤镜资源即可。

    参数 说明
    path 指定滤镜模型所在路径。
    level 指定滤镜强度,取值范围为 [0,1],默认为 0.5。取值越大,滤镜越明显,请根据业务需要自定义设置滤镜强度
  4. 不需要使用滤镜效果时,调用 removeBeautyFilter 移除滤镜。

  5. 结束美颜模块。

    无需使用美颜效果时,需要调用 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 移除滤镜。
此文档是否对你有帮助?
有帮助
去反馈
  • 前提条件
  • 基础美颜
  • 高级美颜
  • 准备工作
  • 实现预览时开启美颜
  • 实现房间内开启美颜
  • 高级美颜枚举值
  • 滤镜
  • 准备工作
  • 实现预览时开启滤镜
  • 实现房间内开启滤镜
  • 示例代码
  • 实现预览时开启美颜和滤镜
  • 实现房间内开启美颜和滤镜
  • API 参考