2011-08-17 88 views
0

我有一个语音聊天服务正在经历数据包之间的延迟变化。我想知道对此的正确回应是什么,以及如何弥补它? 例如,我应该以某种方式调整音频缓冲区吗?补偿抖动

感谢

+0

也许稍微增加总体延迟可能会有所帮助,或者简单地丢弃经过一定延迟的数据包以帮助理解可懂度? [我对voip一无所知!] – Speedy

回答

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的需求(但请记住,这些测试只会显示您正在运行测试的准确时间)。