虚拟背景
更新时间: 2024/08/07 16:14:03
在音视频会议场景中,为了突出人像或者保护隐私,用户不想将视窗的背景呈现出来。NEMeetingKit 通过自动识别用户人像,以自定义图片替代真实背景,从而实现设置虚拟背景。替换后,频道内所有远端用户都能看到本地用户自定义的虚拟背景。
功能原理
NEMeetingKit 支持的虚拟背景采用自研的深度学习算法,在对当前视频帧做背景分割时利用前一帧的分割结果作为先验信息,同时在 video matting 中利用时序信息解决视频分割中可能出现的闪烁问题,提升分割效果,让您在使用虚拟背景的同时也能享受优质的视频通话体验。
注意事项
- 建议您在满足以下条件的场景中使用虚拟背景功能:
- 采用高清摄像设备,避免遮挡摄像头且环境光线均匀。
- 捕获的视频场景中无冗余物件,用户人像尽量保持上半身在画面内且基本无遮挡。
- 背景色单一且尽量不与用户着装颜色相同。
- 自定义背景图片支持 JPG 和 PNG 格式。建议自定义图片大小限制为 5M,且最多上传 5 张图片。
- SDK 会在保证背景图片内容不变形的前提下,对图片进行一定程度上的缩放和裁剪,以适配视频采集分辨率。
- 暂不支持在 Texture 格式的视频或通过 Push 方法从自定义视频源获取的视频中设置虚拟背景。
配置步骤
- 调用
NESettingsService
类的enableVirtualBackground
方法,并设置 enabled 参数为 true, 开启虚拟背景功能。请先预览摄像头时或在会议内开启摄像头后开启此功能。
- 调用
setBuiltinVirtualBackgrounds
方法,并通过 path 参数传入自定义背景图片的本地绝对路径,设置自定义背景图片列表。 - 启用该方法后,您可以通过调用
getBuiltinVirtualBackgrounds
方法获取已设定的自定义背景图片列表。 - 若您需要取消虚拟背景,请调用
enableVirtualBackground
方法,设置 enabled 参数为 false,关闭虚拟背景功能。
示例代码
// 获取虚拟背景显示状态
auto virtualBackgroundController = NEMeetingKit::getInstance()->getSettingsService()->GetVirtualBackgroundController();
virtualBackgroundController->isVirtualBackgroundEnabled(
[=](NEErrorCode errorCode, const std::string& errorMessage, const bool& virtualBackground) {});
// 开启或关闭虚拟背景
bool showVirtualBackground = true;
virtualBackgroundController->enableVirtualBackground(showVirtualBackground, [=](NEErrorCode errorCode, const std::string& errorMessage) {});
// 获取内置虚拟背景列表
virtualBackgroundController->getBuiltinVirtualBackgrounds(
[=](NEErrorCode errorCode, const std::string& errorMessage, const std::vector<NEMeetingVirtualBackground>& vbList) {});
// 设置内置虚拟背景列表
std::vector<NEMeetingVirtualBackground> virtualBackgrounds;
virtualBackgroundController->setBuiltinVirtualBackgrounds(virtualBackgrounds, [=](NEErrorCode errorCode, const std::string& errorMessage) {});
此文档是否对你有帮助?