【问题标题】:Server/Client UDP Packets synchronisation服务器/客户端 UDP 数据包同步
【发布时间】:2012-12-05 05:00:27
【问题描述】:

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

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

【问题讨论】:

    标签: c networking filter synchronization udp


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-07
      • 2015-10-22
      • 2014-05-25
      • 1970-01-01
      • 2012-01-22
      • 1970-01-01
      • 2012-09-26
      相关资源
      最近更新 更多