You need to enable JavaScript to run this app.
导航

Web 端通话前网络质量检测

最近更新时间2023.12.13 16:13:02

首次发布时间2021.12.13 21:26:43

为提供更好的音视频通话体验,你可以在用户正式通话前进行网络质量检测,并根据检测质量的判定结果采取相应的措施。例如,降低码率,或者通过 UI 提醒用户切换到更稳定的网络环境。

前提条件

你已经实现了基础音视频通话功能。

功能实现

  1. 调用两次 createEngine 创建两个 Engine 实例。
  • uplinkClient:用于检测发送网络通道质量
  • downlinkClient:用于检测接收网络通道质量
const uplinkClient = VERTC.createEngine(appId);
const downlinkClient = VERTC.createEngine(appId);
  1. uplinkClient 实例中调用 startVideoCapturestartAudioCapture 采集音视频流。
await uplinkClient.startAudioCapture();
await uplinkClient.startVideoCapture();
  1. 分别调用 joinRoom ,使用不同的 userIdtoken 进入同一个测试房间。
  • uplinkClient:将自动发布设置为 true
  • downlinkClient:将自动订阅音频/视频设置为 true
// uplinkClient 进房,设置为自动发布,开启音视频采集
uplinkClient.joinRoom(token1, roomId, { userId: userId1 }, {
    isAutoPublish: true,
    isAutoSubscribeAudio: false,
    isAutoSubscribeVideo: false
});

// downlinkClient 进房,设置为自动订阅
downlinkClient.joinRoom(token2, roomId, { userId: userId2 }, {
    isAutoPublish: false,
    isAutoSubscribeAudio: true,
    isAutoSubscribeVideo: true
});
  1. 获取上、下行网络通道质量数据。
  • 自 v4.44 起,通过 onNetworkQuality 获取上、下行网络通道质量数据。
// 查看上行网络质量数据
uplinkClient.on('onNetworkQuality', (uplinkNetworkQuality) => {
    console.log('onNetworkQuality: ', uplinkNetworkQuality);
});
// 查看下行网络质量数据
downlinkClient.on('onNetworkQuality', (_, downlinkNetworkQuality) => {
    console.log('onNetworkQuality: ', downlinkNetworkQuality);
});
  • 在 v4.43 及之前的版本中,你需要通过 onLocalStreamStatsonRemoteStreamStats 获取上、下行网络通道质量数据,并将得到的质量数据放在你的 QoE 模型中进行计算,最终决策出网络质量。下表给出了一个简易的网络质量判断标准。
网络质量上行丢包率 LossRate下行端到端延迟 e2eDelay往返时延 rtt接收端卡顿率 frozenRate
好,可以进行音视频通话< 0.05< 600 ms< 250 ms< 0.15
较差,建议降低码率0.05~0.1600 ms~1200 ms250 ms~1000 ms0.15~0.3
很差,建议切换稳定网络> 0.1> 1200 ms> 1000 ms> 0.3
// 查看上行网络质量数据
uplinkClient.on('onLocalStreamStats', stats => {
          console.log('onLocalStreamStats: ', stats);
// 查看下行网络质量数据
downlinkClient.on('onRemoteStreamStats', stats => {
          console.log('onRemoteStreamStats: ', stats);

API 参考