鄧 凱,楊秀芝,林 武
(福州大學 物理與信息工程學院,福建 福州 350108)
隨著數字電視的推廣普及,數字電視廣告開始以其豐富多彩的表現形式展現在人們眼前。傳統(tǒng)的模擬電視廣告是在節(jié)目錄制編輯的時候植入的,無論是一個角標還是一段廣告視頻,都已然成為了電視節(jié)目的一部分。所以傳統(tǒng)的模擬電視廣告發(fā)布權是掌握在前端電視臺手中的。而對于數字電視而言,由于電視信號的數字化和在屏顯示技術(On-Screen Display,OSD)的發(fā)展,數字電視廣告元素開始從電視節(jié)目中獨立出來以單獨的一個層展現在人們眼中[1]。這樣,數字電視網絡運營商也擁有了發(fā)布廣告的能力,與前端各級電視臺和演播室共同瓜分廣告市場這塊蛋糕[2]。時下流行的電子節(jié)目指南(Elec?tronic Program Guide,EPG)廣告就擁有著豐富的表現形式。它充分利用OSD層的空間,包括強制開機廣告、強制門戶廣告、導航條廣告、音量條廣告、頻道列表廣告、EPG菜單廣告、音頻廣播背景廣告等多種展現形式,這些形式的廣告伴隨著用戶的按鍵操作而出現,隨著操作界面的退出而消失[3]。但大多數數字電視廣告不具備實時更新功能,每個廣告位上的廣告元素一般是在機頂盒軟件升級時一起打包寫入到Flash中的,并在較長一段時間里重復使用。這對數字電視廣告的定點投放和個性化定制產生了制約。本文將論述一種數字電視廣告在線發(fā)布系統(tǒng)的構建,能夠實現廣告元素的實時接收和定時定位顯示。
系統(tǒng)總體架構如圖1所示。本系統(tǒng)通過衛(wèi)星接收機接收并解調通過衛(wèi)星天線接收下來的數字電視信號,前端廣告編輯發(fā)布模塊編輯的信息發(fā)送給條件接收系統(tǒng)(CAS),由CAS生成私有數據P_EMM包。數字電視信號(解調的TS流)與CAS生成的私有數據包一同發(fā)送給碼流信息插入模塊,由碼流信息插入模塊將帶有私有數據的TS包插進數字電視節(jié)目的TS流中。重組之后的TS流將由QPSK調制器重新調制后發(fā)送給數字電視機頂盒,經數字電視機頂盒解調后,濾取私有數據解析并顯示到電視機屏幕上。
前端廣告編輯發(fā)布模塊使用C#語言編寫,使用基于TCP的Socket編程技術實現與CAS的連接。在連接建立后,考慮到數據傳輸的可靠性,設計了如下的通信協(xié)議:
1)編輯發(fā)布模塊發(fā)送Tag=0x01給CAS;
2)CAS收到Tag=0x01后,返回Tag=0x02給編輯發(fā)布模塊;
3)編輯發(fā)布模塊收到Tag=0x02,驗證成功后發(fā)送Tag=0x03,然后發(fā)送廣告數據;
4)CAS收到Tag=0x03,將數據接收下來,并發(fā)送Tag=0x04確認;
5)編輯發(fā)布模塊收到Tag=0x04,若數據未全部發(fā)送完成,則繼續(xù)發(fā)送Tag=0x03并發(fā)送數據;若數據全部發(fā)送完成,則發(fā)送Tag=0x05。
廣告編輯發(fā)布模塊發(fā)送的一個包的最大長度為180 byte。每一個從廣告編輯發(fā)布模塊發(fā)送的包,到達CAS后,前面17 byte會被加入一些TS流固定標志位、循環(huán)冗余校驗位等信息進行重組。這些重組的數據為25 byte,加上后面的data數據組成一個188 byte的TS包,然后被發(fā)送到碼流信息插入模塊。
廣告編輯發(fā)布模塊可編輯的信息包括文字和圖片兩種類型。文字的信息量較小,一般一個數據包就可以承載全部信息。而廣告圖片的數據量比較大,需要用壓縮算法將圖片數據壓縮。本系統(tǒng)通過一個壓縮算法將BMP圖片數據進行壓縮,并將壓縮后的數據轉成BIN文件。廣告編輯發(fā)布模塊讀取BIN文件,每次截取140 byte組包,分成多個包將全部數據發(fā)送到CAS。
廣告編輯發(fā)布模塊還有用戶登錄,注冊和管理等功能,限于篇幅,這里不再詳細介紹。
碼流信息插入模塊在本系統(tǒng)中的作用主要是將CAS產生的私有數據包插入到節(jié)目碼流中實現傳輸。CAS把生成的私有數據包發(fā)送給碼流信息插入模塊,私有數據包被存放到EMM存儲器中,然后等待調度輸出。
后端數字機頂盒從TS流中過濾得到需要的P_EMM包進行數據解析處理。數據解析的程序處理流程如圖2所示[4-7]。
首先對P_EMM的前17 byte進行數據解析,然后根據得到的數據類型調用字幕信息處理解析進程或者角標信息處理解析進程對數據部分進行解析處理。
字幕數據處理解析進程將判決是否對收到的字幕數據進行解析處理,并將解析得到的顯示時間與從系統(tǒng)中提取的當前時間進行比對,根據比對結果進入到三個判決器中,控制字幕的顯示時間、顯示頻率和結束時間。角標數據處理解析進程和字幕數據處理解析進程的設計思想相似,但該進程需要處理多包數據。本系統(tǒng)接收端設計了一種亂序接收算法,能在幾十秒內將圖片數據接收完成。這種算法的思想是先創(chuàng)建一個很大的空數組check[],接收并解析包號為1的角標數據包,根據解析后得到的總包數NUM將check[2]到check[NUM]全部置1,然后進行亂序接收:只要收到一個角標數據類型的包,就解析提取它的包號ID,然后進行check[ID]的檢測,若為1,則接收該包的數據,并將check[ID]清零,否則丟掉該包。同時每次接收數據后,對數組的check[1]到check[NUM]進行求和,若和為0,說明所有數據包全部接收完畢。
數據解析處理程序只負責向消息隊列定時發(fā)送顯示請求,顯示請求被處理時會將有關標志位置1。界面顯示程序不停的檢測這些標志位,當檢測到標志位被置1時,開始顯示字幕或者角標,并在退出時將這些標志位清零。字幕和角標的顯示程序流程如圖3和圖4所示[8-10]。
圖3 字幕顯示程序流程圖
圖4 角標顯示程序流程圖
在按照如圖1所示構建的實際系統(tǒng)中進行測試,字幕可控的在屏幕上下兩個位置上滾動顯示,角標可控的在屏幕左上、左中、左下、右上、右中、右下六個位置顯示,所有時間定時器工作正常,字幕和角標按規(guī)定時間循環(huán)顯示并最后消失。當新的字幕或角標信息到達后,能夠即時替換掉當前顯示的字幕或者角標。實際效果如圖5和圖6所示。
本文論述的數字電視廣告在線發(fā)布系統(tǒng),主要工作集中在廣告數據的即時接收和定時顯示上。本文闡述了整個廣告在線發(fā)布系統(tǒng)的架構,介紹了高效的亂序接收算法,實現了在線發(fā)布的要求。從測試結果來看取得了很好的效果。
:
[1]吳資玉,龍鳳.新型數字機頂盒的視頻顯示及OSD[J].中國有線電視,2005(7):624-627.
[2]韋恩敏.“后轉換時代”數字電視廣告經營策略探討[J].中國數字電視,2007(2):54-56.
[3]李江濤.EPG廣告技術及業(yè)務開展淺析[J].中國有線電視,2012(1):66-69.
[4]ETSI TR 101 200 Version 1.1.1,利用DVB規(guī)范和標準的指南[S].1997.
[5]ETSI TR 101 211,DVB業(yè)務信息(SI)的使用和執(zhí)行指南(DVBSI)[S].2000.
[6]ETSI EN 300 468 V1.8.1,DVB 系統(tǒng)中的業(yè)務信息(SI)規(guī)范[S].2008.
[7]ETSI EN 301 192 V1.4.2,數據廣播的DVB規(guī)范[S].2008.
[8]張愛娟,葉宇煌,蘇凱雄.數字機頂盒的OSD設計與優(yōu)化[J].電氣電子教學學報,2009,31(5):77-79.
[9]葉寧,蘇凱雄,杜偉慶.數字機頂盒GUI系統(tǒng)的設計與實現[J].有線電視技術,2012,36(10):86-89.
[10]修曉琴,楊秀芝,鄭明魁.基于FPGA內嵌軟核的機頂盒OSD設計[J].電視技術,2013,37(13):70-72.