2012-11-21 119 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

相關問題