我已经能够使用RTCPeerConnection.getStats() API获取WebRTC音频呼叫的各种统计信息(抖动,RTT,数据包丢失等)。
我需要将整体呼叫质量评为"优秀"、"良好"、"一般"或"差"。
有没有一个公式使用WebRTC统计数据来给出总体评级?如果没有,我应该给予哪个WebRTC统计数据更多的权重?
我们最终使用 MOS(平均意见得分)算法来计算语音通话质量指标。
这是我们使用的公式 -
以平均延迟为例,增加抖动,但对延迟的影响加倍然后为协议延迟添加 10有效延迟 = ( 平均延迟 + 抖动 * 2 + 10 )
实现基本曲线 - 在 160ms 延迟时为 R 值减去 4(往返)。 任何超过此值的内容都会得到更激进的扣除如果有效延迟<160,则 R = 93.2 - (有效延迟/40)还 R = 93.2 - (有效延迟 - 120)/10
现在,让我们每百分比的数据包丢失扣除 2.5 R 值R = R - (丢包 * 2.5)
将 R 转换为 MOS 值。(这是一个已知的公式)MOS = 1 + (0.035) * R + (.000007) * R * (R-60) * (100-R)
我们从 https://www.pingman.com/kb/article/how-is-mos-calculated-in-pingplotter-pro-50.html 中找到了公式
MOS(平均意见得分)是您用来估计网络质量的内容。该算法是微型webrtc-issue-detector库的一部分,因此您可以在客户端使用它来分析和监视getStats()结果。该库还可以识别可能影响媒体质量的问题,例如客户端 CPU 问题、网络或服务器端问题。