【发布时间】:2012-11-21 21:48:03
【问题描述】:
我正在做一个项目,其中服务器解析音频文件,然后告诉客户端根据服务器的公共时钟播放某些音频部分。理论上,我们需要高水平的同步,因为客户端节点可能会在彼此旁边播放音频,除了最小的延迟之外,所有延迟都可能产生人耳可察觉的声音偏移。我一直在尝试寻找如何解决此问题的 c 代码示例,但运气不佳。
我已经阅读了许多关于时钟同步的 Wikipedia 文章。
http://en.wikipedia.org/wiki/Clock_synchronization
以上文章让我相信 PTP 将是我们在本地网络上实施的理想选择。但理想情况下,我们希望扩展我们的项目以允许通过互联网连接。这让我相信 NTP 会更好。我访问了 NTP.org,但发现它很难理解,而且如果我的应用程序位于未连接到 Internet 的本地网络上,我似乎根本无法使用 NTP。但是后来我发现了这个帖子:
Small footprint clock synchronization without NTP
Seth Robertson 的回答让我相信我错了。
您可以使用几行配置文件(每个客户端四行,服务器五行)来同步到所选系统的时钟。
问题是,他没有展示这些代码行,也没有给我指出一个可以查看处理这些问题的代码的地方。
我一直在查看stackoverflow,发现了许多类似的问题,但没有一个给出令人满意的答案。
所以,在一堵文字墙之后(抱歉,堆栈溢出问题建议说得很具体,并解释了我在提出问题之前所做的研究),我想简洁地陈述我的问题,希望有人可以帮帮我:
在客户端/服务器软件模型中,如何在软件中保持准确的时钟同步,以允许基于时间执行事件?
目前我们小组正在使用 UDP,但如有必要,我们愿意进行更改。
感谢您的帮助。
编辑:我知道我需要保持时钟同步,问题是,我如何在软件中做到这一点。我正在寻找示例代码或指向可以找到有关此主题的示例代码的位置的超链接。 结束编辑
【问题讨论】:
-
NTP 是为大多数操作系统打包的,通常只是启动服务器的问题(如果您在尚未安装的操作系统上安装它)但是,您真的需要时间吗同步这个?音频中的位置是否没有给您一个参考时间,即您的服务器发现此时应该以某个字节偏移量播放流,然后您将该偏移量交给客户端
-
我不认为 ntp 是你要找的。看起来 JACK 音频连接套件会更适合。
标签: c synchronization client-server ntp