虚拟背景
更新时间: 2024/03/15 17:20:44
在音视频会议或教育场景中,为了突出人像或者保护隐私,用户不想将视窗的背景呈现出来。NERTC SDK 通过自动识别用户人像,虚化用户周围的真实环境,或者以指定颜色的图片或自定义图像替代真实背景,从而实现设置虚拟背景。替换后,频道内所有远端用户都能看到本地用户自定义的虚拟背景。
- 自 V4.6.20 起,虚拟背景功能支持插件化集成,请在集成时按需引入虚拟背景库
NERtcPersonSegment.framework
,具体集成方式请参见集成 SDK。 - 虚拟背景功能暂时为 beta 测试版,建议您先在测试环境中试用,效果满意再集成上线。
前提条件
- V5.5.0 之前的版本,请联系网易云信技术支持,开通虚拟背景功能。
- V5.5.0 及之后版本,您可以直接使用虚拟背景功能,无需人工开通。
功能原理
NERTC SDK 支持的虚拟背景采用自研的深度学习算法,在对当前视频帧做背景分割时利用前一帧的分割结果作为先验信息,同时在 video matting 中利用时序信息解决视频分割中可能出现的闪烁问题,提升分割效果,让您在使用虚拟背景的同时也能享受优质的视频通话体验。
注意事项
- 建议您在满足以下条件的场景中使用虚拟背景功能:
- 采用高清摄像设备,避免遮挡摄像头且环境光线均匀。
- 捕获的视频场景中无冗余物件,用户人像尽量保持上半身在画面内且基本无遮挡。
- 背景色单一且尽量不与用户着装颜色相同。
- 对上传自定义图像的要求:
- 纯色图片的格式为 RGB 定义的十六进制整数,不带 # 号。
- 自定义背景图片支持 JPG 和 PNG 格式。
- 若您设置背景图片为自定义本地图片,SDK 会在保证背景图片内容不变形的前提下,对图片进行一定程度上的缩放和裁剪,以适配视频采集分辨率。
- 暂不支持在 Texture 格式的视频或通过 Push 方法从自定义视频源获取的视频中设置虚拟背景。
配置步骤
-
在成功加入房间后调用
enableLocalVideo
方法开启本地视频采集。调用
enableLocalVideo
开启本地视频采集时,请设置streamType
为kNERtcVideoStreamTypeMain
,否则虚拟背景效果不会生效。 -
调用
enableVirtualBackground
方法开启虚拟背景功能。调用该方法时,您需要设置enabled
参数为true
开启虚拟背景功能,并设置backData
参数自定义背景图片的类型。- 设置背景图片为纯色图像(默认):您需要设置
backgroundSourceType
参数为kNERtcVirtualBackgroundColor
;并设置color
参数自定义图像颜色,该参数的取值范围为 0x000000 ~ 0xFFFFFF,默认值为 0xFFFFFF,即白色。
若 color 值设置无效,SDK 会将背景图片设置为白色图片。
- 设置背景图片为自定义本地图片:您需要设置
backgroundSourceType
参数为 kNERtcVirtualBackgroundImg;并设置 source 参数为自定义背景图片的本地绝对路径。 - 设置背景虚化:您需要设置
backgroundSourceType
参数为kNERtcVirtualBackgroundBlur
;并设置NERtcBlurDegree
参数指定虚化程度,具体枚举值如下:- 虚化程度低:kNERtcBlurLow(1)。
- 虚化程度中:kNERtcBlurMedium(2)。
- 虚化程度高:kNERtcBlurHigh(3)。
- 设置背景图片为纯色图像(默认):您需要设置
-
启用该方法后,SDK 会触发虚拟背景启用成功与否的
onNERtcEngineVirtualBackgroundSourceEnabled
回调,并提供相关错误原因说明,具体请参考NERtcVirtualBackgroundSourceStateReason
。如果状态码提示设备不支持,您可以联系网易云信技术支持获取帮助。
-
若您需要取消虚拟背景,请调用
enableVirtualBackground
方法,设置enabled
参数为false
,关闭虚拟背景功能。
示例代码
//以设置虚拟背景为自定义本地图片为例
NERtcVirtualBackgroundSource *virtualBackgroundSource = [[NERtcVirtualBackgroundSource alloc] init];
virtualBackgroundSource.backgroundSourceType = kNERtcVirtualBackgroundImg;
virtualBackgroundSource.source = [[NSBundle mainBundle] pathForResource:imageName ofType:@"png"];
[[self coreEngine] enableVirtualBackground:true backData:virtualBackgroundSource];
API 参考
方法 | 功能描述 |
---|---|
enableLocalVideo |
开启本地视频采集。 |
enableVirtualBackground |
开启或关闭虚拟背景。 |
onNERtcEngineVirtualBackgroundSourceEnabled |
是否成功启用虚拟背景的回调通知。 |