import { SpeakersInfoItem, XYBaseModule } from '../../type/index'; import { default as XYRTCClient } from '../../main/client'; import { default as Logger } from '../../tools/log/logger'; export declare class XYSpeaker implements XYBaseModule { logger: Logger; private client; private cacheSpeakerList; private cacheRemoteSpeakerList; private speakerListJson; private speakerListTimer; private speakerInterval; private speakerTimestamp; private analyserMap; constructor(client: XYRTCClient); /** * 获取实时讲话人列表数据 */ getRemoteSpeakerList(): SpeakersInfoItem[]; /** * 获取SpeakerList的对象数据 * * @returns { { [key: string]: SpeakersInfoItem } } */ getRemoteSpeakerMap(): { [key: string]: SpeakersInfoItem; }; /** * 处理实时讲话人信息 * * @param { SpeakersInfoObj[] } data - 接收到的远端speakers消息内容 */ onSpeakerListMessage(data?: SpeakersInfoItem[]): void; /** * 删除无效的讲话人信息 */ private deleteInvalidSpeakerMap; /** * 启动定时器针对SpeakerList做处理 */ private startSpeakerListTimer; /** * 创建Analyser分析器,计算所有通道音量大小 * * 1、缓存对应每个人的MediaStream数据 * 2、获取每个人的实时音量大小 * 3、排序、推送排序的数据 */ private updateSpeakerAudioLevel; /** * 创建或更新Analyser分析器 * * @param { string } id - Roster Id * @param { string } trackId - 媒体网关分配的Track Id * @param { string } timestamp - 时间戳 */ private createAndUpdateAnalyser; /** * 基于合并后的SpeakerList做过滤和声量排序操作 */ private sortSpeakerAudioLevel; /** * 推送实时讲话人信息 * * @param { SpeakersInfoObj[] } speakerList - 说话人信息 */ private emitSpeakerList; /** * 销毁所有Analyser分析器 */ private destroyAnalyserMap; /** * 清除Speaker Timer和其他缓存数据 */ destroy(): void; }