提交工单
咨询集成、功能及报价等问题
在 K 歌场景中,经常需要拉多路流并显示其中正在讲话的用户,ZEGO 提供了甄别用户是否说话、说话音量大小(音浪)的能力,方便开发者做 UI 展示,例如:
请参考 下载示例源码 获取源码。
相关源码请查看 “src/Examples/AdvancedAudioProcessing/SoundLevelAndAudioSpectrum” 文件。
在监听音量变化功能之前,请确保:
监听音浪回调接口,注册 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}`);
});
});
启动音浪监听,调用 setSoundLevelDelegate 接口启动监听音量大小,设置音浪回调间隔时间,单位为 ms。
zg.setSoundLevelDelegate(true, 1000);
停止音浪监听,调用 setSoundLevelDelegate 接口停止监听音量大小。
zg.setSoundLevelDelegate(false);
调用 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);
调用 mixerSoundLevelUpdate 接口监听混流音量变化。
zg.on("mixerSoundLevelUpdate", (mixMap, id) => {
console.warn("mixerSoundLevelUpdate", mixMap, id);
});
根据混流 streamID 拉流,若需要获取混流音量值,需要开启 SEI,详情请参考 媒体补充增强信息(SEI)。
// 拉流
zg.startPlayingStream(mixStreamID, {
// 开启解析 SEI
isSEIStart: true
}).then(stream => {
}).catch(err => {
});
联系我们
文档反馈