任阳山 赵济民 刘辛涛
(1.哈尔滨工程大学信息与通信工程学院,黑龙江哈尔滨150056;2.海军青岛航保修理厂,山东青岛266071;3.天津市和平区开封道4号航保代表室,天津300042 )
摘要:目前,有线数字视频广播(DVB-C)是我国有线数字电子技术的主要标准,涵盖了数字电视信号的传输、加扰以及解码等方面。随着技术的发展,数字电视机顶盒(STB)越来越多成为电视信号接入的关键设备,而其中电子节目指南(EPG)是数字电视基本的业务之一,是电视节目信息与用户的交互平台。论文简要概述了数字电视活动图像专家组(MPEG-2)传输码流结构,EPG的基本信息结构以及整个架构的设计与实现。
关键词:有线数字视频广播;活动图像专家组;电子节目指南;数字电视;机顶盒
中图分类号:TN949.197文献标识码:A文章编号:1009-3044(2012)01-0139-03
DVB-C digital TV EPG Design and Implementation
RENG Yang-shan1, ZHAO Ji-min2, LIU Xin-tao3
(1.College of Information And Communication Engineering of Harbin Engineering Harbin 150056,China; 2.University Navy Maritime Security repair shop of Qingdao,Qingdao 266071, China)
Abstract: At present, Cable Digital Video Broadcasting (DVB-C) is the main criteria of our cable digital electronic technology, covering digital TV signal transmission, scrambling and decoding and so on. As technology advances, digital TV set-top boxes (STB) to become more and more television signal access key equipment, and one electronic program guide (EPG) is the basic business of digital TV, the TV program information and user interaction platform. Paper provides a brief overview of the digital television transport stream structure, EPG information structure and the basic design of the architecture and implementation.
Key words:DVB-C; MPEG-2; EPG; Digital TV; STB
相对于传统的模拟电视而言,数字电视包含了更多的电视信息与业务,涵盖了视频、音频、实时数据等信息。所有的信息均通过符合MPEG-2标准的TS流进行传输,其中也包含了电视节目服务信息PSI。为了使得用户更好的寻找节目以及获得节目相关信息,在数字电视机顶盒之中设计了基于PSI实现的EPG(电子节目指南[1])。通过对获取的TS码流采用适当的解码技术,能够得到比如节目频道、节目数量、播放时间以及内容介绍等信息,使得数字电视具有了与用户的交互功能,是数字电视技术中的重要组成部分。
1传输码流结构
数字电视信号经过调谐与解调,在终端输出部分能够得到按照MPEG-2标准压缩的码流。MPEG-2标准规定了在传输流中的各个部分比如音频、视频以及各种传输数据所用格式,即定义了完整的TS流(MPEG-2传输流)与PS流(MPEG-2节目流)。在此标准中音频与视频数据进过编码压缩以后形成各自的基本流(ES流),然后将视频与音频的ES流按照一定的格式打包成为各自的基本信息流(PES流),随后通过复用技术将PES流以及辅助数据也按照不同的格式打包、编码成为PS流或者TS流。由于数字电视信号传输过程中误码率比较高,因此一般采用TS码流。每一个TS码流均由多个TS包组合而成,而每一个TS包固定长度为188Bytes,由4 Bytes长的包头和184 Bytes有效载荷组成。
TS包头以0x47开头的2Bytes数据作为同步字节,用于检测同步包的数据。当接收到同步字节时就代表下一个TS包的到来;起始指示单元指示出TS包具体数据的开始位置;随后的PID占据13 bites,用于区分不同类型的传输流包(音频和视频)的重要参数,通过PID数据可以知道此TS流包包含了哪一种信息;加扰控制可以提供给解码器进行判断是否需要对TS包进行解扰,但包头和自适应区是不能够被加扰的,如果检测到有自适应区则表示具体的数据要跳过一定长度的适应区之后才能获取;随后的连续计数器可以对所取得的TS包的传送顺序进行计数,可以让解码器判断在这个TS传输流中是否有丢失包数据和顺序传输错误[2]。因此TS数据包头对整个包的传输具有同步、识别与检测的功能,所有EPG的信息均从包头解析取得。
包头之后即是184 Bytes的具体数据,其中包含了每个TS包或者包括一个节目流中的音频或视频信息、或者包含了单一节目解密信息,或者是对节目专用信息即PSI表数据。对于一个PID分组的TS流包只包含一种信息[3]。PID主要用于区分一个或者多个复用的TS流所包含的节目。
2 EPG基本信息结构
TS码流由多个节目以及业务所组成,通过获取PSI信息来进行解析就能得到形成EPG所需要的数据。系统中由于存在多个码流,其中所包含节目也不相同,因此DVB-C在原来PSI信息的基础上增加了描述节目的数据结构,形成了SI信息。
SI信息由一个或表所组成,分别为节目关联表、节目映射表、网络信息表、业务描述表、事件信息表、条件接收表、运行状态表、时间和日期表、时间偏移表、信息选择表、间断信息表、业务群关联表、填充表。每种类型的表由一个或者多个子表所组成,而且每一个子表由一个或者多个具有相同的table_id(表标识符)的一系列段所组成[4]。段是一个语法结构,用于将TS流中的相应信息映射成为符合GB/T 17975.1标准的数据包。将每种表的各个段按照段号收集起来就可以组成一张完整的表[5],主要取得的表如下所示:
节目关联表(PAT):主要用于指出当前TS流中包含的节目编号[6]、网络信息表PID以及所对应的节目映射表。
节目映射表(PMT):每个节目映射表对应于一个节目[7],其中包含了相对应
节目的码流信息比如包含音频数据包的PID、视频数据包PID,如果节目加密,则还包括了加密系统中用于解密的ECM控制授权信息。
网络信息表(NIT):NIT表描述了整个传输网络的信息[8],主要传输了一个给定的网络传输的复用流的结构相关信息,以及网络本身所具有的特定信息与码流包含的所有频点信息。
业务描述表(SDT):SDT每一个子表是用来描述包含于一个特定的传送流中的业务。该业务可以是当前传送流的一部分,也可以是其它传送流的一部分,这个是根据表的table_id来进行判断。
事件信息表(EIT):事件信息表也是由多个事件信息段所组成,是制作EPG中重要的一个数据表。EIT是按照时间顺序来传送相应的业务所包含的事件信息。事件是每一个服务里面所包含的具体信息,是一组给定了起始时间和结束时间、属于同一个业务的基本广播数据流。比如:中央一套节目里面的焦点访谈、新闻联播就属于其中的事件。
3 EPG设计流程
PSI信息即节目数据信息是TS码流以一定的频率进行发送,每秒钟至少二十次,因此随时都能够在终端取得所需要的EPG参数,比如节目的频点数据、调制方式、符号率等,所以PSI信息不能够被加密。在PSI传输中,首先不同的信息表根据不同的TS包PID来获取,具有相同PID的不同信息表则由其各自的table_id来区分。
节目关联表PAT是首先需要从解码器取出的数据,装载节目关联表的TS包ID值为0x00,其table_id也为0x00。PAT表是所有PSI数据的根,当从解码器中获取到了整个PAT表,需要取出NIT表的PID和节目映射表PMT的PID。获取NIT表主要用于获得包含所有节目的频点频率、符号率以及业务号、业务类型;获取PMT的PID可以提供给解码器用来取出当前流的PMT表,每一个PMT表对应于一个具体的节目,其中包括了包含音频、视频PES数据的PID,通过找到属于这两个PID的TS包,即可以送至解码器进行对音视频数据的解码播放;随后获取PID为0x0011的SDT段的包,根据table_id为0x42取得当前TS流节目列表,0x46获取其它TS流节目列表。根据段的结构获取SDT表的service_id,其对应于PMT表中的program_number,都指向一个具体的节目号;根据PID为0x0012的TS包取得事件信息表EIT,EIT表记录了现行传送流与其它传送流的节目事件名称、开始与持续时间等信息,可以根据段的数据结构找到其中每一个service_id所对应的业务与节目事件、持续时间以及当前与后续节目的信息。考虑到EIT表所包含数据量太大,如果传送一周的所有节目数据,能够达到1MB容量,这会造成开始初始化时间过长以及占用太多内存空间,因此,目前设计的EPG只需取得现行传送流的EIT表,减少了资源的开销;由于音频、视频数据会被加密,所以我们还要取得条件接收表CAT。CAT的PID为0x0001,用于节目码流的解扰,并帮助解码器获取控制加密的加密控制信息(ECM)和加密管理信息(EMM)。
4 EPG架构实现
由于国标规定TS流传输频率为50-870MHz,因此在设备启动的时候先对调谐器设置从50MHz开始的频率、符号率、调制方式锁定频点,如果接收到数据,则获取PAT、PMT、NIT等表信息;随后接收当前频点上的PAT表,由固定的PID与table_id为0x00来识别获取,并将PAT表解析保存。
从解析的PAT表中取出当program_number为0时的network_id,虽然NIT的固定PID为0x0010,但是这样容易产生不确定性,因此我们采取从PAT表获取NIT表的PID的方式,如果从PAT表中找不到NIT表PID,则将NIT的PID默认为0x0010。
在NIT过滤器中依据NIT表的PID与table_id取得NIT表,解析并且保存;然后从其中取出业务列表描述符中的节目服务号(ser? vice_id)与节目服务类型(service_type)保存至总体数据结构dvb_search_table_t的链表中,在这个链表中以service_id为主线,每一个service_id所代表的结构信息作为链表中的一个单元,具体结构如下:
typedef struct dvb_search_eit
{
unsigned service_id;
unsigned long start_time;
unsigned duration;
char *event_name;
struct dvb_search_eit *next;
} dvb_search_eit_t;//从当前流取得的EIT表信息
typedef struct dvb_search_table
{
unsigned program_num;//通过NIT表获取
float freq;//通过NIT表获取
unsigned modulation;
unsigned symbol_rate;
int type;//当前节目类型
unsigned video_id;
unsigned audio_id;//从当前流取得
char *program_name;//SDT(当前流和其它流)
dvb_search_eit_t*eit_table;//对应于当前service_id的所有节目时间信息
struct dvb_search_table *next;
} dvb_search_table_t;//DVB总体结构当从NIT的业务列表描述符取出所有的service_id之后,在程序中就要建立对应的链表,这样在用户搜索每个电视台时能够根据program_number号找到对应的节目名称、类型、事件信息以及音视频TS数据包。其中的freq、modulation、symbol_rate从NIT表中有线传送描述符中获取。经过这两个步骤网络信息已经全部获取,之后使用已经取得的频点、调试方式、符号率再次输入调谐器,锁定频点,即可以提供选台的功能。
在已经锁定的频点下取得PAT表,获取保存当前流下的所有program_number以及对应的PID,如果此时需要播放当前节目,就可以找到对应program_number的PMT表并解析,得到音频、视频流PID送入播放模块;同时,还要在PMT表中取得几个字段:PCR_PID、stream_type。其中通过PCR_PID找到记录PCR域的数据包送入播放模块进行音频、视频同步,而stream_type为0x02时代表是视频流,为0x04时候为音频流;最后还要在PMT表中检测是否有CA描述符,如果有则需取出其中的CA_system_ID和CA_PID字段并保存以便搜索到用于解密的ECM包。根据PID为0x0011,table_id为0x42与0x46接收当前流与其它流的SDT表并解析,取得所有的service_id与其对应的业务描述符中service_name,链入链表,因此能够提供给用户显示所有的节目选择,如果用户选择某个节目,则可以循环至第4步骤来播放节目。
当选择某个节目即service_id之后,为了获取更多节目信息,就要取得EIT表里对应节目的数据。获得现行传送流的当前/后续事件信息,则获得table_id为0x4e的表;如要获得一周内的节目事件信息,则还要获取table_id为0x50至0x5f的表;从表中取得当前流所有service_id对应的start_time、duration以及短事件描述符中的event_name,保存至dvb_search_eit_t结构链表中,每一个节目对应一个结构单元,当选择了某个节目时,会根据service_id在dvb_search_eit_t链表中搜索,找到对应单元就能取得事件与时间信息。
5结束语
本文从整体介绍了EPG的组成,包括对各个数据表与对应描述符的分析获取,从中取得EPG各种数据。随后设计并实现了EPG的整体架构以及运行流程,实现了快速搜台、显示全部电视节目内容、播放信息等功能,并能够对节目频道进行选择以及在播放节目的同时显示出当前节目的事件、时间等信息,实现了用户与电视节目设备之间的交互。
参考文献:
[1]彭志强.有线电视数字机顶盒与视频点播[OL].北京:广电在线, 2004.
[2] Digital Video Broadcasting(DVB), Specification for Service Information (SI) in DVB systems, EN300 468 V1.3. 1998.
[3]孙苏广. DVB条件接收系统简介[J].广播与电视技术, 1997, (3).
[4]郑立新等. DVB机顶盒中条件接收系统的设计与实现[J].电视技术,2003, (7).
[5]国家广播电影电视总局标准规划研究所.数字电视广播条件接收系统规范[S], 2001.
[6]黎宏松.数字视频技术及应用[M].北京:清华出版社, 1997.
[7]宋靖涛.数字机顶盒技术综述[J].北京:卫视周刊, 2003, (4): 76-78.
[8]李仓峰,张海亮,赵行波.一种基于DMB-T的车载数字电视终端的设计与实现[J].北京:电视技术, 2005,(12).