高级美颜(旧版)

  • Android

更新时间不可用

了解实时互动 RTC 在不同平台上的高级美颜(旧版)方式,包括接入流程、关键配置和平台差异。

信息

本文介绍如何实现美型和美妆两种高级美颜功能。本文适用于 v4.5.x 版本的 SDK。如果你的 SDK 版本 v4.6.0 及以上,请参考高级美颜了解如何使用美颜 2.0。

功能介绍

SDK 提供 setBeautyEffectOptions 方法,用于实现美白、磨皮等基础美颜功能。

自 v4.5.0 起,SDK 提供以下高级美颜功能:

  • 美型:对人脸各部位进行修饰(即捏脸),使用预设的模板一次性实现瘦脸、大眼、瘦鼻等微整形效果,也支持对人脸的各个部位单独微调,实现更加精细的美型效果。
  • 美妆:实现眼影、美瞳、睫毛、美眉、唇彩、腮红等美妆特效。

信息

当前,高级美颜为限时免费。未来可能会变更为单独计费的增值服务,届时请以实际计费为准,详见计费说明。

前提条件

在实现高级美颜之前,请确保:

  • 已集成实时互动 SDK v4.5.0 及以上版本。
  • 已在 App 中实现了基本的实时音视频功能,且 App 已获取相关设备的使用权限。请参考实现音视频互动。
  • SDK 已集成视频增强动态库,如果删除该动态库会导致无法正常开启高级美颜。动态库名和集成方式详见插件列表。
  • 如需使用美妆功能,请联系技术支持获取美妆资源。

实现高级美颜

美型

实现预设美型效果

setFaceShapeBeautyOptions 方法为美型效果的总开关,调用该方法,并在 enable 参数中传入 true 即可开启美型效果。你可以在 FaceShapeBeautyOptions 中指定美型风格和风格强度,使用预设的参数快速实现美型效果。

Java
import io.agora.rtc2.video.FaceShapeBeautyOptions;

FaceShapeBeautyOptions beautyOptions = new FaceShapeBeautyOptions();
// 设置美型风格类型为男性
beautyOptions.shapeStyle = FaceShapeBeautyOptions.FACE_SHAPE_BEAUTY_STYLE_MALE;
// 设置风格强度
beautyOptions.styleIntensity = 100;
mRtcEngine.setFaceShapeBeautyOptions(true, beautyOptions);

微调单个部位

开启美型后,调用 setFaceShapeAreaOptions 方法可对人脸的各个部位单独微调。该方法对单个部位修饰力度的调整为立即生效,不会修改预设值。

Java
import io.agora.rtc2.video.FaceShapeAreaOptions;

FaceShapeAreaOptions areaOptions = new FaceShapeAreaOptions();
// 指定一个微调的部位,比如:头部尺寸
areaOptions.shapeArea = FaceShapeAreaOptions.FACE_SHAPE_AREA_HEADSCALE;
// 该部位调整的强度
areaOptions.shapeIntensity = 100;
mRtcEngine.setFaceShapeAreaOptions(areaOptions);

关闭美型

调用 setFaceShapeEffectOptions 方法,并在 enable 参数中传入 false 即可关闭美型效果。

Java
mRtcEngine.setFaceShapeBeautyOptions(false, beautyOptions)

美妆

开启美妆

调用 setExtensionProperty 方法开启美妆效果,参考以下说明填写参数:

  • provider:agora_video_filters_clear_vision
  • extension:clear_vision
  • key:makeup_options
  • value:以 JSON 格式包装,其中不同的字段对应了不同的美妆效果,详见美妆 JSON 字段说明。
  • sourceType:仅支持以下设置:
    • 使用摄像头采集时,保持默认的 PRIMARY_CAMERA_SOURCE。
    • 自采集场景下,设为 CUSTOM_VIDEO_SOURCE。

参考以下代码开启美妆效果:

Java
// 创建一个用于配置美妆效果的 JSON
public class MpOptions {
    public static final String TAG = "MpOptions";
    public boolean enable_mu;
    public int browStyle;
    public int browColor;
    public float browStrength;
    public int lashStyle;
    public int lashColor;
    public float lashStrength;
    public int shadowStyle;
    public float shadowStrength;
    public int pupilStyle;
    public float pupilStrength;
    public int blushStyle;
    public int blushColor;
    public float blushStrength;
    public int lipStyle;
    public int lipColor;
    public float lipStrength;

    public MpOptions() {
        this.enable_mu = false;
        this.browStyle = 0;
        this.browColor = 0;
        this.browStrength = 0.5f;
        this.lashStyle = 0;
        this.lashColor = 0;
        this.lashStrength = 0.5f;
        this.shadowStyle = 0;
        this.shadowStrength = 0.5f;
        this.pupilStyle = 0;
        this.pupilStrength = 0.5f;
        this.blushStyle = 0;
        this.blushColor = 0;
        this.blushStrength = 0.5f;
        this.lipStyle = 0;
        this.lipColor = 0;
        this.lipStrength = 0.5f;
    }

    public String toJson() {
        String json = "{}";
        JSONObject jsonObject = new JSONObject();

        try {
            Field[] fields = MpOptions.class.getDeclaredFields();
            for (Field field : fields) {
                field.setAccessible(true);
                String name = field.getName();
                Object value = field.get(this);
                jsonObject.put(name, value);
            }
        } catch (Exception e) {
            Log.e(TAG, "toJson: error:" + e.getMessage());
        }
        json = jsonObject.toString();
        Log.d(TAG, "toJson: " + json);
        return json;
    }
}

// 设置美妆效果选项
MpOptions makeUpOptions = new MpOptions();
makeUpOptions.enable_mu = true;
makeUpOptions.lashStyle = 1;
makeUpOptions.lashColor = 2;
makeUpOptions.lashStrength = 0.5f;
// 开启美妆效果
mRtcEngine.setExtensionProperty("agora_video_filters_clear_vision", "clear_vision", "makeup_options", makeUpOptions.toJson(), Constants.MediaSourceType.PRIMARY_CAMERA_SOURCE);

修改美妆效果选项

修改 JSON 中美妆效果字段的值后调用 setExtensionProperty 方法,即可修改美妆效果选项。参考以下代码修改美妆效果:

Java
MpOptions makeUpOptions = new MpOptions();
// 修改眉毛修饰力度
makeUpOptions.lashStrength = 0.8f;
mRtcEngine.setExtensionProperty("agora_video_filters_clear_vision", "clear_vision", "makeup_options", makeUpOptions.toJson(), Constants.MediaSourceType.PRIMARY_CAMERA_SOURCE);

关闭美妆效果

在 JSON 中指定 enable_mu 节点为 false,再调用 setExtensionProperty 方法即可关闭美妆效果:

Java
MpOptions makeUpOptions = new MpOptions();
makeUpOptions.enable_mu = false;
mRtcEngine.setExtensionProperty("agora_video_filters_clear_vision", "clear_vision", "makeup_options", makeUpOptions.toJson(), Constants.MediaSourceType.PRIMARY_CAMERA_SOURCE);

参考信息

示例项目

声网提供了开源的实现高级美颜示例项目供你参考,你可以前往下载或查看其中的源代码。

API 参考

美型

美妆

美妆 JSON 字段说明

实现美妆效果的 JSON 示例和具体字段说明如下:

JSON
{
    "enable_mu": true,
    "browStyle": 1,
    "browColor": 2,
    "browStrength": 0.5,
    "lashStyle": 1,
    "lashColor": 2,
    "lashStrength": 0.5,
    "shadowStyle": 2,
    "shadowStrength": 0.5,
    "pupilStyle": 2,
    "pupilStrength": 0.5,
    "blushStyle": 1,
    "blushColor": 1,
    "blushStrength": 0.5,
    "lipStyle": 2,
    "lipColor": 2,
    "lipStrength": 0.5
}
  • enable_mu:Boolean。美妆开关。设置为:
    • true:开启美妆效果。
    • false:关闭美妆效果。
  • browStyle:Integer。眉毛类型,可选值为:
    • 0:关闭。
    • 1:类型 1。
    • 2:类型 2。
  • browColor:Integer。眉毛颜色,可选值为:
    • 0:无。
    • 1:黑色。
    • 2:棕色。
  • browStrength:Float。眉毛强度,取值范围为 [0.0, 1.0],其中:
    • 0.0:无强度。
    • 1.0:最大强度。
  • lashStyle:Integer。眼睫毛类型,可选值为:
    • 0:关闭。
    • 1:类型 1。
    • 2:类型 2。
  • lashColor:Integer。眼睫毛颜色,可选值为:
    • 0:无。
    • 1:黑色。
    • 2:棕色。
  • lashStrength:Float。眼睫毛强度,取值范围为 [0.0, 1.0]。
  • shadowStyle:Integer。眼影类型,可选值为:
    • 0:关闭。
    • 1:类型 1。
    • 2:类型 2。
  • shadowStrength:Float。眼影强度,取值范围为 [0.0, 1.0]。
  • pupilStyle:Integer。瞳孔类型,可选值为:
    • 0:关闭。
    • 1:类型 1。
    • 2:类型 2。
  • pupilStrength:Float。瞳孔强度,取值范围为 [0.0, 1.0]。
  • blushStyle:Integer。腮红类型,可选值为:
    • 0:关闭。
    • 1:类型 1。
    • 2:类型 2。
  • blushColor:Integer。腮红颜色,可选值为:
    • 0:无。
    • 1:1号色。
    • 2:2号色。
    • 3:3号色。
    • 4:4号色。
    • 5:5号色。
  • blushStrength:Float。腮红强度,取值范围为 [0.0, 1.0]。
  • lipStyle:Integer。唇彩类型,可选值为:
    • 0:关闭。
    • 1:类型 1。
    • 2:类型 2。
  • lipColor:Integer。唇彩颜色,可选值为:
    • 0:无。
    • 1:1号色。
    • 2:2号色。
    • 3:3号色。
    • 4:4号色。
    • 5:5号色。
  • lipStrength:Float。唇彩强度,取值范围为 [0.0, 1.0]。

这个页面有帮助吗?