背景分割
更新时间: 2024/09/18 16:26:13
在音视频会议或教育场景中,为了突出人像或者保护隐私,用户不想将视窗的背景呈现出来。NERTC SDK 支持通过开启背景分割功能,将用户人像和背景分割开来,虚化用户周围的真实环境,或者以自定义背景色或背景图像替换真实背景。
功能介绍
NERTC SDK 支持的背景分割功能,可以帮助您轻松实现虚拟背景,包括背景替换、背景虚化等。
前提条件
在实现背景分割功能前,请确保已在您的项目中实现基本的实时音视频功能。
注意事项
-
初始化背景分割时,SDK 需要进行预编译,耗时较久;但在真正启用背景分割前,对设备性能的消耗极小,因此建议您在加入房间后立即调用
enableBodySegment
以进行预初始化。 -
背景分割的计算和渲染处理属于实时计算密集型操作,此操作过程中存在较大的 GPU 和 CPU 开销,对设备性能的要求较高。若用户的设备性能不足以支撑运算,不建议启用此功能,否则可能导致帧率下降等问题。
-
若用户需要立即开启背景分割,建议在背景分割初始化结束后,即收到
segment-load
回调后,在回调事件中调用startBodySegment
方法。 -
若用户在启用背景分割后调整了摄像头的开关,则需要在
localStream.open()
的回调中再次调用startBodySegment
方法才能正常使用背景分割。 -
若用户在启用背景分割后切换了摄像头,则需要在
localStream.switchDevice()
的回调中再次调用startBodySegment
方法才能正常使用背景分割。 -
该功能支持预设背景参数。使用方法为先调用
setBackGround
方法设置背景参数,再调用startBodySegment
方法启用背景分割。您也可以在音视频通话过程中,实时调整相关参数。
配置步骤
-
在成功加入房间并发布本地音视频流后,调用
enableBodySegment
方法预初始化背景分割功能,预加载所需资源。 -
调用
startBodySegment
方法启用背景分割功能,并调用setBackGround
方法传入背景参数。相关参数的说明如下。-
设置背景图片为纯色图像(默认):您需要设置 type 参数为 color;并设置 color 参数自定义图像颜色,该参数的取值范围为 ,默认值为 ,即。
-
设置背景图片为自定义本地图片:您需要设置 type 参数为 image;并设置 source 参数为自定义背景图片的本地绝对路径。
-
设置背景虚化效果:您需要设置 type 参数为 blur;并设置 level 参数为您想要的虚化等级,此数值越高代表虚化程度越高,建议取值范围为 1 ~ 10。
-
-
若您需要取消背景分割效果,请调用
cancelBodySegment
方法取消背景分割。 -
若您需要彻底销毁背景分割进程,请调用
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