1

我有一台计算机每 5 毫秒发送一个带有测量数据的 UDP 数据包。

另一台包含高速线扫描相机的计算机接收这些数据包并将数据包数据作为附加数据填充到无尽的相机图像中。

问题是数据包不是每 5 毫秒到达一次。没关系。我知道网络数据包有抖动。有时 10 毫秒延迟,有时两个数据包之间没有延迟。因此,在 UDP 数据到达的那一刻,将它们填充到那无尽的图像中并不是一个好主意。

Time --------------------------------------------------------------------> 
UDP Packets: A   B  C     D    E   F       G  H     I  J      K ....
Cam Lines:   012345678901234567890123456789012345678901234567890 ...
Optimal:     A    B    C    D    E    F    G    H    I    J    K ...

有谁知道一个很好的同步算法来解决这个问题?一个困难是这是一个无休止的运行系统,并且同步必须是自我调整的。

4

1 回答 1

4

对于像这样的任何具有包间抖动的流系统,您希望实现一个抖动缓冲区并将播放与数据接收分离。在缓冲区中接收数据包(大小取决于您可能有多少抖动)。在缓冲区半满(或您选择的其他阈值)之前,不要开始播放任何数据。然后你有一个播放线程,它每 5 毫秒从抖动缓冲区中读取一次并进行输出。

于 2012-12-04T21:00:27.407 回答