跳到主要内容

通话数据统计

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

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

设置通话数据统计监听

方法

JavaScript
engine.setOnNetworkStatsListener();

回调参数

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

示例代码

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

统计回调详细说明

网络状态监听

方法

JavaScript
engine.setOnNetworkStatsListener();

回调参数

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

示例代码

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

本地音频统计监听

方法

JavaScript
engine.setOnLocalAudioStatsListener();

回调参数

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

示例代码

JavaScript
engine.setOnLocalAudioStatsListener((stats) => {
console.log('音频发送状态信息:', stats);
});

本地视频统计监听

方法

JavaScript
engine.setOnLocalVideoStatsListener();

回调参数

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

示例代码

JavaScript
engine.setOnLocalVideoStatsListener((stats) => {
console.log('视频发送状态信息:', stats);
});

本地自定义视频统计监听

方法

JavaScript
engine.setOnLocalCustomVideoStatsListener();

回调参数

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

示例代码

JavaScript
engine.setOnLocalCustomVideoStatsListener(({tag, stats}) => {
console.log('自定义视频发送状态信息:', tag, stats);
});

远端音频统计监听

方法

JavaScript
engine.setOnRemoteAudioStatsListener();

回调参数

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

示例代码

JavaScript
engine.setOnRemoteAudioStatsListener(({roomId, userId, stats}) => {
console.log('音频接收状态信息:', roomId, userId, stats);
});

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

远端视频统计监听

方法

JavaScript
engine.setOnRemoteVideoStatsListener();

回调参数

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

示例代码

JavaScript
engine.setOnRemoteVideoStatsListener(({roomId, userId, stats}) => {
console.log('视频接收状态信息:', roomId, userId, stats);
});

合流音频统计监听

方法

JavaScript
engine.setOnLiveMixAudioStatsListener();

回调参数

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

示例代码

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

合流成员音频统计监听

方法

JavaScript
engine.setOnLiveMixMemberAudioStatsListener();

回调参数

参数类型说明
callbackOnLiveMixMemberAudioStatsResult上报远端分流音频统计信息。其中 userId(string) 为远端用户 ID,volume(number)为音量

示例代码

JavaScript
engine.setOnLiveMixMemberAudioStatsListener((callback) => {
console.log('合流成员音频统计信息:', callback);
});

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

合流视频统计监听

方法

JavaScript
engine.setOnLiveMixVideoStatsListener();

回调参数

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

示例代码

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

远端自定义视频统计监听

方法

JavaScript
engine.setOnRemoteCustomVideoStatsListener();

回调参数

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

示例代码

JavaScript
engine.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
/// 设置状态监听回调

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

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

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

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

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

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

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

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

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

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