美颜和水印
更新时间:2020-12-28 17:45
1 功能简介
当在视频通话或直播时,希望向对方呈现出良好的肌肤状态,可使用 SDK 的基础美颜功能来实现。开发者可以开启美颜开关,调整美白、磨皮等美颜参数。
当需要为教育类的教学课件设置版权方 Logo 等场景下,可使用 SDK 的水印功能来实现。
本文主要讲述如何利用其 API 实现相关功能。
2 使用步骤
2.1 开启美颜
接口原型:
/** 美颜特性 */
public enum ZegoBeautifyFeature {
/** 无美颜 */
NONE(0),
/** 磨皮 */
POLISH(1 << 0),
/** 全屏美白 */
WHITEN(1 << 1),
/** 皮肤美白 */
SKIN_WHITEN(1 << 2),
/** 锐化 */
SHARPEN(1 << 3);
// 枚举的其它方法 ...
}
/**
* 开/关美颜
*
* 识别视频中的人像进行美颜。开始推流前后都可以设置。
* @param featureBitmask 比特掩码格式,可选择同时开启 ZegoBeautifyFeature 中的几个特性
*/
public void enableBeautify(int featureBitmask)
调用示例:
// 开启磨皮和锐化,sdk 为 ZegoExpressEngine 的实例
sdk.enableBeautify(ZegoBeautifyFeature.POLISH.value()|ZegoBeautifyFeature.SHARPEN.value());
// 关闭所有美颜功能
sdk.enableBeautify(ZegoBeautifyFeature.NONE.value());
2.2 自定义美颜参数
上一节开启美颜功能之后,SDK 将采用默认的美颜参数来进行美颜;用户可根据实际的需求来自定义美颜参数。
接口原型:
public class ZegoBeautifyOption {
/** 美颜磨皮的采样步长,取值范围[0,1],默认 0.2 */
public double polishStep;
/** 美颜美白的亮度参数,值越大亮度越亮,取值范围[0,1],默认 0.5 */
public double whitenFactor;
/** 美颜锐化参数,值越大锐化越强,取值范围[0,1],默认 0.1 */
public double sharpenFactor;
}
/**
* 设置美颜参数
*
* @param option 美颜选项参数
*/
public void setBeautifyOption(ZegoBeautifyOption option)
调用示例:
ZegoBeautifyOption option = new ZegoBeautifyOption();
option.polishStep = 0.4;
option.whitenFactor = 0.5;
option.sharpenFactor = 0.2;
sdk.setBeautifyOption(option);
2.3 使用水印
接口原型:
/**
* 设置推流水印
*
* 推流前设置,水印的布局不能超出推流的视频编码分辨率。
* @param watermark 水印布局左上角为坐标系原点,区域不能超过编码分辨率设置的大小。若为空表示取消水印。
* @param isPreviewVisible 是否本地预览能看见水印
*/
public void setPublishWatermark(@Nullable ZegoWatermark watermark, boolean isPreviewVisible)
2.3.1 绝对路径的形式
file://[图片资源名称]
需要将图片存放在 Android 设备的某目录中, 例如 Android 的 app 的私有目录: /sdcard/Android/data/im.zego.zegoexpressapp/ZegoLogo.png
调用示例:
// 支持 jpg 与 png 格式的图片, 如果图片是放在Android工程的资产assets目录, imageURL 则须使用 "asset://" 作为前缀, 如果是设备上的绝对路径, imageURL 则须使用 "file://" 为前缀 + 设备上的绝对路径
String imageURL = "file:///sdcard/Android/data/im.zego.zegoexpressapp/ZegoLogo.png";
Rect layout = new Rect(0,0,300,600);
ZegoWatermark watermark = new ZegoWatermark(imageURL, layout);
sdk.setPublishWatermark(watermark, true);
2.3.2 Assets 形式
asset://[图片资源名称]
需要将图片存放在 Android 工程的 assets 目录中:
调用示例:
// 支持 jpg 与 png 格式的图片, 如果图片是放在Android工程的资产assets目录, imageURL 则须使用 "asset://" 作为前缀, 如果是设备上的绝对路径, imageURL 则须使用 "file://" 为前缀 + 设备上的绝对路径
String imageURL = "asset://ZegoLogo.png";
Rect layout = new Rect(0,0,300,600);
ZegoWatermark watermark = new ZegoWatermark(imageURL,layout);
sdk.setPublishWatermark(watermark, true);
4 API 参考列表
5 Q&A
Q1:ZegoWatermark 中的 imageURL 如何指定?
答:支持 jpg 与 png 格式的图片, 如果图片是放在Android工程的资产assets目录, imageURL 则须使用 "asset://" 作为前缀, 如果是设备上的绝对路径, imageURL 则须使用 "file://" 为前缀 + 设备上的绝对路径
Q2: ZegoWatermark 中的 layout 如何指定?
答:水印的布局不能超过当前设置的推流的视频编码分辨率,对推流编码分辨率的设置可参考
setVideoConfig 接口。