You need to enable JavaScript to run this app.
导航
Native 端虚拟背景
最近更新时间:2023.12.24 10:56:55首次发布时间:2022.01.27 18:19:46

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

前提条件

你已经集成了 3.50 及以上版本的 RTC SDK,并实现音视频通话功能。
调用背景分割接口前,你需要联系智能美化特效(CV)商务人员,获取 CV 许可证和背景分割模型和素材。背景分割依赖智能美化特效实现,因此你需要集成特效 SDK,集成方式参看智能美化特效(付费版)
对于移动端,需要确保 CV 许可证和 CV 资源被拷贝至 App 内,安卓端需要将 CV 资源拷贝至外部存储后方可使用。

操作步骤

以 Android 平台为例:

  1. 检查 CV 许可证,并设置算法模型。证书路径为 *.licbag 文件的绝对路径,算法模型路径为 ModelResource.bundle 的绝对路径。

    IVideoEffect mVideoEffect = mRTCVideo.getVideoEffectInterface();
    mVideoEffect.initCVResource("##  授权证书绝对路径  ##", "## 算法模型文件夹路径 ##")
    

    此步骤可能返回的错误码及应对方式如下:

    initCVResource 返回的错误码错误码含义排查措施
    0集成特效 SDK 成功,可进行下一步操作
    –1000特效 SDK 集成失败参照智能美化特效(付费版)检查集成方式
    –121授权证书路径不存在检查授权证书是否拷贝到该参数指定的路径
    –119授权证书和包名不匹配检查授权证书绑定的包名是否和当前 app 包名一致
    –117授权证书已过期更新授权证书
    其他错误码参看错误码表
  2. initCVResource 调用成功后,你可以开启虚拟背景,虚拟背景支持纯色背景和图片背景。
    a. 开启纯色背景

    VirtualBackgroundSource source = new VirtualBackgroundSource();
    // 选择纯色背景
    source.sourceType = VirtualBackgroundSourceType.SourceTypeColor;
    // 设置背景颜色,背景颜色格式为 0xAARRGGBB,例如绿色
    source.sourceColor = 0XFF00FF00;
    // 开启纯色背景
    IVideoEffect mVideoEffect = mRTCVideo.getVideoEffectInterface();
    mVideoEffect.enableVirtualBackground("## 背景贴纸素材绝对路径 ##", source);
    

    b. 开启图片背景

    VirtualBackgroundSource source = new VirtualBackgroundSource();
    // 选择图片背景
    source.sourceType = VirtualBackgroundSourceType.SourceTypeImage;
    // 设置背景图片绝对路径
    source.sourcePath = "/storage/emulated/0/Download/test.png";
    // 开启图片背景
    IVideoEffect mVideoEffect = mRTCVideo.getVideoEffectInterface();
    mVideoEffect.enableVirtualBackground("## 背景贴纸素材绝对路径 ##", source);
    

    c. 关闭虚拟背景

    // 关闭虚拟背景
    IVideoEffect mVideoEffect = mRTCVideo.getVideoEffectInterface();
    mVideoEffect.disableVirtualBackground();
    

    d. 切换虚拟背景

    VirtualBackgroundSource source = new VirtualBackgroundSource();
    // 选择图片背景
    source.sourceType = VirtualBackgroundSourceType.SourceTypeImage;
    // 设置背景图片绝对路径
    source.sourcePath = "/storage/emulated/0/Download/test.png";
    // 设置背景颜色,例如绿色
    source.sourceColor = 0XFF00FF00;
    // 开启图片背景
    IVideoEffect mVideoEffect = mRTCVideo.getVideoEffectInterface();
    mVideoEffect.enableVirtualBackground("## 背景贴纸素材绝对路径 ##", source);
    // 切换到绿色背景
    source.sourceType = VirtualBackgroundSourceType.SourceTypeColor;
    mVideoEffect.enableVirtualBackground("## 背景贴纸素材绝对路径 ##", source);
    

    此步骤可能返回的错误码及应对方式如下:

    enableVirtualBackground 返回的错误码错误码含义排查措施
    0虚拟背景成功开启
    –2背景素材路径不存在检查虚拟背景素材路径是否正确
    –4背景图片打开失败检查背景图片路径是否有效
    –38背景图片格式不支持检查背景图片后缀是否为 jpg、png
    –37背景图片数据损坏检查背景图片的内容
    其他错误码参看错误码表

API 参考