높은 왕복 시간과 높은 지터 버퍼 지연은 오디오 지연의 가장 일반적인 원인입니다.
왕복 시간이 높게 발생하는 데는 몇 가지 이유가 있습니다.
두 엔드포인트 간의 장거리 홉이나 또는 다중 홉 외에도 한 가지 일반적인 이유는 네트워크가 트래픽으로 오버로드될 때 발생하는 네트워크 정체입니다.
정체가 있는 경우 네트워크 패킷은 더 긴 시간 동안 큐에서 대기합니다.
또 다른 가능한 이유는 클라이언트가 TCP
또는 TLS
릴레이를 사용하는 경우 TCP
계층에서 재전송되는 패킷 수가 많기 때문입니다.
전송 중에 패킷이 손실되거나 지연될 경우 높은 재전송 횟수가 발생할 수 있습니다.
또한 데이터를 전송하는 데 사용되는 물리적 매체는 왕복 시간에도 영향을 줄 수 있습니다.
예를 들어 Wi-Fi는 일반적으로 이더넷보다 네트워크 대기 시간이 높으므로 왕복 시간이 더 높아질 수 있습니다.
지터 버퍼는 패킷 지터 및 다시 정렬을 보정하기 위해 브라우저에서 사용하는 메커니즘입니다. 네트워크 조건에 따라 지터 버퍼 지연의 길이가 달라질 수 있습니다. 지터 버퍼 지연은 오디오 샘플이 지터 버퍼에 남아 있는 시간을 나타냅니다. 지터 버퍼 지연이 높으면 사용자에게 눈에 띄는 오디오 지연이 발생할 수 있습니다.
SDK를 사용하여 검색하는 방법
사용자 연결 진단 API를 사용하여 네트워크 조건 변경을 검색할 수 있습니다.
오디오 전송 측의 네트워크 품질에 대해서는 networkSendQuality
값으로 UFD 이벤트를 확인합니다.
수신 측의 네트워크 품질에 대해서는 networkReceiveQuality
값으로 UFD 이벤트를 확인합니다.
또한 Media Stats API를 사용하여 웹 클라이언트에서 실시간 네트워크 성능을 모니터링하고 추적할 수 있습니다.
오디오 지연과 관련된 두 가지 메트릭이 있습니다. rttInMs
및 jitterBufferDelayInMs
입니다.
rttInMs는 패킷의 왕복 시간을 나타내는 메트릭으로 오디오 지연에 직접적인 영향을 줍니다. 대기 시간이 긴 경우 오디오에 상당한 지연이 발생할 수 있습니다. 200ms 이하의 왕복 시간이 권장됩니다. 왕복 시간이 500ms보다 길면 사용자가 상당한 지연을 겪을 수 있으며 이는 좌절감을 초래하고 효과적인 통신을 방해할 수 있습니다. 이러한 경우 대화 흐름이 중단되어 원활하고 자연스러운 상호 작용이 어려울 수 있습니다.
jitterBufferDelayInMs는 오디오 샘플이 지터 버퍼에 유지되는 기간을 보여 줍니다. 이 값은 패킷의 지연 도착, 잘못된 순서, 패킷 손실 등과 같은 다양한 요인의 영향을 받을 수 있습니다. 일반적으로 200ms 미만입니다. 이 값이 높은 경우 사용자는 통화에서 오디오 지연을 알 수 있습니다.
완화 또는 해결 방법
ACS 통화 SDK의 관점에서 보면 네트워크 문제는 외부 문제로 간주됩니다. 네트워크 문제를 해결하려면 네트워크 토폴로지와 문제를 일으키는 노드를 이해해야 하는 경우가 많습니다. 이러한 부분에는 ACS 통화 SDK의 범위를 벗어나는 네트워크 인프라가 포함됩니다.
그러나 브라우저는 네트워크 상태에 따라 오디오 전송 품질을 적응적으로 조정할 수 있습니다. 애플리케이션이 사용자 연결 진단 API의 이벤트를 처리하거나 MediaStats 기능을 통해 제공되는 메트릭을 모니터링하는 것이 중요합니다. 이러한 방식으로 사용자는 네트워크 품질 문제를 인식할 수 있으며 통화 중에 오디오 품질이 저하되는 경우에도 당황하지 않을 수 있습니다.