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

前置条件

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

功能实现
时序图

alt

操作步骤
  1. 调用两次 createEngine 创建两个 Engine 实例

    • uplinkClient:用于检测发送网络通道质量

    • downlinkClient:用于检测接收网络通道质量

  2. 分别调用 joinRoom ,使用不同的 userId 和 token 进入同一个测试房间

    • uplinkClient:将自动发布设置为 true

    • downlinkClient:将自动订阅音频/视频设置为 true

  3. 在 uplinkClient 实例中调用 startVideoCapture 和 startAudioCapture 发布音视频流

  4. 通过 onLocalStreamStats 和 onRemoteStreamStats 获取上、下行网络通道质量数据

  5. 将得到的质量数据放在你的 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
示例代码
const uplinkClient = VERTC.createEngine();
const downlinkClient = VERTC.createEngine();

// uplinkClient 进房,设置为自动发布,开启音视频采集
...
// downlinkClient: 进房,设置为自动订阅
...
javascript
uplinkClient.on('onLocalStreamStats', stats => {
          console.log('onLocalStreamStats: ', stats);
javascript
downlinkClient.on('onRemoteStreamStats', stats => {
          console.log('onRemoteStreamStats: ', stats);
javascript
API 参考