let uplinkClient = null; // 업스트림 네트워크 품질 확인let downlinkClient = null; // 다운스트림 네트워크 품질 확인let localStream = null; // 테스트할 스트림let testResult = {// 업스트림 네트워크 품질 데이터 기록uplinkNetworkQualities: [],// 다운스트림 네트워크 품질 데이터 기록downlinkNetworkQualities: [],average: {uplinkNetworkQuality: 0,downlinkNetworkQuality: 0}}// 1. 업스트림 네트워크 품질 확인async function testUplinkNetworkQuality() {uplinkClient = TRTC.createClient({sdkAppId: 0, // sdkAppId 입력userId: 'user_uplink_test',userSig: '', // uplink_test의 userSigmode: 'rtc'});localStream = TRTC.createStream({ audio: true, video: true });// 필요에 따라 video profile 설정localStream.setVideoProfile('480p');await localStream.initialize();uplinkClient.on('network-quality', event => {const { uplinkNetworkQuality } = event;testResult.uplinkNetworkQualities.push(uplinkNetworkQuality);});// 테스트를 위한 방으로 들어갑니다. 충돌을 피하기 위해 회의실 ID는 무작위여야 합니다.await uplinkClient.join({ roomId: 8080 });await uplinkClient.publish(localStream);}// 2. 다운스트림 네트워크 품질 확인async function testDownlinkNetworkQuality() {downlinkClient = TRTC.createClient({sdkAppId: 0, // sdkAppId 입력userId: 'user_downlink_test',userSig: '', // userSigmode: 'rtc'});downlinkClient.on('stream-added', async event => {await downlinkClient.subscribe(event.stream, { audio: true, video: true });// 성공적인 구독 후 네트워크 품질 이벤트 수신 시작downlinkClient.on('network-quality', event => {const { downlinkNetworkQuality } = event;testResult.downlinkNetworkQualities.push(downlinkNetworkQuality);});})// 테스트를 위한 방으로 들어갑니다. 충돌을 피하기 위해 회의실 ID는 무작위여야 합니다.await downlinkClient.join({ roomId: 8080 });}// 3. 점검 시작testUplinkNetworkQuality();testDownlinkNetworkQuality();// 4. 15s 후 점검을 중지하고 평균 네트워크 품질 계산setTimeout(() => {// 평균 업스트림 네트워크 품질 계산if (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) {// 평균 다운스트림 네트워크 품질 계산testResult.average.downlinkNetworkQuality = Math.ceil(testResult.downlinkNetworkQualities.reduce((value, current) => value + current, 0) / testResult.downlinkNetworkQualities.length);}// 점검이 종료됩니다. 관련 상태를 지우십시오.uplinkClient.leave();downlinkClient.leave();localStream.close();}, 15 * 1000);
값 | 설명 |
0 | 알 수 없는 네트워크 품질, 현재 client 인스턴스가 업스트림/다운스트림 연결을 설정하지 않았음을 나타냄 |
1 | 우수한 네트워크 품질 |
2 | 좋은 네트워크 품질 |
3 | 평균 네트워크 품질 |
4 | 열악한 네트워크 품질 |
5 | 매우 열악한 네트워크 품질 |
6 | 네트워크 연결 끊김. 참고: 다운스트림 네트워크 품질이 이 값이면 모든 다운스트림 연결이 끊겼음을 나타냄 |
네트워크 품질이 3보다 나쁠 경우 사용자에게 네트워크를 확인하고 더 나은 네트워크 환경으로 이동하라는 메시지를 표시하는 것이 좋습니다. 그렇지 않으면 정상적인 음성/영상 통화 환경이 영향을 받을 수 있습니다.다음 방법을 사용하여 대역폭 소비를 줄일 수도 있습니다.업스트림 네트워크 품질이 3보다 나쁠 경우 LocalStream.setVideoProfile() API를 호출하여 비트레이트를 줄이거나 또는 LocalStream.muteVideo()를 호출하여 업스트림 대역폭 소비를 줄이기 위해 비디오를 비활성화할 수 있습니다.다운스트림 네트워크 품질이 3보다 낮은 경우 기본 스트림/서브 스트림 전송 활성화의 지침에 따라 낮은 품질의 스트림에 가입하거나 오디오만 가입하여 다운스트림 대역폭 소비를 줄일 수 있습니다.
문제 해결에 도움이 되었나요?