基于DVB-SI的數(shù)字有線電視機頂盒節(jié)目指南的設(shè)計實現(xiàn)
北京科技大學(xué)信息工程學(xué)院 武漢科技大學(xué)信息科學(xué)與工程學(xué)院 摘要本文介紹了電子節(jié)目指南信息的構(gòu)成以及MPEG-2PSI和DVB-SI信息規(guī)范,提出了一種EPG信息的存儲結(jié)構(gòu)和節(jié)目數(shù)據(jù)庫的生成方案,并據(jù)此講述了如何在數(shù)字有線電視機頂盒中生成電子節(jié)目指南EPG。 關(guān)鍵詞機頂盒MPEG-2PSI節(jié)目專用信息DVB-SI業(yè)務(wù)信息電子節(jié)目指南 1引言 目前數(shù)字電視已經(jīng)進入快速發(fā)展階段,與數(shù)字電視相關(guān)的業(yè)務(wù)也將大幅度增長。當(dāng)節(jié)目運營商將大量的節(jié)目信息通過有線網(wǎng)絡(luò)提供給用戶,用戶在欣賞高質(zhì)量節(jié)目源的同時如何才能方便快捷地找到這些業(yè)務(wù)或信息就成了開發(fā)者們需要解決的一個關(guān)鍵問題。電子節(jié)目指南(EPG,ElectronicProgramGuide)正是為了方便用戶對信息的獲取而制作的運行于用戶端綜合接收解碼器(IRD,IntegratedReceiverDecoder)的應(yīng)用程序,它通過電視屏幕向用戶提供由文字、圖形、圖像組成的人機交互界面,負(fù)責(zé)電視節(jié)目和各種業(yè)務(wù)的導(dǎo)航[1]。用戶通過電子節(jié)目指南,能夠了解到節(jié)目的相關(guān)信息(包括節(jié)目時間、播放時間、內(nèi)容梗概等),并且實現(xiàn)對節(jié)目的快速檢索和訪問。 EPG的形成依賴于節(jié)目播出前端將符合DVB(DigitalVideoBroadcasting)標(biāo)準(zhǔn)的業(yè)務(wù)信息(SI,ServiceInformation)插入到承載節(jié)目信息的傳送流(TS,TransportStream)中,這些SI信息攜帶了EPG所需的全部數(shù)據(jù)。 2電子節(jié)目指南信息的組成和傳輸 電子節(jié)目指南信息(以下簡稱EPG信息)由兩部分組成:基本EPG信息和擴展EPG信息。 基本EPG信息是指完全可以用《數(shù)字廣播業(yè)務(wù)信息規(guī)范(GY/Z174-2001)》中的網(wǎng)絡(luò)信息表NIT、業(yè)務(wù)群關(guān)聯(lián)表BAT、業(yè)務(wù)描述表SDT、事件信息表EIT等進行描述的EPG信息。 擴展EPG信息是指在基本EPG信息之外,通過數(shù)據(jù)輪播傳遞的EPG信息,這些信息的入口采用EPG映射表EMT進行描述,信息的內(nèi)容被封裝成具有多級目錄結(jié)構(gòu)的文件系統(tǒng),稱為擴展EPG內(nèi)容信息(XECI)。 一個EPG系統(tǒng)至少應(yīng)該包括基本EPG信息[2]。 本文也僅就基本EPG信息進行論述。 “數(shù)據(jù)廣播業(yè)務(wù)信息規(guī)范”中NIT、BAT、SDT、EIT和EMT表都被分成一個或若干個段(section)來表示,然后插入到TS包中。段是一種用來把SI信息表和EPG信息表映射為TS包的語法結(jié)構(gòu),這些信息符合GB/T17975.1定義的專用段語法結(jié)構(gòu)。段可直接映射到TS包中。段可能起始于TS包有效負(fù)載的起始處,但這并不是必須的,因為TS包有效負(fù)載的第一個段的起始位置是由pointer_field字段指定的[3]。 3MPEG-2PSI節(jié)目專用信息與DVB-SI信息簡介 在數(shù)字電視中,所有的音、視頻信號和數(shù)據(jù)信息經(jīng)過編碼后,在進入傳輸系統(tǒng)前,必須按照MPEG-2標(biāo)準(zhǔn)打包,形成固定長度的TS包,包長為188字節(jié)或204字節(jié)。對于這些長度相同的包,如果沒有引導(dǎo)信息,IRD是無法找到所需要的碼流的。為此在MPEG-2標(biāo)準(zhǔn)中專門定義了節(jié)目專用信息(PSI,ProgramSpecificationInformation),其作用在于自動設(shè)置和引導(dǎo)IRD進行解碼[4]。 PSI信息由以下四種表組成:(1)節(jié)目關(guān)聯(lián)表PAT;(2)節(jié)目映射表PMT;(3)網(wǎng)絡(luò)信息表NIT;(4)條件訪問表CAT。 在實際應(yīng)用中,解碼器IRD要對某一路特定碼流進行解碼時,首先要找到PAT表,根據(jù)PAT表找到所需的節(jié)目及該節(jié)目對應(yīng)的PMT表的PID。PMT表中可能包含多個數(shù)字碼流,每個碼流都有一個唯一的PID與之對應(yīng)。如果要解碼的是視頻碼流,則在PMT表中找到videoPID值,再從TS流中過濾出PID值與之匹配的TP包并送到視頻解碼器。 MEPG-2的PSI信息提供了相關(guān)節(jié)目組成和相互關(guān)系的信息,從而使得接收端IRD可以對多路傳輸流進行解析,但是這些信息在實際應(yīng)用中仍顯得不夠,它不能提供節(jié)目的名稱、節(jié)目的開始時間、持續(xù)時間及節(jié)目的附加信息等。為此在DVB中擴展定義了SI業(yè)務(wù)信息。PSI信息基本上都是與現(xiàn)行流(AS,ActualStream)相關(guān)的,而SI信息則可以包括不在現(xiàn)行流中的一些業(yè)務(wù)和事件信息,從而允許用戶進行更多的選擇和了解更多的其它業(yè)務(wù)信息。 與PSI定義的四種表不同,SI中定義了9種表,其中構(gòu)成基本EPG信息的最重要的表是網(wǎng)絡(luò)信息表NIT、業(yè)務(wù)描述表SDT和事件信息表EIT。SI表傳送的信息都是通過描述符(descriptor)的形式給出的。 每個描述符都以descriptor_tag(用于唯一標(biāo)識descriptor的類型)和descriptor_length開始。不同的描述符用于描述不同SI表中承載的信息[6]。 4系統(tǒng)介紹 本EPG系統(tǒng)是在STMicroelectronic公司所提供的機頂盒開發(fā)方案上實施的,其主控制芯片采用STi5518,內(nèi)部集成有32位主CPU、專用DVB傳輸流解復(fù)用和解擾模塊、MEPG-2音、視頻解碼單元、數(shù)字視頻編碼器及各種接口等。與之配套的軟件開發(fā)平臺選用的也是該公司開發(fā)的STLite/OS20嵌入式操作系統(tǒng),支持多任務(wù)、存儲器管理、進程調(diào)度、定時器管理等實時特性。該系統(tǒng)能實時接收用戶通過遙控按鍵或前面板觸發(fā)的交互信號,實現(xiàn)節(jié)目基本信息的瀏覽、節(jié)目列表的生成、節(jié)目之間的跳轉(zhuǎn)以及節(jié)目預(yù)告信息的查詢等。 5系統(tǒng)設(shè)計及實現(xiàn) 5.1EPG信息的存儲結(jié)構(gòu) TS流里攜帶的EPG數(shù)據(jù)信息通過IRD接收以后都以樹狀鏈表的結(jié)構(gòu)存儲在PROG_INFO_STRUCT和TRANSPONDER_INFO_STRUCT這樣兩個結(jié)構(gòu)中。 在本機頂盒有關(guān)節(jié)目操作的各項功能中,絕大部分都與節(jié)目數(shù)據(jù)庫有關(guān),比如自動節(jié)目搜索時,需要建立節(jié)目數(shù)據(jù)庫,并為搜索到的節(jié)目在數(shù)據(jù)庫中建立相應(yīng)的數(shù)據(jù)單元,用于存儲該節(jié)目的各種信息;在切換節(jié)目時,需要根據(jù)不同節(jié)目中音、視頻數(shù)據(jù)的PID值從而選擇不同的碼流進行音、視頻解碼等。 節(jié)目數(shù)據(jù)庫主要來自PSI表的內(nèi)容。 在具體的軟件實現(xiàn)過程中,節(jié)目數(shù)據(jù)庫的建立主要通過ParsePAT()、ParsePMT()兩個函數(shù)來實現(xiàn)。ParsePAT()函數(shù)調(diào)用的結(jié)果是得到有線傳輸系統(tǒng)中不同的節(jié)目PID,而ParsePMT則獲取各個節(jié)目中音、視頻碼流的PID值。 5.2節(jié)目跳轉(zhuǎn)的實現(xiàn) 系統(tǒng)響應(yīng)用戶在不同節(jié)目之間的切換時,需要將用戶選定節(jié)目的音、視頻碼流從復(fù)用的多路節(jié)目碼流中提取出來并分別送到音、視頻解碼器進行解碼。它依賴于硬件可編程傳輸接口(PTI,ProgrammableTransportInterface)來實現(xiàn)。在系統(tǒng)生成的節(jié)目數(shù)據(jù)庫結(jié)構(gòu)中的stProgNo變量存儲有轉(zhuǎn)發(fā)器號TransponderId及節(jié)目的音、視頻PID值。 5.3事件信息的獲取 事件信息表EIT按時間順序提供每個業(yè)務(wù)中包含的事件的信息。(這里的事件相當(dāng)于傳統(tǒng)意義上的節(jié)目,而業(yè)務(wù)則指的是提供節(jié)目源的某個電視臺,如業(yè)務(wù)“中央電視臺-1”的事件“新聞聯(lián)播”。)EIT包含兩種不同類型的表,分別為EITpresent/following(簡稱EITp/f)和EITSchedule(EIT-S)。EITp/f給出了指定業(yè)務(wù)中當(dāng)前和后一個事件的信息,而EIT-S則包含一周內(nèi)或更長時間的節(jié)目預(yù)告信息。任何構(gòu)成EIT的eventinformationsection均在PID為0x0012的TS包中傳輸,它給出了業(yè)務(wù)中事件的名稱、事件開始時間、持續(xù)時間及其他一些信息。 以下以EITp/f為例來講述事件信息的獲取方式: 在EITp/f中,每個業(yè)務(wù)service都用兩個section分別來描述當(dāng)前(present)和后續(xù)(following)信息,其中的sectionnumber為0的用來描述當(dāng)前事件,而sectionnumber為1的section則用來描述后續(xù)事件。 在節(jié)目信息結(jié)構(gòu)PROG_INFO_STRUCT中,定義了EVENT_INFO_BASIC類型的二維數(shù)組event_info_database[2]用來存放一個業(yè)務(wù)中的present和following事件的信息。這些信息包括事件的名稱、事件的開始時間、事件的持續(xù)時間。 事件的日期和時間在TS流里是按照MJD(ModifiedJulianDate,修正的儒略日期)+UTC(UniversalTimeCo-ordinate,通用時間坐標(biāo))的格式并以16進制的形式給出的。在MJD+UTC和localMJD+localtime之間的轉(zhuǎn)換可參照GY/Z174-2001來進行。如TS流里的數(shù)據(jù)為0xCE1F005600010600,則轉(zhuǎn)換以后得到的信息為:該事件的播出時間為2003年5月8日,星期四,開始時間為00:56:00,持續(xù)時間為01:06:00。 而事件的名稱則通過解析描述符short_event_descriptor來實現(xiàn)。并將得到的信息存儲在event_info_database結(jié)構(gòu)中。 所有解析得到的信息最終都將存儲在節(jié)目數(shù)據(jù)庫中,提供給顯示模塊直接調(diào)用。 6結(jié)束語 真正完整意義上的EPG的功能是十分強大的,它不僅能提供節(jié)目表單和當(dāng)前節(jié)目播放等基本功能,還可提供節(jié)目預(yù)定和家長分級控制等高級功能。本文從實用的角度給出了一個基本EPG系統(tǒng)的實現(xiàn)方案。另外我們也實現(xiàn)了EPG交互式應(yīng)用中的SI增值業(yè)務(wù)如天氣預(yù)報、新聞、股票數(shù)據(jù)等的接收,以菜單觸發(fā)的形式提供給用戶一個由文本和圖形組成的反饋信息。 王景存,北京科技大學(xué)信息工程學(xué)院,副教授,博士; 王瑞胡,武漢科技大學(xué)信息科學(xué)與工程學(xué)院,碩士研究生,研究方向:數(shù)字信號處理。 ----《中國數(shù)據(jù)通信》 |
|