ネットワーク品質の検出
ルームに入る前や通話中に、ユーザーのネットワーク品質を検出することで、その時点のユーザーのネットワーク品質を判断することができます。ユーザーのネットワーク品質が悪すぎる場合は、正常な通話品質を確保するために、ネットワークを確認するか、ネットワークを変更するよう、ユーザーにアドバイスする必要があります。
通話中のネットワーク品質検出
const trtc = TRTC.create();trtc.on(TRTC.EVENT.NETWORK_QUALITY, event => {console.log(`network-quality, uplinkNetworkQuality:${event.uplinkNetworkQuality}, downlinkNetworkQuality: ${event.downlinkNetworkQuality}`)console.log(`uplink rtt:${event.uplinkRTT} loss:${event.uplinkLoss}`)console.log(`downlink rtt:${event.downlinkRTT} loss:${event.downlinkLoss}`)})
通話前のネットワーク品質検出
実装プロセス
2.この 2 つの TRTC は同じルームに入ります。
5.全過程は約 15 秒間続き、最終的に平均的なネットワーク品質が取得され、上がり・下りのネットワーク状況を大まかに判断します
ご注意:
API 呼び出し順序

コード例
let uplinkTRTC = null; // Used to detect uplink network qualitylet downlinkTRTC = null; // Used to detect downlink network qualitylet localStream = null; // Stream used for testinglet testResult = {// Record uplink network quality datauplinkNetworkQualities:[],// Record downlink network quality datadownlinkNetworkQualities:[],average:{uplinkNetworkQuality:0,downlinkNetworkQuality:0}}// 1. Test uplink network qualityasync function testUplinkNetworkQuality() {uplinkTRTC = TRTC.create();uplinkTRTC.enterRoom({roomId:8080,sdkAppId:0, // Fill in sdkAppIduserId:'user_uplink_test',userSig:'', // userSig of uplink_testscene:'rtc'})uplinkTRTC.on(TRTC.EVENT.NETWORK_QUALITY, event => {const { uplinkNetworkQuality } = event;testResult.uplinkNetworkQualities.push(uplinkNetworkQuality);});}// 2. Detect downlink network qualityasync function testDownlinkNetworkQuality() {downlinkTRTC = TRTC.create();downlinkTRTC.enterRoom({roomId:8080,sdkAppId:0, // Fill in sdkAppIduserId:'user_downlink_test',userSig:'', // userSigscene:'rtc'});downlinkTRTC.on(TRTC.EVENT.NETWORK_QUALITY, event => {const { downlinkNetworkQuality } = event;testResult.downlinkNetworkQualities.push(downlinkNetworkQuality);})}// 3. Start detectiontestUplinkNetworkQuality();testDownlinkNetworkQuality();// 4. Stop detection after 15s and calculate the average network qualitysetTimeout(() => {// Calculate the average uplink network qualityif (testResult.uplinkNetworkQualities.length > 0) {testResult.average.uplinkNetworkQuality = Math.ceil(testResult.uplinkNetworkQualities.reduce((value, current) => value + current, 0) / testResult.uplinkNetworkQualities.length);}if (testResult.downlinkNetworkQualities.length > 0) {// Calculate the average downlink network qualitytestResult.average.downlinkNetworkQuality = Math.ceil(testResult.downlinkNetworkQualities.reduce((value, current) => value + current, 0) / testResult.downlinkNetworkQualities.length);}// Detection is over, clean up related states.uplinkTRTC.exitRoom();downlinkTRTC.exitRoom();}, 15 * 1000);
結果分析
上記のステップを経て、上がりの平均ネットワーク品質、下りの平均ネットワーク品質を得ることができます。ネットワーク品質の列挙値を以下に示します。
数値 | 意味 |
0 | ネットワーク状態が不明で、現在の TRTC インスタンスがまだ上がり/下りリンク接続を確立していないことを示します |
1 | 優れたネットワーク状況 |
2 | 良好なネットワーク状況 |
3 | まあまあのネットワーク状況 |
4 | 悪いネットワーク状況 |
5 | 非常に悪いネットワーク状況 |
6 | ネットワーク接続が切断されました 注意:下りネットワーク品質がこの値の場合、すべての下り接続が切断されていることを意味します |
提案:
ネットワーク品質が 3 より大きい場合、ネットワークの確認とネットワーク環境の変更を行うようユーザーを案内する必要があります。そうしないと、正常なオーディオ・ビデオ通話を保証することは困難です。また、以下のポリシーによって帯域幅の消費を削減することができます。
上がりネットワーク品質が 3 より大きい場合、 TRTC.updateLocalVideo() インターフェースによってビットレートを下げるか、 TRTC.stopLocalVideo() によってビデオをオフにすることで、上がり帯域幅の消費を低減ことができます。
下りネットワーク品質が 3 より大きい場合、スモールストリームまたはオーディオのみをサブスクリプションすることで(多人数ビデオ通話の最適化を参照) 、下り帯域幅の消費を抑えることができます。