我有一个语音聊天服务,它正在经历数据包之间延迟的变化。我想知道对此的正确反应是什么,以及如何补偿它? 例如,我应该以某种方式调整音频缓冲区吗?
由于
答案 0 :(得分:1)
您没有说这是您自己开发的应用程序还是您正在使用的应用程序 - 您显然可以更好地控制前者,这可能很重要。
无论哪种方式,可能是您的网络根本不足以支持VoIP,在这种情况下,您确实需要专注于改进网络或使用不同的网络。
在用户发现问题之前,VoIP通常要求端到端延迟小于200毫秒(毫秒)。
抖动也很重要 - 简单来说就是端到端数据包延迟的变化。例如,分组1和分组2之间的延迟可以是20ms,但分组2和分组3之间的延迟可以是30ms。具有40ms的抖动缓冲区意味着您的应用程序将在数据包之间等待长达40ms,因此不会“丢失”任何这些数据包。
通常会忽略在抖动缓冲区窗口内未收到的任何数据包,因此抖动与连接的有效数据包丢失值之间存在关系。数据包丢失通常也会影响用户对voip质量的感知 - 不同的代码具有不同的容忍度 - 共同的目标可能是它应该低于1%-5%。如果只是间歇性问题,丢包隐藏技术可以提供帮助。
抖动缓冲区可以是静态的也可以是动态的(自适应的) - 在任何一种情况下,它们越大,它们在调用中引入延迟的可能性就越大,你就会回到上面的延迟问题。典型的抖动缓冲区可能介于20到50ms之间,可以静态设置,也可以根据网络条件自动调整。
有关进一步信息的良好参考资料如下: - http://www.voiptroubleshooter.com/indepth/jittersources.html - http://www.cisco.com/en/US/tech/tk652/tk698/technologies_tech_note09186a00800945df.shtml
还可以尝试一些常见的互联网连接在线速度测试,因为许多人都会有特定的VoIP测试,可以让你知道你的本地连接是否足够用于VoIP(尽管请记住,这些测试仅表明在您运行测试的确切时间的条件。)