虚拟背景
更新时间: 2024/08/05 15:02:55
在音视频会议或教育场景中,为了突出人像或者保护隐私,用户不想将视窗的背景呈现出来。NERTC SDK 通过自动识别用户人像,并将人像周围的环境替换为指定颜色的图片或自定义图像,从而实现设置虚拟背景。替换后,频道内所有远端用户都能看到本地用户自定义的虚拟背景。
功能原理
NERTC SDK 支持的虚拟背景采用自研的深度学习算法,在对当前视频帧做背景分割时利用前一帧的分割结果作为先验信息,同时在 video matting 中利用时序信息解决视频分割中可能出现的闪烁问题,提升分割效果,让您在使用虚拟背景的同时也能享受优质的视频通话体验。
注意事项
-
对上传自定义图像的要求:
-
纯色图片的格式为 RGB 定义的十六进制整数,不带 # 号。
-
自定义背景图片支持 JPG 和 PNG 格式。
-
-
建议您在满足以下条件的场景中使用虚拟背景功能:
-
采用高清摄像设备,避免遮挡摄像头且环境光线均匀。
-
捕获的视频场景中无冗余物件,用户人像尽量保持上半身在画面内且基本无遮挡。
-
背景色单一且尽量不与用户着装颜色相同。
-
-
由于虚拟背景功能对设备性能要求较高,CPU 处理性能评分在 1000 分以上的机型才支持此功能。具体请参考 Benchmark Chart。
-
M1 芯片的 Mac 设备暂不支持此功能。
配置步骤
-
在成功加入房间后调用 enableLocalVideo 方法开启本地视频采集。
-
调用 enableVirtualBackground 方法开启虚拟背景功能。调用该方法时,您需要设置 enabled 参数为 true 开启虚拟背景功能,并设置 backgroundSource 参数自定义背景图片的类型。
-
设置背景图片为纯色图像(默认):您需要设置 background_source_type 参数为 kNERtcBackgroundColor;并设置 color 参数自定义图像颜色,该参数的取值范围为 0x000000 ~ 0xFFFFFF,默认值为 0xFFFFFF,即白色。
-
设置背景图片为自定义本地图片:您需要设置 background_source_type 参数为 kNERtcBackgroundImage;并设置 source 参数为自定义背景图片的本地绝对路径。
-
-
启用该方法后,SDK 会触发虚拟背景启用成功与否的 onVirtualBackgroundSourceEnabled 回调,并提供相关错误原因说明,具体请参考 NERtcVirtualBackgroundSourceStateReason。
-
调用 enableVirtualBackground 方法,设置 enabled 参数为 false,关闭虚拟背景功能。
示例代码
以设置虚拟背景为纯色图片为例。
VirtualBackgroundSource backgroundSource;
backgroundSource.background_source_type = nertc::VirtualBackgroundSource::kNERtcBackgroundColor;
backgroundSource.color = 0xffffff;
backgroundSource.source = "";
//打开虚拟背景
rtcEngine->enableVirtualBackground(true, backgroundSource);
//关闭虚拟背景
rtcEngine->enableVirtualBackground(false, backgroundSource);