文档中心
ExpressVideoSDK 实时音视频
文档中心
体验 App
SDK 中心
API 中心
常见问题
代码市场
进入控制台
立即注册
登录
中文站 English
  • 文档中心
  • 实时音视频
  • 音频能力
  • 音量变化

音量变化

更新时间:2024-01-31 17:45

功能简介

在 K 歌场景中,经常需要拉多路流并显示其中正在讲话的用户,ZEGO 提供了甄别用户是否说话、说话音量大小(音浪)的能力,方便开发者做 UI 展示,例如:

示例源码下载

请参考 下载示例源码 获取源码。

相关源码请查看 “src/Examples/AdvancedAudioProcessing/SoundLevelAndAudioSpectrum” 文件。

前提条件

在监听音量变化功能之前,请确保:

  • 已在 ZEGO 控制台 创建项目,并申请有效的 AppID 和 Server 地址,详情请参考 控制台 - 项目信息。
  • 已在项目中集成 ZEGO Express SDK,并实现了基本的音视频推拉流功能,详情请参考 快速开始 - 集成 和 快速开始 - 实现流程。

非混流场景使用步骤

  1. 监听音浪回调接口,注册 soundLevelUpdate 回调,接收流音量大小的变化。

    音浪即某条流音量的大小。

    zg.on('soundLevelUpdate', (streamList) => {
        streamList.forEach(stream => {
            stream.type == 'push' && $('#soundLevel').html(Math.round(stream.soundLevel) + '');
            console.warn(`${stream.type} ${stream.streamID}, soundLevel: ${stream.soundLevel}`);
        });
    });
  1. 启动音浪监听,调用 setSoundLevelDelegate 接口启动监听音量大小,设置音浪回调间隔时间,单位为 ms。

    zg.setSoundLevelDelegate(true, 1000);
  2. 停止音浪监听,调用 setSoundLevelDelegate 接口停止监听音量大小。

    zg.setSoundLevelDelegate(false);

混流场景使用步骤

  1. 调用 startMixerTask 时,需进行混流配置 ZegoMixStreamConfig,需要将 enableSoundLevel 配置为 true,并为 inputList 配置soundLevelID,详情请参考 混流。

    const mixConfig = {
        "taskID": "custom-task",
        "enableSoundLevel": true,
        "inputList": [
            {
                "streamID": streamID1,
                "soundLevelID": soundLevelID1,
                "layout": {
                    "top": 0,
                    "left": 0,
                    "bottom": 200,
                    "right": 200
                }
            },
            {
                "streamID": streamID2,
                "soundLevelID": soundLevelID2,
                "layout": {
                    "top": 200,
                    "left": 200,
                    "bottom": 400,
                    "right": 400
                }
            }
        ],
        "outputList": [
            "custom-mixwebrtc-1"
        ],
        "outputConfig": {
            "outputBitrate": 300,
            "outputFPS": 15,
            "outputWidth": 400,
            "outputHeight": 400
        }
    }
    zg.startMixerTask(mixConfig);
  2. 调用 mixerSoundLevelUpdate 接口监听混流音量变化。

    zg.on("mixerSoundLevelUpdate", (mixMap, id) => {
        console.warn("mixerSoundLevelUpdate", mixMap, id);
      });
  3. 根据混流 streamID 拉流,若需要获取混流音量值,需要开启 SEI,详情请参考 媒体补充增强信息(SEI)。

    根据混流 streamID 拉流功能不是默认开启的,使用前请在 ZEGO 控制台 自助开通(开通步骤请参考 服务配置 - 混流),或联系 ZEGO 技术支持开通。

    // 拉流
    zg.startPlayingStream(mixStreamID, {
        // 开启解析 SEI
        isSEIStart: true 
    }).then(stream => {
    
    }).catch(err => {
    
    });
本篇目录
  • 免费试用
  • 提交工单
    咨询集成、功能及报价等问题
    电话咨询
    400 1006 604
    咨询客服
    微信扫码,24h在线

    联系我们

  • 文档反馈