跳到主要内容

通话数据统计

提示

以下示例代码中的 room 指加入房间成功后获取到的房间实例。

SDK 通过 IRCRTCReportListener 提供详细的通话状态数据,上层依据此数据可进行提示,状态判断等处理。

监听通话质量数据

在直播模式下、会议模式下均支持监听通话质量数据。

  1. 获取房间实例。

  2. 使用 registerReportListener 注册监听器。

    import { IRCRTCStateReport, IRCCandidatePairStat, IRCTrackStat, ILiveAudioState } from '@rongcloud/plugin-rtc'

    // 注册房间质量数据监听器
    room.registerReportListener({
    /**
    * 用于接收状态数据报告
    * @param report
    */
    onStateReport (report: IRCRTCStateReport) {
    /**
    * 报告生成时间
    */
    const timestamp: number = report.timestamp
    /**
    * 对等连接状态数据,其中包含反应当前与媒体服务器之间的 UDP 通道质量的信息
    */
    const iceCandidatePair: IRCCandidatePairStat = report.iceCandidatePair
    /**
    * 所有的上行流的状态数据
    */
    const senders: IRCTrackStat[] = report.senders
    /**
    * 订阅的下行流状态数据
    */
    const receivers: IRCTrackStat[] = report.receivers
    },
    /**
    * 上报直播房间内音频合流的音源信息
    * 仅在直播房间内观众端有效
    * ILiveAudioState 中包含 userId、trackId、audioLevel
    * @since @rongcloud/plugin-rtc@5.6.3
    */
    onReportLiveAudioStates (liveAudioStates: ILiveAudioState[]) {
    console.log('liveAudioStates', liveAudioStates);
    }
    })

    IRCRTCReportListener 提供两个方法:

    • onStateReport:(适用于会议和直播场景)上报音视频统计数据,例如音视频流相关用户数据、音视频流质量数据、网络状态与质量数据等。
    • onReportLiveAudioStates:(仅限直播场景,要求 SDK 版本 ≧ 5.6.3)上报合流的各主播音源属性 ILiveAudioState,其中包含每个主播的音量数据。

通信质量数据

SDK 会通过 IRCRTCReportListeneronStateReport 方法上报音视频质量统计数据,例如音视频流相关用户数据、音视频流质量数据、网络状态与质量数据等。

直播合流中各音源音量

提示
  • 5.6.3 版本增加了 onReportLiveAudioStates 回调方法,仅限直播场景下使用。
  • 5.6.3 之前的版本,当观众订阅音频合流时只能获取合流整体的音量,无法单独获取每个主播的音量。

从 5.6.3 开始,直播场景下观众订阅音频合流,SDK 会通过 IRCRTCReportListeneronReportLiveAudioStates 方法实时上报音频合流的声音状态。例如当前音频合流由 A B C 三个主播音频流产生,此时 A 在发声,SDK 会通过该方法回调 ILiveAudioState 类型的数组,数组中包含 A 主播的音量 audioLevel 取值是 0 ~ 100。

export interface ILiveAudioState {
/**
* 用户 id
*/
userId: string,
/**
* 资源 trackId
*/
trackId: string,
/**
* 音量 0-100
*/
audioLevel: number
}

上报音量

当业务层需要获知当前房间内的人员说话状态时,可以通过该接口音量数据进行判断处理。

  1. 获取房间实例。

  2. 构建 IAudioLevelChangeHandler 实例,在房间实例的 onAudioLevelChange 方法中传入。

    const handler = (audioLevelReportList: {track: RCLocalAudioTrack | RCRemoteAudioTrack, audioLevel: number}[]) => {}
    // 注册后,SDK 会以每秒一次的频率进行回调
    room.onAudioLevelChange(handler)