为提供更好的音视频通话体验,你可以在用户正式通话前进行网络质量检测,并根据检测质量的判定结果采取相应的措施。例如,降低码率,或者通过 UI 提醒用户切换到更稳定的网络环境。
你已经实现了基础音视频通话功能。
createEngine
创建两个 Engine 实例。uplinkClient
:用于检测发送网络通道质量downlinkClient
:用于检测接收网络通道质量const uplinkClient = VERTC.createEngine(appId); const downlinkClient = VERTC.createEngine(appId);
uplinkClient
实例中调用 startVideoCapture
和 startAudioCapture
采集音视频流。await uplinkClient.startAudioCapture(); await uplinkClient.startVideoCapture();
joinRoom
,使用不同的 userId
和 token
进入同一个测试房间。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 });
onNetworkQuality
获取上、下行网络通道质量数据。// 查看上行网络质量数据 uplinkClient.on('onNetworkQuality', (uplinkNetworkQuality) => { console.log('onNetworkQuality: ', uplinkNetworkQuality); }); // 查看下行网络质量数据 downlinkClient.on('onNetworkQuality', (_, downlinkNetworkQuality) => { console.log('onNetworkQuality: ', downlinkNetworkQuality); });
onLocalStreamStats
和 onRemoteStreamStats
获取上、下行网络通道质量数据,并将得到的质量数据放在你的 QoE 模型中进行计算,最终决策出网络质量。下表给出了一个简易的网络质量判断标准。网络质量 | 上行丢包率 LossRate | 下行端到端延迟 e2eDelay | 往返时延 rtt | 接收端卡顿率 StallDuration /2000ms |
---|---|---|---|---|
好,可以进行音视频通话 | < 0.05 | < 600 ms | < 250 ms | < 0.15 |
较差,建议降低码率 | 0.05~0.1 | 600 ms~1200 ms | 250 ms~1000 ms | 0.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);