2013-06-29 112 views
1

基本上,對於我的團隊的應用程序,我們需要能夠跨多個iOS設備同步音樂。我們做到這一點的第一種方式是讓所有設備上的音樂都已經播放完畢,只需向所有設備發送播放命令即可。有些人會比其他人晚得到它,所以這種方法不起作用。有人提出了一個想法來計算所有設備之間的延遲,並根據延遲時間在適當的時間發送命令。跨iOS設備與WiFi同步音頻的最佳方法是什麼?

提出的第二種方法是流式傳輸音樂。如果我們要實現流式傳輸,我們應該如何去做。應該使用音頻單元,OpenAL等?另外,如果正在完成流式傳輸,我們將如何確保每個設備的流同步。

基本上,音頻必須同步,以便聽到它的人不能區分這些設備。幾毫秒的關閉應該不成問題(除非聽衆具有超人類聽力)。

+0

我不能說自己是專家,但我的感覺是,這是比第一次出現更難的問題。人類聽覺對音頻延遲非常敏感(大腦使用它來確定聲源的位置)。同步一組揚聲器的最佳方式仍然是線纜。 –

+0

幾毫秒** ** ** **。幾乎任何人都可以檢測到。如果你不相信我,打開兩個收音機,把它們放在一個更大的房間的不同側,並注意聽起來有多奇怪。此外,你永遠不會讓iOS設備的計時精確。由於您對問題的時間限制,您正在做的事情是不可能的。 – Brad

+0

@ChrisGalzerano在聽到音樂的同時,在設備中選擇100%準確度的方式 – shujatAli

回答

3

你會驚奇地發現有多好,人耳我們在察覺音頻異常......

同步一天的時間

有效的努力,以滿足一個整體實時性要求加載如果方式非常可變的東西(wifi等)。我強烈懷疑你要接近這樣做的唯一方法是發出一個包括特定時間開始播放的「播放」指令。當然,這依賴於所有時鐘的準確設置。

NTP

我不知道怎麼的iPhone讓他們一天的時間。如果他們使用(或可以使用)NTP,那麼你會越來越接近。 NTP旨在通過網絡傳遞準確的一天中的時間信息,儘管網絡延遲可變。我有一個快看,似乎適用於iOS大多數NTP客戶端是簡單的,而不是完整的NTP的措施和撒手不管網絡延遲,時鐘漂移等

GPS

或者GPS也是一個非常好的時間信息來源。我不知道iPhone是否可以使用GPS來設置他們的時鐘,但是如果可以做到,那麼這可能會很不錯。在Solaris上(我也認爲是Linux),大多數GPS芯片從GPS信號中產生的每秒1個脈衝可用於調節內部OS時鐘,使其非常準確(亞微秒精度)。

我擔心iPhone本身不會做任何這些事情;都涉及到使用公平的電力,所以如果他們做了其他不太成熟的事情,我不會感到驚訝。

電池時間服務

一些手機網絡提供時間服務過,但我不認爲它是專爲精確的時間設置。此外,它往往不會在任何地方都可用。你經常在主要機場找到它,以便最近到達的人將他們的手機設置爲接近當地時間。

時間X

所以,如果其中的一個可以用來確保所有的iPhone都設置準確一天的同一時間,那麼你所要做的就是寫你的軟件,開始玩遊戲在特定的時間。這可能涉及在非常緊密的循環中輪詢時鐘,等待它跳動;大多數操作系統不提供睡覺的手段,直到一個具體時間。他們至少可以讓睡覺一段時間,這可以用來睡覺,直到接近指定的時間。然後,您會開始輪詢時鐘,直到達到正確的時間。

延時測量和標準差

你的第一個方法是註定的,我認爲。您可能能夠測量平均延遲等,但這並不意味着每條消息都具有完全相同的延遲。延遲時間的標準偏差會告訴你你期望達到什麼,我不認爲這會特別小。如果是這樣,那麼消息必須包含一個時間戳。

NTP可以正常工作,因爲它只是在一段時間(有時小時)測得的平均延遲感興趣,而你感興趣的瞬時延遲。

與RTP流

你的第二方法可以工作,如果如上所討論的可以時間同步的設備。 RTP協議是爲在這些情況下使用而設計的;它不會幫助實現同步,但它對流式傳輸確實有幫助。它會告訴你流中的任何一個接收數據的位置,讓你在正確的時間播放它。

時鐘偏移

另一個問題要處理的是你玩多久。如果它是一個很長的時間,那麼你可能會發現44kHz的(或其他)每臺設備上的音頻時鐘速率是不太一樣的。所以,雖然你可能會發現打首發都在同一時間的方式,不同的設備就會開始有一點點分歧。在很長一段時間內,他們可能會明顯失控。

藍牙

可能可以做一些藍牙。它有許多神祕和奇妙的配置文件,它可能是其中的一個將有助於發送一個準確的「現在開始」的消息。

音頻觸發

你也可以用聲音作爲輸送啓動信號的一種手段。一臺設備可以播放特定的聲音,而其他人的軟件正在用麥克風收聽。當聲音中檢測到特定功能時,每個人都可以開始播放。一種計算機化的「1,2,a 1 2 3 4」。

相機閃光燈

應該很容易發現在軟件...

0

我認爲如果你稍微擴展一下,你的第一種方法就可以工作。假設設備上的所有時鐘都同步,則可以在播放命令中包含時間戳。然後每個設備會計算時間戳和收到命令之間的時間。然後您將播放音樂並按時差補償它。

+0

這將不會滿足所需的毫秒精度,即使它是時鐘漂移(來自音頻設備)也會很快地推出不同步。 – Brad

相關問題