如何通过IP连接计算视频的丢包,抖动和QoS参数?

时间:2010-07-09 08:36:45

标签: android video-streaming qos

我遇到了一个移动应用程序,它执行语音和视频质量测试,以衡量IP连接上的语音/视频体验质量。该测试计算远程流的抖动,数据包丢失等值。

我很想知道这是怎么做的?编写这样的移动应用程序需要什么?

赞赏任何形式的帮助。

感谢。

1 个答案:

答案 0 :(得分:2)

最简单的方法是通过正在测试的网络从设备发送数据,然后在同一设备上再次接收数据。

这使您可以轻松计算每个数据包所用的时间(延迟),不同数据包的时间差(抖动)以及检测任何数据包丢失。请注意,数据包丢失是一个相对的问题 - 数据包可能只是延迟了很长时间而不是丢失。通常,如果在某个抖动窗口内未收到数据包,则可能会将其声明为丢失。

在现实世界中,你通常想要从“A”点到“B”点进行测试(即不仅仅是回到“A”点)。对于以固定间隔发送数据包的语音或视频编解码器(编码器),这很简单,因为您知道第二个数据包应该在第一个数据包之后的给定时间到达,如果不存在则延迟(或提前到达)。由此可以计算出点'B'处的抖动。任何未到达的数据包(在您允许数据​​包到达的时间段内)将被计为丢失数据包。请注意,如何对样本进行编码会导致抖动计算问题,但如果您要创建一个自己控制编码的测试应用程序,则可以避免这些问题 - 请参阅下面的链接以获取更多相关信息:http://www.cs.columbia.edu/~hgs/rtp/faq.html#jitter

另外需要注意的是,您没有提到延迟,但它可能非常重要,因为您可能拥有一个没有数据包丢失和出色抖动的网络,但是延迟很大,这会对某些应用产生巨大影响(例如声音)。作为一个简单且不太现实的例子,你说从抖动和数据包丢失的角度来看,你有一个完美的网络,但是有一个路由器可以进行某种安全查找,因此每个数据包都会增加两秒的延迟。因为每个数据包的延迟都是相同的,你的抖动会很好,但是对于双向语音应用,在'A'发言者和某个'B'听到他们的人之间的两秒延迟将是一个主要问题。 / p>