美文网首页Android程序员Android
Android如何实现实时音视频会议的背景分割

Android如何实现实时音视频会议的背景分割

作者: 即构开发者 | 来源:发表于2022-08-29 11:23 被阅读0次

1 背景分割功能简介

ZegoEffects SDK AI视觉SDK提供背景分割功能,适用于在线教育、视频会议、美发、短视频等多种场景。

2 视频中背景分割功能实现的前提条件

在使用 ZegoEffects SDK AI视觉SDK的背景分割功能前,请确保:

3 AI视觉SDK使用步骤

背景分割包括人像分割、绿幕分割,以及背景虚化、背景马赛克等功能。

3.1 人像分割

使用人像分割功能前,请先导入对应的 “SegmentationModel” 模型文件,否则功能无法生效。详情请参考 快速开始 - 导入资源和模型

  1. 调用 setPortraitSegmentationBackgroundPathsetPortraitSegmentationBackgroundBuffersetPortraitSegmentationBackgroundTexture 接口,设置人像分割使用的背景路径、背景 Buffer 或背景 Texture(三选一)。

    // 设置人像分割使用的背景路径(和设置 Buffer、Texture 的方式三选一即可)
    mEffects.setPortraitSegmentationBackgroundPath("MY_BACKGROUND_PATH", ZegoEffectsScaleMode.ASPECT_FILL);
    
    // 设置人像分割使用的背景 Buffer(和设置路径、Texture 的方式三选一即可)
    mEffects.setPortraitSegmentationBackgroundBuffer(buffer, bufferLength, param, ZegoEffectsScaleMode.ASPECT_FILL);
    
    // 设置人像分割使用的背景 Texture(和设置路径、Buffer 的方式三选一即可)
    mEffects.setPortraitSegmentationBackgroundTexture(textureID, param, ZegoEffectsScaleMode.ASPECT_FILL);
    
  2. 调用 enablePortraitSegmentation 接口开启人像分割功能。

    // 开启人像分割功能
    mEffects.enablePortraitSegmentation(true);
    

开启人像分割功能后,开发者可以根据需要进一步设置背景虚化、背景马赛克等功能。

人像分割背景虚化

调用 enablePortraitSegmentationBackgroundBlur 接口开启人像分割背景虚化功能,打开虚化功能后可调用 setPortraitSegmentationBackgroundBlurParam 接口设置 ZegoEffectsBlurParam 对象的 “intensity” 参数,调整背景虚化的程度。

开启人像分割背景虚化功能后,会覆盖自定义背景及背景马赛克功能。

// 开启人像分割背景虚化
mEffects.enablePortraitSegmentationBackgroundBlur(true);

// 设置人像分割背景虚化参数
ZegoEffectsBlurParam param = new ZegoEffectsBlurParam();
param.intensity = 100;
mEffects.setPortraitSegmentationBackgroundBlurParam(param);

人像分割背景马赛克

调用 enablePortraitSegmentationBackgroundMosaic 接口开启人像分割背景马赛克功能,打开马赛克功能后可调用 setPortraitSegmentationBackgroundMosaicParam 接口设置 ZegoEffectsMosaicParam 对象的 “intensity” 参数参数,调整马赛克的程度。

开启人像分割背景马赛克功能后,会覆盖自定义背景及背景虚化功能。

// 开启人像分割背景马赛克
mEffects.enablePortraitSegmentationBackgroundMosaic(true);

// 设置人像分割背景马赛克参数
ZegoEffectsMosaicParam param = new ZegoEffectsMosaicParam();
param.intensity = 100;
mEffects.setPortraitSegmentationBackgroundMosaicParam(param);

3.2 绿幕分割

  1. 调用 setChromaKeyBackgroundPathsetChromaKeyBackgroundBuffersetChromaKeyBackgroundTexture 接口,设置绿幕分割使用自定义背景路径、背景 Buffer 或背景 Texture(三选一)。

    // 设置绿幕分割使用的背景路径(和设置 Buffer、Texture 的方式三选一即可)
    mEffects.setChromaKeyBackgroundPath("MY_BACKGROUND_PATH", ZegoEffectsScaleMode.ASPECT_FILL);
    
    // 设置人像分割使用的背景 Buffer(和设置路径、Texture 的方式三选一即可)
    mEffects.setChromaKeyBackgroundBuffer(buffer, bufferLength, param, ZegoEffectsScaleMode.ASPECT_FILL);
    
    // 设置人像分割使用的背景 Texture(和设置路径、Buffer 的方式三选一即可)
    mEffects.setChromaKeyBackgroundTexture(textureID, param, ZegoEffectsScaleMode.ASPECT_FILL);
    
  2. 调用 enableChromaKey 接口开启绿幕分割功能,然后调用 setChromaKeyParam 接口设置参数,调整颜色容差、边缘平滑指数等。

    // 开启绿幕分割功能
    mEffects.enableChromaKey(true);
    
    // 设置绿幕分割参数
    ZegoEffectsChromaKeyParam param = new ZegoEffectsChromaKeyParam();
    mEffects.setChromaKeyParam(param);
    

开启绿幕分割功能后,开发者可以根据需要进一步设置背景虚化、背景马赛克等功能。

绿幕分割背景虚化

调用 enableChromaKeyBackgroundBlur 接口开启绿幕背景虚化功能,打开虚化功能后可调用 setChromaKeyBackgroundBlurParam 接口设置 ZegoEffectsBlurParam 对下的 “intensity” 参数,调整虚化的程度。

开启绿幕分割背景虚化功能后,会覆盖自定义背景及背景马赛克功能。

// 开启绿幕分割背景虚化
mEffects.enableChromaKeyBackgroundBlur(true);

// 设置绿幕分割背景虚化参数
ZegoEffectsBlurParam param = new ZegoEffectsBlurParam();
param.intensity = 100;
mEffects.setChromaKeyBackgroundBlurParam(param);

绿幕分割背景马赛克

调用 enableChromaKeyBackgroundMosaic 接口开启绿幕背景马赛克功能,打开马赛克功能后可调用 setChromaKeyBackgroundMosaicParam 接口设置 ZegoEffectsMosaicParam 对象的 “intensity” 参数,调整马赛克的程度。

开启绿幕分割背景马赛克功能后,会覆盖自定义背景及背景虚化功能。

// 开启绿幕分割背景马赛克
mEffects.enableChromaKeyBackgroundMosaic(true);

// 设置绿幕分割背景马赛克参数
ZegoEffectsMosaicParam param = new ZegoEffectsMosaicParam();
param.intensity = 100;
mEffects.setChromaKeyBackgroundMosaicParam(param);

相关文章

网友评论

    本文标题:Android如何实现实时音视频会议的背景分割

    本文链接:https://www.haomeiwen.com/subject/qohknrtx.html