热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

TS各个表与SECTION的解析CAS原理

TS流,通过一个个的TS包来传送;TS包可以是传送PSISI等各表的数据包,也可以是传送节目音视频数据(携带的PES包:音视频基本流包)的包;TS携带PSISI等表的数据时,各个表以各表对应的
TS流,通过一个个的TS包来传送; TS包可以是传送PSI SI等各表的数据包,也可以是传送节目音视频数据(携带的PES包:音视频基本流包)的包;TS携带 PSI SI等表的数据时,各个表以各表对应的Section语法格式做为传输单元存放到TS包中 以便传输;TS包,有一个TS包的PID,系统就是根据这个PID来找对应的TS包;对于包含音视频数据(PES包)的TS包,系统通过TS的PID找到对应TS数据包,提取其中的数据组合成节目的音视频;对于携带PSI SI等数据的TS包,系统通过TS的PID找到对应TS数据包,提取各个PSI SI数据表格,用来指导系统;     因此其中部分PID用来固定传输某些数据内容;如下TS各个表 <wbr>与 <wbr>SECTION <wbr>的解析 <wbr>CAS原理     有了TS的PID后, 如果TS包携带的是PSI SI等表格的Section数据时,有时还不能确定该PID的TS包中携带的数据是什么,SDT BAT ST 等表传送时,都用的是PID为0X0011的TS数据包,对于这种携带PSI SI Section单元的TS包,对应的数据(表的Section语法中)还有一个 TABLE_ID字段,用来可以确定是具体的什么表,如下图TS各个表 <wbr>与 <wbr>SECTION <wbr>的解析 <wbr>CAS原理TS各个表 <wbr>与 <wbr>SECTION <wbr>的解析 <wbr>CAS原理每不同的表中,我们看表的SECTION语法,都会看到descriptor()字样,descriptor()表示的也是一个语法结构,他具体对应的语法结构,由他内部的descriptor tag字段决定,各个表的具体的定义,可以参见13818对应的定义,其中这里面还可以有用户的自定义描述符,可见下表:the descriptors declared or defined within the present document, giving the descriptors-tag values and the intended placement within the SI tables. This does not imply that their use in other tables is restricted. PSI SI表中 包含什么descriptor,就用对应的语法去解!当然用户自定义的由用户自定义去解!!!TS各个表 <wbr>与 <wbr>SECTION <wbr>的解析 <wbr>CAS原理TS各个表 <wbr>与 <wbr>SECTION <wbr>的解析 <wbr>CAS原理TS各个表 <wbr>与 <wbr>SECTION <wbr>的解析 <wbr>CAS原理
TS各个表 <wbr>与 <wbr>SECTION <wbr>的解析 <wbr>CAS原理
TS各个表 <wbr>与 <wbr>SECTION <wbr>的解析 <wbr>CAS原理

   


PSI(Program Specific Information)PAT (Program Association Table)节目关联表PMT(Program Map Table)节目映射表CAT(Conditional Access Table)条件接收表SI(Service Information) NIT(Network Information Table)网络信息表SDT(Service Discription Table)业务描述信息表BAT(Bouquet Association Table)业务群信息表EIT(Event Information Table)节目事件信息表TDT(Time and Data Table) 日期时间表事件  event    一组给定了起始时间和结束时间、属于同一业务的基本广播数据流。例如:一场足球比赛的半场、新闻快报或娱乐表演的第一部分节目  programme由广播者提供的一个或多个连续的事件。例如:新闻广播,娱乐广播。网络  network一个传输系统,可以传输一组MPEG-2传输流(TS)。例如:某个有线电视系统中的所有数字频道业务  service在广播者的控制下,可以按照时间表分步广播的一系列节目,我们也称之个频道,口语中也称之为节目 
TS各个表 <wbr>与 <wbr>SECTION <wbr>的解析 <wbr>CAS原理
节目关联表PATPAT定义了一个TS流中所有的节目,PATPID0x0000,他是PSI信息的根节点。要查找节目播放信息必须从PAT开始。PAT中包含了TS中所有节目的完整列表,每个表项包括ServiceID PMT(用于播放)PIDPATServiceID 0的表项表示NIT
节目映射表PMT   PMT提供了一个节目的ServiceID和用于播放的所有资源信息,例如音视频PIDPCR,字幕PID等。  简单的说,PMT完整的描述了一路节目是由哪些PES组成,给播放提供相应的资源。•  PATPMT 关系 条件访问表CAT CAT提供了在一个或多个CA系统及其授权管理信息,用于节目的解扰工作。如果在一个TS中任何原始流进行了加密处理,那么在TS中一定要插入CATCAT中,最重要的字段就是CA_descriptor()段。下面将简单讲述一下该描述段 CA_descriptor用来表示含有ECM或者是EMM信息的TSPID,即CA_PIDCA_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系统的ECMEMM信息,由CA_PID指明的包的内容(ECMEMM)所在的上下文决定,既由TS中的PMTCAT或节目流中的stream_id字段决定。 NIT NIT描述了一个DVB传输通道的所有物理参数,包括下列信息:传输路径(卫星、电缆、地面)接收频率调制类型误码保护传输参数机顶盒在扫描或变换信道时,可以存储一个物理信道的所有参数,便于以后很快跳回该信道。信道中也可以传送相邻或其他信道的传输参数,使得信道转换灵活快捷。如果NIT中的传输参数与实际不符,会对许多接收设备,如机顶盒,产生不可预知的影响。如果NIT中的传输频率与实际接收频率不同,许多接收设备在没有任何原因提示的情况下,不产生任何图像和声音。 SDT SDT包含对TS流中节目(服务)的更多详细描述:节目名称,如CNN,CBS,Eurosport,ARD,ZDF,BBC,ACB,SBS等等在提供节目PID的同时,SDT对用户提供了文本信息。通过提供文本列表,使得接收设备操作灵活。BAT,与SDT密切相关:BATSDTPID相同,只是table ID不同。SDT描述一个物理信道的节目结构。BAT描述几个或大量物理信道的节目结构。 BAT BAT表是由DVB定义的,是一个SI表,因此它是一个全局表,一个数字电视系统只对应一个BAT表,其table_id=0X4A一个节目类别对应一个段。为了让受众能更方便地在众多的节目中寻找出自己喜欢的节目,往往需要提供一种把众多的节目频道进行分类的方法(一个类相当一个节目组)。例如把电影频道归为“家庭影院”的类别,把电视连续剧归为“电视剧场”的类别等等,BAT表就提供了这一功能,每一个类别都用一个bouquet_id 来标识。它包括了节目业务名称(类别)及节目组所包含的节目清单(节目列表)。BAT表在SI信息中属于可选表  EIT EIT(event information table)DVB中的EPG(electronic program guide)包含一天或一周内所有广播的计划开始和结束时间。结构非常灵活,允许传送大量附加信息不是所有机顶盒都支持这一特性– 事件信息表EIT按时间顺序提供每一个业务所包含的事件的信息。按照不同table_id有四类EIT1)  现行传输流,当前/后续事件信息= table_id = "0x4E"2)  其它传输流,当前/后续事件信息= table_id = "0x4F"3)  现行传输流,事件时间表信息= table_id = "0x50"  "0x5F"4)  其它传输流,事件时间表信息= table_id = "0x60"  "0x6F"现行传输流的所有EIT子表都有相同的transport_stream_idoriginal_network_id TDT/TOT 机顶盒操作还需要传输当前时钟和当前日期,分两步:TDT(time&date table)传送GMTUTC即零度子午线的当前时刻TOT(time offset table)传送不同时区各自适当的时间偏移量TDTTOT中的信息如何计算以及计算到什么程度,取决于机顶盒的软件对广播时间信息的完全支持还需要机顶盒得到当前的位置信息:对拥有多个时区的国家,如澳大利亚和美国,这个问题尤其重要。 其它表运行状态表(RST)运行状态表给出了事件的状态(运行/非运行)。运行状态表更新这些信息,允许自动适时切换事件。填充表(ST)填充表用于使现有的段无效,例如在一个传输系统的边界。选择信息表(SIT)选择信息表仅用于码流片段(例如,记录的一段码流)中,它包含了描述该码流片段的业务信息的概要数据。间断信息表(DIT)间断信息表仅用于码流片段(例如,记录的一段码流)中,它将插入到码流片段业务信息间断的地方。
TS各个表 <wbr>与 <wbr>SECTION <wbr>的解析 <wbr>CAS原理

TS各个表 <wbr>与 <wbr>SECTION <wbr>的解析 <wbr>CAS原理

TS各个表 <wbr>与 <wbr>SECTION <wbr>的解析 <wbr>CAS原理
TS各个表 <wbr>与 <wbr>SECTION <wbr>的解析 <wbr>CAS原理
================================ TS流的形成:前段音视频数据经过音视频编码器后音视频数据流ES,ES经过分组器(打包器)形成一个个的分组,即PES(音视频数据流ES的分组包,Packet ES,PES最长一般为188个字节);音视频PES再经过复合器,从而形成传输流TS,传输流以传输流分组(TS Packet);TS Packet中的有效数据既可以是PES(音视频ES分组包),也可以是PSI等信息数据,这个由TS Packet中的PID来指定负荷数据的类型;SI各表格是以SECTION为单位放到TS Packet中,因此不同的表格就要按标准遵循对应SECTION的语法;比如PMT表,PMT可能包含多个节目的描述,因此它可能会被划分为多个SECTION放到TS Packet中,遵循的语法就是TS_program_map_section() ; TS各个表 <wbr>与 <wbr>SECTION <wbr>的解析 <wbr>CAS原理


TS各个表 <wbr>与 <wbr>SECTION <wbr>的解析 <wbr>CAS原理
TS各个表 <wbr>与 <wbr>SECTION <wbr>的解析 <wbr>CAS原理

TS各个表 <wbr>与 <wbr>SECTION <wbr>的解析 <wbr>CAS原理

TS各个表 <wbr>与 <wbr>SECTION <wbr>的解析 <wbr>CAS原理
TS各个表 <wbr>与 <wbr>SECTION <wbr>的解析 <wbr>CAS原理

TS各个表 <wbr>与 <wbr>SECTION <wbr>的解析 <wbr>CAS原理

TS各个表 <wbr>与 <wbr>SECTION <wbr>的解析 <wbr>CAS原理

TS各个表 <wbr>与 <wbr>SECTION <wbr>的解析 <wbr>CAS原理

TS各个表 <wbr>与 <wbr>SECTION <wbr>的解析 <wbr>CAS原理
【通过码流分析工具的查看,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包,有可能是PSI SECTION (由PID决定),如果没有调整字段,从这开始就是负载数据了;    若是PES数据,则这些负载数据通过PES分组语法来解析;    若是PSI SECTION数据,则通过SECTION语法来解释,可通过第一个table_id来确定是哪一个表的SECTION;如下表:【要知道PMT表 须先知道PAT表】 TS各个表 <wbr>与 <wbr>SECTION <wbr>的解析 <wbr>CAS原理

Program association Table The Program Association Table provides the correspondence between a program_number and the PID value of the Transport Stream packets which carry the program definition. The program_number is the numeric label associated with a program. The overall table is contained in one or more sections with the following syntax. It may be segmented to occupy multiple sections  Program association section[PAT section syntax] TS各个表 <wbr>与 <wbr>SECTION <wbr>的解析 <wbr>CAS原理

table_id :
TS各个表 <wbr>与 <wbr>SECTION <wbr>的解析 <wbr>CAS原理

TS各个表 <wbr>与 <wbr>SECTION <wbr>的解析 <wbr>CAS原理
TS各个表 <wbr>与 <wbr>SECTION <wbr>的解析 <wbr>CAS原理

TS各个表 <wbr>与 <wbr>SECTION <wbr>的解析 <wbr>CAS原理
TS各个表 <wbr>与 <wbr>SECTION <wbr>的解析 <wbr>CAS原理

CAS原理:    条件接收(CA)系统(CAS)是数字电视广播(DVB)实行收费所必须采用的系统,也是数字电视平台不可缺少的部分,CAS负责完成用户授权控制与管理信息的获取、生成、加密、发送以及节目调度控制等工作,保证只有已被授权的用户才能收看节目,从而保护节目制作商和广播运营商的利益。    在DVB前端,CAS将通过加扰器节目级复用器复用后的节目内容,即MPEG-2/DVB视频、音频和辅助数据传输流(TS), 与一个加扰伪随机序列做XOR运算,这个伪随机加扰序列就是控制字发生器提供的控制字CW    CW被业务密钥(SK加密处理后授权控制信息(ECM)数据流中传送SK被用户个人分配密钥(PDK加密处理后,在授权管理信息EMM数据流中传送,PDK存放在用户智能卡(Smard Card)中
    已加扰的MPEG-2/DVB视频、音频和辅助数据传输流(TS)、ECM、EMM数据流、节目说明信息(PSI)和业务信息(SI)等数据流,经复用后,从发送端经传输信道传送给接收端机顶盒(STB)。    对于已经缴费的用户,其智能卡会被授权,STB从接收到的已加扰传输流中,解复用出ECM和EMM数据流后送给智能卡,智能卡首先读取PDK,用PDK对EMM解密得到SK,再用SK对ECM解密得到CW,利用CW由解扰器对已加扰传输流(TS)进行解扰后,再进行节目级解复用    TS各个表 <wbr>与 <wbr>SECTION <wbr>的解析 <wbr>CAS原理
TS各个表 <wbr>与 <wbr>SECTION <wbr>的解析 <wbr>CAS原理

推荐阅读
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • 【shell】网络处理:判断IP是否在网段、两个ip是否同网段、IP地址范围、网段包含关系
    本文介绍了使用shell脚本判断IP是否在同一网段、判断IP地址是否在某个范围内、计算IP地址范围、判断网段之间的包含关系的方法和原理。通过对IP和掩码进行与计算,可以判断两个IP是否在同一网段。同时,还提供了一段用于验证IP地址的正则表达式和判断特殊IP地址的方法。 ... [详细]
  • 本文介绍了OpenStack的逻辑概念以及其构成简介,包括了软件开源项目、基础设施资源管理平台、三大核心组件等内容。同时还介绍了Horizon(UI模块)等相关信息。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • 展开全部下面的代码是创建一个立方体Thisexamplescreatesanddisplaysasimplebox.#Thefirstlineloadstheinit_disp ... [详细]
  • 加密世界下一个主流叙事领域:L2、跨链桥、GameFi等
    本文介绍了加密世界下一个主流叙事的七个潜力领域,包括L2、跨链桥、GameFi等。L2作为以太坊的二层解决方案,在过去一年取得了巨大成功,跨链桥和互操作性是多链Web3中最重要的因素。去中心化的数据存储领域也具有巨大潜力,未来云存储市场有望达到1500亿美元。DAO和社交代币将成为购买和控制现实世界资产的重要方式,而GameFi作为数字资产在高收入游戏中的应用有望推动数字资产走向主流。衍生品市场也在不断发展壮大。 ... [详细]
  • C++字符字符串处理及字符集编码方案
    本文介绍了C++中字符字符串处理的问题,并详细解释了字符集编码方案,包括UNICODE、Windows apps采用的UTF-16编码、ASCII、SBCS和DBCS编码方案。同时说明了ANSI C标准和Windows中的字符/字符串数据类型实现。文章还提到了在编译时需要定义UNICODE宏以支持unicode编码,否则将使用windows code page编译。最后,给出了相关的头文件和数据类型定义。 ... [详细]
  • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
  • Windows7 64位系统安装PLSQL Developer的步骤和注意事项
    本文介绍了在Windows7 64位系统上安装PLSQL Developer的步骤和注意事项。首先下载并安装PLSQL Developer,注意不要安装在默认目录下。然后下载Windows 32位的oracle instant client,并解压到指定路径。最后,按照自己的喜好对解压后的文件进行命名和压缩。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 本文介绍了使用Python编写购物程序的实现步骤和代码示例。程序启动后,用户需要输入工资,并打印商品列表。用户可以根据商品编号选择购买商品,程序会检测余额是否充足,如果充足则直接扣款,否则提醒用户。用户可以随时退出程序,在退出时打印已购买商品的数量和余额。附带了完整的代码示例。 ... [详细]
author-avatar
大佬銘銘銘銘銘
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有