重慶郵電大學光電學院 王國裕 張洋銘 張紅升
T-DMB是一種新興的數字化多媒體廣播系統,是目前實現移動數字多媒體節目接收性能最好的技術之一[1]。為了豐富T-DMB的節目來源,可以利用USB模擬電視盒將閉路電視節目轉換為T-DMB節目從而構建出一套T-DMB電視轉播系統。
T-DMB電視轉播系統整體上分為T-DMB編碼系統和T-DMB發射系統兩部分,前者負責將閉路電視信號采集并編碼為符合T-DMB標準的節目源,后者負責將編碼好的T-DMB節目進行節目合成、信道編碼等,然后廣播出去。
在T-DMB編碼系統中,如何將模擬的閉路電視信號采集為數字音/視頻信號以及音/視頻如何同步是該轉播系統的關鍵所在,也是難點,本文主要介紹這兩個模塊的設計。
圖1所示為T-DMB電視轉播系統的結構框圖,由圖中可知,T-DMB編碼系統可以分為五個模塊,其中音視頻采集模塊為第一個模塊,其主要功能為通過USB電視盒采集電視節目的聲音和圖像信號,并通過USB接口傳送至電腦。此模塊采用基于DirectShow開發包的方式。
Directshow是微軟公司開發的一套基于Windows平臺的多媒體開發工具,是建立在組件對象模型(COM)的基礎上,由許多模塊化的組件(Filter)組成,每個Filter實現一個功能,由于Filter內部完成與硬件驅動程序的交互,所以應用程序開發者不需要直接和底層硬件打交道,應用程序開發者只需要調用或者編寫合適的Filter就能控制電視盒的工作以及設置聲音和圖像采集參數。這樣大大簡化了在windows平臺上開發多媒體應用程序的難度[2]。
本文的音/視頻采集模塊就是利用DirectShow來開發的。圖2為音/視頻采集模塊的Filter流程圖。
采集模塊共有6個Filter組成,每一個Filter提供不同的接口和用以控制電視盒的相應硬件模塊實現相應的功能。TridVid TvTuner Filter提供get_TVFormat()函數用控制電視盒的調諧模式,中國的電視制式為NAL,AutoTuner()函數用于自動搜臺,可以通過編程調用此函數來切換節目。Tridvid TvAudio Filter提供Put_TvAudioMode()函數控制聲道數和語言類別。TridVid Crossbar Filter是輸入端口選擇模塊,用來選擇接入的是模擬電視信號還是DVD信號,這里選擇Video Tuner in和Audio Tuner in端口。Capture Filter是聲音和圖像采集模塊,通過SetFormat()函數控制聲音采集參數如下:采樣頻率48KHz,采樣字長16bit,雙聲道;圖像采集參數如下:圖像格式YV12,像素320x240,采樣字長16bit。Grabber001 Filter和Grabber Filter是緩存Filter,此模塊是音視頻同步的一個重要模塊,每當采集到一幀聲音或者圖像時,就會先放入這里緩存,同步模塊通過控制從此緩存中取數據的時間以及次序來進行音視頻的同步編碼。
這六個模塊通過調用AddFilter()函數將其加入程序里,并使用Render()函數將其按圖2所示連接起來,然后調用Run()函數,采集模塊就開始工作了。模擬的電視信號就轉換為數字的信號并且音/視頻信號分別存入電腦內存中。

圖1 T-DMB電視轉播系統的基本結構框圖

圖2 音/視頻采集模塊Filter流程圖

圖3 音視頻同步模塊結構如圖

圖4 播放器截圖
音視頻同步模塊是系統中最重要的模塊,主要功能包括:1)按照ISO/IEC 14496-1和ISO/IEC 13818-1標準進行音視頻同步編碼;2)碼率控制。該模塊輸入數據為已編碼好的音/視頻幀,輸出數據為188字節的MPEG-2 TS(transport stream)包。音/視頻同步模塊結構如圖3所示。
經過壓縮后的音/視頻數據以幀為單位進行同步編碼。由上圖可知,首先將音/視頻幀進行同步層打包,為音/視頻幀打上時間戳并生成SL包。時間戳采用DTS(decoding time stamp)、CTS(composition time stamp),分別表示解碼時間和合成時間。再將SL包進行傳輸層打包,將PES包、PSI段及14496段經TS多路選擇器生成TS包,在TS包自適應區中有另一重要參數PCR(program clock reference),提供解碼時的參考時鐘并校正接收端時鐘[3-4]。
同步編碼中時間戳和參考時鐘是最重要的參數,在編碼器端和解碼端,它們通過計數來達到間接計時的目的。PCR的作用是在解碼器切換節目時,提供對解碼器PCR計數器的初始值,以讓該PCR值與PTS、DTS最大可能地達到相同的時間起點,用于音視頻的同步顯示。
T-DMB標準中,時間戳的時間精度為90kHz,如果程序中用計數器來實現的話是很難做到的。由于電視盒的視頻幀率和音頻采樣率可以手動設置,如果將視頻幀率設置為為25fps,折算成時間戳為3600;音頻采樣率設置為為48kHz,每幀1024采樣點,折算成時間戳為1920。可以發現音視頻幀對應的時間戳增量都是整數,因此可不使用計數器,而只要在每一幀后直接增加相應的時間戳增量即可(考慮到解碼也需要時間,CTS要比DTS大一些)。T-DMB標準中對PCR要求的時間精度更高,達到27MHz,這種精度的計數器用軟件幾乎是不可能實現的。通過查閱標準發現,PCR在傳輸時傳輸時是分為PCR_base和PCR_ext兩部分,PCR_ext以系統時鐘頻率27MHz為計數單位,其作用是修正解碼器的系統時鐘,使之和編碼器一致;由于該部分精度太高,目前無法實現。且若忽略其不計,最大誤差也不足0.01ms,且這個誤差是不累加的,因此可只考慮PCR_base[5]。
T-DMB標準規定PCR的循環插入周期不超過100ms,本文視頻幀率設置為25fps,視頻幀的周期為40ms,兩幀為80ms,因此可在傳輸圖像數據的TS包中,每兩幀插入載有PCR的自適應區,且PCR_base等于該幀的DTS。
雖然音/視頻編碼出的平均碼率恒定,但是為了節省碼率同時保證畫質,編碼出來的每一幀視頻的數據大小肯定不是恒定的,導致數據實時碼率不穩定,因此需采用碼率控制技術,將實時碼率保持穩定以保證節目的流暢。
本文采用的碼率控制方法為在編碼端插入空包。通過周期性檢測碼率,并對檢測結果進行統計,從而確定是否插入及插入多少個空包,利用空包控制碼率。具體實現為:首先確定需要的碼率為384kbit/s,檢測周期T為1s,即每編碼25個視頻幀檢測一次。假設檢測到一個周期內發送了m個TS包,則碼率為:

即一個TS包在1s內的碼率為1.504kbit/s。設 △btr 為b t r 與3 8 4 之 間 的 差 值,則:△btr = 384-btr ,則需要添加的空包數N的值為:

該方法方便地調控了發送過程中的實時碼率,使平均碼率保持在384kbit/s左右,且容易用代碼實現。
在把本文的兩個模塊集成進整個T-DMB編碼系統之后,在本實驗室已成熟的DAB發射系統和成熟的T-DMB播放器基礎上,對本系統進行了測試。測試的目的是為了驗證本轉播系統能否實時無誤地采集閉路電視信號,以及音/視頻是否同步。
測試參數為兩組不同分辨率和碼率的組合參數,第一組:分辨率320x240,碼率384kbps,第二組:分辨率640x480,碼率512kbps。測試結果顯示T-DMB節目能夠實時正確播放,沒有聲音和視頻幀的丟失,且音/視頻能保持同步,表明本文的設計是滿足系統要求的。圖4為T-DMB播放器截圖。
本文基于對DirectShow和T-DMB標準的研究,設計并實現了閉路電視信號的采集和音/視頻的同步,本文的設計可以用于構建T-DMB電視轉播系統。同時該系統也存在一些有待繼續擴展研究之處,比如采集模塊所用的電視盒為模擬電視盒,隨著數字電視的普及,今后可以利用數字電視盒采集數字電視節目并轉換為T-DMB節目,這也是今后工作的一個方向。
[1]李棟.數字聲音廣播[M].北京:北京廣播學院出版社,2001:143-147.Li Dong.Digital Audio Broadcasting[M].Bei Jing:Communication University of China Press,2001:143-147.
[2]謝屈波,王六森等.基于DirectShow的圖像采集的實現[J].軟件導刊,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數字視頻廣播傳輸流中節目參考時鐘的處理[J].紅外與激光工程,2000,10,第29卷第5期.