本發(fā)明涉及音頻媒體服務(wù)技術(shù),具體涉及一種基于HTTP服務(wù)器的三維音效在線處理方法。
背景技術(shù):
隨著互聯(lián)網(wǎng)和終端技術(shù)的發(fā)展,越來越多的在線音頻服務(wù)開始出現(xiàn)。目前在線音頻服務(wù)的三維音效處理通常在終端播放器本地實(shí)現(xiàn),由于終端技術(shù)和硬件條件的多樣性及對(duì)三維音效處理的支持程度不一樣,導(dǎo)致在每個(gè)終端不能達(dá)到一個(gè)統(tǒng)一的實(shí)現(xiàn)效果。沒有一個(gè)統(tǒng)一的實(shí)現(xiàn)方式。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于克服目前在線音頻服務(wù)的三維音效處理尚存在的上述缺陷,利用在線音頻服務(wù)的現(xiàn)有系統(tǒng),提出了一種基于HTTP服務(wù)器的三維音效在線處理方法,在該方法中,在在線音頻服務(wù)的媒體服務(wù)HTTP服務(wù)器處理鏈中插入三維音效處理模塊,過濾和攔截帶三維音效參數(shù)的請(qǐng)求,對(duì)音頻數(shù)據(jù)進(jìn)行音效變換,實(shí)現(xiàn)了在線音頻播放的三維音效的實(shí)時(shí)處理,滿足了各類終端的統(tǒng)一的音效體驗(yàn)。
為了實(shí)現(xiàn)上述目的,本發(fā)明提供了一種基于HTTP服務(wù)器的三維音效在線處理方法,所述方法包括:
步驟1)頁面播放器接收到音效處理的指令后,將采集的數(shù)據(jù)拼裝新的URL,并向HTTP服務(wù)器進(jìn)行請(qǐng)求;
步驟2)在HTTP服務(wù)器端,三維音效處理以模塊方式加載到HTTP服務(wù)器請(qǐng)求處理鏈中,攔截帶三維音效參數(shù)的URL數(shù)據(jù)請(qǐng)求,對(duì)音頻數(shù)據(jù)進(jìn)行音效變換處理,并將處理后的音頻數(shù)據(jù)返回給所述頁面播放器;
步驟3)所述頁面播放器對(duì)音頻進(jìn)行播放處理。
上述技術(shù)方案中,所述步驟1)具體包括:
步驟101)頁面播放器接收到音效處理的指令后,判斷能否對(duì)本地播放器的Buffer數(shù)據(jù)進(jìn)行操作,如果可以,則依據(jù)當(dāng)前播放位置,清除本地播放器中緩存的音頻數(shù)據(jù),并設(shè)置支持清除緩存標(biāo)識(shí)為TRUE;否則,設(shè)置支持清除緩存標(biāo)識(shí)為FALSE;
步驟102)將當(dāng)前播放位置、三維音效參數(shù)坐標(biāo)和支持清除緩存標(biāo)識(shí)拼裝新的 URL,向HTTP服務(wù)器發(fā)出請(qǐng)求。
上述技術(shù)方案中,所述步驟2)具體包括:
步驟201)三維音效處理以模塊方式加載到HTTP服務(wù)器請(qǐng)求處理鏈中,攔截帶三維音效參數(shù)的URL數(shù)據(jù)請(qǐng)求;
步驟202)依據(jù)攔截的URL數(shù)據(jù)請(qǐng)求,獲取對(duì)應(yīng)的音頻文件的文件名、當(dāng)前播放位置、三維音效參數(shù)坐標(biāo)和支持清除緩存標(biāo)識(shí),如果支持清除緩存標(biāo)識(shí)為TRUE,則轉(zhuǎn)入步驟203);否則轉(zhuǎn)入步驟204);
步驟203)根據(jù)音頻文件的文件名,讀取音頻文件,獲取音頻文件的元數(shù)據(jù),依據(jù)當(dāng)前播放位置,定位到具體的音頻數(shù)據(jù)幀,按幀進(jìn)行三維音效變換,進(jìn)入步驟205);
步驟204)根據(jù)音頻文件的文件名,讀取音頻文件,獲取音頻文件的元數(shù)據(jù),依據(jù)當(dāng)前播放位置,定位到具體的音頻數(shù)據(jù)幀,針對(duì)當(dāng)前音頻幀之前的數(shù)據(jù),直接輸出到客戶端播放器的響應(yīng)流中,針對(duì)當(dāng)前音頻幀之后的數(shù)據(jù),進(jìn)行三維音效變換,執(zhí)行步驟205);
步驟205)從定位的音頻數(shù)據(jù)幀開始依次進(jìn)行音效變換,并把變換后的數(shù)據(jù)幀保存到設(shè)定的輸出Buffer中;
步驟206)只對(duì)音頻幀數(shù)據(jù)進(jìn)行變換,對(duì)音頻文件中的元數(shù)據(jù)信息直接輸出;
步驟207)將處理后的音頻數(shù)據(jù)返回給所述頁面播放器。
上述技術(shù)方案中,所述步驟206)中的音效變換中,當(dāng)設(shè)定的輸出Buffer大小達(dá)到預(yù)定值時(shí),把Buffer中的數(shù)據(jù)輸出到客戶端播放器的響應(yīng)流中,并清空Buffer。
上述技術(shù)方案中,所述步驟3)具體包括:
步驟301)判斷所述支持清除緩存標(biāo)識(shí)是否為TRUE,如果判斷結(jié)果是肯定的,所述頁面播放器獲取音頻數(shù)據(jù),直接從當(dāng)前位置繼續(xù)播放,獲取三維音效效果;否則,進(jìn)入步驟302);
步驟302)重新初始化所述頁面播放器,在頁面播放器進(jìn)入SEEKABLE狀態(tài)后,尋找到當(dāng)前的播放位置進(jìn)行播放,獲取三維音效效果。
本發(fā)明的有益效果在于:
1.本發(fā)明的方法利用了通用HTTP服務(wù)器的并發(fā)處理能力,實(shí)現(xiàn)音頻數(shù)據(jù)的實(shí)時(shí)在線三維音效處理;
2.本發(fā)明的方法通過基于服務(wù)端進(jìn)行三維音效處理,避免了終端條件的差異,提供了統(tǒng)一的服務(wù)體驗(yàn)。
附圖說明
圖1是本發(fā)明的基于HTTP服務(wù)器的三維音效在線處理方法的流程圖;
圖2是本發(fā)明的HTTP服務(wù)器的三維音效處理處理流程圖。
具體實(shí)施方式
下面結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明做進(jìn)一步詳細(xì)的說明。
如圖1所示,一種基于HTTP服務(wù)器的三維音效在線處理方法,所述方法包括:
步驟1)頁面播放器接收到音效處理的指令后,將采集的數(shù)據(jù)拼裝新的URL,并向HTTP服務(wù)器進(jìn)行請(qǐng)求;具體包括:
步驟101)頁面播放器接收到音效處理的指令后,判斷能否對(duì)本地播放器的Buffer數(shù)據(jù)進(jìn)行操作,如果可以,則依據(jù)當(dāng)前播放位置,清除本地播放器中緩存的音頻數(shù)據(jù),并設(shè)置支持清除緩存標(biāo)識(shí)為TRUE;否則,設(shè)置支持清除緩存標(biāo)識(shí)為FALSE;
所述頁面播放器加載在終端上并在終端上運(yùn)行;
步驟102)將當(dāng)前播放位置、三維音效參數(shù)<x,y,z>坐標(biāo)和支持清除緩存標(biāo)識(shí)拼裝新的URL,向HTTP服務(wù)器發(fā)出請(qǐng)求。
步驟2)在HTTP服務(wù)器端,三維音效處理以模塊方式加載到HTTP服務(wù)器請(qǐng)求處理鏈中,攔截帶三維音效參數(shù)的URL數(shù)據(jù)請(qǐng)求,對(duì)音頻數(shù)據(jù)進(jìn)行音效變換處理,并將處理后的音頻數(shù)據(jù)返回給所述頁面播放器;
如圖2所示,所述步驟2)具體包括:
步驟201)三維音效處理以模塊方式加載到HTTP服務(wù)器請(qǐng)求處理鏈中,攔截帶三維音效參數(shù)的URL數(shù)據(jù)請(qǐng)求;
步驟202)依據(jù)攔截的URL數(shù)據(jù)請(qǐng)求,獲取對(duì)應(yīng)的音頻文件的文件名、當(dāng)前播放位置、三維音效參數(shù)坐標(biāo)和支持清除緩存標(biāo)識(shí),如果支持清除緩存標(biāo)識(shí)為TRUE,則轉(zhuǎn)入步驟203);否則轉(zhuǎn)入步驟204);
步驟202)依據(jù)攔截的URL,獲取對(duì)應(yīng)的音頻文件的文件名、當(dāng)前播放位置、三維音效參數(shù)<x,y,z>坐標(biāo)和支持清除緩存標(biāo)識(shí),如果支持清除緩存標(biāo)識(shí)為TRUE,則轉(zhuǎn)入步驟203);否則轉(zhuǎn)入步驟204);
步驟203)根據(jù)音頻文件的文件名,讀取音頻文件,獲取音頻文件的元數(shù)據(jù),依據(jù)當(dāng)前播放位置,定位到具體的音頻數(shù)據(jù)幀,按幀進(jìn)行三維音效變換,進(jìn)入步驟205);
步驟204)根據(jù)音頻文件的文件名,讀取音頻文件,獲取音頻文件的元數(shù)據(jù),依據(jù)當(dāng)前播放位置,定位到具體的音頻數(shù)據(jù)幀,針對(duì)當(dāng)前音頻幀之前(包括當(dāng)前幀)的數(shù)據(jù),直接輸出到客戶端播放器的響應(yīng)流中,針對(duì)當(dāng)前音頻幀之后的數(shù)據(jù),進(jìn)行三維音效變換,執(zhí)行步驟205);
步驟205)從定位的音頻數(shù)據(jù)幀開始依次進(jìn)行音效變換,并把變換后的數(shù)據(jù)幀保存到設(shè)定的輸出Buffer中;
在進(jìn)行音效變換時(shí),為方便處理,保證進(jìn)行變換的幀數(shù)據(jù)變換前后的音頻幀數(shù)據(jù)的字節(jié)大小相同;在設(shè)定的輸出Buffer大小達(dá)到預(yù)定值時(shí),把Buffer中的數(shù)據(jù)輸出到客戶端播放器的響應(yīng)流中,并清空Buffer;
步驟206)只對(duì)音頻數(shù)據(jù)幀進(jìn)行變換,對(duì)音頻文件中的元數(shù)據(jù)信息直接輸出;
步驟207)將處理后的音頻數(shù)據(jù)返回給所述頁面播放器。
步驟3)頁面播放器根據(jù)支持清除緩存標(biāo)識(shí)對(duì)音頻進(jìn)行相應(yīng)播放處理,具體包括:
步驟301)如果支持清除緩存標(biāo)識(shí)為TRUE,則頁面播放器獲取音頻數(shù)據(jù),直接從當(dāng)前位置進(jìn)行繼續(xù)播放,獲取三維音效效果;否則,進(jìn)入步驟302);
步驟302)重新初始化所述頁面播放器,在頁面播放器進(jìn)入SEEKABLE狀態(tài)后,SEEK到當(dāng)前的播放位置進(jìn)行播放,獲取三維音效效果。
實(shí)例1:
NGINX是一個(gè)高性能的HTTP服務(wù)器,其特點(diǎn)是占有內(nèi)存少,并發(fā)能力強(qiáng),同時(shí)把請(qǐng)求處理流程劃分為多個(gè)階段,各階段按照處理時(shí)機(jī)定義了清晰的執(zhí)行語義,很容易介入請(qǐng)求處理流程進(jìn)行模塊開發(fā)。
下面基于NGINX進(jìn)行三維音效處理,具體流程如下:
(1)NGINX根目錄下放置提供在線音頻服務(wù)的MP3文件,如:content_1.mp3、content_2.mp3;
(2)在NGINX的“l(fā)ocation/”的配置指令下面,添加videopanner指令,用于啟動(dòng)三維音效處理;
(3)啟動(dòng)NGINX服務(wù)器;訪問包含頁面播放器處理流程的在線音頻服務(wù)頁面,通常,頁面播放器處理流程包含在一個(gè)js文件中;
(4)頁面加載后,會(huì)進(jìn)行頁面播放器的初始化,并基于給定的音頻文件URL向中的HTTP服務(wù)器請(qǐng)求對(duì)應(yīng)的MP3文件;
(5)音頻MP3文件開始播放后,播放器頁面會(huì)呈現(xiàn)出一個(gè)包含音源和聽者的三維坐標(biāo)空間,用戶使用鼠標(biāo)拖動(dòng)來移動(dòng)音源或聽者的位置,在拖動(dòng)結(jié)束之后,獲取音源的三維音效參數(shù)<x,y,z>坐標(biāo)、本地播放器支持清除緩存標(biāo)識(shí)和當(dāng)前播放位置拼裝在請(qǐng)求URL上向NGINX請(qǐng)求音頻文件;
(6)NGINX調(diào)用videopanner指令,攔截請(qǐng)求URL,并解析出音頻文件的文件名、當(dāng)前播放位置、三維音效參數(shù)<x,y,z>坐標(biāo)和支持清除緩存標(biāo)識(shí)等參數(shù);
(7)判斷支持清除緩存標(biāo)識(shí),如果為TRUE,則執(zhí)行步驟(8);否則執(zhí)行步驟 (9);
(8)根據(jù)音頻文件的文件名,讀取音頻文件,獲取音頻文件的元數(shù)據(jù),依據(jù)當(dāng)前播放位置,定位到具體的音頻數(shù)據(jù)幀,進(jìn)行音效變換,執(zhí)行步驟(10);
(9)根據(jù)音頻文件的文件名,讀取音頻文件,獲取音頻文件的元數(shù)據(jù),依據(jù)當(dāng)前播放位置,定位到具體的音頻數(shù)據(jù)幀,針對(duì)當(dāng)前音頻幀之前(包括當(dāng)前幀)的數(shù)據(jù),直接輸出到客戶端播放器的響應(yīng)流中,針對(duì)當(dāng)前音頻幀之后的數(shù)據(jù),進(jìn)行音效變換,執(zhí)行步驟(10);
(10)按照當(dāng)前幀數(shù)據(jù)依次進(jìn)行音效變換,并把變換后的數(shù)據(jù)幀保存到設(shè)定的輸出Buffer中;在設(shè)定的輸出Buffer大小達(dá)到90%時(shí),把Buffer中的數(shù)據(jù)輸出到客戶端播放器的響應(yīng)流中,并清空Buffer;
(11)只對(duì)音頻幀數(shù)據(jù)進(jìn)行變換,對(duì)音頻MP3文件中的元數(shù)據(jù)信息直接進(jìn)行輸出不處理。