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