徐永鍵 廖健裕 徐威 譚洪舟
摘要:提出了一種基于網(wǎng)絡(luò)反饋的無線多終端音頻同步實現(xiàn)方法。該方法對連接到同一個無線局域網(wǎng)的多個無線音頻系統(tǒng)進行分組管理,并由移動終端實現(xiàn)控制,通過比較主從設(shè)備之間的播放進度時間差來做出調(diào)整,直接修改聲卡RAM緩沖區(qū)里的音頻數(shù)據(jù),實現(xiàn)音樂的同步播放。仿真實驗表明,該方法能通過移動終端同時控制無線局域網(wǎng)內(nèi)多個音頻系統(tǒng),并同一時間同步播放同一首音樂,且同步誤差時間可以控制在50毫秒范圍以內(nèi),人耳基本無法區(qū)別,提高了用戶體驗。
關(guān)鍵詞:移動終端;DLNA協(xié)議;無線多終端音頻系統(tǒng);網(wǎng)絡(luò)反饋;同步機制ASynchronization Scheme for the Wireless
Multi-terminal Audio System Based on Network Feedback
Yong-jian Xu1 Jian-yu Liao2 Wei Xu1 Hong-zhou Tan1(1.Sun Yat-Sen University,Guangzhou 510006,Guangdong,China;2. Instiute ofDongguan-Sun Yat-Sen University,Dongguan 523808,Guangdong,China)
Abstract:A novel synchronization scheme was proposed for the wireless multi-terminal audio system based on network feedback. The wireless audio systems connecting to the same WLAN were managed in groups and controlled by mobile terminal. Compared with the master equipment in a songs playing progress, the slave equipments made some adjustments by directly modifying the audio data in the RAMs buffer of the sound card to synchronize with the master equipment. Experimental results show that the proposed synchronization mechanism can be applied to control multiple audio systems in the same WLAN to synchronously play the same music at the same time, and the time error can be limited within the scope of 50 milliseconds, which nearly cant be recognized by humans ears. The proposed method is certain to improve users experience.
Key words:mobile terminal;DLNA Protocol;wireless multi-terminal audio system;network feedback;synchronization mechanism表的移動智能終端正在掀起一場席卷全球的指尖革命[1]。與此同時,用于組建家庭內(nèi)部無線通信網(wǎng)絡(luò)系統(tǒng)的技術(shù)逐步成熟,被廣泛的應(yīng)用于智能家居系統(tǒng)中[2],多媒體設(shè)備的無線組網(wǎng)已經(jīng)成為智能家居的重要內(nèi)容,傳統(tǒng)的娛樂方式也正在一步步發(fā)生著變化。這主要得益于移動帶寬傳輸速率的改善,以音樂欣賞為例,目前存在著很多無線音箱,這些音箱可以連接到家庭里的無線網(wǎng)絡(luò),只要音箱設(shè)備滿DLNA(Digital Living Network Alliance)協(xié)議,就可以使用手機控制音箱的播放和暫停[3]。目前的音樂同步播放系統(tǒng)主要是通過緩沖媒體流,各播放設(shè)備預存好緩沖數(shù)據(jù)和播放列表,通過時間戳校準機制實現(xiàn)同步[4]。當在多個房間不同地點用不同的音箱播放同一首音樂時,用戶希望在一個控制器的控制下不同位置的音箱設(shè)備可以同步播放同一首音樂。但是目前的音樂系統(tǒng)很難做到同步,每個音箱上播放的速度很大程度上取決于當前的網(wǎng)絡(luò)狀態(tài),可控性差,當移動終端進行快進或倒退時,無線音箱需要較長的緩沖時間,對網(wǎng)絡(luò)依賴性強[5]。針對上述存在的技術(shù)問題,本文提出了一種基于DLNA/UPnP(Universal Plug and Play)協(xié)議下的無線多終端音頻系統(tǒng)下的一種同步機制,以解決無線多終端音頻系統(tǒng)下播放同一首音樂時不同的音箱播放不同步的問題。
本文接下來的結(jié)構(gòu)如下。第1節(jié)介紹了無限多終端音頻系統(tǒng),第2節(jié)詳細介紹所提出的同步機制原理,第3節(jié)給出同步機制的實現(xiàn),第4節(jié)是綜合及仿真結(jié)果,最后第5節(jié)總結(jié)全文。
1無線多終端音頻系統(tǒng)
無線音頻系統(tǒng)包括移動終端、帶有WiFi功能的音頻處理芯片、無線路由器和外接音箱[6]。移動終端可以是手機、平板電腦、個人PC機等有WiFi發(fā)射功能的設(shè)備。對需要同步播放的無線音箱進行分組管理,讓所有的音箱設(shè)備加入到同一組并且連接到同一個無線局域網(wǎng),以實現(xiàn)通過移動終端來控制播放和暫停所有的音箱設(shè)備。將無線音頻系統(tǒng)中響應(yīng)最快的一個設(shè)備選定為主設(shè)備,其他設(shè)備設(shè)定為從設(shè)備。移動終端下達播放的命令,所有設(shè)備開始播放同一首音樂,與此同時主設(shè)備需要每隔一段時間間隔將自身的播放信息通過廣播的形式發(fā)送出去。主設(shè)備作為廣播的發(fā)送端,從設(shè)備作為廣播的接收端,通過socket網(wǎng)絡(luò)編程的方法來實現(xiàn)廣播[7]。從設(shè)備接收到主設(shè)備發(fā)出的進度信息之后和自身的進度進行比較,如果播放進度差的絕對值大于某一個設(shè)定范圍,則對設(shè)備進行相應(yīng)的調(diào)整;否則不進行任何操作繼續(xù)播放。無線多終端音樂系統(tǒng)同步機制框圖如下圖1所示。
2同步機制原理
通過比較兩個設(shè)備之間的播放進度時間差來決定做出何種調(diào)整。當兩個設(shè)備都處于播放狀態(tài)下,如果兩播放設(shè)備時間差的絕對值在某一范圍內(nèi),則從設(shè)備繼續(xù)播放,不進行任何操作;如果時間差的絕對值超出某一范圍,則要對從設(shè)備加以修正以達到和主設(shè)備同步播放的效果。由于音頻解碼數(shù)據(jù)是移動終端(控制點)通過TCP傳送出去的,接收端(音頻芯片)接收到音頻解碼數(shù)據(jù)之后再通過聲卡將聲音播放出來,所以采用直接修改聲卡RAM緩沖區(qū)里音頻數(shù)據(jù)的方法來達到快速快進和倒退的功能。假設(shè)上述時間差的比較結(jié)果顯示從設(shè)備比主設(shè)備快,那么就需要在這一小段慢的時間差內(nèi)插入一些數(shù)據(jù)以達到暫時減慢播放速度的效果;反之,如果從設(shè)備比主設(shè)備慢則需要丟棄部分緩沖數(shù)據(jù)來達到同步的效果。
假設(shè)兩播放設(shè)備的時間差為T,廣播時間為Tbd,△t表示判斷時間差的精度值,具體實現(xiàn)同步的步驟如下:
(1)當設(shè)備處于播放狀態(tài)時,在每個廣播時間Tbd內(nèi),設(shè)備將接受到的進度信息Tmain和自身的進度Tslave進行比較,如果兩者之間的時間差值絕對值小于設(shè)定的范圍(△t),則從設(shè)備不做任何變化繼續(xù)播放;如果兩者之間的差值絕對值大于設(shè)定的范圍,即當|Tmain-Tslave|≥△t時,對其進行下一步的處理。
(2)計算Tmain-slave。當上述差值為正時,說明主設(shè)備播放速度要比從設(shè)備快,每隔m位就丟棄一位數(shù)據(jù),丟棄之后設(shè)備原來需要播放t秒的數(shù)據(jù)將變?yōu)?m/m+1)×t秒。此時主從設(shè)備的播放時間差將從T變?yōu)?,其?
(1)
經(jīng)過一次丟值之后再重復步驟(1)過程,直至兩播放設(shè)備同步達到預期精度。當上述差值為負時,主設(shè)備的播放速度比從設(shè)備慢,則從設(shè)備需要對緩沖區(qū)數(shù)據(jù)進行插值運算。假設(shè)X[N]表示某一時刻音頻數(shù)值的幅度值,每隔m位就插入一位數(shù)值,即在m和m+1處插入T=(X[n]+X[n+1])/2,則經(jīng)過1次插值后兩播放設(shè)備的時間差為(T-Tbd/m),再重復(1)過程,直至兩播放設(shè)備同步達到預期精度。
其中△t可以根據(jù)需要自行調(diào)整,為了達到更好的同步精度可選取小于50ms的合適值。廣播的時間間隔Tbd和m的選取可根據(jù)實際需求進行選擇。一般的如果廣播時間間隔選取過大則可能同步效果不明顯;如果選取過小則需要較長時間才能達到同步。對于m的取值則可相應(yīng)的取較小的值,如1和2等,因為要處理的數(shù)據(jù)畢竟是要在較短時間內(nèi)完成的,取值過大可能需要較長時間才能完成同步要求。
對音頻數(shù)據(jù)的處理具體框圖如圖2所示。
其中X[n]表示音頻解碼數(shù)據(jù),Xs[n]表示插值(抽樣)后的音頻數(shù)據(jù),H[n]為低通濾波器,不管是經(jīng)過上述插值還是抽樣運算都要對數(shù)據(jù)進行濾波再播放,我們可以選用低通濾波器對Xs[n]進行濾波,Y[n]是經(jīng)過濾波后的音頻數(shù)據(jù),可直接傳送給聲卡播放。
3多終端音頻系統(tǒng)同步播放的實現(xiàn)
基于UPnP協(xié)議的無線多房間音樂的音樂系統(tǒng)主要包含三個模塊:控制點(CP)、數(shù)字媒體渲染器(DMR)和數(shù)字媒體服務(wù)器(DMS)[8]。其中控制點一般是手機、平板電腦等智能終端。數(shù)字媒體渲染器(DMR)是指具有無線WiFi功能的開發(fā)板,本文使用的是MIPS處理器的君正開發(fā)板。數(shù)字媒體服務(wù)器(DMS)既可以是家庭電腦,也可以是我們的智能終端。各模塊連接示意圖如圖3所示。
控制點(移動終端)首先加入到和無線音頻芯片同一個局域網(wǎng)上,然后打開自行開發(fā)的軟件,移動終端會發(fā)現(xiàn)在該局域網(wǎng)上所有可用的UPnP設(shè)備,可以選取幾個設(shè)備加入到同一個分組中,加入分組之后就可以選擇手機端或者其他服務(wù)器上的音頻資源進行播放。同步機制包括控制端、主設(shè)備和從設(shè)備三個部分。其中控制端即上所述控制點,主設(shè)備是所有設(shè)備中通過廣播比較之后選定的一個反應(yīng)最快的設(shè)備,從設(shè)備是除主設(shè)備之外的所有其他設(shè)備。主從設(shè)備具體操作流程圖如圖4所示。
主設(shè)備的選定可以采用“發(fā)送-響應(yīng)“的方式來選取反應(yīng)最快的設(shè)備。所謂發(fā)送-響應(yīng)方式是指系統(tǒng)中存在若干個音頻播放設(shè)備時,當所有設(shè)備都加入到同一個分組之后,可在控制端向所有設(shè)備發(fā)送一個簡單的播放開始信號,然后選定最先開始播放(即對播放信號響應(yīng)最快,緩沖效果最好)的設(shè)備為主設(shè)備,其他所有設(shè)備為從設(shè)備。
主設(shè)備主要包括獲取設(shè)備廣播地址、獲取設(shè)備當前進度信息和廣播通信三個模塊。廣播地址可通過socket網(wǎng)絡(luò)編程的方式獲得,可先獲得設(shè)備的IP地址和子網(wǎng)掩碼再逐位相與。因為主設(shè)備播放時要一邊獲取進度信息又要一邊廣播,所以設(shè)備當前進度信息需要采用多線程編程的方法。當檢測到設(shè)備處于播放狀態(tài)時,就將設(shè)備的位置信息(Tmain)存儲在一個寄存器中并且每隔一段時間隔廣播當前設(shè)備進度信息。廣播的時間間隔可根據(jù)不同的情況進行選取,假定時間間隔為Tbd。同步算法流程圖如下圖5所示:
4同步算法仿真驗證
為了進一步驗證算法的可行性,可充分利用PC機的硬件資源優(yōu)勢,在電腦環(huán)境下仿真無線多房間音樂系統(tǒng)。為此以播放簡單的MP3文件為例,利用mpg123作為MP3音頻解碼庫,以PortAudio對音頻設(shè)備進行操作和控制。其中mpg123是一個快速、可移植的解碼器和播放器,具有高質(zhì)量和低CPU占用率的特點,PortAudio是一個免費、跨平臺、開源的音頻輸入輸出庫,利用PortAudio的回調(diào)函數(shù)可輕松實現(xiàn)音頻設(shè)備的調(diào)用[9]。再配合socket網(wǎng)絡(luò)編程以及上述的差值和抽樣算法即可仿真所需環(huán)境。經(jīng)過代碼的編譯和運行,部分仿真結(jié)果如下圖6所示:
上圖中左邊部分為主設(shè)備播放時間,右邊部分為從設(shè)備播放時間。主設(shè)備和從設(shè)備播放時間之差,即為同步播放時間的時延。
對大量仿真數(shù)據(jù)結(jié)果進行統(tǒng)計,主從設(shè)備同步播放時間時延統(tǒng)計結(jié)果如下表一所示:
表一主從設(shè)備同步播時延時間統(tǒng)計表(單位:ms)
最大時延時間 36
最小時延時間 17
平均時延時間 26
仿真結(jié)果表明,主從播放設(shè)備播放時間的時延始終保持在50毫秒以內(nèi),達到算法需求,進一步證明了該算法的可行性。
5結(jié)束語
本文提出了一種基于DLNA/UPnP協(xié)議下的無線多終端音頻系統(tǒng)同步方案。通過對連接到同一個無線局域網(wǎng)的多個無線音頻系統(tǒng)進行分組管理,實現(xiàn)了移動終端對不同位置的多個無線音頻系統(tǒng)的控制,通過無線音頻系統(tǒng)之間的通信,比較主從設(shè)備之間的播放進度時間差來做出調(diào)整,直接修改聲卡RAM緩沖區(qū)里的音頻數(shù)據(jù),實現(xiàn)音樂的同步播放。實驗表明,本方法可解決目前存在的多音箱播放時不同步的問題,進一步完善了用戶在多房間音樂系統(tǒng)下的播放功能,提高了用戶體驗。并且該方法實現(xiàn)簡單,同步效果明顯,能有效提高產(chǎn)品競爭力。
[參考文獻]
[1]彭國軍,邵如玉,鄭祎.移動智能終端安全威脅分析與防護研究[J].技術(shù)研究,2012,1:58-63.
[2]任榮.基于B/S結(jié)構(gòu)的智能家居系統(tǒng)的研究和實現(xiàn)[J].廣東通信技術(shù),2012,12:25-29.
[3]Yeon-Joo Oh,Hoon-Ki Lee,Jung-Tae Kim,EuiHyun Paik,Kwang-Roh Park.Design of an Extended Architecture for Sharing DLNA Compliant Home Media from Outside the Home [J].Consumer Electronics,IEEE Transactions on,vol.53,no.2,542-547,May 2007.
[4]韓玉輝.多域無線廣播組播網(wǎng)絡(luò)中的同步技術(shù)研究[D].北京:北京郵電大學,2010.
[5]Jae-Woo Chang,Yong-Ki Kim.Context-aware application system for music playing services [A].In Proc.KES 2006 [C].Springer, 76-83.
[6]陳汝全.音響發(fā)展新方向——家庭多房間無線音頻系統(tǒng)[J].實用影音技術(shù),2005,10:30-34.
[7]卡爾弗特著,周恒民,譯.Java TCP/IP Socket編程[M].北京:機械工業(yè)出版社,2009.
[8]Henrik Sorensen,Mathies G.Kristensen,Jesper Kjeldskov and Mikael B.Skov Proxemic Interaction in a Multi-Room Music System [A].In Proc.the 25th Australian Computer-Human Interaction Conference [C],2013, 153-162.
[9]Ross bencina,Phil Burk.PortAudio:an Open Source Cross Platform Audio API [A].Proceedings of the International Computer Music Conference 2001[C].International Computer Music Association,San Francisco.