音頻同步播放方法、裝置及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及多媒體領(lǐng)域,尤其涉及音頻同步播放方法、裝置及系統(tǒng)。
【背景技術(shù)】
[0002] 隨著多媒體技術(shù)的發(fā)展,在越來越多的應(yīng)用場景下需要使用多個設(shè)備構(gòu)成同步播 放系統(tǒng)進行音頻同步播放,W實現(xiàn)多個設(shè)備同步發(fā)出聲音,從而實現(xiàn)單個設(shè)備難W實現(xiàn)的 功能和效果。例如,多個手機構(gòu)成的同步播放系統(tǒng)進行音頻同步播放,能夠?qū)崿F(xiàn)多聲道環(huán)繞 聲、手機音陣等單個手機無法實現(xiàn)的效果。
[0003] 在現(xiàn)有技術(shù)中,同步播放系統(tǒng)通常采用的音頻播放方式,就是控制同步播放系統(tǒng) 內(nèi)各個設(shè)備同時播放音頻文件。發(fā)明人對現(xiàn)有技術(shù)研究后發(fā)現(xiàn),同步播放系統(tǒng)在播放音頻 文件時,通常將音頻文件劃分為若干個音頻片段,然后逐段對音頻片段進行播放。然而,對 每一個音頻片段的播放,都需要經(jīng)過解碼、混音、DSP及輸出等處理過程,從開始對音頻片段 進行播放到實際發(fā)出聲音會存在一定的時間差,該時間差即為播放時延。播放時延的大小 由設(shè)備的硬件配置和軟件環(huán)境決定,當(dāng)不同設(shè)備之間硬件配置或軟件環(huán)境不同時,播放時 延的大小也不相同。
[0004] 由于不同設(shè)備的播放時延不同,使得不同設(shè)備同時播放同一音頻片段的時間也不 同。當(dāng)不同設(shè)備的硬件配置或軟件環(huán)境差別較大時,實際發(fā)出聲音的時間偏差也會較大。 例如,化awei Matel手機與化awei化nor手機在同時開始對同一音頻片段進行解碼的情 況下,實際發(fā)出聲音的時間可能會相差130至168ms。進一步,由于在播放每一個音頻片段 時,不同的設(shè)備之間都會產(chǎn)生一個時間偏差,隨著已播放音頻片段數(shù)量的增加,不同設(shè)備的 實際發(fā)出聲音的時間偏差會逐漸積累,導(dǎo)致不同設(shè)備之間實際發(fā)出聲音的時間不一致的情 況越來越嚴(yán)重,實現(xiàn)音頻同步播放非常困難。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明實施例提供了音頻同步播放方法、裝置及系統(tǒng),W解決在不同設(shè)備的播放 時延不同時,音頻同步播放非常困難的問題。
[0006] 第一方面,本發(fā)明實施例提供了一種音頻同步播放方法,由同步播放系統(tǒng)中的被 控設(shè)備執(zhí)行,所述同步播放系統(tǒng)包括被控設(shè)備和一個主控設(shè)備,該方法包括;計算播放音頻 文件產(chǎn)生的第一播放時延化;獲取主控設(shè)備播放所述音頻文件產(chǎn)生的第二播放時延〇2 ;計 算時延差Offset,其中所述Offset =化-〇2 ;當(dāng)所述Offset不為0時,計算所述Offset的 絕對值所對應(yīng)的數(shù)據(jù)調(diào)整量;根據(jù)所述Offset的大小在所述音頻文件的當(dāng)前待播放部分 中添加或刪除數(shù)據(jù)量為所述數(shù)據(jù)調(diào)整量的調(diào)整數(shù)據(jù),得到與所述當(dāng)前待播放部分對應(yīng)的替 換部分;對所述替換部分進行播放。
[0007] 結(jié)合第一方面,在第一方面第一種可能的實現(xiàn)方式中,所述計算播放音頻文件產(chǎn) 生的第一播放時延化包括:當(dāng)所述音頻文件的播放時長達(dá)到第一預(yù)定時長時,計算播放音 頻文件產(chǎn)生的第一播放時延化;或者,當(dāng)前次對待播放部分進行數(shù)據(jù)添加或數(shù)據(jù)刪除操作 后到達(dá)第二預(yù)定時長時,計算播放音頻文件產(chǎn)生的第一播放時延化。
[0008] 結(jié)合第一方面或第一方面第一種可能的實現(xiàn)方式,在第一方面第二種可能的實現(xiàn) 方式中,所述計算在預(yù)定時刻播放音頻文件產(chǎn)生的第一播放時延化包括:獲取所述音頻文 件已播放時間長度T、所述音頻文件播放開始后已經(jīng)累計寫入混音與DSP處理硬件的數(shù)據(jù) 所對應(yīng)的時間長度E(t)、混音與DSP處理硬件中緩存數(shù)據(jù)所對應(yīng)的時間長度F(t)及音頻播 放硬件中緩存數(shù)據(jù)所對應(yīng)的時間長度G(t);根據(jù)所述T、所述E(t)、所述F(t)及所述G(t) 計算 Di,其中 Di = T-E (t) +F (t) +G (t)。
[0009] 結(jié)合第一方面、第一方面第一種可能的實現(xiàn)方式或第一方面第二種可能的實現(xiàn)方 式,在第一方面第Η種可能的實現(xiàn)方式中,所述根據(jù)所述Offset的大小在所述音頻文件的 當(dāng)前待播放部分中添加或刪除數(shù)據(jù)量為所述數(shù)據(jù)調(diào)整量的調(diào)整數(shù)據(jù)包括:當(dāng)所述Offset 小于0時,在所述音頻文件的當(dāng)前待播放部分中添加數(shù)據(jù)量為所述數(shù)據(jù)調(diào)整量的調(diào)整數(shù) 據(jù);或者,當(dāng)所述Off set大于0時,在所述音頻文件的當(dāng)前待播放部分中刪除數(shù)據(jù)量為所述 數(shù)據(jù)調(diào)整量的調(diào)整數(shù)據(jù)。
[0010] 結(jié)合第一方面、第一方面第一種可能的實現(xiàn)方式或第一方面第二種可能的實現(xiàn)方 式,在第一方面第四種可能的實現(xiàn)方式中,所述根據(jù)所述Offset的大小在所述音頻文件的 當(dāng)前待播放部分中添加或刪除數(shù)據(jù)量為所述數(shù)據(jù)調(diào)整量的調(diào)整數(shù)據(jù)包括:對所述當(dāng)前待播 放部分進行解碼生成解碼數(shù)據(jù);當(dāng)所述Offset小于0時,在所述解碼數(shù)據(jù)中添加數(shù)據(jù)量為 所述數(shù)據(jù)調(diào)整量的調(diào)整數(shù)據(jù);或者,當(dāng)所述Off set大于0時,從所述解碼數(shù)據(jù)中刪除數(shù)據(jù)量 為所述數(shù)據(jù)調(diào)整量的調(diào)整數(shù)據(jù)。
[0011] 第二方面,本發(fā)明實施例提供了一種音頻同步播放裝置,所述裝置包括:計算單 元,用于計算播放音頻文件產(chǎn)生的第一播放時延化;獲取單元,用于獲取主控設(shè)備播放所述 音頻文件產(chǎn)生的第二播放時延〇2 ;生成單元,用于根據(jù)所述計算單元得到的化及所述獲取 單元獲取到的〇2計算時延差Offset,其中所述Offset =化-〇2 ;確定單元,用于當(dāng)所述生成 單元生成的Offset不為0時,計算所述Offset的絕對值所對應(yīng)的數(shù)據(jù)調(diào)整量;調(diào)整單元, 用于根據(jù)所述Offset的大小在所述音頻文件的當(dāng)前待播放部分中添加或刪除數(shù)據(jù)量為所 述確定單元得出的所述數(shù)據(jù)調(diào)整量的調(diào)整數(shù)據(jù),得到與所述當(dāng)前待播放部分對應(yīng)的替換部 分;播放單元,用于對所述調(diào)整單元生成的所述替換部分進行播放。
[0012] 結(jié)合第二方面,在第二方面第一種可能的實現(xiàn)方式中,所述計算單元包括;獲取子 單元,用于獲取所述音頻文件已播放時間長度T、所述音頻文件播放開始后已經(jīng)累計寫入混 音與DSP處理硬件的數(shù)據(jù)所對應(yīng)的時間長度E(t)、所述混音與DSP處理硬件中緩存數(shù)據(jù)所 對應(yīng)的時間長度F(t)及音頻播放硬件中緩存數(shù)據(jù)所對應(yīng)的時間長度G(t);計算子單元,用 于根據(jù)所述獲取單元獲取到的所述T、所述E(t)、所述F(t)及所述G(t)計算化,其中化= T-E (t) +F (t) +G (t) ο
[0013] 結(jié)合第二方面或第二方面第一種可能的實現(xiàn)方式,在第二方面第二種可能的實現(xiàn) 方式中,所述調(diào)整單元,具體用于當(dāng)所述Off set小于0時,在所述音頻文件的當(dāng)前待播放部 分中添加數(shù)據(jù)量為所述數(shù)據(jù)調(diào)整量的調(diào)整數(shù)據(jù);或者,當(dāng)所述Off set大于0時,在所述音頻 文件的當(dāng)前待播放部分中刪除數(shù)據(jù)量為所述數(shù)據(jù)調(diào)整量的調(diào)整數(shù)據(jù)。
[0014] 結(jié)合第二方面或第二方面第一種可能的實現(xiàn)方式,在第二方面第Η種可能的實現(xiàn) 方式中,所述調(diào)整單元包括;解碼子單元,用于對所述當(dāng)前待播放部分進行解碼生成解碼數(shù) 據(jù);調(diào)整子單元,用于當(dāng)所述Off set小于ο時,在所述解碼數(shù)據(jù)中添加數(shù)據(jù)量為所述數(shù)據(jù)調(diào) 整量的調(diào)整數(shù)據(jù);當(dāng)所述Offset大于0時,從所述解碼數(shù)據(jù)中刪除數(shù)據(jù)量為所述數(shù)據(jù)調(diào)整 量的調(diào)整數(shù)據(jù)。
[0015] 第Η方面,本發(fā)明實施例提供了一種音頻同步播放系統(tǒng),所述系統(tǒng)包括:主控設(shè)備 與被控設(shè)備,所述主控設(shè)備,用于計算所述主控設(shè)備播放所述音頻文件產(chǎn)生的第二播放時 延化;所述被控設(shè)備,用于在計算播放音頻文件產(chǎn)生的第一播放時延化;獲取所述〇2 ;計算 時延差Offset,其中所述Offset =化-〇2 ;當(dāng)所述Offset不為0時,計算所述Offset的絕 對值所對應(yīng)的數(shù)據(jù)調(diào)整量;根據(jù)所述Offset的大小在所述音頻文件的當(dāng)前待播放部分中 添加或刪除數(shù)據(jù)量為所述數(shù)據(jù)調(diào)整量的調(diào)整數(shù)據(jù),得到與所述當(dāng)前待播放部分對應(yīng)的替換 部分;對所述替換部分進行播放。
[0016] 本發(fā)明實施例中,計算播放音頻文件產(chǎn)生的第一播放時延化;獲取主控設(shè)備播放 所述音頻文件產(chǎn)生的第二播放時延〇2 ;計算時延差Offset,其中所述Offset =化-〇2 ;當(dāng)所 述Offset不為0時,計算所述Offset的絕對值所對應(yīng)的數(shù)據(jù)調(diào)整量;根據(jù)所述Offset的大 小在所述音頻文件的當(dāng)前待播放部分中添加或刪除數(shù)據(jù)量為所述數(shù)據(jù)調(diào)整量的調(diào)整數(shù)據(jù), 得到與所述當(dāng)前待播放部分對應(yīng)的替換部分;對所述替換部分進行播放。采用本發(fā)明技術(shù) 方案,被控設(shè)備在對當(dāng)前待播放部分進行播放時,可W通過添加或刪除數(shù)據(jù)的方式對當(dāng)前 待播放部分的播放時長進行調(diào)整,從而消除被控設(shè)備與主控設(shè)備之間已經(jīng)產(chǎn)生的出聲時間 偏差,實現(xiàn)主控設(shè)備與被控設(shè)備在播放待播放片段時同時發(fā)出聲音,實現(xiàn)主控設(shè)備與被控 設(shè)備對待播放文件的同步播放,實現(xiàn)過程非常簡單。
【附圖說明】
[0017] 為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn) 有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,對于本領(lǐng)域普通技術(shù)人員而 言,在不付出創(chuàng)造性勞動性的前提下,還可W根據(jù)送些附圖獲得其他的附圖。
[0018] 圖1為本發(fā)明音頻同步播放方法一個實施例的流程圖;
[0019] 圖2為本發(fā)明音頻同步播放裝置一個實施例的