3

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

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

任何形式的帮助表示赞赏。

谢谢。

4

1 回答 1

2

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

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

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

需要注意的另一件事是您没有提到延迟,但它可能非常重要,因为您的网络可能没有丢包和极好的抖动,但是延迟很大,这可能会对某些应用程序产生巨大影响(例如语音)。作为一个简单且不太现实的示例,从抖动和数据包丢失的角度来看,您拥有一个完美的网络,但是路由器会执行某种安全查找,因此会为每个数据包增加两秒的延迟。因为每个数据包的延迟相同,所以您的抖动会很好,但是对于双向语音应用程序,“A”点的人说话和“B”点的人听到它们之间的两秒延迟将是一个主要问题。

于 2010-07-12T12:50:54.827 回答