文档中心
Old_Live_Room 互动视频
文档中心
体验 App
SDK 中心
API 中心
常见问题
代码市场
进入控制台
立即注册
登录
中文站 English
  • 文档中心
  • 互动视频
  • 视频进阶
  • 美颜
  • 滤镜
  • 水印

美颜/滤镜/水印

更新时间:2022-10-11 15:50

1 功能简介

  1. 当在视频通话或直播时,希望向对方呈现出良好的肌肤状态,可使用 ZEGO SDK 的基础美颜功能来实现。开发者可以开启美颜开关,调整美白、磨皮等美颜参数,也可以设置滤镜,以实现自然的美颜效果。
  2. 当需要为教育类的教学课件设置版权方 Logo 等场景下,可使用 SDK 的水印功能来实现。

2 使用美颜

2.1 初始化 SDK

如何初始化请查看文档:快速开始-初始化

2.2 开启美颜

成功初始化 SDK 之后,调用 enableBeautifying 开启美颜功能,开启美颜功能若不设置磨皮、美白等参数,SDK 采用默认的美颜参数值。

  • 接口原型:

    public boolean enableBeautifying(int feature)

  • 参数: feature:美颜特性,参考 ZegoBeauty 定义,默认无美颜;ZegoBeauty 中的美颜特性枚举都采用相应的默认值,比如 POLISH 等同与 zegoliveRoom.setPolishStep(4.0)。

  • 示例代码如下:

    ...
    private ZegoLiveRoom zegoliveRoom;
    zegoliveRoom = new ZegoLiveRoom();
    // 初始化 SDK
    ...
    // 开启美颜
    zegoliveRoom.enableBeautifying(ZegoBeauty.POLISH | ZegoBeauty.SKIN_WHITEN); // 此处示例同时开启磨皮和美白特性,可以根据需要开启其它美颜特性

2.3 自定义美颜参数

开启美颜后,可在推流时按需设置美颜的磨皮,美白,锐化等参数来达到特定的美颜效果;此步骤是可选的。

2.3.1 设置磨皮参数

若需自定义磨皮的力度,可调用 com.zego.zegoliveroom.ZegoLiveRoom 包下的 setPolishStep 来设置磨皮参数。

  • 接口原型:

    public boolean setPolishStep(float step)

  • 参数:

    step:磨皮的采样半径,取值范围[1,16],默认值是 4.0;参数值越大,磨皮力度越大,皮肤肉眼效果更好。

  • 示例代码如下:

    ...
    // 初始化 SDK 等操作
    ...
    // 设置美颜磨皮的采样步长
    zegoliveRoom.setPolishStep(4.0); //此处磨皮的采样半径采用默认值 4.0

2.3.2 设置美白参数

若需自定义美白的亮度,可调用 com.zego.zegoliveroom.ZegoLiveRoom 包下的 setWhitenFactor 来设置美白参数。

  • 接口原型:

    public boolean setWhitenFactor(float factor)

  • 参数:

    factor:美白亮度修正系数,取值范围[0,1],默认值是 0.5;参数值越大亮度越暗即参数值越小越白。

  • 示例代码如下:

    ...
    // 初始化 SDK 等操作
    ...
    // 设置美颜美白的亮度修正参数
    zegoliveRoom.setWhitenFactor(0.5); //此处美白亮度修正系数采用默认值 0.5

2.3.3 设置锐化参数

若需自定义画面的锐化效果,可调用 com.zego.zegoliveroom.ZegoLiveRoom 包下的 setSharpenFactor 来设置锐化参数。

  • 接口原型:

    public boolean setSharpenFactor(float factor)

  • 参数:

    factor:锐化系数,取值范围[0,2],默认值是 0.2;参数值越大锐化越强,图片越清晰。

  • 示例代码如下:

    ...
    // 初始化 SDK 等操作
    ...
    // 设置锐化参数
    zegoliveRoom.setSharpenFactor(0.2); //此处锐化系数采用默认值 0.2

2.3.4 设置美颜采样颜色阈值

若需自定义美颜采样颜色的阈值,可调用 com.zego.zegoliveroom.ZegoLiveRoom 包下的 setPolishFactor 来设置采样颜色参数。

  • 接口原型:

    public boolean setPolishFactor(float factor, int channelIndex)

  • 参数:

    factor:美颜采样颜色系数,取值范围[0,16],默认值是 4.0;参数值越小,画面稍微有点儿朦胧。

    channelIndex:推流通道index, 参考 ZegoConstants.PublishChannelIndex

  • 示例代码如下:

    ...
    // 初始化 SDK 等操作
    ...
    // 设置美颜采样颜色阈值
    zegoliveRoom.setPolishFactor(4.0); //此处采样颜色系数采用默认值 4.0

2.4 设置滤镜

若需使用滤镜调整画面颜色,可调用 com.zego.zegoliveroom.ZegoLiveRoom 包下的 setFilter 来设置滤镜类型。

  • 接口原型:

    public boolean setFilter(int filter)

  • 参数:

    filter:滤镜类型,参考 ZegoFilter,默认不使用滤镜。

  • 示例代码如下:

    ...
    // 初始化 SDK 等操作
    ...
    // 设置滤镜
    zegoliveRoom.setFilter(ZegoFilter.BlackWhite); //此处滤镜类型采用黑白

3 使用水印

3.1 初始化 SDK

如何初始化请查看文档:快速开始-初始化

3.2 选用水印图片

可调用 com.zego.zegoliveroom.ZegoLiveRoom 包下的 setWaterMarkImagePath 选择用做水印的图片。

注意:

  1. 需要在初始化 SDK 成功后设置水印。
  2. 水印图片只支持 png、jpg 格式。
  • 接口原型:

    public static boolean setWaterMarkImagePath(String imagePath)

  • 参数:

    imagePath:预设置的水印图片路径,绝对路径。

  • 示例代码如下:

    ...
    // 设置水印图片路径
    // 1. 图片是完整路径时的用法
    ZegoliveRoom.setWaterMarkImagePath("file:/sdcard/image.png"); 
    // 2. 图片存在于 assets 
    ZegoliveRoom.setWaterMarkImagePath("asset:watermark.png"); 

3.3 设置水印图片位置

3.3.1 设置预览画面的水印图片位置

需要在本地预览画面上添加水印时,调用 com.zego.zegoliveroom.ZegoLiveRoom 包下的 setPreviewWaterMarkRect。

  • 接口原型:

    public static boolean setPreviewWaterMarkRect(Rect rect)

  • 参数:

    rect:水印图片的位置与尺寸,左上角为坐标系原点,区域不能超过设置的编码分辨率值。

3.3.2 设置推流画面的水印图片位置

需要在推流画面添加水印时,调用 com.zego.zegoliveroom.ZegoLiveRoom 包下的 setPublishWaterMarkRect。

  • 接口原型:

    public static boolean setPublishWaterMarkRect(Rect rect)

  • 参数:

    rect:水印图片的位置,左上角为坐标系原点,区域不能超过设置的推流编码分辨率。

4 API 参考列表

方法 描述
enableBeautifying 开启美颜
setFilter 设置滤镜
setPolishStep 设置美颜磨皮的采样步长
setWhitenFactor 设置美颜美白的亮度修正参数
setSharpenFactor 设置锐化参数
setPolishFactor 设置美颜采样颜色阈值
setWaterMarkImagePath 设置水印图片的路径
setPublishWaterMarkRect 设置推流水印图片的位置
setPreviewWaterMarkRect 设置预览水印图片的位置

5 相关文档

完成了美颜、滤镜或者水印的设置后,可以使用 ZEGO SDK 依次完成如下功能来实现直播以检验美颜、滤镜或者水印设置的效果。

  • 快速开始-登录房间
  • 快速开始-推流
  • 快速开始-拉流

6 FAQ

Q1:如何消除水印?

  答:可通过以下代码实现消除水印。

Rect rect = new Rect (left:0, top:0, right:0, bottom:0);
ZegoLiveRoom.setWaterMarkImagePath("");
ZegoLiveRoom.setPreviewWaterMarkRect(rect);
zegoLiveRoom.setPublishWaterMarkRect(rect);
本篇目录
  • 免费试用
  • 提交工单
    咨询集成、功能及报价等问题
    电话咨询
    400 1006 604
    咨询客服
    微信扫码,24h在线

    联系我们

  • 文档反馈