明為了解決多房間音頻播放的控制與音源的播放控制和音源的切換之間存在相互影響的問題,提供了一種多房間音頻播放的控制方法,為了便于理解本發(fā)明的控制方法,現(xiàn)以音箱具有三個(gè)音頻輸入通道為例說明音箱的基本結(jié)構(gòu),如圖1所示,音箱包括第一音源輸入通道11、第二音源輸入通道21、第三音源輸入通道31、用于控制第一音源輸入通道11的播放狀態(tài)的第一音源控制模塊12、用于控制第二音源輸入通道21的播放狀態(tài)的第二音源控制模塊22、用于控制第三音源輸入通道31的播放狀態(tài)的第三音源控制模塊32、對(duì)應(yīng)第一音源輸入通道11的第一音源緩沖區(qū)13、對(duì)應(yīng)第二音源輸入通道21的第二音源緩沖區(qū)23、對(duì)應(yīng)第三音源輸入通道31的第三音源緩沖區(qū)33、混音器4、及音頻播放硬件5,其中,混音器4用于從各音源緩沖區(qū)13、23、33獲取音頻數(shù)據(jù)進(jìn)行混音,并將混音后的音頻數(shù)據(jù)輸出至音頻播放硬件5輸出。
[0059]如圖2所示,對(duì)于多房間音頻系統(tǒng)中的每一音箱,本發(fā)明控制方法具體可以包括如下步驟:
[0060]步驟S1:確定音箱的工作模式。
[0061]多房間音頻系統(tǒng)在建立后,系統(tǒng)內(nèi)各音箱便可根據(jù)預(yù)定規(guī)則確定自身音箱的工作模式,該預(yù)定規(guī)則可以是由用戶在建組時(shí)指定固定的音箱作為主音箱、建組時(shí)發(fā)起建組消息的音箱作為主音箱、建組時(shí)正在播放的音箱作為主音箱、建組時(shí)各音箱根據(jù)預(yù)定規(guī)則協(xié)商確定主音箱等。
[0062]步驟S2:如果工作模式是主音箱模式,則執(zhí)行步驟S311,如果工作模式是從音箱模式,則執(zhí)行步驟S321。
[0063]步驟S311:在主音箱模式下,獲取音箱的共享音頻數(shù)據(jù),該共享音頻數(shù)據(jù)即為需要與多房間音頻系統(tǒng)中的其它音箱共享的音頻數(shù)據(jù)。
[0064]該獲取音箱的共享音頻數(shù)據(jù)需要根據(jù)設(shè)定的能夠作為多房間音頻播放的輸入源的音頻數(shù)據(jù)執(zhí)行,例如,在設(shè)定為將音箱中混音器輸出的音頻數(shù)據(jù)作為多房間音頻播放的輸入源的情況下,該獲取音箱的共享音頻數(shù)據(jù)具體為獲取音箱中混音器輸出的音頻數(shù)據(jù)作為共享音頻數(shù)據(jù);在設(shè)定為將處于播放狀態(tài)的音頻數(shù)據(jù)作為多房間音頻播放的輸入源的情況下,該獲取音箱的共享音頻數(shù)據(jù)具體為獲取音箱的音頻輸入通道輸出的處于播放狀態(tài)的音頻數(shù)據(jù)作為共享音頻數(shù)據(jù)。
[0065]在音箱的混音器被設(shè)置為同一時(shí)間僅允許一個(gè)緩沖區(qū)中的音頻數(shù)據(jù)處于播放狀態(tài)的情況下,即混音器并不進(jìn)行真正的混音操作,而是根據(jù)設(shè)定的播放優(yōu)先級(jí)確定能夠進(jìn)行播放的音頻數(shù)據(jù),則共享音頻數(shù)據(jù)僅可能具有一路音頻數(shù)據(jù);在音箱的混音器被設(shè)置為同一時(shí)間允許所有緩沖區(qū)中的音頻數(shù)據(jù)處于播放狀態(tài)的情況下,獲取音箱的共享音頻數(shù)據(jù)可以具體為獲取音箱的音頻輸入通道輸出的所有處于播放狀態(tài)的音頻數(shù)據(jù)作為共享音頻數(shù)據(jù),也可以具體為在音箱的音頻輸入通道輸出的所有處于播放狀態(tài)的音頻數(shù)據(jù)中,根據(jù)設(shè)定規(guī)則選取其中的部分音頻數(shù)據(jù)作為共享音頻數(shù)據(jù),該規(guī)則例如包括為音頻輸入通道設(shè)置共享優(yōu)先級(jí)、為音頻數(shù)據(jù)的類型設(shè)置共享優(yōu)先級(jí)、按照音頻數(shù)據(jù)的播放先后順序設(shè)置共孚優(yōu)先級(jí)等。
[0066]步驟S312:將共享音頻數(shù)據(jù)發(fā)送給多房間音頻系統(tǒng)中的所有從音箱。
[0067]為了實(shí)現(xiàn)主音箱與各從音箱之間的數(shù)據(jù)傳輸,在根據(jù)配置信息設(shè)置完音箱的工作模式后,需要獲取主音箱與各從音箱之間的通信地址,在此,多房間音箱系統(tǒng)中的各音箱在建組時(shí)即可獲得組內(nèi)其它音箱的通信地址。主音箱與從音箱之間的數(shù)據(jù)傳輸可以采用單播、廣播、組播中的任意形式。
[0068]步驟S321:在從音箱模式下,接收多房間音頻系統(tǒng)中的主音箱發(fā)送來的共享音頻數(shù)據(jù)。
[0069]為了實(shí)現(xiàn)從音箱與主音箱之間的數(shù)據(jù)傳輸,在根據(jù)配置信息設(shè)置完音箱的工作模式后,需要獲取自身音箱與主音箱之間的通信地址。
[0070]步驟S322:為每路共享音頻數(shù)據(jù)各建立一個(gè)從音箱緩沖區(qū)。
[0071 ] 例如,在圖1所示的實(shí)施例中,如果第一音源輸入通道11、第二音源輸入通道21和第三音源輸入通道31輸出的音頻數(shù)據(jù)均處于播放狀態(tài),而上述的獲取音箱的共享音頻數(shù)據(jù)又具體為獲取音箱的音頻輸入通道輸出的所有處于播放狀態(tài)的音頻數(shù)據(jù)作為共享音頻數(shù)據(jù),則在該步驟中需要建立對(duì)應(yīng)第一音源輸入通道11的音頻數(shù)據(jù)的第一從音箱緩沖區(qū)、對(duì)應(yīng)第二音源輸入通道21的音頻數(shù)據(jù)的第二從音箱緩沖區(qū)、及對(duì)應(yīng)第三音源輸入通道31的音頻數(shù)據(jù)的第三從音箱緩沖區(qū)。
[0072]步驟S323:將共享音頻數(shù)據(jù)填入對(duì)應(yīng)的從音箱緩沖區(qū)中。
[0073]步驟S324:啟動(dòng)從音箱緩沖區(qū)中的共享音頻數(shù)據(jù)的播放,以實(shí)現(xiàn)從音箱對(duì)主音箱的響應(yīng)。
[0074]由此可見,本發(fā)明控制方法是通過使主音箱獲取共享音頻數(shù)據(jù)發(fā)送給從音箱,及通過使從音箱建立從音箱緩沖區(qū)、并將接收到的共享音頻數(shù)據(jù)填入從音箱緩沖區(qū)中的方式進(jìn)行多房間音頻播放的控制,而音箱自身的音頻輸入通道輸出的音頻數(shù)據(jù)由對(duì)應(yīng)的音源控制模塊控制,最終音頻播放硬件的輸出則取決于混音器的設(shè)置形式,因此,本發(fā)明控制方法使得多房間音頻播放的控制完全不會(huì)影響音箱自身的音源的播放控制和音源的切換,而且音箱在從主音箱模式下退出時(shí),共享音頻數(shù)據(jù)將不受任何影響而在對(duì)應(yīng)音頻控制模塊的控制下繼續(xù)播放。
[0075]這就不僅簡(jiǎn)化了多房間音頻播放控制的邏輯,也提升了用戶體驗(yàn)。
[0076]在多房間音頻系統(tǒng)中,主音箱與從音箱之間的同步播放是通過同步播放機(jī)制控制的,該同步播放機(jī)制例如可在音頻數(shù)據(jù)幀中增加時(shí)間戳等信息,由于本發(fā)明的改進(jìn)并不涉及同步播放控制,因此不再加以贅述。在現(xiàn)有的同步播放控制的基礎(chǔ)上,為了能夠更快地實(shí)現(xiàn)主音箱與從音箱之間的播放同步,例如更快地同時(shí)停止播放共享音頻數(shù)據(jù),在本發(fā)明的一個(gè)具體實(shí)施例中,在主音箱模式下,則還包括如下步驟:
[0077]步驟S313:獲取音箱的共享音頻數(shù)據(jù)的播放狀態(tài)信息,該播放狀態(tài)信息例如包括暫停播放、前進(jìn)、后退等信息,該步驟可與上述步驟S311同步進(jìn)行。
[0078]步驟S314:將播放狀態(tài)信息發(fā)送給多房間音頻系統(tǒng)中的所有從音箱,該步驟可與上述步驟S312同步進(jìn)行。
[0079]對(duì)應(yīng)地,在從音箱模式下,則還包括如下步驟:
[0080]步驟S325:接收多房間音頻系統(tǒng)中的主音箱發(fā)送來的共享音頻數(shù)據(jù)的播放狀態(tài)信息,該步驟可與上述步驟S321同步進(jìn)行。
[0081]步驟S326:根據(jù)播放狀態(tài)信息控制對(duì)應(yīng)從音箱緩沖區(qū)中的共享音頻數(shù)據(jù)的播放。
[0082]本發(fā)明還提供了一種能夠?qū)崿F(xiàn)上述控制方法的控制系統(tǒng)6,如圖3所示,該控制系統(tǒng)6包括控制模塊61、轉(zhuǎn)發(fā)控制模塊62、轉(zhuǎn)發(fā)模塊63、接收控制模塊64、接收模塊65,其中,控制模塊61用于確定音箱的工作模式是主音箱模式還是從音箱模式;轉(zhuǎn)發(fā)控制模塊62用于在主音箱模式下,獲取音箱的共享音頻數(shù)據(jù);轉(zhuǎn)發(fā)模塊53用于將轉(zhuǎn)發(fā)控制模塊提供的共享音頻數(shù)據(jù)發(fā)送給多房間音頻系統(tǒng)中的所有從音箱;接收模塊65用于在從音箱模式下,接收多房間音頻系統(tǒng)中的主音箱發(fā)送來的共享音頻數(shù)據(jù);接收控制模塊64用于為每路共享音頻數(shù)據(jù)各建立一個(gè)通向所述音箱的混音器的從音箱緩沖區(qū),并將共享音頻數(shù)據(jù)填入對(duì)應(yīng)的從音箱緩沖區(qū)中,及還用于啟動(dòng)共享音頻數(shù)據(jù)的播放。
[0083]在本發(fā)明的一個(gè)具體實(shí)施例中,上述轉(zhuǎn)發(fā)控制模塊62具體用于獲取音箱中混音器輸出的音頻數(shù)據(jù)作為共享音頻數(shù)據(jù),或者具體用于獲取音箱的音頻輸入通道的處于播放狀態(tài)的音頻數(shù)據(jù)作為共享音頻數(shù)據(jù)。
[0084]在本發(fā)明的一個(gè)具體實(shí)施例中,上述轉(zhuǎn)發(fā)控制模塊62還用于在主音箱模式下,獲取共享音頻數(shù)據(jù)的播放狀態(tài)信息提供給轉(zhuǎn)發(fā)模塊63 ;上述轉(zhuǎn)發(fā)模塊63則還用于將播放狀態(tài)信息發(fā)送給多房間音頻系統(tǒng)中的所有從音箱。對(duì)應(yīng)地,上述接收模塊65還用于在從音箱模式下,接收多房間音頻系統(tǒng)中的主音箱發(fā)送來的共享音頻數(shù)據(jù)的播放狀態(tài)信息,并將播放狀態(tài)信息提供給接收控制模塊64 ;上述接收控制模塊64還用于根據(jù)該播放狀態(tài)信息控制對(duì)應(yīng)共享音頻數(shù)據(jù)的播放。
[0085]本發(fā)明還提供了一種音箱,以支持本發(fā)明控制方法,以音箱自身具有三個(gè)音源輸入通道為例,在圖1所示音箱的基礎(chǔ)上,如圖4和圖5所示,本發(fā)明音箱還包括本發(fā)明控制系統(tǒng)6,其中,圖4示出了控制系統(tǒng)6的轉(zhuǎn)發(fā)控制模塊62獲取音箱的音頻輸入通道的處于播放狀態(tài)的音頻數(shù)據(jù)作為共享音頻數(shù)據(jù)的實(shí)施例,圖5示出了控制系統(tǒng)6的轉(zhuǎn)發(fā)控制模塊62獲取音箱中混音器4輸出的音頻數(shù)據(jù)作為共享音頻數(shù)據(jù)的實(shí)施例,在此,圖4和圖5所示實(shí)施例同時(shí)示出了音箱作為一個(gè)多房間音頻系統(tǒng)的主音箱的情況,此時(shí)接收模塊65和接收控制模塊64不起作用,或者作為一個(gè)多房間音頻