iOS - 在设备之间同步音频,精确度为毫秒

时间:2012-09-13 19:45:59

标签: ios audio time synchronize

我需要在网络设备中同步音频,精确到毫秒级。我把一些效果很好的东西整合在一起,但是非常可靠:

1)服务器设备发送带有timeSinceClick参数的rpc

2)客户端设备根据rpc在传输过程中花费的时间启动相同的点击,

3)System.Diagnostics.StopWatch定期检查所有连接的设备,以确保播放在绝对时间内没有太大的偏差,并在必要时进行纠正

还有更优雅的方法吗?此外,我的方式需要手动同步,如果非iOS设备添加到混合:延迟分歧使自动化很难...

我所有的目光!

干杯,

Gregzo

1 个答案:

答案 0 :(得分:0)

很难在同一台计算机上同步多台设备,精度达到毫秒级,因此如果您能够在多台计算机上执行此操作,我会说您做得很好。我对iOS所描述的步骤不够熟悉,但我可以告诉你我将如何以跨平台的方式处理这个问题。也许你的方法是相同的。

  1. 一台机器(“主机”)将向所有其他机器发送UDP数据包。
  2. 所有其他机器都会尽快回复。
  3. 接收回复所花费的时间除以2将是(大约)从一台机器到另一台机器所需的时间。 (这必须经过验证。处理和发送数据包可能需要更长的时间吗?可能没有。)
  4. 重复步骤1-3后,忽略任何极端值并平均剩余结果,您就知道从一台机器到另一台机器的消息需要多长时间。
  5. 现在“同步”UDP数据包可以从主机发送到“从”机器。同步数据包将包括延迟信息,以便当保存机器接收数据包时,他们知道它们是在x毫秒前发送的。如果网络延迟或丢弃其中一些数据包,可能需要发送几个同步数据包。