通话数据统计
提示
以下示例代码中的 room
指加入房间成功后获取到的房间实例。
SDK 通过 IRCRTCReportListener 提供详细的通话状态数据,上层依据此数据可进行提示,状态判断等处理。
监听通话质量数据
在直播模式下、会议模式下均支持监听通话质量数据。
-
获取房间实例。
- 会议模式:RCRTCRoom
- 直播模式:主播角色用户使用 RCLivingRoom 实例、观众角色用户使用 RCAudienceLivingRoom 实例。在直播模式下,如果观众不加入房间直接订阅
liveUrl
,也可以在获取 RCAudienceClient 实例后使用registerReportListener
注册 IRCRTCReportListener 监听。
-
使用
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 会通过 IRCRTCReportListener 的 onStateReport
方法上报音视频质量统计数据,例如音视频流相关用户数据、音视频流质量数据、网络状态与质量数据等。
- IRCRTCStateReport: RTCPeerConnection 的详细状态数据
- IRCCandidatePairStat: 连接状态数据
- IRCTrackStat: 流状态数据
直播合流中各音源音量
提示
- 5.6.3 版本增加了
onReportLiveAudioStates
回调方法,仅限直播场景下使用。 - 5.6.3 之前的版本,当观众订阅音 频合流时只能获取合流整体的音量,无法单独获取每个主播的音量。
从 5.6.3 开始,直播场景下观众订阅音频合流,SDK 会通过 IRCRTCReportListener 的 onReportLiveAudioStates
方法实时上报音频合流的声音状态。例如当前音频合流由 A B C 三个主播音频流产生,此时 A 在发声,SDK 会通过该方法回调 ILiveAudioState
类型的数组,数组中包含 A 主播的音量 audioLevel
取值是 0 ~ 100。
export interface ILiveAudioState {
/**
* 用户 id
*/
userId: string,
/**
* 资源 trackId
*/
trackId: string,
/**
* 音量 0-100
*/
audioLevel: number
}
上报音量
当业务层需要获知当前房间内的人员说话状态时,可以通过该接口音量数据进行判断处理。
-
获取房间实例。
- 会议模式:RCRTCRoom
- 直播模式:主播角色用户使用 RCLivingRoom 实例、观众角色用户使用 RCAudienceLivingRoom 实例。
-
构建 IAudioLevelChangeHandler 实例,在房间实例的
onAudioLevelChange
方法中传入。const handler = (audioLevelReportList: {track: RCLocalAudioTrack | RCRemoteAudioTrack, audioLevel: number}[]) => {}
// 注册后,SDK 会以每秒一次的频率进行回调
room.onAudioLevelChange(handler)