楊秀芝,郭文進
(1.福州大學物理與信息工程學院,福建 福州 350108;2.福建睿能電子有限公司,福建 福州 350003)
責任編輯:魏雨博
數字電視是近十幾年發展起來的高新技術,其在聲像質量、抗干擾性及傳送節目的數量等方面有模擬電視無法比擬的優點。數字電視的開播,不但使觀眾可以欣賞更多的優質節目,同時也為電視運營商提供了巨大的商機。電視臺在播出節目時出于運營的目的經常需要在一路碼流中插入自制節目、廣告、片花等其他音視頻TS流來覆蓋原來的某個節目[1]。在進行兩路節目源的切換時,如果直接停止當前播放的節目源,插入切換后的目標節目源,就會在切換瞬間出現黑屏、馬賽克,有些甚至會出現解碼錯誤、不能正常播放等情況[1-2]。國內外對數字電視碼流的實時拼接也有相關的研究,例如文獻[1-2]對拼接點的選擇進行了研究,提出了采用基于基本層(數據幀)的拼接方法,文獻[3]對兩路單節目進行了討論,著重研究了拼接點的問題。本文針對數字電視節目實時插播的需要,提出了一種在多節目碼流中實時插播一套單節目的新的節目切換方法,不僅考慮插播點的選擇,而且考慮兩路碼流都是可變碼率時的緩存選取和兩路數據在丟包最少情況下的合成,保證插播系統的正常播放。
目前使用的視頻壓縮標準無論是H.264,AVS還是MPEG-2,都在視頻層中規定了I幀、P幀、B幀3種幀類型[4]。I幀為幀內編碼,P幀為前向預測幀,B幀是雙向預測幀。下面以MPEG-2標準為例,介紹拼接點的選擇。視頻數據流在編解碼時,是以1個視頻圖像組或者視頻序列為單位來進行的(圖像組一般為15幀結構),視頻圖像組頭或者視頻序列頭第1個編碼幀即是I幀。因此需要檢測替換源節目的圖像組頭(標志位0x000001B3)即可找到I幀[4]。同時由于后向預測的引入,使得編碼后不再按原來視頻數據流的順序進行,所以解碼后需進行幀重排,因此必須使被替換的視頻流的圖像組完整通過,才能正確顯示替換之前的圖像,否則會產生馬賽克現象[3]。
因此無縫拼接點的選擇必須為被替換源視頻流圖像組的結束位和替換源節目視頻流圖像組的開始位。
為了進行無縫切換,在音視頻數據合成緩存器之前還需要加入一級緩存控制。由于替換源和非替換源節目數據到達時間是隨機的,且兩路節目的音視頻組包的大小也可能不一樣,如在檢測到替換源節目視頻信號的I幀包頭后,不一定能立即檢測到被替換源視頻信號B幀的包尾,此時需要將替換源I幀數據暫時存儲起來,等待被替換源1個視頻組包數據結束后再將替換源數據插入,以保證電視畫面的無間斷顯示。
緩存容量的大小應保證存儲的實時碼流不上溢,它與替換源和被替換源的實際傳輸碼率和采用的壓縮標準有關。當二者都是標清節目時,設節目碼率為3~5 Mbit/s;當采用MPEG-2標準的IBBPBBP編碼方式時,緩存容量應大于0.8~1.4 Mbit/s。
由于兩路TS流的時間基準點不同,從而導致切換后碼流中的PCR不連續。因此需要對切換后的PCR進行修正。修正的方法是找到拼接點前被替換節目的最后1個PCR和拼接點后替換源節目中的第1個PCR,求出偏移量,然后再替換源節目的PCR,DTS,PTS上加上相應的偏移量,來保證PCR的連續[2]。
切換時的另一個關鍵技術是數據的合成,這里利用復用的方法將替換源數據和被替換源中其他節目數據合成一路TS流。
首先將兩路碼流的PSI信息、替換源音視頻數據、被替換源其他節目的音視頻數據、PCR數據包等各自存入1個FiFo先進先出緩存器中。由于各路輸入碼流一般是可變速率的,因此本文采用不同碼率的兩種調度策略方式,使各個輸入流對固定的輸出總帶寬進行動態分享[5]。
兩級調度算法模型如圖1所示。

第一級調度使用大碼率(27 Mbit/s),根據先進先出及數據量多的先出兩種算法進行調度,將各路碼流合成一路傳輸流。
第二級使用預先設定的固定的輸出總帶寬,根據先進先出的原則將碼流均勻地輸出。
1.4.1 第一級調度
第一級調度同時使用先進先出及數據包數多的先出兩種算法,這兩種算法使用權重進行統一,權值最大者得到調度的機會。具有相同數據包數的支路具有相同的優先級,如果有多個支路具有相同優先級,則采用先進先出算法。調度器根據優先級來確定一級權值,同時調度器會為擁有同一級權值的支路根據先后順序分配一個二級權值。包數最多且數據最早到來的支路權值最大,將得到調度機會[4]。采用這兩種策略可以減小傳輸數據流的時延,同時還可以減小緩沖器容量的使用。
第一級調度的具體實現過程如下:
1)各路合成緩沖器有包進入時,通知調度器該路的優先級,調度器根據優先級為該包分配一個權值,最早到來的包二級權值最大,并依次減1。
2)調度器從各支路獲取目前最高優先級的支路。處于最高優先級的支路根據調度器分配的二級權值,判斷自己是否是權值最大者,若是,則發出調度使能信號給調度模塊,調度模塊對該路進行調度。
3)權值最大者調度出去后,該最高優先級內的各輸入的二級權值相應加1,使處于該優先級的第2個數據包獲得調度機會,依此類推進行調度。
設有N(N=5)路輸入,各個輸入的緩存為M個包,則上述過程可描述為對一個N×M的表進行調度,調度圖如圖2所示。

圖2中括號外的n-2,n-1,n分別表示當前各路的優先權值,括號內數字表示下一時刻的調度優先權值。設當前ts1,ts2,ts3支路分別存儲有一個數據包,到來的順序為3,2,1,調度器給出優先級“1”,第3路判斷自己的二級權值為n,因此通知調度器來讀數據。該包輸出后,處于“1”優先級支路的二級權值加1,此時由于第1路收到了第2個數據包,則最高優先級變為“2”,如虛線所示,因此第1路的第1個包獲得調度機會,若此時各路都沒包進來,則接下來調度的數據包順序為第2路的第1個包,第1路的第2個包。在各路輸入碼率比較均勻且輸出碼率大于等于各路碼率之和時,各個輸入的緩沖只需2個數據包的容量即可,考慮到輸入碼率的不均勻性,各路合成緩沖器應留有一定余量。由于本設計中第一級調度使用的碼流的最高處理時鐘為27 MHz,因此合成緩沖器選擇4個TS數據包的容量大小,即188×8 bit。這種方法可以實現無丟包的第一級調度。
1.4.2 第二級調度
第二級調度由于只有1個緩沖區,直接按照設置的碼率使用先進先出策略調度即可。其緩沖區能容納的包數設置為N×M個。當緩沖區將滿時,則將要進入的下個數據包丟掉。當緩沖區中存儲的數據不到1個TS包時,則插入1個空包輸出,保證緩沖區不會發生上溢和下溢。緩沖區容量越大,丟包的數量越少。
該系統由1塊FPGA芯片實現。其實現原理框如圖3所示。包括碼流同步模塊、節目匹配檢測模塊、節目過濾模塊、SI信息生成模塊、FiFo控制模塊和復用調度模塊。本設計有兩個輸入,一個為多節目源輸入(被替換源),另一個為單節目源輸入(替換源)。當不進行切換時,多節目源直接輸出不做任何修改;需要切換時,則先進行匹配檢測是否符合替換要求,若符合,則輸出該單節目,并過濾多節目中被替換的節目,同時重新生成新的服務信息表,若不符合,則不進行切換。各路碼流通過復用合成一路碼流輸出。

在進行節目數據的替換前,首先要對節目進行匹配檢測。節目匹配檢測主要有兩個功能,一個是進行標識符的匹配,檢測該單節目是否符合切換要求;另一個是進行過濾節目的匹配,檢測多節目源中是否有與待替換節目相同的PID值。
為了進行無縫切換,在各支路數據合成緩存器(合成FiFo)之前加入了一級替換緩存和緩存器控制電路。當選擇切換時,進行標識符匹配的單節目碼流在FiFo控制模塊的控制下并不進入合成緩存器中,此時復用輸出的為原多節目碼流的全部數據。當檢測到的標識符匹配時,發出過濾使能信號給節目過濾模塊,同時FiFo控制模塊1在檢測到替換源節目的視頻組包頭后讓該單節目的數據進入替換緩存器;節目過濾模塊在接收到過濾使能信號后過濾多節目數據包,過濾掉被替換的那一套節目,并將檢測到的服務信息表送入服務信息生成模塊進行節目信息的修改。當節目切換停止(即由切換狀態返回不切換狀態)時,FiFo控制模塊1在確定進入合成緩存器的數據包是音視頻組包的包尾時即停止該路數據的輸入,同時停止過濾使能,并將匹配檢測模塊中電路復位,不影響下次切換。此時過濾模塊對輸入的多節目流不做任何處理,多節目全部數據被送到下一級緩存區中被調度和傳輸。
在用Altera公司FPGA搭建的開發平臺上實現了上述節目切換系統,并利用計算機仿真和硬件測試兩種手段對系統進行了實際驗證。
仿真測試時,替換源碼流和被替換源碼流數據由軟件實時產生。切換系統用替換源中PID值為0x65的節目覆蓋被替換源TS流中PID值為0x66的節目,結果如圖4所示。

圖4中clk27為系統時鐘,clr_mend為異步清零,C1為切換使能,c1_cni_in為替換源TS包字節計數,c1_data_in為替換源TS包數據,douten為切換輸出有效信號,dout為切換后合成一路碼流的數據輸出。可看出,在douten=1后,原dout中PID值為0x66的節目有效數據(均為0)改變為了PID值為0x65節目中的有效數據。仿真結果驗證了該系統的正確性。
硬件測試時兩路輸入均采用從數字電視衛星接收機接收的節目數據,其中一路經過復用器變為單節目流作為替換源,另一路包含6套電視節目,作為被替換源,選擇被替換節目PID后,開始節目替換。經多次實際測試,在按下替換按鈕后,電視屏幕上能夠很快轉為播放替換源節目,轉換過程中沒有黑屏和馬賽克現象。
本文通過對基于MEPG-2標準的傳送流TS的研究,分析了無縫切換數字電視節目中經常會出現的黑屏和馬賽克現象的原因,闡述了相應的解決方法,并利用Altera公司的FPGA芯片實現了數字電視節目切換系統。該系統通過時序仿真驗證和硬件實際測試能夠流暢的進行電視節目的替換,即用一路單節目數據覆蓋另一路多節目中選定的節目數據,實現自制節目或廣告的插播,并且節目切換的過程中沒有黑屏和馬賽克現象。切換前后多節目碼流中各節目的所有標識符不變,不影響碼流中其他節目播放,實現了數字電視節目的無縫切換。電視節目插播的效果與專業級設備插播效果相比,在視覺上看不到差異,但用該方案實現的切換系統切換簡單、時延小、成本低、具有較高的實用價值。
[1]鄭冰洋.TS流無縫拼接技術研究[D].天津:天津大學,2006.
[2]崔巍,李煜.MPEG-2TS流無縫拼接的研究與實現[J].電視技術,2004,28(10):65-67.
[3]謝志華,鄒道文,汪勝前.一種新的數字電視TS流無縫拼接處理技術[J].廣播與電視技術,2006(2):80-82.
[4]ISO/IEC13818-1,Generic coding of moving pictures and associated audio:systems[S].1994.
[5]曹理宇,楊格蘭,何建新.基于權重的多路媒體流復用調度算法[J].湖南工程學院學報,2007,17(4):41-45.