虚拟背景

更新时间: 2024/08/07 16:14:03

在音视频会议场景中,为了突出人像或者保护隐私,用户不想将视窗的背景呈现出来。NEMeetingKit 通过自动识别用户人像,以自定义图片替代真实背景,从而实现设置虚拟背景。替换后,频道内所有远端用户都能看到本地用户自定义的虚拟背景。

功能原理

NEMeetingKit 支持的虚拟背景采用自研的深度学习算法,在对当前视频帧做背景分割时利用前一帧的分割结果作为先验信息,同时在 video matting 中利用时序信息解决视频分割中可能出现的闪烁问题,提升分割效果,让您在使用虚拟背景的同时也能享受优质的视频通话体验。

注意事项

  • 建议您在满足以下条件的场景中使用虚拟背景功能:
    • 采用高清摄像设备,避免遮挡摄像头且环境光线均匀。
    • 捕获的视频场景中无冗余物件,用户人像尽量保持上半身在画面内且基本无遮挡。
    • 背景色单一且尽量不与用户着装颜色相同。
  • 自定义背景图片支持 JPG 和 PNG 格式。建议自定义图片大小限制为 5M,且最多上传 5 张图片。
  • SDK 会在保证背景图片内容不变形的前提下,对图片进行一定程度上的缩放和裁剪,以适配视频采集分辨率。
  • 暂不支持在 Texture 格式的视频或通过 Push 方法从自定义视频源获取的视频中设置虚拟背景。

配置步骤

  1. 调用 NESettingsService 类的 enableVirtualBackground 方法,并设置 enabled 参数为 true, 开启虚拟背景功能。

    请先预览摄像头时或在会议内开启摄像头后开启此功能。

  2. 调用 setBuiltinVirtualBackgrounds 方法,并通过 path 参数传入自定义背景图片的本地绝对路径,设置自定义背景图片列表。
  3. 启用该方法后,您可以通过调用 getBuiltinVirtualBackgrounds 方法获取已设定的自定义背景图片列表。
  4. 若您需要取消虚拟背景,请调用 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) {});
此文档是否对你有帮助?
有帮助
去反馈
  • 功能原理
  • 注意事项
  • 配置步骤
  • 示例代码