TS各个表 与 SECTION 的解析 CAS原理
来源:互联网 发布:大华摄像头onvif端口 编辑:程序博客网 时间:2024/05/16 08:09
转自:http://blog.sina.com.cn/s/blog_6b94d5680101r5l6.html
TS各个表 与 SECTION 的解析 CAS原理
TS流,通过一个个的TS包来传送;TS包可以是传送PSI SI等各表的数据包,也可以是传送节目音视频数据(携带的PES包:音视频基本流包)的包;TS携带 PSISI等表的数据时,各个表以各表对应的Section语法格式做为传输单元存放到TS包中 以便传输;
TS包,有一个TS包的PID,系统就是根据这个PID来找对应的TS包;对于包含音视频数据(PES包)的TS包,系统通过TS的PID找到对应TS数据包,提取其中的数据组合成节目的音视频;对于携带PSISI等数据的TS包,系统通过TS的PID找到对应TS数据包,提取各个PSI SI数据表格,用来指导系统;
每不同的表中,我们看表的SECTION语法,都会看到descriptor()字样,descriptor()表示的也是一个语法结构,他具体对应的语法结构,由他内部的descriptortag字段决定,各个表的具体的定义,可以参见13818对应的定义,其中这里面还可以有用户的自定义描述符,可见下表:
the descriptors declared or defined within the present document,giving the descriptors-tag values andthe intendedplacement within the SI tables. This does not imply that their usein other tables is restricted. PSI SI表中包含什么descriptor,就用对应的语法去解!当然用户自定义的由用户自定义去解!!!
•PSI(ProgramSpecific Information)
–PAT (Program AssociationTable)节目关联表
–PMT(Program MapTable)节目映射表
–CAT(Conditional AccessTable)条件接收表
•SI(ServiceInformation)
–NIT(Network InformationTable)网络信息表
–SDT(Service DiscriptionTable)业务描述信息表
–BAT(Bouquet AssociationTable)业务群信息表
–EIT(Event InformationTable)节目事件信息表
–TDT(Time and Data Table)日期时间表
•事件 event
– 一组给定了起始时间和结束时间、属于同一业务的基本广播数据流。例如:一场足球比赛的半场、新闻快报或娱乐表演的第一部分
•节目 programme
–由广播者提供的一个或多个连续的事件。例如:新闻广播,娱乐广播。
•网络 network
一个传输系统,可以传输一组MPEG-2传输流(TS)。例如:某个有线电视系统中的所有数字频道•业务 service
–在广播者的控制下,可以按照时间表分步广播的一系列节目,我们也称之个频道,口语中也称之为节目
节目关联表PAT
•PAT定义了一个TS流中所有的节目,PAT的PID是0x0000,他是PSI信息的根节点。要查找节目播放信息必须从PAT开始。
•PAT中包含了TS中所有节目的完整列表,每个表项包括ServiceID和PMT(用于播放)的PID。
•PAT中ServiceID 为0的表项表示NIT。
节目映射表PMT
• PMT 提供了一个节目的ServiceID和用于播放的所有资源信息,例如音视频PID,PCR,字幕PID等。
• 简单的说, PMT完整的描述了一路节目是由哪些PES组成,给播放提供相应的资源。
• PAT与PMT关系
条件访问表CAT
•CAT提供了在一个或多个CA系统及其授权管理信息,用于节目的解扰工作。
•如果在一个TS中任何原始流进行了加密处理,那么在TS中一定要插入CAT。
•在CAT中,最重要的字段就是CA_descriptor()段。下面将简单讲述一下该描述段
•CA_descriptor用来表示含有ECM或者是EMM信息的TS的PID,即CA_PID。
–当CA_descriptor出现在PMT中时,CA_PID指向含有与访问控制信息(ECM)相关的节目包。
–当CA_descriptor出现在CAT中时,CA_PID指向含有与授权管理信息(EMM)相关的节目包。
•CA_descriptor中几个重要的字段如下:
–CA_system_ID:该字段表示适用于相关ECM和/或EMM流的CA系统类型。其值是用户定义的。
–CA_PID:该字段表示传送流包的PID,此包中含有由相应的CA_system_ID指明的CA系统的ECM或EMM信息,由CA_PID指明的包的内容(ECM或EMM)所在的上下文决定,既由TS中的PMT、CAT或节目流中的stream_id字段决定。
NIT
•NIT描述了一个DVB传输通道的所有物理参数,包括下列信息:
–传输路径(卫星、电缆、地面)
–接收频率
–调制类型
–误码保护
–传输参数
•机顶盒在扫描或变换信道时,可以存储一个物理信道的所有参数,便于以后很快跳回该信道。
•信道中也可以传送相邻或其他信道的传输参数,使得信道转换灵活快捷。
•如果NIT中的传输参数与实际不符,会对许多接收设备,如机顶盒,产生不可预知的影响。
–如果NIT中的传输频率与实际接收频率不同,许多接收设备在没有任何原因提示的情况下,不产生任何图像和声音。
SDT
•SDT包含对TS流中节目(服务)的更多详细描述:
–节目名称,如CNN,CBS,Eurosport,ARD,ZDF,BBC,ACB,SBS等等
–在提供节目PID的同时,SDT对用户提供了文本信息。
–通过提供文本列表,使得接收设备操作灵活。
•BAT,与SDT密切相关:
–BAT与SDT的PID相同,只是tableID不同。
–SDT描述一个物理信道的节目结构。
–BAT描述几个或大量物理信道的节目结构。
BAT
•BAT表是由DVB定义的,是一个SI表,因此它是一个全局表,一个数字电视系统只对应一个BAT表,其table_id=0X4A。
•一个节目类别对应一个段。为了让受众能更方便地在众多的节目中寻找出自己喜欢的节目,往往需要提供一种把众多的节目频道进行分类的方法(一个类相当一个节目组)。
•例如把电影频道归为“家庭影院”的类别,把电视连续剧归为“电视剧场”的类别等等,BAT表就提供了这一功能,每一个类别都用一个bouquet_id来标识。它包括了节目业务名称(类别)及节目组所包含的节目清单(节目列表)。BAT表在SI信息中属于可选表
EIT
•EIT(eventinformation table)
–即DVB中的EPG(electronicprogram guide)表
–包含一天或一周内所有广播的计划开始和结束时间。
–结构非常灵活,允许传送大量附加信息
–不是所有机顶盒都支持这一特性
– 事件信息表EIT按时间顺序提供每一个业务所包含的事件的信息。按照不同table_id有四类EIT:
–1) 现行传输流,当前 /后续事件信息=table_id="0x4E";
–2) 其它传输流,当前 /后续事件信息=table_id="0x4F";
–3) 现行传输流,事件时间表信息 =table_id="0x50"至"0x5F";
–4) 其它传输流,事件时间表信息 =table_id="0x60"至"0x6F"。
–现行传输流的所有EIT子表都有相同的transport_stream_id和original_network_id。
TDT/TOT
•机顶盒操作还需要传输当前时钟和当前日期,分两步:
–TDT(time&datetable)
•传送GMT或UTC
•即零度子午线的当前时刻
–TOT(timeoffset table)
•传送不同时区各自适当的时间偏移量
–TDT和TOT中的信息如何计算以及计算到什么程度,取决于机顶盒的软件
–对广播时间信息的完全支持还需要机顶盒得到当前的位置信息:
•对拥有多个时区的国家,如澳大利亚和美国,这个问题尤其重要。
其它表
•运行状态表(RST):
–运行状态表给出了事件的状态(运行/非运行)。运行状态表更新这些信息,允许自动适时切换事件。
•填充表(ST):
–填充表用于使现有的段无效,例如在一个传输系统的边界。
•选择信息表(SIT):
–选择信息表仅用于码流片段(例如,记录的一段码流)中,它包含了描述该码流片段的业务信息的概要数据。
•间断信息表(DIT):
–间断信息表仅用于码流片段(例如,记录的一段码流)中,它将插入到码流片段业务信息间断的地方。
================================
TS流的形成:前段音视频数据经过音视频编码器后音视频数据流ES,ES经过分组器(打包器)形成一个个的分组,即PES(音视频数据流ES的分组包,PacketES,PES最长一般为188个字节);音视频PES再经过复合器,从而形成传输流TS,传输流以传输流分组(TS Packet);TSPacket中的有效数据既可以是PES(音视频ES分组包),也可以是PSI等信息数据,这个由TSPacket中的PID来指定负荷数据的类型;SI各表格是以SECTION为单位放到TSPacket中,因此不同的表格就要按标准遵循对应SECTION的语法;比如PMT表,PMT可能包含多个节目的描述,因此它可能会被划分为多个SECTION放到TSPacket中,遵循的语法就是TS_program_map_section() ;
【通过码流分析工具的查看,800来个 PID为0X191的401节目的PMT SECTION TS包都是一样的】
根据TS Packet 的语法,可以简要分析下上面的数据包:
同步字节段:0X47(8bit)
传输错误指示字符段:0(1bit)
有效负载数据单元起始指示符字段:1(1bit)
传输优先级字段:0(1bit)
PID:0x191(13bit)(PAT表中指定该PID的TS包为包含PMT SECTION数据的TS包)
传输加扰控制字段:(0x0)(2bit)
调整字段控制字段:0x01(无调整字段,只有有效负载)(2bit)
连续性计数器字段:(4bit)
数据字节字段:这些数据 有可能是PES包,有可能是PSISECTION (由PID决定),如果没有调整字段,从这开始就是负载数据了;
Programassociation Table
The Program Association Table provides the correspondencebetween a program_number and thePID valueof the Transport Stream packets which carry the programdefinition. The program_number is the numeric label associated witha program.
The overall table is contained in oneor more sections with the following syntax.It may be segmented to occupy multiplesections
Programassociation section[PAT section syntax]
table_id :
CAS原理:
1 0
- TS各个表 与 SECTION 的解析 CAS原理
- TS各个表 与 SECTION 的解析 CAS原理
- TS各个表 与 SECTION 的解析 CAS原理
- TS各个表 与 SECTION 的解析 CAS原理
- TS码流解析(2) Section
- TS流中BAT与SDT等表的解析
- JVM的CAS实现原理解析
- cas工作原理解析
- CAS实现单点登录原理与实例解析
- TS流解析之二获取完整section
- 关于TS的解析
- TS流的解析
- TS流的解析
- TS流的解析
- TS流的解析
- TS流的解析
- TS流的解析
- CAS原理与协议
- 第十六章 例行性工作排程
- Matplotlib入门:Python的可视化绘制工具包
- android TypedValue.applyDimension()的作用 单位转换
- 虚幻4保存数据到硬盘
- 【bzoj1211】 HNOI2004—树的计数
- TS各个表 与 SECTION 的解析 CAS原理
- hdu 2838
- Java程序员学习阶段建议——转自疯狂JAVA
- 详解栈区、堆区、全局区、文字常量区、程序代码区
- nginx默认配置
- P3084 黑白棋游戏
- 运算符与表达式
- Android Accessibility 的简单用法
- 大数据_Storm_教程一_通过Storm UI 查看_Storm集群的基本信息