服务器/客户端UDP数据包同步

时间:2012-12-04 20:51:56

标签: c networking filter synchronization udp

我有一台计算机,每隔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 ...

有没有人知道goot同步算法来解决这个问题? 一个难点是这是一个无休止的运行系统,同步必须是自我调整。

1 个答案:

答案 0 :(得分:4)

对于像这样的任何流媒体系统,你有数据包间的抖动,你想要实现一个抖动缓冲区,并将数据接收的重放解耦。在缓冲区中接收数据包(大小取决于您可能有多少抖动)。在缓冲区半满(或您选择的其他阈值)之前,不要开始播放任何数据。然后你有一个只需每5ms从抖动缓冲区读取一次的回放线程并输出。