云信美颜

更新时间: 2024/08/05 15:02:55

在音视频通话或互动直播场景中,用户往往希望通过美颜塑形效果呈现出良好的肌肤状态,或通过画面滤镜改变视频的色调与氛围。NERTC 提供美颜功能,可以精准识别优化面部细节,在逆光和暗角下仍能准确识别追踪人脸,打造自然贴肤的美颜效果。

功能描述

NERTC SDK 支持的美颜功能提供 setBeautyEffectsetFilter 等方法调整美颜、滤镜相关参数,帮助您轻松实现基础美颜功能。用户可以设置明暗对比度、亮度、红润度以及平滑度等多种全局的美肤效果,还可以通过美颜资源打造多种个性化的美颜效果,例如滤镜等。

前提条件

在实现美颜功能前,请确保已在您的项目中实现基本的实时音视频功能。

注意事项

  • 美颜的计算和渲染处理属于实时计算密集型操作,此操作过程中存在较大的 GPU 和 CPU 开销,因此若用户的设备性能不足以支撑运算,不建议启用此功能,否则可能会导致帧率下降等问题。
  • 若您使用的是 Safari 浏览器,由于浏览器的限制,在您开启了美颜功能后,切后台时,SDK 会自动停止对视频的采集与播放,切回此页面后即可恢复。如果您需要保证在切后台时,视频可以正常播放,则需要添加 visibilitychange 监听,监听切换后台的动作。在切后台导致页面失活时,关闭美颜功能;并在切回页面时,自动开启美颜。
  • 若您使用的是 Safari 15 版本的浏览器,请注意此版本有未修复的 bug,会导致您开启美颜功能时出现黑屏,建议将浏览器更新到 Safari 最新版本。
  • 在 Safari 浏览器上开启了美颜功能后,若您需要调用 localStream.stop() 方法停止播放音视频流,请在此之前先关闭美颜功能;若您需要再次开启美颜功能,请在此之前先调用 localStream.play() 方法播放音视频流。
  • 用户可以在音视频通话过程中,调用 setBeautyEffectOptions 方法实时调整美颜相关参数。
  • 若用户在启用美颜功能后关闭了摄像头,画面会变成黑屏,无美颜效果。若用户希望继续使用美颜功能,需要再次开启摄像头,并在 localStream.open() 回调中再次调用 setBeautyEffect 方法开启美颜,默认继续使用原来设置的相关参数。
  • 若用户在启用美颜功能后切换了摄像头,则需要在 localStream.switchDevice() 回调中再次调用 setBeautyEffect 方法才能继续正常使用美颜功能,默认继续用原来设置的相关参数。
  • 暂不支持同时开启美颜和编码水印功能。
  • 美颜功能暂时仅支持桌面端,暂不兼容 Firefox 浏览器。

配置步骤

  1. 在成功加入房间并初始化本地音视频流后,调用 localStream.play() 方法播放本地音视频流。
  2. 调用 setBeautyEffect 方法启用美颜功能。调用此方法时,您需要设置 enable 参数为 true 开启美颜。
  3. 调用 setBeautyEffectOptions 方法设置美颜参数。相关参数的说明如下。
    • brightnessLevel:设置美白度。该参数的取值范围为 0 ~ 1,默认值为 0。
    • rednessLevel:设置红润度。该参数的取值范围为 0 ~ 1,默认值为 0。
    • smoothnessLevel:设置平滑度。该参数的取值范围为 0 ~ 1,默认值为 0。
  4. (可选)调用 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。
  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)

//设置滤镜参数并传递。滤镜强度都在 01 之间。
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);
})
此文档是否对你有帮助?
有帮助
去反馈
  • 功能描述
  • 前提条件
  • 注意事项
  • 配置步骤
  • 示例代码