云信美颜
更新时间: 2024/08/05 15:02:55
在音视频通话或互动直播场景中,用户往往希望通过美颜塑形效果呈现出良好的肌肤状态,或通过画面滤镜改变视频的色调与氛围。NERTC 提供美颜功能,可以精准识别优化面部细节,在逆光和暗角下仍能准确识别追踪人脸,打造自然贴肤的美颜效果。
功能描述
NERTC SDK 支持的美颜功能提供 setBeautyEffect
、setFilter
等方法调整美颜、滤镜相关参数,帮助您轻松实现基础美颜功能。用户可以设置明暗对比度、亮度、红润度以及平滑度等多种全局的美肤效果,还可以通过美颜资源打造多种个性化的美颜效果,例如滤镜等。
前提条件
在实现美颜功能前,请确保已在您的项目中实现基本的实时音视频功能。
注意事项
- 美颜的计算和渲染处理属于实时计算密集型操作,此操作过程中存在较大的 GPU 和 CPU 开销,因此若用户的设备性能不足以支撑运算,不建议启用此功能,否则可能会导致帧率下降等问题。
- 若您使用的是 Safari 浏览器,由于浏览器的限制,在您开启了美颜功能后,切后台时,SDK 会自动停止对视频的采集与播放,切回此页面后即可恢复。如果您需要保证在切后台时,视频可以正常播放,则需要添加 visibilitychange 监听,监听切换后台的动作。在切后台导致页面失活时,关闭美颜功能;并在切回页面时,自动开启美颜。
- 若您使用的是 Safari 15 版本的浏览器,请注意此版本有未修复的 bug,会导致您开启美颜功能时出现黑屏,建议将浏览器更新到 Safari 最新版本。
- 在 Safari 浏览器上开启了美颜功能后,若您需要调用
localStream.stop()
方法停止播放音视频流,请在此之前先关闭美颜功能;若您需要再次开启美颜功能,请在此之前先调用localStream.play()
方法播放音视频流。 - 用户可以在音视频通话过程中,调用
setBeautyEffectOptions
方法实时调整美颜相关参数。 - 若用户在启用美颜功能后关闭了摄像头,画面会变成黑屏,无美颜效果。若用户希望继续使用美颜功能,需要再次开启摄像头,并在
localStream.open()
回调中再次调用setBeautyEffect
方法开启美颜,默认继续使用原来设置的相关参数。 - 若用户在启用美颜功能后切换了摄像头,则需要在
localStream.switchDevice()
回调中再次调用setBeautyEffect
方法才能继续正常使用美颜功能,默认继续用原来设置的相关参数。 - 暂不支持同时开启美颜和编码水印功能。
- 美颜功能暂时仅支持桌面端,暂不兼容 Firefox 浏览器。
配置步骤
- 在成功加入房间并初始化本地音视频流后,调用
localStream.play()
方法播放本地音视频流。 - 调用
setBeautyEffect
方法启用美颜功能。调用此方法时,您需要设置 enable 参数为 true 开启美颜。 - 调用
setBeautyEffectOptions
方法设置美颜参数。相关参数的说明如下。- brightnessLevel:设置美白度。该参数的取值范围为 0 ~ 1,默认值为 0。
- rednessLevel:设置红润度。该参数的取值范围为 0 ~ 1,默认值为 0。
- smoothnessLevel:设置平滑度。该参数的取值范围为 0 ~ 1,默认值为 0。
- (可选)调用
setFilter
方法设置滤镜参数。调用此方法时,您需要设置 filter 参数为滤镜种类;并设置 intensity 参数为滤镜强度,该参数的取值范围为 0 ~ 1。具体的滤镜种类请参见下表。
枚举值 | 描述 |
---|---|
ziran | 自然。强度默认值为 1。 |
baixi | 白皙。强度默认值为 0.5。 |
fennen | 粉嫩。强度默认值为 0.5。 |
weimei | 唯美。强度默认值为 0.5。 |
langman | 浪漫。强度默认值为 0.5。 |
rixi | 日系。强度默认值为 0.5。 |
landiao | 蓝调。强度默认值为 0.5。 |
qingliang | 清凉。强度默认值为 0.5。 |
huaijiu | 怀旧。强度默认值为 0.5。 |
qingcheng | 青橙。强度默认值为 1。 |
wuhou | 午后。强度默认值为 1。 |
zhigan | 质感。强度默认值为 1。 |
mopian | 默片。强度默认值为 1。 |
dianying | 电影。强度默认值为 1。 |
heibai | 黑白。强度默认值为 1。 |
- 若您需要关闭滤镜,请调用
setFilter
方法,并设置 intensity 参数为 0;若您需要关闭美颜功能,请调用setBeautyEffect
方法,并设置 enable 参数为 false 关闭美颜。
示例代码
使用美颜功能的基础流程对应的示例代码如下:
// 创建本端 stream 实例
rtc.localStream = NERTC.createStream({
uid: uid, // 本端的uid
audio: true, // 是否从麦克风采集音频
microphoneId: microphoneId, // 麦克风设备 deviceId,通过 getMicrophones() 获取
video: true, // 是否从摄像头采集视频
cameraId: cameraId // 摄像头设备 deviceId,通过 getCameras() 获取
});
//启动本地音视频流
rtc.localStream.init().then(()=>{
//音视频初始化完成
let div = document.getElementById('local-container')
//开始播放本地视频流
rtc.localStream.play(div)
})
//开启美颜功能
rtc.localStream.setBeautyEffect(enable:true)
//设置美颜参数并传递
let effects = {
brightnessLevel: 0, // 美白度(0 - 1),默认值是 0
rednessLevel: 0, // 红润度(0 - 1),默认值是 0
smoothnessLevel: 0 // 平滑度(0 - 1),默认值是 0
}
rtc.localStream.setBeautyEffectOptions(effects)
//设置滤镜参数并传递。滤镜强度都在 0 ~ 1 之间。
rtc.localStream.setFilter(filter:String, intensity?:Number);
//例如
rtc.localStream.setFilter('ziran', 1);
//需要关闭滤镜,将强度设置成 0 即可
//关闭美颜功能
rtc.localStream.setBeautyEffect(enable:false)
在美颜功能开启的进程中切换摄像头的示例代码如下:
//切换摄像头
rtc.localStream.switchDevice('video', cameraId).then(()=>{
rtc.localStream.setBeautyEffect(true);
})
在美颜功能开启的进程中关闭摄像头后的操作对应的示例代码如下:
// 先关闭美颜, 再关闭摄像头
rtc.localStream.setBeautyEffect(false);
rtc.localStream.close({
type: 'video'
})
//打开摄像头并使用美颜功能
rtc.localStream.open({
type: 'video',
deviceId: deviceId,
}).then(()=>{
rtc.localStream.setBeautyEffect(true);
})
此文档是否对你有帮助?