天天看點

單節目變碼率TS流複用算法的研究及實作前言單節目複用需要解決的問題實驗結果結束語參考文獻

關鍵詞

       單節目,變碼率,音視訊交織,PCR,DTS,PTS,PSI/SI

前言

在數字電視中,節目的音視訊資訊經過編碼後的資料,稱為基本流(ES),為了滿足傳輸需要,這些ES資料一般還要經過打包(PES)複用成傳輸流(TS)。TS流有兩種,一種是僅包括單個節目的音視訊的TS流,我們稱為單節目流,另一種是多個節目打包複用成一個TS流,我們稱之為多節目複用流。在本文中,我們對單節目的變碼率TS的複用方法進行探讨,提出了一種解決方案,并通過試驗得到了良好的效果。

單節目複用需要解決的問題

音視訊資料交織

音視訊資料的交織,是TS複用中的關鍵環節。音視訊的交織要保證音視訊的同步,避免解碼器在解複用和解碼時的緩沖器溢出。音視訊的交織方法有很多種,在本文中,我們提出一種基于音頻的交織方法。我們知道,編碼後的音頻資料一般來講比較接近于恒定碼率,而編碼後的視訊資料,每幀資料碼率變化相對校大。基于音頻的交織方法步驟如下:

1 每次交織取相同時間長度的視訊資料和音頻資料,分别存放在兩個緩沖中。

2 将音頻資料和視訊資料分别進行PES打包,并根據TS流的生成規則生成成TS包。TS流的生成規則主要包括配置設定PID,連續計數的處理,起始标志的設定等。

3 為每包TS流音頻資料做一個計數标志,從0開始,每次加1,依次遞增。最大值記為N。

4 為每包TS流視訊資料做一個計數标志,從0開始,每次加1,依次遞增。最大值記為M,計算視訊資料包除以音頻資料包的倍數n(n可以為非整數):

n=M/N   

5 修改視訊資料的計數标志,每包視訊TS流資料的原計數标志除以n作為新的計數标志。

6 開始交織,每次比較音視訊兩個緩沖的第一個TS包的計數值,取每次值較小的那個音頻或視訊TS包作為目标TS流的新一包資料,如果計數值相等先取音頻。

7 依次類推,直到緩沖中沒有資料。

8 重複1~7,直到停止複用。

對于每次交織的資料時間長度(InterlaceDuration),即可以以幀為機關進行計算,如果視訊每幀時間長度為40ms,音頻每幀時間長度為8ms,可以每次取40ms的視訊資料和40ms的音頻資料進行交織。如果視訊每幀時間長度為40ms,音頻每幀為24ms,則可以每次取120ms的視訊和120ms的音頻進行交織;當然也可以每次取整幀音頻資料,視訊長度根據音頻的長度進行截取。

PCR的生成

PCR作為節目參考時鐘,是解碼端解碼和播放的時間基準。DVB标準需求PCR的間隔不能大于40ms。在變碼率中,PCR的生成也可以根據每包音頻TS包的時間進行計算。在上一節交織步驟中,我們為每包音頻的TS包打上了一個計數标志,通過每次交織時音頻TS的初始時間,和目前的計數标志,我們可以計算出每包TS流資料的時間:

TS_Time(i) = TS_Time(0) +InterlaceDuration_Duration * i/N

其中:

       TS_Time(i)  是要計算的目前TS包的時間值。

       TS_Time(0) 是本次交織時第一包資料的時間。

InterlaceDuration 是參與交織的資料的時間長度。

N 是參與交織的TS資料包的數量。

通過計算TS_Time(i),我可以用目前時間減去上次添加PCR時間,如果內插補點大于30ms時,添加一次PCR,進而保證PCR的間隔符合DVB标準。

在計算PCR值時需要注意兩點,一是PCR節目時鐘為27MHz,我們計算的時間以ms為機關,需要進行時間機關的轉化,轉化的詳細步驟不再贅述;二是複用時第一包TS流資料的TS_Time可以作為PCR初始值,這樣我們簡單地認為每次添加的PCR就等于每次計算的TS_Time。

DTS/PTS的生成

DTS/PTS描述了ES流的解碼時間和顯示時間,在對ES資料進行PES打包時添加在PES的標頭中。對于視訊而言,DTS/PTS根據IBP幀類型不同而不同, I幀的DTS一般和PTS相同或早于PTS,P幀的DTS一般早于PTS,而B幀中一般隻有PTS,它的DTS和PTS相同。對于音頻而言,隻有PTS,表示DTS和PTS相同。

對DTS而言,如果它的值和DTS所在TS包的TS_Time值(見上一節介紹)相差太大(即DTS-PCR),就會造成緩沖區的上溢,如果太小甚至是負數,就會造成下溢,是以在DTS和TS_Time之間選擇一個合适的內插補點是一個非常關鍵的問題。對于視訊而言,在每個PES的圖像頭中有一個vbv_delay,它用來設定解碼器的緩沖區,以避免解碼器緩沖區上溢或下溢。一般我們取這個內插補點為:

0 < Video_Distance(DTS- TS_Time) <= vbv_delay

每幀視訊資料vbv_delay值一般為700ms左右,也可能是一個不斷變化的值,是以一般我們可以取這個內插補點在200ms到400ms,保證不接近臨界值即可。

對于音頻,根據實驗情況,一般取

0 < Audio_Distance(PTS- TS_Time) <= 90ms

DTS和PTS是90KHz時鐘,在實際的PES打包中,也需要進行時間機關的轉換。

PSI/SI表格的生成

在DVB标準中,對不同的PSI/SI表格規定了不同的發送間隔。我們可以根據目前的TS_Time值進行發送間隔的控制。用目前包的TS_Time值減去上次發送表格時TS包的TS_Time,如果這個時間間隔大于我們指定的間隔(這個間隔一般取小于表格要求的發送間隔,比如PAT表需求每500ms發送一次,我們可以控制在400ms左右),就發送一次表格。表格的生成方式,請參閱DVB相關标準,在此不再贅述。

實驗結果

在實驗中,我們取40ms每幀的視訊資料和24ms每幀的音頻資料進行複用試驗,每次參與複用交織的資料長度為120ms,PCR從0開始,視訊的DTS從200ms開始,音頻的PTS從80ms開始,在實驗中,對于PSI/SI表格,我們僅生成了PAT和PMT表。複用後的單節目流使用碼流分析工具分析結果如下:

單節目變碼率TS流複用算法的研究及實作前言單節目複用需要解決的問題實驗結果結束語參考文獻

TR101290分析結果

單節目變碼率TS流複用算法的研究及實作前言單節目複用需要解決的問題實驗結果結束語參考文獻

PCR分析結果

單節目變碼率TS流複用算法的研究及實作前言單節目複用需要解決的問題實驗結果結束語參考文獻

視音頻PES分析結果

結束語

       随着數字電視的普及,基于DVB的數字電視複用技術在行業内的應用也越來越廣泛,在本文中,我們通過對單節目變碼率TS流複用方法的探索和試驗,提出了一種基于音頻資料進行複用的算法,希望能對複用技術的發展和應用盡微薄之力。

參考文獻

1 鐘玉琢,王琪等                     《MPEG-2運動圖像壓縮編碼國際标準及MPEG的新進展》

2 方濤                                       《數字電視業務資訊及編碼》

3 王東興 餘松煜 梁龍飛           《關于複用器資料插入方式的研究》

4 杜江洪                                   《基于CATV網MPEG-2 TS複用器包排程算法》

5 楊峰 白新躍 何建                 《變碼率TS流動态複用算法設計》

6 陳衛兵 徐重陽 劉衛忠           《ES流複用成MPEG-2 TS流的緩沖區控制政策及實作》

繼續閱讀