吳 潮
(作者單位:寧夏平羅縣廣播電視臺(tái))
數(shù)字電視碼流的分析轉(zhuǎn)換
吳 潮
(作者單位:寧夏平羅縣廣播電視臺(tái))
數(shù)字電視主要依托其復(fù)合信息流,即傳輸流TS與節(jié)目流PS予以運(yùn)行,為進(jìn)一步提高數(shù)字電視的整體質(zhì)量與服務(wù)水平。本文以數(shù)字電視的碼流轉(zhuǎn)換作為主要研究內(nèi)容,通過對(duì)其傳輸流和節(jié)目流的特點(diǎn)和格式進(jìn)行闡述和分析,分別對(duì)傳輸流解析、顯示與解碼時(shí)間標(biāo)簽和視頻幀結(jié)構(gòu)信息等相關(guān)技術(shù)方法展開了深入研究,在此基礎(chǔ)上,提出了傳輸流向節(jié)目流轉(zhuǎn)換過程中,顯示時(shí)間標(biāo)簽、解碼時(shí)間標(biāo)簽等相關(guān)參數(shù)的組建算法,并實(shí)現(xiàn)了傳輸流到多個(gè)節(jié)目流的轉(zhuǎn)換。
數(shù)字電視;傳輸流;節(jié)目流;時(shí)間標(biāo)簽
相較于模擬電視,數(shù)字電視具有信號(hào)損失小和接收效果好的優(yōu)點(diǎn)。但近年來,數(shù)字電視用戶的爆發(fā)式增長使運(yùn)營商在提供數(shù)字電視服務(wù)過程中也出現(xiàn)了節(jié)目信號(hào)差、信號(hào)傳輸中斷等相關(guān)問題,在此背景下,加強(qiáng)數(shù)字電視的碼流分析和轉(zhuǎn)換,在強(qiáng)化數(shù)字電視信號(hào)的基礎(chǔ)上,增強(qiáng)用戶體驗(yàn),已成為數(shù)字電視運(yùn)營商和相關(guān)研發(fā)部門需要著重開展的關(guān)鍵工作。
當(dāng)前,數(shù)字電視大都以MPEG-2的壓縮方式為主,對(duì)MPEG-2標(biāo)準(zhǔn)進(jìn)行分析可知,其包含的復(fù)合信息流主要有兩種:傳輸流(TS)和節(jié)目流(PS)。其中,TS的包結(jié)構(gòu)是188字節(jié)的固定長度,PS包結(jié)構(gòu)的長度則是可變的。因TS和PS在包結(jié)構(gòu)方面的差異,使二者對(duì)于傳輸誤碼的抵抗能力也具有較大差異且對(duì)應(yīng)碼流的應(yīng)用環(huán)節(jié)也不盡相同。其中,TS碼流的包結(jié)構(gòu)固定,故當(dāng)傳輸誤碼對(duì)某一傳輸流的同步信息進(jìn)行破壞時(shí),接收機(jī)可在固定位置實(shí)現(xiàn)對(duì)后續(xù)傳輸包中同步信息的實(shí)時(shí)監(jiān)測,進(jìn)而恢復(fù)信號(hào)同步,較好地避免了相關(guān)信息的流失。對(duì)于TS而言,其包長度是時(shí)刻變化的,當(dāng)受誤碼干擾導(dǎo)致包內(nèi)同步信息丟失時(shí),接收機(jī)則難以對(duì)下一包的同步位置進(jìn)行確定,導(dǎo)致信息傳輸?shù)氖Р絒1]。綜上,當(dāng)信道處于比較惡劣的環(huán)境中時(shí),數(shù)字電視通常以TS作為傳輸碼流,而當(dāng)信道環(huán)境相對(duì)較好且具有較低的傳輸誤碼率時(shí),可采用PS碼流進(jìn)行信號(hào)傳輸。由MEPG-2標(biāo)準(zhǔn)中的兩類復(fù)合信息流包結(jié)構(gòu)可知,傳輸流TS和節(jié)目流PS間是能夠相互轉(zhuǎn)換的,且在當(dāng)前數(shù)字電視用戶急劇增長的情況下,兩種復(fù)合信息流間的轉(zhuǎn)換是極為必要的。
2.1 基于實(shí)際案例的TS流格式與PM表
TS流以188字節(jié)固定長度的包為單位進(jìn)行信息的傳輸,其數(shù)據(jù)傳輸流量大都在40 M/s左右,基于MPEG-2編碼的數(shù)字電視,表情節(jié)目的單位流量通常為4~5 M/s,由此,可計(jì)算出數(shù)字電視各頻點(diǎn)的TS流可復(fù)用節(jié)目的個(gè)數(shù),即8個(gè)左右(實(shí)際應(yīng)用中復(fù)用6套節(jié)目較多)。以上海地區(qū)730頻點(diǎn)的TS流作為分析和轉(zhuǎn)換的目標(biāo)傳輸流,該TS流復(fù)用節(jié)目個(gè)數(shù)為6套,分別為中央1~6套,所對(duì)應(yīng)的節(jié)目標(biāo)識(shí)號(hào)分別為110(113)、120(123)、130(133)、140(143)、150(153)、160(160),其中,實(shí)體數(shù)字和括號(hào)內(nèi)數(shù)字分別為視頻PID和音頻PID,數(shù)字進(jìn)制標(biāo)準(zhǔn)為16進(jìn)制,為獲取上述PID,需要對(duì)傳輸流進(jìn)行分析,具體如下。
TS流格式以4字節(jié)的TS頭和184節(jié)的TS數(shù)據(jù)為主,在對(duì)TS進(jìn)行分析轉(zhuǎn)換時(shí),應(yīng)先確定同步頭,而后,再以不同的PID為依據(jù),對(duì)各TS包采取相應(yīng)的處理,圖1給出了同步頭的搜索算法,其中,在對(duì)TS包進(jìn)行分析前,應(yīng)開展TS的同步搜索,這一過程分為兩個(gè)狀態(tài),分別為同步與同步丟失。通常,當(dāng)連續(xù)檢測到的同步字節(jié)數(shù)量為5個(gè)時(shí),則進(jìn)入同步狀態(tài),而后,在此狀態(tài)中,急需檢測同步字節(jié),若連續(xù)未檢測到同步字節(jié)為3個(gè),則判定同步丟失,需要說明的是,TS包的分析必須在同步狀態(tài)下進(jìn)行。TS包的分析流程如下:找出PAT即節(jié)目關(guān)聯(lián)表,根據(jù)MPEG-2標(biāo)準(zhǔn),節(jié)目關(guān)聯(lián)表中包含了各PMT表的節(jié)目號(hào)和相應(yīng)的PID,對(duì)于本文給定的上海地區(qū)的TS流,其相應(yīng)的節(jié)目關(guān)聯(lián)表的數(shù)據(jù)分別為47 40 00 13 00 00 b0 25 00 01 df 00 00,相應(yīng)的節(jié)目號(hào)與PID為00 00 e0 10 00 65 e0 81 00 66 e0 82 00 67 e0 83 00 68 e084 00 69 e0...,由此,可得7個(gè)節(jié)目號(hào)所對(duì)應(yīng)的PID,具體如下:00-10,65-81,66-82,67-83,68-84,69-85,6a-86。對(duì)PMT表進(jìn)行分析,以65號(hào)節(jié)目按照PD=81的TS流傳輸為例,提取數(shù)據(jù):47 40 81(PID為81)12 00 02 b0 1d 00...a0 2a 90,其中,PMT表中對(duì)各個(gè)節(jié)目的流類型與相應(yīng)的PID進(jìn)行了規(guī)定,其中,其中,02 e1 10 f0 00表示當(dāng)前節(jié)目中的類型數(shù)為2,即視頻流PID為2,PID=110,而e1 13 f0 06則表示節(jié)目中類型數(shù)為4,即音頻流PID為4。由此,對(duì)該節(jié)目的視頻和音頻進(jìn)行分析時(shí),只需要對(duì)PID值為110和113的TS包進(jìn)行提取即可,相應(yīng)的TS包邏輯關(guān)系如圖2所示。由圖2可知,根據(jù)PID值的不同,可從TS包中將不同節(jié)目的音視頻信號(hào)予以提取,所提取的音視頻信號(hào)則按照數(shù)字電視基本碼流PES組成,故通過對(duì)音視頻信號(hào)進(jìn)行打包,便能夠恢復(fù)PES,而TS向PS的轉(zhuǎn)換,實(shí)際上就是將所恢復(fù)的PES碼流重新根據(jù)節(jié)目流PS進(jìn)行再次打包,相應(yīng)地,PS的重要參數(shù)則主要包括了系統(tǒng)參考時(shí)鐘SCR、時(shí)間標(biāo)簽PTS和解碼時(shí)間標(biāo)簽DTS。
圖1 同步頭搜索算法
圖2 TS包邏輯關(guān)系圖
2.2 TS與PS參數(shù)與編碼分析
首先,對(duì)PS結(jié)構(gòu)和相關(guān)參數(shù)進(jìn)行分析。PS結(jié)構(gòu)如下:PS包開始碼為00 00 01 BA共4字節(jié),SCR系統(tǒng)參考時(shí)鐘、程序流速率的字節(jié)長度分別為6和3,填充數(shù)據(jù)后,若存在頭部信息,則系統(tǒng)開始碼轉(zhuǎn)變?yōu)?0 00 01 BB,長度不變,仍為4字節(jié),除上述相關(guān)長度字節(jié)的組分外,PS中還包括了系統(tǒng)信息和PES電視基本碼流。PS參數(shù)中,PTS與DTS均位于電視基本碼流PES中,其作用為實(shí)現(xiàn)音視頻的同步。經(jīng)過編碼產(chǎn)生的音視頻分別形成相應(yīng)的基本碼流ES,但ES并非分段連續(xù)碼流,PES通過將ES進(jìn)行分割并加載相應(yīng)的頭信息,進(jìn)而在傳輸時(shí)將PES包繼續(xù)分段劃分為固定長度為188字節(jié)的傳輸流TS或是具有可變長度的節(jié)目流PS。
其次,對(duì)TS與PS的系統(tǒng)參考時(shí)鐘、PTS和DTS等參數(shù)進(jìn)行分析。由于TS包頭中融入了PCR,即節(jié)目時(shí)鐘參考,故在進(jìn)行解碼時(shí),解碼器則先通過PCR對(duì)與編碼器同步的27 MHz系統(tǒng)時(shí)鐘進(jìn)行重建,待恢復(fù)系統(tǒng)始終后,再借助電視基本碼流中的時(shí)間標(biāo)簽與解碼時(shí)間標(biāo)簽實(shí)現(xiàn)音視頻的同步。同理將SCR引入節(jié)目流PS包頭中,也能夠設(shè)定解碼器從磁盤讀取數(shù)據(jù)信息的初始時(shí)間。通常,所設(shè)定的PTS與DTS標(biāo)簽長度均為33位,對(duì)應(yīng)的單位為基于27 MHz適中的300分頻(90 kHz),PCR與SCR則以基于27 MHz的base(90 kHz)與ext(27 MHz)為單位。需要說明的是,音頻的時(shí)間與解碼時(shí)間標(biāo)簽具有高度一致性,而對(duì)于視頻而言,若在編碼過程中,無后向預(yù)測,則二者為一致的,若存在后向預(yù)測,則需對(duì)DTS與PTS做出相應(yīng)調(diào)整,原因是,I幀的內(nèi)部編碼以及P幀的前向預(yù)測,均只利用到了前幀信息,但B幀雙向預(yù)測中,還包括了后面的IP幀信息,故解碼時(shí),需先解出后面的IP幀,而后,再對(duì)當(dāng)前IP幀進(jìn)行解碼,但在實(shí)際顯示時(shí),B幀則在IP幀之前顯示。
最后,對(duì)所給案例的B圖編碼進(jìn)行分析。在結(jié)合各幀圖像時(shí)間關(guān)系的基礎(chǔ)上,以本文研究的上海地區(qū)數(shù)字電視碼流中的B14為例,為提高編碼的有效性,采以雙項(xiàng)預(yù)測運(yùn)動(dòng)補(bǔ)償法進(jìn)行編碼,即B圖編碼,將參考圖選定為前一幀的113和后續(xù)的P16幀,故在進(jìn)行解碼時(shí),則應(yīng)對(duì)113和P16進(jìn)行依次解碼,但實(shí)際顯示的形式則為113B14B15P16(B15不作為預(yù)測參考圖)。由一個(gè)I幀及若干BP幀為單位所形成的畫面組,即GOP以上述方法進(jìn)行編碼時(shí),顯然第一個(gè)GOP要比其他GOP缺少兩個(gè)B幀。對(duì)于完整的電視基本碼流,以音視頻為例,其結(jié)構(gòu)為,包開始碼、流ID、PES長度以及頭標(biāo)識(shí)的字節(jié)數(shù)分別為3、1、2、3,若結(jié)構(gòu)中存在PTS和DTS,則二者的字節(jié)數(shù)均為5。在傳輸流轉(zhuǎn)變?yōu)楣?jié)目流的過程中,需要修改的也主要是時(shí)間標(biāo)簽和解碼時(shí)間標(biāo)簽,除此之外,還包括轉(zhuǎn)換過程中增加的PS頭信息,其余信息碼流則可完全復(fù)制。
為實(shí)現(xiàn)傳輸流到節(jié)目流的轉(zhuǎn)換,應(yīng)先從TS中獲取不同節(jié)目的電視基本碼流,并根據(jù)所獲取的基本碼流的數(shù)據(jù),得到新的PES所對(duì)應(yīng)的時(shí)間標(biāo)簽PTS與解碼時(shí)間標(biāo)簽DTS,而后,再形成PS。對(duì)所給的730個(gè)頻點(diǎn)TS中的PTS與DTS關(guān)系(二者均以90kHz為單位進(jìn)行計(jì)數(shù))進(jìn)行如下計(jì)算:PTS1-DTS1=10800=3×3600;PTS2-DTS2=10800=3×3600,PTS2-PTS1=43200=12×3600;PTS3-D T S 3=1 0 8 0 0=3×3 6 0 0,P T S 3-PTS2=43200=12×3600;PTS4-D T S 4=1 0 8 0 0=3×3 6 0 0,P T S 4-PTS3=43200=12×3600。由此可見,TS流在PAL電視標(biāo)準(zhǔn)中,各幀的間隔時(shí)間為3600個(gè)90 kHz的時(shí)鐘,即40 ms,故在該頻點(diǎn)中,由PID=0×110的TS包所組成的電視基本碼流包內(nèi),各PES包頭的時(shí)間標(biāo)簽均要比其解碼時(shí)間標(biāo)簽延遲3幀的時(shí)間,而相鄰兩基本碼流的時(shí)間間隔則為12幀。仍然以PID=0×110的PES中的ES結(jié)構(gòu)為例,對(duì)其中的TS流轉(zhuǎn)換為PS流的過程進(jìn)行說明:該流的幀結(jié)構(gòu)為I幀BB PBB PBB PBB結(jié)構(gòu),單位GOP畫面組為12幀,而整個(gè)幀圖像共同組成一個(gè)電視基本碼流PES。在TS流向PS流轉(zhuǎn)變時(shí),一幀圖像則組成一個(gè)PES碼流,而一個(gè)PES碼流則構(gòu)成一個(gè)節(jié)目流PS包。由此,可將初始的TS傳輸流的基本碼流的頭部進(jìn)行直接復(fù)制,使其充當(dāng)PS節(jié)目流中電視基本碼流PES的頭部,而這一PES則是畫面組GOP的第一幀(I幀),而后,各個(gè)B幀和P幀則分別加載復(fù)制的PES頭和節(jié)目流PS頭,共同構(gòu)成PS包,在電視基本碼流PES長度方面,則根據(jù)直接復(fù)制的數(shù)據(jù)獲取,對(duì)于時(shí)間標(biāo)簽PTS和解碼時(shí)間標(biāo)簽的計(jì)算則按照以下方法進(jìn)行。
首先,在程序開始時(shí),將TS流內(nèi)新開始的PES碼流予以提取,構(gòu)成GOP,該畫面組含有整個(gè)12幀的數(shù)據(jù),并以幀開始標(biāo)志將其劃分為12個(gè)PES基本碼流;其次,設(shè)置GOP開始數(shù)據(jù)為I幀,提取這一PES的時(shí)間標(biāo)簽(DTS)值;最后,對(duì)于I幀、B幀和P幀,所構(gòu)建的PES的時(shí)間標(biāo)簽DTS與解碼時(shí)間標(biāo)簽PTS值的計(jì)算方法為,DTS1=轉(zhuǎn)換前GOP中PES的時(shí)間標(biāo)簽DTS;DTSP、B=轉(zhuǎn)換后前一個(gè)電視基本碼流的時(shí)間標(biāo)簽值+1×3600;PTSI、P=轉(zhuǎn)換后PES的時(shí)間標(biāo)簽值+3×3600;PTSB=轉(zhuǎn)換后PES的時(shí)間標(biāo)簽值。根據(jù)次算法算得的IBP幀的時(shí)間標(biāo)簽DTS與解碼時(shí)間標(biāo)簽PTS同上述以B14為例的B圖編碼的視頻幀結(jié)構(gòu)具有較高的一致性。通過對(duì)DTS與PTS的計(jì)算方法進(jìn)行分析可知,計(jì)算公式中,PTSI、P的系數(shù)3是因IBBPBB幀格式所導(dǎo)致的,具體來說就是,在IP之間插入了兩個(gè)具有雙向預(yù)測功能的B幀圖像,而IBBPBB也是最為常用的TS轉(zhuǎn)換中的幀格式,對(duì)于節(jié)目流PS包而言,可令系統(tǒng)參考時(shí)鐘SCR_base=DTS-3600,SCR_ext=0,由此,則構(gòu)成了完整的節(jié)目流PS包。
本文通過對(duì)數(shù)字電視復(fù)合信息流中的傳輸流和節(jié)目流進(jìn)行簡要闡述,進(jìn)而以上海地區(qū)730頻點(diǎn)的TS流作為分析和轉(zhuǎn)換的目標(biāo)傳輸流,通過對(duì)TS與PS的參數(shù)、編碼進(jìn)行分析,進(jìn)而對(duì)TS向PS的轉(zhuǎn)換方法做出了系統(tǒng)探究。研究結(jié)果表明,TS與PS是數(shù)字電視復(fù)合型碼流的主要構(gòu)成部分,二者的參數(shù)設(shè)定、編碼方式和相互轉(zhuǎn)換對(duì)于數(shù)字電視的信號(hào)質(zhì)量具有重要影響。未來,還需進(jìn)一步加強(qiáng)對(duì)數(shù)字電視碼流及其轉(zhuǎn)換的研究力度,為降低數(shù)字電視誤碼率和增強(qiáng)用戶體驗(yàn)奠定良好基礎(chǔ)。
[1]楊秀芝,陳建,王玉欣.基于SOPC的數(shù)字電視碼流分析系統(tǒng)的設(shè)計(jì)[J].福州大學(xué)學(xué)報(bào)(自然科學(xué)版),2013,5(23).