小鱼SDK提供显示当前发言者的接口,同一时间最多显示3路声音能量最高的发言者。通过该功能,您可以:
调用 needSpeakerChanged 方法开启发言者监听:
/**
* 开启发言者监听
*/
enableSpeakerDetection(): void {
XYRTCEngine.getInstance().needSpeakerChanged(true);
}
XYSDKSpeakersInfoPut 包含以下字段:
字段 | 类型 | 说明 |
callUri | string | 参会者callUri,由参会者用户id和参会设备类型构成 |
energyAverage | number | 音频能量值 |
participantId | string | 参会者会中唯一id |
/**
* 发言者变化回调
* @param speakersInfos 发言者信息数组
*/
onSpeakersChanged(speakersInfos: XYSDKSpeakersInfoPut[]): void {
// 处理发言者信息
this.handleSpeakersChanged(speakersInfos);
}
/**
* 处理发言者信息
* @param speakersInfos 发言者信息数组
*/
private handleSpeakersChanged(speakersInfos: XYSDKSpeakersInfoPut[]): void {
// 按能量值排序
const sortedSpeakers = speakersInfos.sort(
(a, b) => b.energyAverage - a.energyAverage
);
// 获取前三位发言者
const topSpeakers = sortedSpeakers.slice(0, 3);
// 更新UI显示
this.updateSpeakersDisplay(topSpeakers);
}
/**
* 更新发言者显示
* @param speakers 发言者信息数组
*/
private updateSpeakersDisplay(speakers: XYSDKSpeakersInfoPut[]): void {
// 实现UI更新逻辑
}