摘要 本文從MPEG-2的視頻基本流(ES-Elementary Stream)的層次討論了MPEG-2節(jié)目流(PS-Program Stream)的合成。在分析了MPEG-2碼流的時間信息在音視頻同步的作用后,提出了一種ES到PS包過程中時間信息的重建算法。同時,將打包后的數(shù)據(jù)包復(fù)用成完整的節(jié)目數(shù)據(jù)流。
關(guān)鍵字 同步;系統(tǒng)參考時鐘;顯示時間標(biāo)簽;解碼時間標(biāo)簽;復(fù)用1 前言 隨著數(shù)字電視技術(shù)日趨成熟,我國廣播電視的數(shù)字化進(jìn)程已經(jīng)制定出了詳細(xì)的時間表。當(dāng)前廣播電視主要通過有線電視網(wǎng)絡(luò)的覆蓋對城鎮(zhèn)、鄉(xiāng)進(jìn)行廣播。雖然傳播中的信道編碼具備多樣性,但是廣播電視的信源普遍采用MPEG-2國際標(biāo)準(zhǔn)處理的節(jié)目流(PS)方式。
MPEG-2是一個框架性的標(biāo)準(zhǔn),并沒有規(guī)定系統(tǒng)復(fù)用的具體細(xì)節(jié),所以基本流復(fù)用成節(jié)目流的方式不是唯一的。基于軟件和硬件的實現(xiàn)方法都是可取的。本文通過分析MPEG-2碼流結(jié)構(gòu),在ES合成PS過程中,提出了重建PES的時間信息、重建PS的時間信息和PES交織復(fù)用的一系列算法。保證了將基本流規(guī)范地復(fù)用成節(jié)目流。2 MPEG-2碼流結(jié)構(gòu) MPEG-2的系統(tǒng)規(guī)范定義了三種數(shù)據(jù)包(PES、PS和TS)及兩種數(shù)據(jù)流(PS和TS)。將具有1 [2]
temporal_reference中獲得這個序號(定義為Ref_Order)。根據(jù)MPEG-2的時序模型(見圖3),我們知道視頻的DTS值始終具有逐幀遞增的特點,而PTS和DTS之間具有一定的差值關(guān)系。差值同幀速率、幀在幀所在圖像組(GOP-Group of pictures)中的解碼順序以及幀在(GOP-Group of pictures)的幀序號(定義為GopFrameOrder)有關(guān)。因而,我們根據(jù)DTS確定PTS值。
首先,根據(jù)ES的frame_rate_code字段來計算視頻幀的幀速率frame_rate。每一幀的幀歷時為:frame_time=(1/frame_rate)*90000。MPEG-2視頻壓縮采用雙向和單向兩種預(yù)測編碼,視頻幀的編碼順序和顯示順序不同,視頻幀的DTS和PTS的計算需要結(jié)合picture_header()中的參數(shù)得到。這些參數(shù)包括了:當(dāng)前視頻幀在碼流中的幀數(shù)序號、在當(dāng)前GOP中的視頻幀序號、當(dāng)前幀的類型。算法實現(xiàn)如下: 1)、如果當(dāng)前幀是I幀,并且是整個碼流第一幀。
(PtsIni指編碼時設(shè)定的PTS初值)
2)、如果當(dāng)前幀是I幀或者P幀或者B幀,但不是第一幀,解碼時間比顯示時間的差值有恒定關(guān)系。應(yīng)該注意,B幀的DTS并不顯示在編碼后的PES包中。
3.1.2 音頻PES時間信息的重建 將音頻幀打包成一個PES分組,只需要讀取合適長度的音頻幀數(shù)據(jù),在具有音頻幀幀頭標(biāo)識的PES包上加上包頭內(nèi)容,如PTS,PES長度等字段的內(nèi)容。其中PTS的算法如下:
其中,AudioFrmOrder,當(dāng)前音頻幀的在完整碼流的音頻幀中的序號;AudioSamp,音頻幀的樣本點,與采樣率有關(guān);Sequence,時鐘頻率,90KHz;Sampling,音頻采樣率。3. 2 PS時間信息重建 為了使PS的碼流具有良好的能控性,我們將每一個PES包的長度定為一個合適而固定的長度。在完成PES包的編碼之后,我們需要將一個個視頻PES包和音頻PES包交織成PS包?! ≡赑S流中,時間同步信息是指SCR。SCR表示了系統(tǒng)的時間基準(zhǔn),其頻率是27MHz。SCR是為了解決壓縮編碼圖像同步問題而產(chǎn)生的。PTS、DTS以90KHz為單位。在PS包頭插入42bit的SCR,從PS包頭的第5到第10字節(jié),表明SCR字段最后一個字節(jié)離開編碼器的時間。MPEG-2編解碼的時序也表明在解碼端解碼時,用本地SCR相位和輸入的瞬時SCR相位鎖相比較確定解碼的同步。SCR的值由復(fù)用數(shù)據(jù)率和統(tǒng)一系統(tǒng)時鐘的27MHz頻率確定。采用時間標(biāo)志PTS、DTS和SCR是解決音視頻同步、幀正確顯示、防止系統(tǒng)目標(biāo)解碼器緩存器上溢或下溢的好方法?! CR編碼的時候被分成兩個部分,一部分以系統(tǒng)時鐘的1/300為單位,稱為SCR_Base;一部分以系統(tǒng)時鐘為單位,稱為SCR_Ext。SCR的計算方法如下:
令i=0,即可以得到當(dāng)前i'字節(jié)編碼的SCR值的計算公式,從而得到:
第一個PS包定義SCR初值、PS平均碼率,其系統(tǒng)頭規(guī)定了比特率范圍和音視頻緩沖區(qū)的大小。我們以GOP為單位,在一定范圍內(nèi)修正其碼率,再根據(jù)該碼率計算SCR,確保SCR與PTS、DTS不發(fā)生翻轉(zhuǎn)。4 結(jié)束語 按照上述算法,在VC++6.0環(huán)境下,編碼完成PS合成軟件。合成的PS在各種播放軟件中播放流暢,同時也滿足應(yīng)用廣泛的神龍卡、Opitibase等播放卡的硬播放需求。測試結(jié)果表明,本軟件合成PS的速度達(dá)到TMpgEnc的合成工具的1.3~1.5倍,而且碼流的規(guī)范性上也強于TMpgEnc,解決了TMpgEnc合成的碼流在硬播放中找點播放時常出現(xiàn)的不同步、抖動、和卡死等問題。本軟件已經(jīng)被廣泛應(yīng)用于州市各級電視臺。實踐證明,具有非??煽康姆€(wěn)定性和規(guī)范性。
參考文獻(xiàn)【1】ISO/IEC 13818-1,13818-2, Generic coding of moving pictures and associated audio[S]. 1994【2】 ISO/IEC 11172-3, Generic coding of moving pictures and associated audio for digital storage media at up to about 1.5Mbit/s[S]. 1994-11-13 【3】郭斌. MPEG-2壓縮編碼技術(shù).北京:電視制播數(shù)字化網(wǎng)絡(luò)化技術(shù)文集,2003-08
[1] 2
更多信息請訪問:
http://www.17808.net/lunwen/