背景分割

更新时间: 2024/03/15 17:22:15

在音视频会议或教育场景中,为了突出人像或者保护隐私,用户不想将视窗的背景呈现出来。NERTC SDK 支持通过开启背景分割功能,将用户人像和背景分割开来,虚化用户周围的真实环境,或者以自定义背景色或背景图像替换真实背景。

功能介绍

NERTC SDK 支持的背景分割功能,可以帮助您轻松实现虚拟背景,包括背景替换、背景虚化等。

前提条件

在实现背景分割功能前,请确保已在您的项目中实现基本的实时音视频功能。

注意事项

  1. 初始化背景分割时,SDK 需要进行预编译,耗时较久;但在真正启用背景分割前,对设备性能的消耗极小,因此建议您在加入房间后立即调用 enableBodySegment 以进行预初始化。

  2. 背景分割的计算和渲染处理属于实时计算密集型操作,此操作过程中存在较大的 GPU 和 CPU 开销,对设备性能的要求较高。若用户的设备性能不足以支撑运算,不建议启用此功能,否则可能导致帧率下降等问题。

  3. 若用户需要立即开启背景分割,建议在背景分割初始化结束后,即收到 segment-load 回调后,在回调事件中调用startBodySegment 方法。

  4. 若用户在启用背景分割后调整了摄像头的开关,则需要在 localStream.open() 的回调中再次调用 startBodySegment 方法才能正常使用背景分割。

  5. 若用户在启用背景分割后切换了摄像头,则需要在 localStream.switchDevice() 的回调中再次调用 startBodySegment 方法才能正常使用背景分割。

  6. 该功能支持预设背景参数。使用方法为先调用 setBackGround 方法设置背景参数,再调用 startBodySegment 方法启用背景分割。您也可以在音视频通话过程中,实时调整相关参数。

配置步骤

  1. 在成功加入房间并发布本地音视频流后,调用 enableBodySegment 方法预初始化背景分割功能,预加载所需资源。

  2. 调用 startBodySegment 方法启用背景分割功能,并调用 setBackGround 方法传入背景参数。相关参数的说明如下。

    • 设置背景图片为纯色图像(默认):您需要设置 type 参数为 color;并设置 color 参数自定义图像颜色,该参数的取值范围为 ,默认值为 ,即。

    • 设置背景图片为自定义本地图片:您需要设置 type 参数为 image;并设置 source 参数为自定义背景图片的本地绝对路径。

    • 设置背景虚化效果:您需要设置 type 参数为 blur;并设置 level 参数为您想要的虚化等级,此数值越高代表虚化程度越高,建议取值范围为 1 ~ 10。

  3. 若您需要取消背景分割效果,请调用 cancelBodySegment 方法取消背景分割。

  4. 若您需要彻底销毁背景分割进程,请调用 disableBodySegment 方法销毁进程。

示例代码

//开启背景分割,预加载相关资源
rtc.localStream.enableBodySegment()

//启动背景分割
rtc.localStream.startBodySegment()

//取消背景分割
rtc.localStream.cancelBodySegment()

//销毁背景分割
rtc.localStream.disableBodySegment()

//设置背景参数
let backGround = {type: 'color', color: '#ff0000'}
rtc.localStream.setBackGround(backGround)

//setBackGround参数支持的类型和格式如下
1. 背景图片 {type: 'image', source: Image}, source为Image对象
2. 背景色 {type: 'color', color: '#ff0000'}
3. 虚化 {type: 'blur', level: number}, level代表虚化等级,值越高则虚化程度越高,建议1~10
此文档是否对你有帮助?
有帮助
去反馈
  • 功能介绍
  • 前提条件
  • 注意事项
  • 配置步骤
  • 示例代码