2013-03-19 105 views
1

我試圖通過藍牙從一個iOS設備發送音樂到另一個。我一直在使用this構建像Ray Wenderlich的SNAP教程中的數據包,但我一直無法在接收電話上重構數據包信息。我嘗試過使用https://github.com/abbood/iphoneAudioSyncer,但我認爲這對我的需求來說太複雜了(因爲我不需要同步播放)。說明丟失/亂序數據包等最簡單的緩衝方法是什麼?我已經閱讀了很多CoreAudio的內容,但它非常密集,所以我希望能夠幫助解決這類問題的人。iPhone音樂流

回答

4

當你談論los /亂序數據包..你在談論的話題Packet Loss Concealment ..這是一個非常密集的話題(我的意思是如果你認爲核心音頻密集..等到你潛入PLC)。

簡而言之,有很多方法可以解決丟包問題..但最簡單的方法(我建議你這樣做)是用沉默來替換丟失的數據包(同樣是亂序數據包.. if一個數據包出故障了,就放棄它)。

這就是說..你正在處理音頻流式傳輸給你(即通過藍牙/無線網絡發送)..這意味着幾乎100%的時間它是壓縮音頻你得到(即變量比特率音頻VBR)..如果你只是嘗試用沉默替代丟失的VBR數據包..你會遇到this問題。您必須以與您正在處理的VBR音頻相同的壓縮格式插入靜音數據包,否則您將不得不將VBR壓縮音頻轉換爲非壓縮音頻(無損PCM),然後插入零來代替丟失的數據包。

+0

您會注意到,雖然您使用了我創建的兩個示例應用程序,但您仍然會發現它非常困難。不幸的是,這是一般的核心音頻/實時應用程序的現實。有沒有簡單的方法或即插即用的解決方案,你可以簡單地在網上找到(如果有的話,只要瞭解它們是一項非常困難的任務,如你已經發現的)。 – abbood 2013-03-19 06:41:39

+1

所以,這是我給每個嘗試進入核心音頻/實時應用程序(用於商業或學術目的的天氣,而且你不是第一個)的建議:您可能需要重新評估項目的範圍,因爲這樣的項目看起來似乎很容易,但一旦你挖掘出來,你會發現兔子的洞延伸得比你預想的要深得多。換句話說,這個問題的解決方案從軟件開發生命週期的開始就開始:在規劃和需求收集階段。 – abbood 2013-03-19 06:42:58

+0

你會推薦什麼替代品? Spotify高級版是明顯的首選,但如何將歌曲上傳/下載到服務器上。基本上我們如何讓人們提出音樂建議並讓歌曲在主持電話上播放? – tancik 2013-03-19 15:36:53