專利名稱:實時音視頻單節(jié)目源多碼率壓縮方法
技術(shù)領(lǐng)域:
本發(fā)明屬于計算機多媒體技術(shù)領(lǐng)域,特別涉及流媒體實時音視頻壓縮編碼技術(shù)。
流媒體系統(tǒng)如
圖1所示,主要由四部分組成壓縮編碼服務(wù)器、播放服務(wù)器、文件服務(wù)器、播放器。壓縮編碼服務(wù)器是流媒體系統(tǒng)的一個重要組成部分,壓縮編碼服務(wù)器中的壓縮軟件將采集卡采集到的音視頻幀進行壓縮編碼,存儲到文件服務(wù)器的數(shù)據(jù)庫中或送給播放服務(wù)器。
當(dāng)前應(yīng)用的壓縮編碼服務(wù)器的實時音視頻單節(jié)目壓縮方法為分別啟動一個音頻編碼器和一個視頻編碼器,對采集到的一路音頻、視頻數(shù)據(jù)進行壓縮編碼后輸出一路單一碼率的音頻、視頻碼流A0、V0,經(jīng)合成為單一碼率的媒體流AV0,如圖2所示。采用這種方法的壓縮編碼服務(wù)器,用戶觀看時只能選擇這一碼率,沒有別的選擇。由于客戶端網(wǎng)絡(luò)配置和網(wǎng)絡(luò)帶寬的多樣性,帶寬從14.4Kbps到10Mbps不等,采用單一碼率必然不能滿足大部分用戶的需求。采用高碼率壓縮,低碼率用戶無法觀看節(jié)目;采用低碼率,又無法發(fā)揮高帶寬用戶的帶寬優(yōu)勢,不能滿足高帶寬用戶的要求。
本發(fā)明提出的一種實時音視頻單節(jié)目源多碼率壓縮方法,包括以下步驟1、將采集到的原始音頻數(shù)據(jù)循環(huán)地存放到音頻緩沖區(qū)的單元1到單元L里,原始視頻數(shù)據(jù)循環(huán)地存放到視頻緩沖區(qū)的單元1到單元K里,每一單元音頻緩沖區(qū)保存一幀音頻數(shù)據(jù),每一單元視頻緩沖區(qū)保存一幀視頻數(shù)據(jù);2.主音頻編碼器、主視頻編碼器分別循環(huán)地從所說的音頻、視頻緩沖區(qū)每個單元中讀取音頻、視頻數(shù)據(jù),若音頻緩沖區(qū)的單元中有音頻數(shù)據(jù),立即將該音頻數(shù)據(jù)分別放入主從音頻編碼器緩沖區(qū)的1到X單元中,若視頻緩沖區(qū)的單元中有視頻數(shù)據(jù),將該視頻數(shù)據(jù)分別放入主從視頻編碼器緩沖區(qū)的1到Y(jié)單元中,然后主音頻編碼器和主視頻編碼器開始壓縮編碼,編碼結(jié)束后主音頻編碼器輸出碼率為A0的音頻碼流,主視頻編碼器輸出碼率為V0的視頻碼流,然后繼續(xù)讀取下一幀數(shù)據(jù);若音、視頻緩沖區(qū)各個單元中沒有音、視頻數(shù)據(jù),則主音、視頻編碼器進入阻塞等待狀態(tài),直到音視頻緩沖區(qū)中有音視頻數(shù)據(jù)才從阻塞等待狀態(tài)進入運行狀態(tài);3.m-1個從音頻編碼器和n-1個從視頻編碼器循環(huán)地從主從音、視頻編碼器緩沖區(qū)各單元中讀取音、視頻數(shù)據(jù),若主從音視頻編碼器緩沖區(qū)各單元中有音視頻數(shù)據(jù)立即開始壓縮編碼,各個從音頻編碼器壓縮完一幀音頻數(shù)據(jù)后,分別輸出碼率為A1到Am-1的音頻碼流;同樣n-1個從視頻編碼器壓縮完一幀視頻數(shù)據(jù)后,輸出碼率V1到Vn-1的視頻碼流,;然后繼續(xù)從主、從音視頻編碼器緩沖區(qū)中讀取下一幀音、視頻數(shù)據(jù);若沒有音、視頻數(shù)據(jù)則進入阻塞等待狀態(tài),直到主從音、視頻編碼器緩沖區(qū)中有音、視頻數(shù)據(jù)才從阻塞等待狀態(tài)進入運行狀態(tài);4.將各個主、從音頻編碼器和主、從視頻編碼器中輸出的不同碼率的碼流再組合成所需要碼率的碼流。
采用本發(fā)明方法的多碼率編碼服務(wù)器可以根據(jù)硬件的配置,選擇實時音視頻編碼器的個數(shù),碼率可以根據(jù)用戶的需求進行配置,范圍從14.4Kbps到10Mbps覆蓋高、中、低碼率。本方法中的音頻、視頻緩沖區(qū)和主從音、視頻編碼器緩沖區(qū)的單元數(shù)目的多少也可根據(jù)實際應(yīng)用設(shè)定。本發(fā)明的方法特點本發(fā)明對一路視頻輸入同時啟動多路視頻編碼器進行壓縮編碼,同樣對一路音頻輸入也同時啟動多路音頻編碼器進行壓縮編碼,音頻編碼器的數(shù)目和視頻編碼器的數(shù)目可以不同,具體數(shù)量由系統(tǒng)配置和用戶需求決定,壓縮后的音頻碼流和視頻碼流可以自由組合生成最終的不同碼率的音視頻輸出碼流。這些編碼器并行運行。其優(yōu)點為1.可以同時滿足帶寬從14.4Kbps到10Mbps高、中、低碼率的用戶需求;2.多個編碼器并行編碼,提高效率;3.充分利用服務(wù)器系統(tǒng)資源;4.完全由軟件完成,不需要額外硬件;5.簡單易行,效果突出;6.不同碼率的碼流間沒有時延。
圖2為現(xiàn)有單碼率壓縮編碼方法流程框圖。
圖3為本方法單節(jié)目源多碼率壓縮編碼方法流程框圖。
CPUIntel PIII 1GHz內(nèi)存128M操作系統(tǒng)RedHat7.1 Linux Server編程語言C++流媒體編碼服務(wù)器LSMP Media Encoder流媒體編碼服務(wù)器的參數(shù)設(shè)置音頻編碼器個數(shù)2音頻編碼器的碼率設(shè)置16kbps、128kbps音頻緩沖區(qū)L=4主從音頻編碼器緩沖區(qū)X=4視頻編碼器個數(shù)3視頻編碼器的碼率設(shè)置672kbps、322kbps、84kbps視頻緩沖區(qū)K=4主從視頻編碼器緩沖區(qū)Y=4本發(fā)明方法的實施例主要采用了多線程進行并發(fā)壓縮編碼,即有幾個音頻編碼器和幾個視頻編碼器就創(chuàng)建幾個音頻編碼線程和幾個視頻編碼線程,每一個音頻編碼器和每一個視頻編碼器作為一個C++對象被對應(yīng)的音頻編碼線程和視頻編碼線程所調(diào)用。各個音頻編碼線程和各個視頻編碼線程,獨立地進行壓縮編碼,輸出不同碼率的碼流。具體包括以下步驟1.創(chuàng)建并初始化一個主音頻編碼線程、一個從音頻編碼線程和一個視頻編碼線程、兩個從視頻編碼線程,同時創(chuàng)建并初始化一個主音頻編碼器、一個從音頻編碼器和一個視頻編碼器、兩個從視頻編碼器;2.啟動并初始化采集卡驅(qū)動程序;3.采集卡驅(qū)動程序?qū)⒉杉皆家纛l數(shù)據(jù)循環(huán)地存放到音頻緩沖區(qū)的單元1到單元4中,視頻數(shù)據(jù)循環(huán)地存放到視頻緩沖區(qū)的單元1到單元4中,每一單元音頻緩沖區(qū)保存一幀音頻數(shù)據(jù),每一單元視頻緩沖區(qū)保存一幀視頻數(shù)據(jù);4.主音頻編碼線程、主視頻編碼線程分別循環(huán)地從音頻、視頻緩沖區(qū)每個單元中讀取音頻、視頻數(shù)據(jù),若音視頻緩沖區(qū)的單元中有音視頻數(shù)據(jù),立即將該音頻數(shù)據(jù)分別放入主從音頻編碼器緩沖區(qū)的1到4單元中,將該視頻數(shù)據(jù)分別放入主從視頻編碼器緩沖區(qū)的1到4單元中,然后主音頻編碼線程調(diào)用主音頻編碼器和主視頻編碼線程調(diào)用主視頻編碼器開始壓縮編碼,編碼結(jié)束后主音頻編碼器輸出碼率為128kbps的音頻碼流,主視頻編碼器輸出碼率為672kbps的視頻碼流,然后繼續(xù)讀取下一幀;若音頻緩沖區(qū)和視頻緩沖區(qū)各個單元中沒有音視頻數(shù)據(jù),則主音頻編碼線程和主視頻編碼線程進入阻塞等待狀態(tài),直到音視頻緩沖區(qū)中有音視頻數(shù)據(jù)才從阻塞等待狀態(tài)進入運行狀態(tài);5. 1個從音視頻編碼線程和2個從視頻編碼線程循環(huán)地從主從音視頻編碼器緩沖區(qū)中讀取音視頻數(shù)據(jù),若主從音視頻編碼器緩沖區(qū)各單元中有音視頻數(shù)據(jù)立即開始壓縮編碼,1個從音頻編碼線程壓縮完一幀音頻數(shù)據(jù)后,輸出碼率為16kpbs的音頻碼流,2個從視頻編碼線程壓縮完一幀視頻數(shù)據(jù)后,輸出碼率84kbps和322kpbs的視頻碼流,然后繼續(xù)從主從音視頻編碼器緩沖區(qū)各單元中讀取下一幀音視頻數(shù)據(jù);若沒有音視頻數(shù)據(jù)則進入阻塞等待狀態(tài),直到主從音視頻編碼器緩沖區(qū)中有音視頻數(shù)據(jù)才從阻塞等待狀態(tài)進入運行狀態(tài);6. 16kbps的音頻碼流和84kbps的視頻碼流組合成100kbps的音視頻碼流,128kbps的音頻碼流分別和322kbps和672kbps的視頻碼流組合成450kbps和800kbps的音視頻碼流。
權(quán)利要求
1.一種實時音視頻單節(jié)目源多碼率壓縮方法,包括以下步驟1)將采集到的原始音頻數(shù)據(jù)循環(huán)地存放到音頻緩沖區(qū)的單元1到單元L里,原始視頻數(shù)據(jù)循環(huán)地存放到視頻緩沖區(qū)的單元1到單元K里,每一單元音頻緩沖區(qū)保存一幀音頻數(shù)據(jù),每一單元視頻緩沖區(qū)保存一幀視頻數(shù)據(jù);2)主音頻編碼器、主視頻編碼器分別循環(huán)地從所說的音頻、視頻緩沖區(qū)每個單元中讀取音頻、視頻數(shù)據(jù),若音頻緩沖區(qū)的單元中有音頻數(shù)據(jù),立即將該音頻數(shù)據(jù)分別放入主從音頻編碼器緩沖區(qū)的1到X單元中,若視頻緩沖區(qū)的單元中有視頻數(shù)據(jù),將該視頻數(shù)據(jù)分別放入主從視頻編碼器緩沖區(qū)的1到Y(jié)單元中,然后主音頻編碼器和主視頻編碼器開始壓縮編碼,編碼結(jié)束后主音頻編碼器輸出碼率為A0的音頻碼流,主視頻編碼器輸出碼率為V0的視頻碼流,然后繼續(xù)讀取下一幀數(shù)據(jù);若音、視頻緩沖區(qū)各個單元中沒有音、視頻數(shù)據(jù),則主音、視頻編碼器進入阻塞等待狀態(tài),直到音視頻緩沖區(qū)中有音視頻數(shù)據(jù)才從阻塞等待狀態(tài)進入運行狀態(tài);3)m-1個從音頻編碼器和n-1個從視頻編碼器循環(huán)地從主從音、視頻編碼器緩沖區(qū)各單元中讀取音、視頻數(shù)據(jù),若主從音視頻編碼器緩沖區(qū)各單元中有音視頻數(shù)據(jù)立即開始壓縮編碼,各個從音頻編碼器壓縮完一幀音頻數(shù)據(jù)后,分別輸出碼率為A1到Am-1的音頻碼流;同樣n-1個從視頻編碼器壓縮完一幀視頻數(shù)據(jù)后,輸出碼率V1到Vn-1的視頻碼流;然后繼續(xù)從主、從音視頻編碼器緩沖區(qū)中讀取下一幀音、視頻數(shù)據(jù);若沒有音、視頻數(shù)據(jù)則進入阻塞等待狀態(tài),直到主從音、視頻編碼器緩沖區(qū)中有音、視頻數(shù)據(jù)才從阻塞等待狀態(tài)進入運行狀態(tài);4)將各個主、從音頻編碼器和主、從視頻編碼器中輸出的不同碼率的碼流再組合成所需要碼率的碼流。
全文摘要
本發(fā)明屬于計算機多媒體技術(shù)領(lǐng)域,涉及實時音視頻單節(jié)目源多碼率壓縮方法,本發(fā)明方法是對一路視頻輸入同時啟動多路視頻編碼器進行壓縮編碼,同樣對一路音頻輸入也同時啟動多路音頻編碼器進行壓縮編碼,音頻編碼器的數(shù)目和視頻編碼器的數(shù)目可以不同,具體數(shù)量由系統(tǒng)配置和用戶需求決定,壓縮后的音頻碼流和視頻碼流可以自由組合生成最終的不同碼率的音視頻輸出碼流。這些編碼器并行運行。本發(fā)明不但可以同時滿足帶寬從14.4Kbps到10Mbps高、中、低碼率的用戶需求;而且可充分利用服務(wù)器系統(tǒng)資源,具有工作效率高的特點。
文檔編號G06F12/06GK1396526SQ02125910
公開日2003年2月12日 申請日期2002年8月2日 優(yōu)先權(quán)日2002年8月2日
發(fā)明者戴瓊海, 李華, 曾珂 申請人:清華大學(xué)