Web RTC SDK 提供虚拟背景插件,在互动直播、视频会议、在线授课等场景下,可将用户人像和背景分离,采用模糊背景或自定义图片作为虚拟背景,从而避免杂乱背景对观众的影响,保护用户隐私,呈现较高的视频效果。你可以参考本文,实现这一功能。

前置条件
  1. 本功能需付费使用,请联系技术支持团队获取符合业务功能需求的鉴权文件。

  2. RTC SDK v4.52+ 你需要集成 RTC SDK,并实现音视频通话功能。

  3. 虚拟背景功能兼容性与 Web SDK 浏览器兼容性一致,不建议在移动端使用本功能。

  4. 为了更好的使用体验,建议设备满足以下要求:

    1. 双核 Intel Core i5+

    2. RAM 8 GB+

    3. 64 位操作系统

  5. 如果你使用了云代理功能,你需要在防火墙白名单中添加虚拟背景域名,参看在防火墙限制下进行通话。

操作步骤
  1. 在你的项目中引入虚拟背景插件,可直接引入或通过 UMD 方式引入。

    1. 直接引入
    import RTCBeautyExtension from '@volcengine/rtc/extension-beauty';
    
    typescript
    1. 通过 UMD 方式引入
    const {BackgroundMode, RTCBeautyExtension} = window.VERTCExtensions;
    
    typescript
  2. 注册虚拟背景插件。

注意

注册插件后,无法动态修改视频流帧率。你可以在注册插件前调用 setVideoEncoderConfig 修改帧率。

import VERTC from '@volcengine/rtc';

// 创建引擎实例
const engine = VERTC.createEngine('appid');

// 创建虚拟背景插件实例,需传入鉴权文件
const extension = new RTCBeautyExtension({ authFileUrl: 'https://xxxx.auth' });
// 注册插件
try {
  await engine.registerExtension(extension);
} catch (error) {
  // 注册失败,详细信息:error.message
}
typescript
  1. 开始视频采集,并设置渲染视图及模式。 示例代码以内部采集为例,如需使用外部采集,参看 setVideoSourceType。

注意

虚拟背景仅对主流、本地流生效,不支持屏幕流、远端流。即 StreamIndex 必须为 STREAM_INDEX_MAIN。

// 开启内部视频采集
engine.startVideoCapture();
// 设置本地视频渲染时使用的视图,并设置渲染模式。
engine.setLocalVideoPlayer(StreamIndex.STREAM_INDEX_MAIN, {
  renderDom: 'yourDomId'
});
typescript
  1. 设置虚拟背景参数。
import { EffectBeautyMode } from '@volcengine/rtc/extension-beauty';

// ① 设置虚拟背景模式为背景模糊(默认)
extension.setBackgroundMode(BackgroundMode.BACKGROUND_BLUR);
// ② 或设置背景模式为背景图片
extension.setBackgroundMode(BackgroundMode.BACKGROUND_IMAGE);
extension.loadBackgroundImage('https://image_url');
typescript
  1. 开启虚拟背景。
extension.enableVirtualBackground();
typescript
  1. 关闭虚拟背景。
extension.disableVirtualBackground();
typescript
API 参考
IRTCBeautyExtension

类型: interface

方法描述
checkCompatibility测试当前浏览器兼容性情况。
enableVirtualBackground开启虚拟背景。
disableVirtualBackground关闭虚拟背景。
setBackgroundMode设置虚拟背景模式。
getBackgroundImage获取当前虚拟背景图片。
loadBackgroundImage设置虚拟背景图片。
setAIModelType设置虚拟背景使用的人像识别 AI 算法效果。
checkCompatibility

测试当前浏览器兼容性情况。

enableVirtualBackground

开启虚拟背景。

disableVirtualBackground

关闭虚拟背景。

setBackgroundMode

设置虚拟背景模式。

getBackgroundImage

获取当前虚拟背景图片。

loadBackgroundImage

设置虚拟背景图片。

setAIModelType

设置虚拟背景使用的人像识别 AI 算法效果。

CompatibilityCheckResult

类型: interface

兼容性测试结果。

isCompatible

类型: boolean

是否兼容。

true:符合兼容性最低要求,可正常运行。
false:不兼容,无法正常运行。

reasons

类型: number[]

不兼容的原因。

BackgroundMode

类型: enum

虚拟背景模式。

BackgroundAIModelType

类型: enum

人像识别 AI 算法效果。