跳到主要内容

通话数据统计

质量数据监控

获取质量数据

  import { IRCRTCStateReport, IRCCandidatePairStat, IRCTrackStat } from '@rongcloud/plugin-rtc'
/**
* 在 session 实例上注册事件监听
*/
session.registerSessionListener({
/**
* 用于接收状态数据报告
* @param report 报告信息
* @param session 当前的 session 对象
*/
onRTCStateReport: (report: IRCRTCStateReport, session: RCCallSession) => {
/**
* 报告生成时间
*/
const timestamp: number = report.timestamp
/**
* 对等连接状态数据,其中包含反应当前与媒体服务器之间的 UDP 通道质量的信息
*/
const iceCandidatePair: IRCCandidatePairStat = report.iceCandidatePair
/**
* 所有的上行流的状态数据
*/
const senders: IRCTrackStat[] = report.senders
/**
* 订阅的下行流状态数据
*/
const receivers: IRCTrackStat[] = report.receivers
}
});

连接状态属性

interface IRCCandidatePairStat {
/**
* 本端 IP
*/
IP: string;
/**
* 本地 UDP 端口
*/
port: number;
/**
* 本地网络类型
*/
networkType: string | null;
/**
* 远端 IP
*/
remoteIP: string;
/**
* 远端 UDP 端口
*/
remotePort: number;
/**
* 协议
*/
protocol: string;
/**
* 发送总码率,单位 kbps
*/
bitrateSend: number;
/**
* 接收总码率,单位 kbps
*/
bitrateRecv: number;
/**
* (Round-Trip-Time)往返时延,单位 ms
*/
rtt: number | null;
/**
* 可用上行带宽,单位 bit
*/
availableOutgoingBitrate: number | null;
/**
* 可用下行带宽,在无下行资源时,其值为 `0`,单位: `bit`
*/
availableIncomingBitrate: number | null;
}

流状态属性

interface IRCTrackStat {
/**
* stat id
*/
id?: string;
/**
* 资源 Id
*/
trackId: string;
/**
* 资源类型
*/
kind: 'audio' | 'video';
/**
* 丢包率,有效值 `0` - `1`
*/
packetsLostRate: number | null;
/**
* 是否是远端资源
*/
remoteResource: boolean;
/**
* 音量
*/
audioLevel?: number | null;
/**
* 视频高度
*/
frameHeight?: number | null;
/**
* 视频宽度
*/
frameWidth?: number | null;
/**
* 视频帧率
*/
frameRate?: number | null;
/**
* 码率
*/
bitrate: number;
/**
* 网络抖动,单位 ms
* @description 下行数据中,同道流中只有一个 track 会有值,另一轨道数据值为 `0`
*/
jitter: number | null;
}