2012-11-21 156 views
0

我正在一个项目中,服务器解析音频文件,然后告诉客户端播放基于一个公共时钟,服务器的某些部分的音频。理论上讲,我们需要高度的同步,因为客户端节点可能正在彼此相邻地播放音频,并且除了最小的延迟之外的所有延迟都可能产生人耳明显的声音偏移。我一直在试图找出如何解决这个问题的c代码示例,并且运气不大。同步客户端和服务器程序之间的时钟在c

我读过许多关于时钟同步的维基百科文章。

http://en.wikipedia.org/wiki/Clock_synchronization

上述文章使我相信PTP将是理想的我们在本地网络上实现。但理想情况下,我们希望扩大我们的项目以允许通过互联网连接。这让我相信NTP会更好。我访问过NTP.org,但发现很难理解,而且好像我的应用程序位于本地网络上,而该网络没有连接到互联网,我根本无法使用NTP。但后来我发现这个职位:

Small footprint clock synchronization without NTP

塞特·罗伯逊的反应使我相信我错了。

您可以使用一些配置文件行(每个客户端上有四行,服务器上有五行)来同步到所选系统的时钟。

问题是,他没有显示这些代码行,或指向我可以查看处理这些问题的代码的地方。

我一直在四处寻找stackoverflow,并发现许多类似的问题,但没有给出满意的答案。因此,经过一段文字之后(对此抱歉,堆栈溢出问题的建议非常具体,并且解释了我在提出问题之前所做的研究),我想简要地陈述我的问题,并希望有人可以帮助我:

在客户端/服务器软件模型中,如何在软件内保持准确的时钟同步以允许基于时间的事件执行?

目前我们的团队正在使用UDP,但我们愿意在必要时进行更改。

感谢您的任何帮助。

编辑:我知道我需要保持一个时钟同步,问题是,我如何在软件中执行此操作。我正在寻找示例代码或超链接到我可以在此主题上找到示例代码的地方。 ENDEDIT

+1

NTP是为大多数操作系统打包的,它通常只是启动服务器的问题(并且如果您安装的操作系统不安装alreadt,则安装它)。但是,您是否真的需要时间来同步?音频中的位置不是给你一个参考时间,也就是说,你的服务器在这个时候计算出这个数据流应该以某个字节偏移量播放,并且把这个偏移量交给客户端 – nos

+0

我不认为ntp是你正在寻找的。看起来JACK音频连接套件将更适合。 – ninjalj

回答

0

这个概念很清楚:选择网络中的一台主机作为NTP服务器,并让其他主机与自己的服务器同步。

如果您的需要只是您的局域网主机之间的同步,这应该做的。

NTP服务器以及客户端可以免费获得很多系统。

+0

_选择网络中的一台主机作为NTP服务器,并让其他主机将自己与该服务器同步。是的,这正是我想要做的。我该怎么做? – user1843252

+0

您的服务器使用哪个操作系统? @ user1843252 – alk

+0

服务器正在使用Linux Redhat。 – user1843252

相关问题