關鍵詞:音畫不同步 MPEG-2 PCR DTS PTS 編碼器 解碼器
隨着我國數字電視的迅猛發展,以及城市廣電網絡數字化改造的推進,越來越多的人們開始采用機頂盒來收看數字電視節目。但在通過機頂盒收看電視節目的過程中,觀眾有時會發現一些音畫不同步的現象。這也引起了我們的注意。
現象及測試
貴陽市在2007年底基本完成了廣電網絡數字化改造,貴州電視台的節目也都進入了數字網絡傳輸。在進入數字網以后,我們發現,我台的幾套節目在有些地區出現了音畫不同步的現象,特別是衛視頻道和百姓頻道在播報新聞時尤其明顯。為了弄清楚問題出現在哪里,我們決定,在我台節目的整個傳輸路徑,作一個唇音同步測試。用來做測試的設備是泰克公司的WFM7120,在做音/視頻延時測量時,還需要通過TG700 DVG7產生一串短促的彩條視頻信號,在這組視頻信號中嵌入音頻序列,其間隔為5s,將這樣的信號送入被測系統,最后將信號送到WFM7120里以測量音、視頻之間的定時差。
播控中心內部測試
如圖1所示,為了測量在電視台系統內部是否存在音/視頻時延差,我們利用檢修時間將TG700產生的測試信號錄入播出硬盤,通過硬盤播放,以及將測試信號分別輸入到延時器和幀同步模塊后,在一個頻道上播出,然后我們在傳送部將信號傳到網絡公司的編碼器之前,對這三路信號進行測量。測量結果顯示,這三路信號的音/視頻時延差均不超過12ms,即不夠一場,表明信號在播控中心不存在音畫不同步問題。
不同機頂盒的測試
第二個測量點,我們選擇了網絡公司的前端機房。如圖2所示,在這里,我們選取了現在國內使用的主要幾個品牌的機頂盒做測試,將TG700的測試信號,通過原來我們在用的編碼器編碼后,插入我們現在在播的頻道,然后在前端機房用機頂盒把電視信號解調出來。解出來的音/視頻信號,再通過一台松下公司的D950錄像機,把模擬的信號進行A/D和加嵌處理后,送到WFM7120進行測量。測量結果顯示,這幾種機頂盒的音/視頻時延差表現不一,有的超前了150ms,有的滯后了300ms。這表明不同的機頂盒,對同樣的數字電視信號進行解調、解碼后保持音/視頻信號之間的同步關系有不同的能力。
不同編碼器的測試
如圖3所示,我們仍然用TG700信號發生器,對不同編碼器進行測試,擦啟用編碼器、調制器和機頂盒構建了一個模擬的播出/收看環境。在這里,我們采用了不同品牌的幾種編碼器,對TG700的測試信號進行編碼后,經過相同的調制器調制,再用同一個機頂盒把信號解出來,同樣經過D950處理后送到WFM7120測量。最后測量的結果是,它們的音/視頻時延差有的是30ms,有的則達到了300ms,表明了不同的編碼器,對機頂盒最終收看信號的音/視頻同步有較大影響。
原因分析
MPEG-2系統的定時原理
目前,在我國的數字電視傳輸系統中, MPEG-2標准作為重要的音視頻壓縮標准,在對信號源端的節目信號壓縮、編碼、復用,以及接收端對信號的解復用和解碼部分,得到了廣泛的應用。而我們正在使用的數字傳輸系統,正是基於MPEG-2標准的系統。下面我們來看看MPEG-2的系統結構,如圖4中所示。
由圖4中可看出,音視頻信號在經過壓縮編碼器去掉冗余信息后,形成基本碼流。這個基本碼流並不能被直接存儲或傳送,還必須送入特定的打包器,把基本碼流按一定的格式分成段落,並加入特定的標識字符,形成所謂的打包基本碼流(PES)。PES包是長度不固定的音、視頻數據包,再把音視頻PES包,以及輔助數據送入傳輸子系統,分割成一個又一個長度固定為188b的小數據包,並通過時分多工復用形成單一的TS流,該TS流經過信道傳輸后到達接收端。
眾所周知,同步是實現電視正確顯示的必要條件。對數字電視來說,由於在壓縮編碼過程中,利用緩存器對信號存儲,復用器中信號的時間軸是變動的,加上數據冗余量大小的不同,壓縮比也不同,因此時間軸變動很大,尤其是在幀組層處理中,B幀和P幀的順序也發生了變化。所有這些,使得數字電視信號的同步,完全失去了原來序列的概念。實現同步的有效辦法,就是在信號碼流中,每經過一個規定的間隔加入一個時間標簽。有了這個標簽,就可以在接收端在顯示之前的解碼過程中,根據這個時間標簽進行重新排序,重建在壓縮編碼之前圖像的順序,以及聲音和圖像之間的時間關系,從而實現圖像同步及聲音與圖像同步。
由圖4還可看出,MPEG-2編碼器中有單一的共同系統時鍾STC (27MHz),此時鍾用來產生指示音頻/視頻正確解碼和顯示時序的時間標簽,同時,可用來指示在抽樣瞬間系統時鍾時間的瞬時值。該時鍾由輸入視頻的行同步鎖相,當輸入是SDI信號時,由其時鍾經10分頻產生編碼器的系統時鍾。正是編碼器中共同系統時鍾的出現,以及解碼器中時鍾的重新生成和時間標簽的正確使用,才為解碼器中操作的正確同步提供了基准。為實現編解碼器的時鍾同步,在編碼器中對STC系統時鍾進行計數,每隔一定的傳輸時間,在經過選擇的TS包的適應頭中,傳輸該計數器的抽樣值給接收機,作為解碼器的節目時鍾參考信號,既PCR。PCR有效位為42b,其中高33b為PCR_Base,是以27MHz時鍾,經300分頻后的時鍾為單位的計數值,低9b為PCR_Extension,是以27MHz時鍾為單位的計數值。除PCR外,解碼時間標簽DTS和顯示時間標簽PTS,也非常重要。它們與PCR_Base相似,也是以編碼器27MHz的系統時鍾,經300分頻后為單位的計數值來創建的。其中,DTS用於指示解碼器何時對接收的圖像、音頻幀進行解碼,PTS用於通知何時顯示已解碼的圖像幀。
在使用雙向編碼時,對某一圖像的解碼,必須在其顯示之前的一段時間內進行,這樣它才能作為解碼B幀圖像的源數據。例如,圖像的顯示順序是IBBP,但圖像的傳輸順序則是IPBB。MPEG參考模型認為解碼是瞬間發生的,即解碼、顯示同時進行。對於音頻幀和圖像B幀來說,解碼時間和顯示時間是一致的,PTS與DTS相同,因此只要傳輸PTS。對於視頻I幀和P幀來說,由於存在幀重新排序,解碼時間和顯示時間不一樣,此時必須同時傳送PTS與DTS。當解碼器接收到IPBB圖像序列時,它必須在解碼第一個B幀圖像之前,對I幀和P幀圖像解碼。解碼器每次只能解碼一幀圖像,因此先對I幀圖像解碼並將其存儲起來,待P幀圖像被解碼時,就輸出顯示已解碼的I幀圖像,隨后才解碼顯示B幀圖像。表1、2、3、4所示,是編碼器輸入、輸出的圖像順序、各幀的PTS、DTS值,以及解碼器對各幀圖像的解碼和顯示順序。
表1中,13幀圖像構成一個圖像組,第1幀I幀采用幀內編碼,第2、3B幀是由第1、4幀通過雙向預測得到,第4幀P幀是由第1幀通過前向預測而得。編碼器在編完第1幀后,先緩存第2、3幀圖像,對第4幀圖像進行編碼,然后再對第2、3幀圖像進行編碼,依次類推,最后得到的編碼輸出順序如表2所示。
由表3和表4可看出,當解碼器接收到某個含有一個I幀圖像的存取單元時,在其文件數據包中應含有DTS與PTS,這兩個標簽的值之間的時間間隔為一個圖像周期。在I幀圖像之后是P幀,其文件數據包中也應有一個DTS和一個PTS,這兩個標簽的值之間的時間間隔是三個圖像周期。然后是兩個B幀,其文件數據包中只含有PTS。也就是說,I幀圖像在解碼后要延時一幀后才播放顯示,在顯示I幀時對第4幀P幀進行解碼,但不播放顯示,先緩存起來,當1I幀播放顯示完后,立即解碼顯示2B幀,然后是3B幀,過后才顯示緩存的4P幀,同時對7P幀進行解碼並緩存,依次類推。可見,解碼顯示的圖像順序,與表1的圖像輸入順序是一致的。
解碼器(機頂盒)的定時原理
PTS和DTS只是一個33b的數值,如果沒有PCR所代表的時間軸做參考,這個數值是沒有意義的。為了保持正確解碼,必須使編碼器和解碼器(機頂盒)的系統時鍾保持鎖定,即它們的頻率保持一致,以及它們各自的計數器的初始值一致。
解碼器(機頂盒)中有一個頻率為27MHz左右的壓控振盪器(VCO),輸出信號作為系統時鍾送入計數器中產生當前的STC樣值,它與PCR一樣也是42b的一個數值。其中,高33b是以27MHz經過300粉頻后的時鍾為單位的計數值,低9b是以27MHz時鍾為單位的計數值。當一個新節目到達解碼器(機頂盒)時,解碼器(機頂盒)從碼流中獲得PCR值,用其PCR_Extention值與當前STC的低9b位作比較,得到誤差信號,再通過鎖相環電路去調整壓控振盪器,使解碼器(機頂盒)的系統時鍾頻率,與編碼器的系統時鍾頻率保持一致。從碼流中依次獲得各幀的PTS與DTS值,將其和當前STC值的高33b位作比較。如果DTS值大於STC值,則對碼流進行緩存,同時監測STC值的變化,當STC值增大到與DTS值相等時,對該幀碼流進行解碼,當STC值與PTS值相等時,播放該幀。如果由於傳輸網絡的緩沖延時抖動,當碼流到達解碼器(機頂盒)時,其PTS值已經小於STC值,則解碼器(機頂盒)跳過這一幀,丟棄該幀數據。由於PTS和DTS是根據PCR值產生的,因此必須將獲得的第一個PCR值,作為初始值去置位解碼器(機頂盒)的STC計數器,使它們的值一樣,否則,將導致時基不同,從而解碼出錯。音頻與視頻的處理相似,只是不存在時序重排的問題。圖5所示是解碼器(機頂盒)PCR工作原理圖。
音畫不同步產生原因
在實際應用中,有些編碼器由於輸入視頻信號的時基不穩,導致其輸出時鍾發生抖動,幀同步的間隔不是40ms。這些編碼器,在根據PCR和緩沖延時設定初始的DTS值后,每幀的DTS值,由上一個DTS加上一個固定值得到(該值可由如下計算而得:27MHz經300分頻后為90kHz,PAL制電視每秒為25幀,由此,該值是90000/25=3600),並根據幀類型和GOP類型計算出PTS值。但這段時間PCR值並不是增加3600,導致DTS和PTS相對PCR變大或變小。有些解碼器(機頂盒)沒有采用壓控震盪器,其系統時鍾為固定的27MHz,只是用接收到的PCR值,初始化本地系統時鍾計數器的值。編碼器和解碼器(機頂盒)之間不能保持嚴格的鎖定,這樣就可能導致解碼器(機頂盒)丟幀。而有的解碼器(機頂盒)在發生丟幀的情況后就不再嚴格按DTS和PTS解碼顯示,而是根據緩沖區的情況來解碼,由於視音頻編碼的延時不一樣,就可能導致音畫不同步。
此外,在從編碼器到解碼器(機頂盒)的傳輸過程中,由於存在着復用器、調制器等變延時緩存的環節,可能導致PCR包的傳輸延時不恆定,有大有小。如果不對PCR進行修正,也可能導致以上問題的發生。
總結
由以上分析可以看出,編碼器和解碼器(機頂盒)都有可能導致音畫不同步的發生。我台在對各品牌的編碼器進行測試后,選擇了一家測試指標比較好的編碼器,替換下原來的編碼器,使得電視音畫不同步的現象得到了較大改善。而網絡公司在下一步引進機頂盒的工作中,也將加強對相關指標進行測試,以改善廣大觀眾的收視質量。當然,在推進我國廣播電視數字化的進程中,還需要我們廣大電視工作者,以及各設備生產廠家的共同努力,才能最終取得圓滿成功。
(全文完)