第五章 EPG原理

来源:百度文库 编辑:神马文学网 时间:2024/04/29 07:42:10
第五章  EPG原理
EPG就是"电子节目指南",相当于一个节目菜单的功能.在一个TS流中,可以提供当前流的所有信息,如频率,调制方式,频道号,所有节目的PID,名称等信息,也可以根据需要提供其他相关联的TS流(例如同一电视台同步播放的其他频率的节目信息)的信息.解码器接收这些信息,形成一个固定格式的菜单让用户选择需要收看的频道或节目,这就是"EPG".不仅如此,EPG还可以对节目进行分类,比如节目可以是电影,也可以是新闻,这样,把属于电影的节目归在一起,把属于新闻的节目归在一起,这样对用户来说检索节目就变得非常的方便.
 EPG的实现也归功于DVB的SI信息.和EPG功能相关的SI有NIT(网络信息表),EIT(环境信息表),SDT(服务描述表),BAT(群组关联表),TDT(日期时间表)和TOT(时间偏移表).下面简单分析这些表所携带的信息.
NIT,Network Information Table,网络信息表
 NIT提供如网络名称(相当于电视台名称),传输参数(如频率,调制方式等).这个表格一般是解码器内部使用的数据,当然也可以做为EPG的一个显示数据提供给用户做为参考.
 NIT格式如下:
 
 各字段含义如下:
  table_id:8bits标志,应该是0x40或0x41.当table_id==0x40时候,这个NIT描述的是当前流的网络信息,否则描述的是其他流的网络信息(一般是电视台同步播放的其他TS流信息).
  section_syntax_incicator:1bit的段语法标志,应该是'1'
  reserved_future_use:1bit保留未来使用位,一般是'0'
  reserved:2bits保留位,一般是'00',这是防止控制字冲突而设置的.
 section_length:12bits段长度,从network_id开始,到CRC_32(包含)结束的字节总数.
 network_id:16bits的网络ID号码,DVB内唯一的一个号码,标志不同的电视台.
  Reserved:2bits保留意见位.
 version_number:5bits的版本号码,当NIT内容有任何改变时,该字段会递增1(提醒解码器更新NIT信息).
 current_next_indicator:1bit的当前下次使用标志,一般是'0'
  section_number:8bits的当前段号码.
  last_section_number:8bits的当前段号码.
 reserved_future_use:4bits保留未来使用,现在应该是'0000'.
 network_descriptors_length:12bits网络描述符长度,单位是字节.
 descriptor():N个不同的描述符结构,一般是网络名称描述符,解码器在此获取当前的网络名称(即电视台名称)
  reserved_future_use:4bits未来保留位,当前应是'0000'.
 transport_stream_loop_length:12bits的字节总数,就是随后的循环的字节总数.
  transport_stream_id:16bits的网络ID
 original_network_id:16bits原始网络ID.如果original_network_id==transport_stream_id说明该TS流是直播节目,否则说明该TS流是转播节目.
 transport_descriptors_length:12bits的描述符长度,随后的N个描述符占用的字节总数.
 descriptor(),N个描述符,可以有多个连续但不相同的描述符号,如网络名称描述符,传输系统参数描述符,解码器分析这些描述符获取网络的不同信息.
  CRC_32:整个段的CRC校验值,一般可以忽略.
EIT, Event Information Table,环境信息表
 环境信息表提供如下信息:节目段的标识号、起始时间、节目长度、播放状态、是否加密;指向特定信息的链接信息;节目段多语种的简短介绍;节目段的详细介绍;两段同样节目段的时间偏移;基本码流类型,如视频的幅型比、伴音的类型、字幕的类型等;使用的加密系统;节目类型,如电影/戏剧、新闻、综艺、体育、少儿、音乐、艺术、社会政治、文教等;节目限定年龄的级别;给出实现交互式回传信道的电话号码;为满足各节目段的码率而提供的缓存大小信息及私有数据等.
 环境信息表中提供了类似于广播电视报所提供的节目表的内容,在SI中,只有EIT才有可能被加密。根据EIT及其它表所提供的信息,可以出五花八门的电子节目指南。-如:按节目类型检索、按时间检索及对某类节目的锁定等.
 EIT表格定义如下:
 
 各字段定义如下:
 table_id:8bits的表ID,如果当前表是重现/跟随信息,则table_id是0x4e(当前流)或0x4f(其他流),否则如果是时间段信息,则table_id是0x50~0x5f(当前流)或者0x60~0x6f(其他流).
 section_syntax_indicator:1bit的段语发标志符,应该是'1'
  reserved_future_use:1bit未来保留位,应该是'0'
  reserved:2bits的保留位,应该是'00'
 section_length:12bits的段长度,单位是bytes,从service_id开始到CRC_32(含)结束.
 service_id:16bits的频道号,同PMT中的program_number;
  reserved:同上.
 version_number:5bitsEIT版本号码.内容有更新则此字段递增1,表示需要更新EIT信息.
 current_next_indicator:1bit的当前下次应用标志,一般是'0'
  section_number:8bits当前段号码.
  last_section_number:8bits最后段号码.
  transport_stream_id:16bits的TS流ID.
  original_network_id:16bits的原始网络ID.
  segment_last_section_number:未知功能.
  last_table_id:未知功能.
 随后是N个Event的信息:
  event_id:16bits环境ID,流唯一数字.
  start_time:40bits的开始时间.UTC格式.
  duration:24bits的持续时间(节目长度),BCD格式.
 running_status:2bits运行状态,定义和PMT中的running_status相同.
  free_CA_mode:1bit的是否加密标志,'0'表示没有加密.
 descriptors_loop_length:12bits描述符总长度,单位Bytes.
  descriptors():N个描述符列表.
TDT和TOT提供的是系统时间信息,结构较简单,请参考EN300468文档!
RST,Running Status Table,播放状态表
 RST提供的是TS流中的节目播放状态(是否正在播放等)的信息.
 RST格式定义如下:
 
 各字段含义如下:
  table_id:8bits表ID标志,应该是0x71.
 section_syntax_indicator:1bit的段语法标志,应该是'1'.
  reserved_future_user:1bit未来保留位
  reserve:2bits保留位.
 section_length:12bits段长度,单位Bytes.实际就是随后的for()循环中所有的字节数目.
  transport_stream_id:16bits的TS ID,DVB内唯一.
  original_network_id:16bits原始网络ID.
 serviced_id:16bits节目号,和PMT内的program_number相同含义.
  event_id:16bits环境ID,同EIT定义.
  reserved_future_use:5bits未来保留位.
 running_status:3bits运行状态.0x01表示不在播放中,0x02表示即将播放,0x03表示播放被暂停,0x04表示正在正常播放,其他属于未定义状态.
 实际上,以上标准SI表提供出的EPG信息是比较少的,实际上有用的EPG信息都是包含在描述符中,就是Table结构内部的descriptor()字段中.DVB系统提供了很多标准的descriptor(),不同的描述符展示不同的信息.具体的描述符结构请参考EN300468.
 标准描述符简单介绍如下:
(1) Bouquet name descriptor:组名称描述符,提供一个组的名称符号.
(2) CA identifier descriptor:CA系统控制字描述符,提供CA的加密字.
(3) Component descriptor:组件描述符号,提供系统内所有组件的名称等信息.
(4) Content descriptor:内容描述符号,提供系统节目的内容信息(实现按内容检索功能)
(5) Country availabilitydescriptor:有效国家列表描述符号,提供该服务允许使用的国家名称列表.
(6) Data broadcast descriptor:数据广播描述符,提供数据广播信息.
(7) Data broadcast id descriptor:数据广播标志描述符号.
(8) Cable delivery systemdescriptor:DVB-C传输系统参数描述符,提供DVB-C参数信息.
(9) Satellite delivery systemdescriptor:DVB-S传输系统参数描述符,提供DVB-S参数信息.
(10) Terrestrial delivery systemdescriptor:DVB-T传输系统参数描述符,提供DVB-T参数信息.
(11) Extended event descriptor:扩展环境描述符号.
(12) Frequency list descriptor:频率列表描述符,提供所有的频率信息.
(13) Linkage descriptor:可连接描述符.
(14) Local time offset descriptor:当前时间信息.
(15) Mosaic descriptor:马塞克描述符.
(16) Multilingual bouquet name descriptor:多语言代码组名称描述符.
(17) Multilingual component descriptor:多语言组件描述符号.
(18) Multilingual network name descriptor:多语言网络名称描述符.
(19) Multilingual service name descriptor:多语言服务名称描述符.
(20) NVOD reference descriptor:VOD点播参考描述符.
(21) Network name descriptor:网络名称描述符.
(22) Private data specifier descriptor:私有数据描述符.
(23) Short smoothing buffer descriptor:传输速率描述符.
(24) Service descriptor:服务器描述符,提供电视台名称和电视节目名称等信息.
(25) Service list descriptor:节目列表描述符,提供所有的节目频道号和节目类型.
(26) Service move descriptor:节目删除描述符.
(27) Short event descriptor:短消息描述符.
(28) Stream identifier descriptor:流标志描述符.
(29) Stuffing descriptor:填充数据描述符.
(30) Subtitling descriptor:子字幕描述符.
(31) Telephone descriptor:电话号码描述符.
(32) Teletext descriptor:图文信息描述符.
(33) Time shifted event descriptor:时间消逝环境描述符.
以上描述符结构定义在EN300468,所有的描述符都插入到不同的SI表中,因此描述符的分析应该结合不同的SI表来进行.但是这种插入又是有规律的,如NIT表只可能插入Terrestrial delivery system descriptor之类或者 Network namedescriptor,绝对不可能插入Servicedescriptor!具体插入的什么描述符,只能通过描述符的第一个字节descriptor_tag来判断.
 因为EPG的实现是非常灵活的,不同的应用需要不同的EPG功能,因此在<>中没有加入EPG功能.然而实际上,EPG功能比较容易实现,但因为EPG错综复杂的SI,写EPG功能之前还是需要仔细理清思路才能实现的.
二 DVB码流中业务信息与电子节目指南
怎样在众多的数字电视节目中快速地找到用户所需要的节目,是数字电视应用所要解决的问题。在DVB接收机中通常都使用电子节目指南(EPG)这一工具来达到快速查找节目的目的,生成EPG的数据来源于DVB码流中的有业务信息SI信息。
在数字电视中,所有视频、音频、文字、图片等经数字化处理后都变成了数据,并按照MPEG-2的标准打包,形成固定长度(188个字节)的传送包,然后将这些数据包进行复用,形成传送码流(TS),通常一个频道对应一个TS流,一个频道的TS流由多个节目及业务组成。在TS流中如果没有引导信息,数字电视的终端设备将无法找到需要的码流,所以在MPEG-2中,专门定义了PSI信息,其作用是自动设置和引导接收机进行解码。PSI信息在复用时通过复用器插入到TS流中,并用特定的PID(包标识符)进行标识。
在MPEG-2标准中定义的节目信息PSI,是对单一码流的描述,由于系统通常存在多个码流,为了使使用者能在多码流中快速地找出自己需要的业务,在DVB对MPEG-2的PSI进行了扩充,在PSI四个表的基础上再增加了九个表,形成SI。SI是对整个系统所有码流的描述,描述系统传输内容、广播数据流的编排和时间表等的数据,它包括PSI信息。
一、节目信息(PSI)
PSI由节目关联表(PAT)、条件接收表(CAT)、节目映射表(PMT)和网络信息表(NIT)组成,这些表插入到TS中传输。PSI指定了如何从一个携带多个节目的传送流中正确找到特定的节目,当接收机要接收某一个指定节目时,它首先从节目关联表中取得这个节目的节目映射表的PID值,然后从TS中找出与此PID值相对应的节目映射表,从这个节目映射表中获得构成这个节目的基本码流的PID值,根据这个PID值滤出相应的视频、音频和数据等基本码流,解码后复原为原始信号,删除含有其余PID的传送包。MPEG-2传送流的结构如图1所示。
 
图2是PAT与PMT的关系及结构图。
 
图3是CAT与NIT的结构图。
 
从上面的几幅图中可知,要保证传送流能正常接收,在该流中至少有一个完整有效的PAT。CAT描述了节目的加密方式,它包含了节目的EMM识别PID,只有授权的解码器才能由CAT收到密钥,解码出相应的数据流。NIT包含节目的频道调谐参数、频率、符号率等物理传输网信息,这些信息使得接收机可以按照用户的选择以很少的延时或无延时地改变频道、调谐参数,正确地解码出TS。由于PSI数据的完整性十分重要,因此在每个PSI段中均需要加校验码。
二、业务信息(SI)
PSI数据只提供了单个TS的信息,使接收机能对单个TS中的不同节目流进行解码,但它不能提供多个TS的有关业务和节目的类型、什么节目、什么时间开始等信息,因此DVB系统对PSI进行了扩展,提供了其它不同信息种类的多种表格,形成SI。在实用中,我们将SI所提供的数据通过有序地组织起来,生成类似节目报的形式,它能在电视机上即时浏览,这样将大大方便用户的使用,这就是电子节目指南EPG。
SI定义了不9个表
1、业务群关联表(BAT):它提供了业务群相关的信息,给出了业务群的名称以及每个业务群中的业务列表。
2、业务描述表(SDT):它包含了描述系统中业务的数据,例如业务名称,起始时间、持续时间等。
3、事件信息表(EIT):它包含了与事件或节目相关的数据,EIT是生成EPG的主要表。
4、运行状态表(RST):它给出了事件的状态(运行/非运行),运行状态表更新这些信息,允许自动适应切换事件。
5、时间和日期表(TDT):它给出了与当前的时间和日期相关的信息,由于这些信息更新频繁,所以需要单独使用一个表。
6、时间偏移表(TOT):它给出了与当前时间、日期和本地时间偏移相关的信息,由于这些信息更新频繁,所以需要单独使用一个表。
7、填充表(ST):它用于使现有的段无效,例如在一个传输系统的边界。
8、选择信息表(SIT):它仅用于码流片段中,如记录一段码流,它包含了描述该码流片段业务信息间段的地方。
9、间断信息表(DIT):它仅用于码流片段,如记录的一段码流中,它将插入到码流片段业务信息间断的地方。
这里值得一提的是,NIT在MPEG-2标准中未予以规定,而是由SI规定。
以上这些表在传送流中以数据段的形式传送,不同的信息表在传送流中通过赋予不同的特定的PID来进行区分(如表1所示)。而具有相同PID的不同信息表则进行由表标识符TABLEID来区分,在接收端通过查这些特定的PID来找到它们。这里说明一下,TS中有两种标识符,一种是包标识符,一种是表标识符。例如SI中的SDT的每一个表都对一个特定TS中的业务进行描述,这些业务可能是这个表所存在的TS的一部分,也可能是其它TS的一部分,这些SDT的PID都是相同的,这时候我们就可以通过不同的表标识符来区分它们,从而识别出那一个表所描述的业务是那一个TS的。
表1
表 PID值
PAT 0X0000
CAT 0X0001
PMT 0X0002
NIT 0X0010
SDT、BAT 0X0011
EIT 0X0012
TDT、TOT 0X0014
 
SI中的各表在实际使用中并不都需要传送,其中NIT、SDT、EIT、TDT是必需传送的,其它表则按照需要进行选择传送。
三、电子节目指南(EPG)
在DVB系统中,EPG可使用户方便、快捷、直观地找到需要的节目,根据《数字电视广播业务规范》对EPG的要求,EPG应提供节目单和当前节目播放等基本功能,还提供节目附加信息、节目分类、节目预订和家长分级控制等功能。EPG的这些功能均可通过SI来实现,也就是说SI是实现EPG功能的前提。在SI中,最重要的是NIT、EIT和SDT,利用这3个表中的数据就可以构成功能不同的EPG。
NIT的作用在上面已经说过,SDT的作用是提供对每个业务的描述,使用户能方便地了解每个业务的内容。对于每一个TS都有一个SDT与之对应。EIT实际上是一个节目表,对于每一个节目都存在一个独立的EIT。
EPG包含两个部分:一是播出前端的EPG编辑器;二是用户端接收机相应的控制软件,两部分一一对应,每个接收机的相关部分必须要按照前端定义的数据结构来定制,从而接收显示前端送出的业务信息。
SI一般在复用器合成TS时插入,有3种插入方式。
1、  将各表数据通过复用器厂家提供的应用软件接口由复用器插入到节目码流中。
2、 将各表数据按MPEG-2标准打包,通过码流播出卡输出,再将之送入复用器的异步串行口与节目码流复用。
3、 通过条件接收加扰器提供的接口插入,因此可通过局域网将数据表送入加扰器,由加扰器向码流中插入SI。
四、接收机与EPG
DVB接收机又称机顶盒,它是接收DVB节目的用户端设备。打开接收机,通常都有一个开机画面,这个画面实际上是一个存储于机顶盒内的一个菜单选择页面,它是由称为装载器的控制软件生成的用户操作界面,用户可通过遥控器进行选择操作。每个有线电视营运商所开发的这个界面都有所不同,但功能是一样的,其主要内容是营运商提供业务(节目)的分类和系统设置及一些辅助功能。这些内容构成了页面的最上层主菜单,其下一层菜单则通常由SI生成的EPG所构成。
主菜单中的系统设置是为引导接收机快速准确地接收到DVB节目而设的,其有最基本的有三个操作:信息检测、节目搜索、软件下载。
1、信息检测:它主要显示目前DVB系统的主频及相关参数,如主频频率、码率、调制方式、误码率、信号电平等,供维护人员检测参考。
这里说明一下,所谓主频是指SI所在码流的调制频率。
2、节目搜索:接收机在节目搜索时首先搜索主频频率,找出SI信息,然后生成EPG,又由EPG生成一个节目列表,这个节目列表包括节目名称、节目说明、节目播出时间等,并将这个节目列表作为下一层菜单,每个下层菜单项都指向相应节目所在的TS流,达到用户能方便快捷地收看到所需节目的目的。
节目搜索分两种方式:一种是手动搜索,一种是自动搜索。手动搜索方式是通过人工输入主频频率或DVB系统内所有TS流的调制频率来引导接收机接收;自动方式是由软件设置好相关的接收参数,由软件来引导接收机接收。
3、软件下载:在前面说过,接收机的装载器必须要按照前端定义的数据结构来定制,当前端需要变更播出节目时(如增加或减少节目的播出,调整播出节目的类别等)或更改主频频率时,接收机的装载器也应作相应的变更。所以,当前端要作节目变更时,营运商必须要同时变更接收机的装载器,并向所有接收机发出软件更新信息,用户收到信息后,就可用软件下载功能来更新接收机的装载器了。
   综上所述,构成一个DVB系统最基本的业务信息应该包括PSI和SI业务信息。EPG由SI生成,DVB接收机靠EPG来引导接收和选择收看DVB节目。