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