跳到主要内容

通话数据统计

音视频通话过程中,底层音视频库会按照 RCRTCEngineSetup 中的 statsReportInterval 指定的时间间隔(默认1秒)上报通话的详细数据,上层依据此数据可进行提示,状态判断等处理。

可通过 RCRTCEngine 中的 setOnNetworkStatsListener 等方法注册监听。

详细说明

网络状态监听

方法

JavaScript
rtcEngine.setOnNetworkStatsListener(callback);

回调参数

参数类型说明
statsRCRTCNetworkStats网络状态信息

示例代码

JavaScript
rtcEngine.setOnNetworkStatsListener((stats) => {
console.log('网络状态信息:', stats);
});

本地音频统计监听

方法

JavaScript
rtcEngine.setOnLocalAudioStatsListener(callback);

回调参数

参数类型说明
statsRCRTCLocalAudioStats音频发送状态信息

示例代码

JavaScript
rtcEngine.setOnLocalAudioStatsListener((stats) => {
console.log('本地音频统计:', stats);
});

本地视频统计监听

方法

JavaScript
rtcEngine.setOnLocalVideoStatsListener(callback);

回调参数

参数类型说明
statsRCRTCLocalVideoStats视频发送状态信息

示例代码

JavaScript
rtcEngine.setOnLocalVideoStatsListener((stats) => {
console.log('本地视频统计:', stats);
});

本地自定义视频统计监听

方法

JavaScript
rtcEngine.setOnLocalCustomVideoStatsListener(callback);

回调参数

参数类型说明
tagString自定义视频资源 TAG
statsRCRTCLocalVideoStats自定义视频资源发送状态信息

示例代码

JavaScript
rtcEngine.setOnLocalCustomVideoStatsListener((tag, stats) => {
console.log('本地自定义视频统计:', tag, stats);
});

远端音频统计监听

在直播场景下,主播角色的用户可通过该回调获取房间内正在说法的其他主播及其音量。在会议场景下,与会用户可通过该回调获取房间内正在说法的其他用户及其音量。

方法

JavaScript
rtcEngine.setOnRemoteAudioStatsListener(callback);

回调参数

参数类型说明
roomIdString远端房间 ID
userIdString远端用户 ID
statsRCRTCRemoteAudioStats音频接收质量状态信息

示例代码

JavaScript
rtcEngine.setOnRemoteAudioStatsListener((roomId, userId, stats) => {
console.log('远端音频统计:', roomId, userId, stats);
});

远端视频统计监听

方法

JavaScript
rtcEngine.setOnRemoteVideoStatsListener(callback);

回调参数

参数类型说明
roomIdString远端房间 ID
userIdString远端用户 ID
statsRCRTCRemoteVideoStats视频接收质量状态信息

示例代码

JavaScript
rtcEngine.setOnRemoteVideoStatsListener((roomId, userId, stats) => {
console.log('远端视频统计:', roomId, userId, stats);
});

合流音频统计监听

方法

JavaScript
rtcEngine.setOnLiveMixAudioStatsListener(callback);

回调参数

参数类型说明
statsRCRTCRemoteAudioStats合流音频接收质量状态信息

示例代码

JavaScript
rtcEngine.setOnLiveMixAudioStatsListener((stats) => {
console.log('合流音频统计:', stats);
});

合流成员音频统计监听

在直播场景下,观众可以通过该回调获取正在说话的主播的音量。

方法

JavaScript
rtcEngine.setOnLiveMixMemberAudioStatsListener(callback);

回调参数

参数类型说明
userIdString远端用户 ID
volumeNumber远端用户音量

示例代码

JavaScript
rtcEngine.setOnLiveMixMemberAudioStatsListener((userId, volume) => {
console.log('合流成员音频统计:', userId, volume);
});

合流视频统计监听

方法

JavaScript
rtcEngine.setOnLiveMixVideoStatsListener(callback);

回调参数

参数类型说明
statsRCRTCRemoteVideoStats合流视频接收质量状态信息

示例代码

JavaScript
rtcEngine.setOnLiveMixVideoStatsListener((stats) => {
console.log('合流视频统计:', stats);
});

远端自定义视频统计监听

方法

JavaScript
rtcEngine.setOnRemoteCustomVideoStatsListener(callback);

回调参数

参数类型说明
roomIdString远端房间 ID
userIdString远端用户 ID
tagString远端自定义视频资源 TAG
statsRCRTCRemoteVideoStats自定义视频资源接收质量状态信息

示例代码

JavaScript
rtcEngine.setOnRemoteCustomVideoStatsListener((roomId, userId, tag, stats) => {
console.log('远端自定义视频统计:', roomId, userId, tag, stats);
});

数据结构说明

RCRTCNetworkStats

属性类型说明
typeRCRTCNetworkType网络类型,未知/WIFI/移动网络
ipStringIP 地址
sendBitrateNumber发送码率,单位:kbps
receiveBitrateNumber接收码率,单位:kbps
rttNumber往返延时,单位:ms

RCRTCLocalAudioStats

属性类型说明
codecRCRTCAudioCodecType编码类型,PCMU/OPUS
bitrateNumber码率,单位:kbps
volumeNumber音量
packageLostRateNumber丢包率:取值范围是 0-100
rttNumber往返延时,单位:ms

RCRTCLocalVideoStats

属性类型说明
tinyBoolean小流标记,true 小流,false 大流
codecRCRTCVideoCodecType编码类型,H264
bitrateNumber码率,单位:kbps
fpsNumber视频帧率
widthNumber视频宽度
heightNumber视频高度
packageLostRateNumber丢包率:取值范围是 0-100
rttNumber往返延时,单位:ms

RCRTCRemoteAudioStats

属性类型说明
codecRCRTCAudioCodecType编码类型,PCMU/OPUS
bitrateNumber码率,单位:kbps
volumeNumber音量
packageLostRateNumber丢包率:取值范围是 0-100
rttNumber往返延时,单位:ms

RCRTCRemoteVideoStats

属性类型说明
codecRCRTCVideoCodecType编码类型,H264
bitrateNumber码率,单位:kbps
fpsNumber视频帧率
widthNumber视频宽度
heightNumber视频高度
packageLostRateNumber丢包率:取值范围是 0-100
rttNumber往返延时,单位:ms

完整示例代码

JavaScript
// 设置状态监听回调
rtcEngine.setOnNetworkStatsListener((stats) => {
// 网络状态信息
console.log('网络状态信息:', stats);
});

rtcEngine.setOnLocalAudioStatsListener((stats) => {
// 音频发送状态信息
console.log('本地音频统计:', stats);
});

rtcEngine.setOnLocalVideoStatsListener((stats) => {
// 视频发送状态信息
console.log('本地视频统计:', stats);
});

rtcEngine.setOnRemoteAudioStatsListener((roomId, userId, stats) => {
// 音频接收状态信息
console.log('远端音频统计:', roomId, userId, stats);
});

rtcEngine.setOnRemoteVideoStatsListener((roomId, userId, stats) => {
// 视频接收状态信息
console.log('远端视频统计:', roomId, userId, stats);
});

rtcEngine.setOnLiveMixAudioStatsListener((stats) => {
// 合流音频接收状态信息
console.log('合流音频统计:', stats);
});

rtcEngine.setOnLiveMixVideoStatsListener((stats) => {
// 合流视频接收状态信息
console.log('合流视频统计:', stats);
});

rtcEngine.setOnLocalCustomVideoStatsListener((tag, stats) => {
// 自定义视频发送状态信息
console.log('本地自定义视频统计:', tag, stats);
});

rtcEngine.setOnRemoteCustomVideoStatsListener((roomId, userId, tag, stats) => {
// 自定义视频接收状态信息
console.log('远端自定义视频统计:', roomId, userId, tag, stats);
});

// 调用以上接口参数为空,即为取消状态监听回调。如下示例
// 取消网络状态监听
rtcEngine.setOnNetworkStatsListener();
console.log('已取消网络状态监听');