音量大小检测功能允许开发者实时获取本地和远端用户麦克风的音量水平。这一功能对于提升用户体验至关重要,尤其是在需要动态调整音量、提供音量反馈或监控音频输入质量的场景中。
要实现音量大小检测,开发者需要使用小鱼易连 Web SDK 提供的 getAudioAnalyser 和 getAudioLevel 方法。
事件
speakers-info:实时讲话人信息,最多三路数据,包含本地数据;
方法
getAudioAnalyser:获取音量分析器,用于获取实时讲话人音量功能,获取到音量分析器后调用 getAudioLevel 方法即可获取音量;
getAudioLevel:获取本地麦克风音量大小;
获取本地麦克风音量较为简单,通过创建得到的 VideoAudioTrack 轨道定时调用 getAudioLevel 方法即可;
// 创建 VideoAudioTrack 实例
const videoAudioTrack = await XYClient.createVideoAudioTrack();
await videoAudioTrack.capture();
// 定时获取音量大小
setInterval(async () => {
try {
// 通过videoAudioTrack获取音量
const audioLevel = await videoAudioTrack.getAudioLevel();
console.log(`当前音量大小: ${audioLevel}`);
} catch (error) {
console.error("获取音量大小失败:", error);
}
// 每100毫秒获取一次音量大小
}, 100);
1、调用 setFeatureCofnig 开启实时讲话人开关,SDK内部启用实时讲话人消息推送;
XYClient.setFeatureConfig({
...,
enableSpeakerInfo: true
})
2、监听 speakers-info 实时讲话人事件消息,获取最多三路正在讲话人的信息;
import { XYSpeakersInfo } from '@xylink/xy-rtc-sdk';
XYClient.on('speakers-info', (e: XYSpeakersInfo) => {
calculateAudioLevel(e)
});
3、通过调用 getAudioAnalyser 方法,获取指定讲话人设备的音量分析器,然后通过分析器获取音量数据;
const getAnalyser = (id) => {
const analyser = XYClient.getAudioAnalyser(id);
return analyser;
}
// 取第一个设备采集音量大小,仅做演示使用,实际需要遍历获取所有设备音量
const calculateAudioLevel = (e) => {
const id = e.speakersInfo[0];
const analyser = getAnalyser(id);
const audioLevel = analyser.getAudioLevel();
console.log("audio level: ", audioLevel);
}