重慶郵電大學(xué)光電學(xué)院 王國(guó)裕 張洋銘 張紅升
T-DMB是一種新興的數(shù)字化多媒體廣播系統(tǒng),是目前實(shí)現(xiàn)移動(dòng)數(shù)字多媒體節(jié)目接收性能最好的技術(shù)之一[1]。為了豐富T-DMB的節(jié)目來(lái)源,可以利用USB模擬電視盒將閉路電視節(jié)目轉(zhuǎn)換為T(mén)-DMB節(jié)目從而構(gòu)建出一套T-DMB電視轉(zhuǎn)播系統(tǒng)。
T-DMB電視轉(zhuǎn)播系統(tǒng)整體上分為T(mén)-DMB編碼系統(tǒng)和T-DMB發(fā)射系統(tǒng)兩部分,前者負(fù)責(zé)將閉路電視信號(hào)采集并編碼為符合T-DMB標(biāo)準(zhǔn)的節(jié)目源,后者負(fù)責(zé)將編碼好的T-DMB節(jié)目進(jìn)行節(jié)目合成、信道編碼等,然后廣播出去。
在T-DMB編碼系統(tǒng)中,如何將模擬的閉路電視信號(hào)采集為數(shù)字音/視頻信號(hào)以及音/視頻如何同步是該轉(zhuǎn)播系統(tǒng)的關(guān)鍵所在,也是難點(diǎn),本文主要介紹這兩個(gè)模塊的設(shè)計(jì)。
圖1所示為T(mén)-DMB電視轉(zhuǎn)播系統(tǒng)的結(jié)構(gòu)框圖,由圖中可知,T-DMB編碼系統(tǒng)可以分為五個(gè)模塊,其中音視頻采集模塊為第一個(gè)模塊,其主要功能為通過(guò)USB電視盒采集電視節(jié)目的聲音和圖像信號(hào),并通過(guò)USB接口傳送至電腦。此模塊采用基于DirectShow開(kāi)發(fā)包的方式。
Directshow是微軟公司開(kāi)發(fā)的一套基于Windows平臺(tái)的多媒體開(kāi)發(fā)工具,是建立在組件對(duì)象模型(COM)的基礎(chǔ)上,由許多模塊化的組件(Filter)組成,每個(gè)Filter實(shí)現(xiàn)一個(gè)功能,由于Filter內(nèi)部完成與硬件驅(qū)動(dòng)程序的交互,所以應(yīng)用程序開(kāi)發(fā)者不需要直接和底層硬件打交道,應(yīng)用程序開(kāi)發(fā)者只需要調(diào)用或者編寫(xiě)合適的Filter就能控制電視盒的工作以及設(shè)置聲音和圖像采集參數(shù)。這樣大大簡(jiǎn)化了在windows平臺(tái)上開(kāi)發(fā)多媒體應(yīng)用程序的難度[2]。
本文的音/視頻采集模塊就是利用DirectShow來(lái)開(kāi)發(fā)的。圖2為音/視頻采集模塊的Filter流程圖。
采集模塊共有6個(gè)Filter組成,每一個(gè)Filter提供不同的接口和用以控制電視盒的相應(yīng)硬件模塊實(shí)現(xiàn)相應(yīng)的功能。TridVid TvTuner Filter提供get_TVFormat()函數(shù)用控制電視盒的調(diào)諧模式,中國(guó)的電視制式為NAL,AutoTuner()函數(shù)用于自動(dòng)搜臺(tái),可以通過(guò)編程調(diào)用此函數(shù)來(lái)切換節(jié)目。Tridvid TvAudio Filter提供Put_TvAudioMode()函數(shù)控制聲道數(shù)和語(yǔ)言類(lèi)別。TridVid Crossbar Filter是輸入端口選擇模塊,用來(lái)選擇接入的是模擬電視信號(hào)還是DVD信號(hào),這里選擇Video Tuner in和Audio Tuner in端口。Capture Filter是聲音和圖像采集模塊,通過(guò)SetFormat()函數(shù)控制聲音采集參數(shù)如下:采樣頻率48KHz,采樣字長(zhǎng)16bit,雙聲道;圖像采集參數(shù)如下:圖像格式Y(jié)V12,像素320x240,采樣字長(zhǎng)16bit。Grabber001 Filter和Grabber Filter是緩存Filter,此模塊是音視頻同步的一個(gè)重要模塊,每當(dāng)采集到一幀聲音或者圖像時(shí),就會(huì)先放入這里緩存,同步模塊通過(guò)控制從此緩存中取數(shù)據(jù)的時(shí)間以及次序來(lái)進(jìn)行音視頻的同步編碼。
這六個(gè)模塊通過(guò)調(diào)用AddFilter()函數(shù)將其加入程序里,并使用Render()函數(shù)將其按圖2所示連接起來(lái),然后調(diào)用Run()函數(shù),采集模塊就開(kāi)始工作了。模擬的電視信號(hào)就轉(zhuǎn)換為數(shù)字的信號(hào)并且音/視頻信號(hào)分別存入電腦內(nèi)存中。
圖1 T-DMB電視轉(zhuǎn)播系統(tǒng)的基本結(jié)構(gòu)框圖
圖2 音/視頻采集模塊Filter流程圖
圖3 音視頻同步模塊結(jié)構(gòu)如圖
圖4 播放器截圖
音視頻同步模塊是系統(tǒng)中最重要的模塊,主要功能包括:1)按照ISO/IEC 14496-1和ISO/IEC 13818-1標(biāo)準(zhǔn)進(jìn)行音視頻同步編碼;2)碼率控制。該模塊輸入數(shù)據(jù)為已編碼好的音/視頻幀,輸出數(shù)據(jù)為188字節(jié)的MPEG-2 TS(transport stream)包。音/視頻同步模塊結(jié)構(gòu)如圖3所示。
經(jīng)過(guò)壓縮后的音/視頻數(shù)據(jù)以幀為單位進(jìn)行同步編碼。由上圖可知,首先將音/視頻幀進(jìn)行同步層打包,為音/視頻幀打上時(shí)間戳并生成SL包。時(shí)間戳采用DTS(decoding time stamp)、CTS(composition time stamp),分別表示解碼時(shí)間和合成時(shí)間。再將SL包進(jìn)行傳輸層打包,將PES包、PSI段及14496段經(jīng)TS多路選擇器生成TS包,在TS包自適應(yīng)區(qū)中有另一重要參數(shù)PCR(program clock reference),提供解碼時(shí)的參考時(shí)鐘并校正接收端時(shí)鐘[3-4]。
同步編碼中時(shí)間戳和參考時(shí)鐘是最重要的參數(shù),在編碼器端和解碼端,它們通過(guò)計(jì)數(shù)來(lái)達(dá)到間接計(jì)時(shí)的目的。PCR的作用是在解碼器切換節(jié)目時(shí),提供對(duì)解碼器PCR計(jì)數(shù)器的初始值,以讓該P(yáng)CR值與PTS、DTS最大可能地達(dá)到相同的時(shí)間起點(diǎn),用于音視頻的同步顯示。
T-DMB標(biāo)準(zhǔn)中,時(shí)間戳的時(shí)間精度為90kHz,如果程序中用計(jì)數(shù)器來(lái)實(shí)現(xiàn)的話(huà)是很難做到的。由于電視盒的視頻幀率和音頻采樣率可以手動(dòng)設(shè)置,如果將視頻幀率設(shè)置為為25fps,折算成時(shí)間戳為3600;音頻采樣率設(shè)置為為48kHz,每幀1024采樣點(diǎn),折算成時(shí)間戳為1920。可以發(fā)現(xiàn)音視頻幀對(duì)應(yīng)的時(shí)間戳增量都是整數(shù),因此可不使用計(jì)數(shù)器,而只要在每一幀后直接增加相應(yīng)的時(shí)間戳增量即可(考慮到解碼也需要時(shí)間,CTS要比DTS大一些)。T-DMB標(biāo)準(zhǔn)中對(duì)PCR要求的時(shí)間精度更高,達(dá)到27MHz,這種精度的計(jì)數(shù)器用軟件幾乎是不可能實(shí)現(xiàn)的。通過(guò)查閱標(biāo)準(zhǔn)發(fā)現(xiàn),PCR在傳輸時(shí)傳輸時(shí)是分為PCR_base和PCR_ext兩部分,PCR_ext以系統(tǒng)時(shí)鐘頻率27MHz為計(jì)數(shù)單位,其作用是修正解碼器的系統(tǒng)時(shí)鐘,使之和編碼器一致;由于該部分精度太高,目前無(wú)法實(shí)現(xiàn)。且若忽略其不計(jì),最大誤差也不足0.01ms,且這個(gè)誤差是不累加的,因此可只考慮PCR_base[5]。
T-DMB標(biāo)準(zhǔn)規(guī)定PCR的循環(huán)插入周期不超過(guò)100ms,本文視頻幀率設(shè)置為25fps,視頻幀的周期為40ms,兩幀為80ms,因此可在傳輸圖像數(shù)據(jù)的TS包中,每?jī)蓭迦胼d有PCR的自適應(yīng)區(qū),且PCR_base等于該幀的DTS。
雖然音/視頻編碼出的平均碼率恒定,但是為了節(jié)省碼率同時(shí)保證畫(huà)質(zhì),編碼出來(lái)的每一幀視頻的數(shù)據(jù)大小肯定不是恒定的,導(dǎo)致數(shù)據(jù)實(shí)時(shí)碼率不穩(wěn)定,因此需采用碼率控制技術(shù),將實(shí)時(shí)碼率保持穩(wěn)定以保證節(jié)目的流暢。
本文采用的碼率控制方法為在編碼端插入空包。通過(guò)周期性檢測(cè)碼率,并對(duì)檢測(cè)結(jié)果進(jìn)行統(tǒng)計(jì),從而確定是否插入及插入多少個(gè)空包,利用空包控制碼率。具體實(shí)現(xiàn)為:首先確定需要的碼率為384kbit/s,檢測(cè)周期T為1s,即每編碼25個(gè)視頻幀檢測(cè)一次。假設(shè)檢測(cè)到一個(gè)周期內(nèi)發(fā)送了m個(gè)TS包,則碼率為:
即一個(gè)TS包在1s內(nèi)的碼率為1.504kbit/s。設(shè) △btr 為b t r 與3 8 4 之 間 的 差 值,則:△btr = 384-btr ,則需要添加的空包數(shù)N的值為:
該方法方便地調(diào)控了發(fā)送過(guò)程中的實(shí)時(shí)碼率,使平均碼率保持在384kbit/s左右,且容易用代碼實(shí)現(xiàn)。
在把本文的兩個(gè)模塊集成進(jìn)整個(gè)T-DMB編碼系統(tǒng)之后,在本實(shí)驗(yàn)室已成熟的DAB發(fā)射系統(tǒng)和成熟的T-DMB播放器基礎(chǔ)上,對(duì)本系統(tǒng)進(jìn)行了測(cè)試。測(cè)試的目的是為了驗(yàn)證本轉(zhuǎn)播系統(tǒng)能否實(shí)時(shí)無(wú)誤地采集閉路電視信號(hào),以及音/視頻是否同步。
測(cè)試參數(shù)為兩組不同分辨率和碼率的組合參數(shù),第一組:分辨率320x240,碼率384kbps,第二組:分辨率640x480,碼率512kbps。測(cè)試結(jié)果顯示T-DMB節(jié)目能夠?qū)崟r(shí)正確播放,沒(méi)有聲音和視頻幀的丟失,且音/視頻能保持同步,表明本文的設(shè)計(jì)是滿(mǎn)足系統(tǒng)要求的。圖4為T(mén)-DMB播放器截圖。
本文基于對(duì)DirectShow和T-DMB標(biāo)準(zhǔn)的研究,設(shè)計(jì)并實(shí)現(xiàn)了閉路電視信號(hào)的采集和音/視頻的同步,本文的設(shè)計(jì)可以用于構(gòu)建T-DMB電視轉(zhuǎn)播系統(tǒng)。同時(shí)該系統(tǒng)也存在一些有待繼續(xù)擴(kuò)展研究之處,比如采集模塊所用的電視盒為模擬電視盒,隨著數(shù)字電視的普及,今后可以利用數(shù)字電視盒采集數(shù)字電視節(jié)目并轉(zhuǎn)換為T(mén)-DMB節(jié)目,這也是今后工作的一個(gè)方向。
[1]李棟.數(shù)字聲音廣播[M].北京:北京廣播學(xué)院出版社,2001:143-147.Li Dong.Digital Audio Broadcasting[M].Bei Jing:Communication University of China Press,2001:143-147.
[2]謝屈波,王六森等.基于DirectShow的圖像采集的實(shí)現(xiàn)[J].軟件導(dǎo)刊,2010.6,Vol.9 No.6.
[3]European Broadcasting Union.ETSI EN 300 401 v1.4.1 Radio Broadcasting Systems;Digital Audio Broadcasting(DAB)to mobile,portable and fixed receivers[S].France:Sophia Antipolis Cedex,2006.
[4]European Broadcasting Union.ETSI TS 102 428 v1.2.1 Digital Audio Broadcasting(DAB);DMB vedio service;User application specification[S].France:Sophia Antipolis Cedex,2009.
[5]金盛,張文軍等.MPEG-2數(shù)字視頻廣播傳輸流中節(jié)目參考時(shí)鐘的處理[J].紅外與激光工程,2000,10,第29卷第5期.