音视频通话 2.0
Android
动态与公告
更新日志(V4.6)
更新日志(V5)
活动与公告
【活动】音视频通话内容安全检测限时补贴
【活动】赠送100万分钟音视频通话时长
【邀测】音视频通话2.0V5.3邀请公测
新手接入指南
产品简介
产品介绍
功能特性
产品优势
应用场景
基本概念
使用限制
性能指标
产品计费
按量计费
资源包
体验 Demo
下载 SDK 和示例代码
升级指南
快速开始
快速跑通 Sample Code
接入流程
创建应用
开通服务
集成 SDK
实现音视频通话
Token 鉴权
高级 Token 鉴权
基础功能
设置音频属性
设置视频属性
设置视频旋转方向
设置通话音量
屏幕共享
音频共享
监测发言者音量
通话前网络质量探测
通话中质量监测
进阶功能
音频管理
客户端音频录制
原始音频数据
美声变声与混响
耳返
自定义音频采集与渲染
音效与伴音
设置音频订阅优先级
音频裸流传输
媒体补充增强信息SEI
视频管理
视频截图
水印
云信美颜
相芯美颜
自定义视频采集
虚拟背景
视频图像畸变矫正
视频裸流传输
多房间管理
设备管理
视频设备管理
音频设备管理
媒体流管理
跨房间媒体流转发
媒体流加密
视频流回退
云端录制
使用云代理
本地服务端录制
AI 融合功能
AI 超分
AI 降噪
场景实践
1 对 1 娱乐社交
语聊房
PK连麦
在线教育
互联网问诊
最佳实践
音视频参数配置推荐
房间连接状态管理
实现音视频安全检测
轻松构建本土Clubhouse
API 参考
Android API 参考
服务端 API
错误码(V5)
错误码(V4.x)
控制台指南
常见问题处理
FAQ
错题集
获取音频 Dump 文件
音频常见问题排查
视频常见问题排查
服务协议

虚拟背景

更新时间: 2023/05/17 10:41:33

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

自 V4.6.20 起,虚拟背景功能以插件化方式提供,对应的虚拟背景库为 libNERtcPersonSegment.so,可以与核心 SDK(基础音视频库)搭配使用,具体集成方式请参考集成 SDK

前提条件

请联系网易云信技术支持,开通虚拟背景功能。

功能原理

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

注意事项

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

实现方法

  1. 在成功加入房间后调用 enableLocalVideo 方法开启本地视频采集。

    调用 enableLocalVideo 开启本地视频采集时,请设置 streamType 参数为 kNERtcVideoStreamTypeMain,否则虚拟背景效果不会生效。

  2. 调用 enableVirtualBackground 方法开启虚拟背景功能。调用该方法时,您需要设置 enabled 参数为 true 开启虚拟背景功能,并设置 backgroundSource 参数自定义背景图片的类型。

    • 设置背景图片为纯色图像(默认):您需要设置 backgroundSourceType 参数为 BACKGROUND_COLOR;并设置 color 参数自定义图像颜色,该参数的取值范围为 0x000000 ~ 0xFFFFFF,默认值为 0xFFFFFF,即白色。

    color 值设置无效,SDK 会将背景图片设置为白色图片。

    • 设置背景图片为自定义本地图片:您需要设置 backgroundSourceType 参数为 BACKGROUND_IMG;并设置 source 参数为自定义背景图片的本地绝对路径。
    • 设置背景虚化:您需要设置 backgroundSourceType 参数为 BACKGROUND_BLUR;并设置 blur_degree 参数指定虚化程度,具体枚举值如下:
      • 虚化程度低:BLUR_DEGREE_LOW(1)。
      • 虚化程度中:BLUR_DEGREE_MEDIUM(2)。
      • 虚化程度高:BLUR_DEGREE_HIGH(3)。
  3. 启用该方法后,SDK 会触发虚拟背景启用成功与否的 onVirtualBackgroundSourceEnabled 回调,并提供相关错误原因说明,具体请参考 NERtcVirtualBackgroundSourceStateReason

    如果状态码提示设备不支持,请联系网易云信技术支持获取帮助。

  4. 若您需要取消虚拟背景,请调用 enableVirtualBackground 方法,设置 enabled 参数为 false,关闭虚拟背景功能。

示例项目源码

网易云信提供虚拟背景的示例项目源码 VirtualBackground,您可以参考该源码实现虚拟背景。

示例代码

//以设置虚拟背景为自定义本地图片为例
// step 1: 初始化背景
private NERtcVirtualBackgroundSource virtualBackgroundSource = new NERtcVirtualBackgroundSource();
mVirtualBackgroundSource.backgroundSourceType = NERtcVirtualBackgroundSource.BACKGROUND_IMG; //设置虚拟背景类型
mVirtualBackgroundSource.source = virtualBgImgPath; //设置背景图片路径

// step2: 开启虚拟背景
NERtcEx.getInstance().enableVirtualBackground(true, virtualBackgroundSource);

// step3: 关闭虚拟背景
NERtcEx.getInstance().enableVirtualBackground(false, null);

API 参考

方法 功能描述
enableLocalVideo 开启本地视频采集。
enableVirtualBackground 开启或关闭虚拟背景。
onVirtualBackgroundSourceEnabled 是否成功启用虚拟背景的回调通知。
此文档是否对你有帮助?
有帮助
我要吐槽
  • 前提条件
  • 功能原理
  • 注意事项
  • 实现方法
  • 示例项目源码
  • 示例代码
  • API 参考