Agora Web SDK 支持获取以下统计数据来检测通话质量:
开始前,请确保你已参考快速开始在你的项目中实现基本的实时音视频功能。
Last mile 是指你的设备到 Agora 边缘服务器的网络。
本地用户加入频道后,SDK 会每 2 秒触发一次 AgoraRTCClient.on("network-quality") 回调报告本地用户的上下行 last-mile 网络质量打分。
你还可以通过 AgoraRTCClient.getRemoteNetworkQuality 方法获取本地订阅的所有远端用户的上下行 last-mile 网络质量打分。
质量打分对照表如下:
分数 | 说明 |
---|---|
0 | 网络质量未知。 |
1 | 网络质量极好。 |
2 | 用户主观感觉和极好差不多,但码率可能略低于极好。 |
3 | 用户主观感受有瑕疵但不影响沟通。 |
4 | 勉强能沟通但不顺畅。 |
5 | 网络质量非常差,基本不能沟通。 |
6 | 完全无法沟通。 |
client.on("network-quality", (stats) => {
console.log("downlinkNetworkQuality", stats.downlinkNetworkQuality);
console.log("uplinkNetworkQuality", stats.uplinkNetworkQuality);
});
const remoteNetworkQuality = client.getRemoteNetworkQuality();
调用 AgoraRTCClient.getRTCStats 方法获取与当前通话的统计数据,数据说明详见 AgoraRTCStats。
const clientStats = client.getRTCStats();
调用 AgoraRTCClient.getLocalAudioStats 和 AgoraRTCClient.getLocalVideoStats 方法分别获取本地发布的音频轨道和视频轨道的统计数据。数据说明详见 LocalAudioTrackStats 和 LocalVideoTrackStats。
const localStats = {
video: client.getLocalVideoStats(),
audio: client.getLocalAudioStats()
};
调用 AgoraRTCClient.getRemoteAudioStats 和 AgoraRTCClient.getRemoteVideoStats 方法获取订阅的远端音频轨道和远端视频轨道的统计数据。其中,你可参考下图理解 end2EndDelay
、receiveDelay
和 transportDelay
字段,其他数据说明详见 RemoteAudioTrackStats 和 RemoteVideoTrackStats。
字段 | 描述 |
---|---|
end2EndDelay |
端到端延时(毫秒),从远端采集音频或视频到本地播放音频或视频的延时。图中阶段 1 + 2 + 3 + 4 + 5 + 6。 |
receiveDelay |
接收音频延时(毫秒),从远端发送音频或视频到本地播放音频或视频的延时,图中阶段 2 + 3 + 4 + 5 + 6。 |
transportDelay |
传输延时(毫秒),从远端发送音频或视频到本地接收音频或视频的延时。图中阶段 2 + 3 + 4。 |
const remoteTracksStats = {
video: client.getRemoteVideoStats()[uid],
audio: client.getRemoteAudioStats()[uid]
};
SDK 通过 AgoraRTCClient.on("exception") 回调报告频道内的异常事件。异常事件不是错误,但是往往会引起通话质量问题。发生异常事件后,如果恢复正常,也会收到该回调。该回调返回:
code
:事件码。msg
:提示消息。uid
:发生异常或恢复的用户 UID。client.on("exception", function(evt) {
console.log(evt.code, evt.msg, evt.uid);
})
每个异常事件都有对应的恢复事件,详见下表:
上述所有方法必须在成功加入频道之后调用。