Tutorial: 开启虚拟背景

开启虚拟背景

功能描述

本文将介绍如何在通话过程中实现虚拟背景的功能。

原始摄像头 背景虚化 背景图片

前提条件

  • 需要使用虚拟背景功能的 sdkAppId 已开通 TRTC 旗舰版包月套餐。包月套餐相关说明请参见文档 包月套餐计费说明
  • TRTC Web SDK 版本 >= 5.2.0
  • 各平台系统及配置要求如下表:
平台 操作系统 浏览器版本 fps 推荐配置 备注
Web Windows Chrome 90+
Firefox 90+
Edge 97+
30 内存:16GB
CPU:i5-10500
GPU:独显 2GB
建议使用最新版 Chrome 浏览器
(开启浏览器硬件加速)
15 内存:8GB
CPU:i3-8300
GPU:intel 核显 1GB
Mac Chrome 98+
Firefox 96+
Safari 15+
30 2019年 MacBook
内存:16GB(2667MHz)
CPU:i7(6核 2.60GHz)
GPU:AMD Radeon 5300M

实现流程

检查浏览器是否支持(v5.8.1+)

import { VirtualBackground } from 'trtc-sdk-v5/plugins/video-effect/virtual-background';
if (!VirtualBackground.isSupported()) {
    // 当前浏览器不支持该插件
}

引入并注册插件

import { VirtualBackground } from 'trtc-sdk-v5/plugins/video-effect/virtual-background';
let trtc = TRTC.create({ plugins: [VirtualBackground] });

开启本地摄像头

await trtc.startLocalVideo();

开启虚拟背景插件

await trtc.startPlugin('VirtualBackground', {
  sdkAppId: 123123,
  userId: 'userId_123',
  userSig: 'your_userSig'
});

注意:第一次开启本功能需要加载计算资源,已经帮您自动处理。如需获得更极致的启动体验,请参考文末:常见问题 > 如何加快启动速度?

按需更新参数

// 改为图片背景
await trtc.updatePlugin('VirtualBackground', {
  type: 'image',
  src: 'https://picsum.photos/seed/picsum/200/300'
});

关闭虚拟背景

await trtc.stopPlugin('VirtualBackground');

API 说明

trtc.startPlugin('VirtualBackground', options)

用于开启虚拟背景

options

Name Type Attributes Description
sdkAppId number 必填 当前应用 ID
userId string 必填 当前用户 ID
userSig string 必填 用户 ID 对应的 UserSig
type string 选填 - image 图片背景
- blur 虚化背景(默认)
blurLevel number 选填 - blur 虚化背景时可用,用于调节虚化程度,默认为 3,取值范围为 [1,10]
src string type 为 image 时必填 图片地址,如 https://picsum.photos/seed/picsum/200/300
onError (error) => {} 选填 运行过程中发生错误的回调
- error.code=10000003 渲染耗时长
- error.code=10000006 浏览器特性支持不足,可能会出现卡顿情况
推荐处理方法可参考文末常见问题

Example:

await trtc.startPlugin('VirtualBackground', {
  sdkAppId: 123123,
  userId: 'userId_123',
  userSig: 'your_userSig',
  type: 'image',
  src: 'https://picsum.photos/seed/picsum/200/300'
});

trtc.updatePlugin('VirtualBackground', options)

可修改虚拟背景参数

options

Name Type Attributes Description
type string 必填 - image 图片背景
- blur 虚化背景
blurLevel number 选填 - blur 虚化背景时可用,用于调节虚化程度,默认为 3,取值范围为 [1,10]
src string type 为 image 时必填 图片地址,如 https://picsum.photos/seed/picsum/200/300

Example:

await trtc.updatePlugin('VirtualBackground', {
  type: 'blur',
  blurLevel: 6
});

trtc.stopPlugin('VirtualBackground')

关闭虚拟背景

常见问题

1. 在 Chrome 中运行 Demo 发现画面颠倒且卡顿

本插件使用 GPU 进行加速,您需要在浏览器设置中找到使用硬件加速模式并启用。可以将 chrome://settings/system 复制到浏览器地址栏,并且打开硬件加速模式。

2. 当设备性能不足造成延迟高,提示渲染耗时长

可通过监听事件,降低视频分辨率或者帧率。

async function onError(error) {
  const { code } = error;
  if (code === 10000003 || code === 10000006) {
    // 降低分辨率帧率
    await trtc.updateLocalVideo({
      option: {
        profile: '480p_2'
      },
    });
    // await trtc.stopPlugin('VirtualBackground'); // 或者关闭插件
  }
}
await trtc.startPlugin('VirtualBackground', {
  ...// 其他参数
  onError,
});

3. 如何加快启动速度?(手动部署虚拟背景模型文件)

本插件的原理为:采集到摄像头后,在本地通过机器学习模型进行人像分割,然后将结果上行到后台传输。

第一次启用时,会自动从腾讯云 CDN 下载机器学习模型,但腾讯云 CDN 与您网页的静态文件地址是非同源的,会降低部分加载速度。最佳方案是将模型文件部署在您自己的静态资源服务器上,比如跟网页服务部署在一起。

加速方法很简单,将 assets.zip 解压到您的项目中,如 ./src/assets/,并且在创建 TRTC 实例时,指定这个地址:

const trtc = TRTC.create({ plugins: [VirtualBackground], assetsPath: './src/assets/' });