现在的位置: 首页 > 综合 > 正文

对TS流的一些理解TS流的结构

2018年04月17日 ⁄ 综合 ⁄ 共 4089字 ⁄ 字号 评论关闭


TS流的结构

TS流由很多个TS包组成,而每个TS包的结构包括:4B的包头,可变长的调整字段,有效净荷(payload)。现在分别说一下这三部分的结构和作用。

  1. 包头

    包头最小为4字节,这四字节分为8个部分分别为:8bit的同步字节,1bit的传送数据包差错指示,1bit的净荷单元起始指示,1bit的传送优先级,13bitPID2bit的传送干扰控制,2bit的适应域控制,4bit的连续计数器。这8个部分具体的作用是:

    同步字节:Sync byte,8位。这是包的标识符,值是固定的为0X47。它的作用就是用来判断是否为一个包。

    传输数据包差错指示:transport_error_indicator, 1位。因为只有一位所以只可能有两种情况01。为1时表示传送包中有错误的位。当为0时表示传送包中没有错误或者错误已经被纠正。

    净荷单元开始指示:payload_unit_start_indicator, 1位。也只有两种情况,这个字段用来表示TS包的有效净荷带有PES包或PSI的情况。

    TS包中的净荷为PES包数据时:该位为1时,表示该TS包的有效净荷PES包的第一个字节开始;为0时,表示TS包的开始不是PES包。

    TS包中的净荷为PSI数据时:该位为1时,表示TS包中带有PSI中的第一个字节,为0时,表示不到有PSI部分的第一个字节。

    如果这个包是空包,该位为0.

    传输优先级:transport_priority,1位。为1时表示该包的优先级比相关具有相同PID的包的优先级要高。

    PID:这个有13位,用来判断有效净荷中的数据类型。其中可能的数据类型为PSI/SI表或者音视频数据即PES包。PSI/SI表中有一些表的PID是固定不变的,其中PAT(节目关联表)的PID0X0000CAT(条件访问表)PID0X0001.

    0X0003-0X000F为保留。NIT(网络信息表)的PID0X0010.还有一些PIDSI中的表,音视频PES包,PMT(节目映射表)等。最后空包的PID0X1FFF8191为固定的。

    传输干扰控制:transport_scrambling_control, 2位。作用是用来表示传送流包有效净荷的加扰方式。

    适应域控制:adaptation_field_control. 2位。作用是用来指示传输流首部是否跟随有调整字段或有效净荷。为00时表示保留;为01时表示没有调整字段,有效净荷长度为184B;为10时表示没有有效净荷,仅仅含有183B长度的调整字段;为11时表示有调整字段和有效净荷。

    连续计数器:continuity_counter, 4位。它随着PID相同的TS包的增加而增加。但是当适应域控制位为“00”或者“10”时,连续计数器是不增加的。

  2. 可变长的调整字段

    调整字段包括对较高层次的解码功能有用的相关信息,组成为8bit的调整字段长度,1bit不连续指示器,1bit随机存取指示器,PCR标识符,基本优先级指示器,拼接点标识符,传送专用数据标识,调整字段扩展标识和相应标识符。

  3. 有效净荷

    在有效净荷中包括两类的信息:已经被压缩的音视频信息和与之相关的符号化表。这些符号化的表有PSI(节目专用信息表)和SI(业务信息表),这些表以分段的形式传送。

    PSI包括PAT(节目关联表),PMT(节目映射表),CAT(条件访问表),NIT(网络信息表)。但是NIT是可选的。

     

    先说说PAT表:

     

    PAT表:每一个TS流只有一个一个PAT表,要查找节目信息必须从PAT表开始,然而要找到PAT表必须先提取出TS包头的PID,看看PID是否为0X0000,应为PAT表的PID固定为0X0000

    PAT表中的信息:PAT中储存的是节目号和对应节目的PMT表的PID。其中如果节目号为0,则对应的PIDNIT表的PID

    PAT表的语法结构:

    PAT表可以分为很多个段,其中每个段的语法结构是一样的,PAT表格的整体字头为固定的8B

    PAT段的数据结构:

    Program_association_section()

    {

        Table_id         
    8

        Section_syntax_indicator 
    1

        ‘0’                 
    1

        Reserved     
          2

        Section_length        
    12

        Transport_stream_id    
    16

        Reserved             
    2

        Version_number        
    8

        Current_next_indicator   
    1

        Last_section_number    
    8

        For(i=0;i<N;i++)

        {

                 Program_number   
    16

                 Reserved          
    3

                 If(program_number== ‘0’)

                 {

                           Network_id    
    13

    }

    Else

    {

             Program_map_PID  
    13

    }

    }

    CRC_32                  32

    }

    Table_id : 8bit 这个是固定的为0X0.
    它可以区分这个段是PAT段,CAT段还是PMT段。

    Section_syntax_indocator: 1bit 对于PAT置为0X1.

    Section_length: 12bit 这个字段指示分段的字节数,由当前字段到CRC。用这个可以计算出节目的个数。该字段的值不能超过1021.

    Transport_stream_id: 16bit 这个表示传输流的标识符。用来区别于其他的传输流。

    Version_number: 5bit PAT的版本号

    Current_next_indicator: 1 bit   1时表示传送的PAT当前可以使用。为0时表示传送的表不能使用下一个表变为有效。

    Section_number: 1B 表示段号。

    Last_section_number: 1B 
    为最后一个段号,即段的数量。

    Program_number: 2B 表示节目号,如果为0则后面的PIDNITPID

    Network_id :13bit NITPID

    Program_map_PID: 13bit 对应节目的PID

    CRC 32bit
    为校验码。

     

    PMT

    PMT表包含了与单路节目复用有关的控制信息,PMT典型的构成包括一路视频打包的基本码流,多路音频码流和辅助数据。每一路的PES被分配了唯一的PIDPMT表格的整体字头为12B。数据结构与PAT表相似,但是table_id是不一样的固定为0X2,以区别于其他的表。其中PMT特有的字段有:

    Stream_type: 8bit 用来描述PES流的类型,类型有视频,音频,私有数据和私有段等。

     

    CAT:

     

    条件访问表提供了在一个或多个CA系统的授权管理信息或者访问控制信息,给出了有条件接受系统的信息及EMM的传送位置,音视频数据使用的加密方法信息,为加扰系统携带控制信息的PID条目。CAT的数据结构和其他的表区别不大,只是在CA_descriptor()上有区别。

     

    NIT

    一个数字电视系统只对应两个NIT表,及当前网络表(Table_id0X40)和其他网络表(table_id0x41)。

    NIT表主要是提供有关物理网络的信息,每个网络都有唯一的识别符,网络信息主要携带网络识别符,网络名称,传输系统参数(频率,调制方式,FEC外码,符号率,FEC内码)。每个运营商都要注册唯一的一个network_id.NIT中特有的字段:

    Network_id: 16bit 充当一个标号,每一个运营商都有自己的network_id

    Original_network_id: 16bit 用来标识原始传输系统的network_id

     

    SI包括BAT(业务关联表),SDT(业务描述表),EIT(事件信息表)RST(运行状态表),TDT(时间日期表),TOT(时间偏移表),ST(填充表),SIT(选择信息表),DIT(间断信息表)。这里介绍BATSDTEIT

    BAT

    BAT提供了所涉及的有关节目业务组的信息,包括节目业务组名称及节目业务组所包含的节目业务清单。BATPID固定为0X0011,table_id0X4ABAT数据结构中特有的字段:

    Bouquet_id: 16bit 它充当一个标号来标识业务组。

    EIT

    EIT表用于传送与在特殊MPEG复用中出现或将要出现的所有节目段相关的信息。EIT表分为4类,由不同的table_id来区别。EIT表可以分为很多个段,但是每个段都必须由PID值为0x0012TS包传送。EIT数据结构中特有的字段:

    Service_id 16bit 
    作用是在一个TS内从任何其他业务中标识这个业务。与对应的PMT表中的program_id相同。

    Event_id: 16bit 包含了所描述的节目段的标号在一个业务内是唯一的。

    Start_time:  40 bit 包含了节目段的起始时间。

    Duration: 24bit 包含时分秒的信息,按4bitBCD码编码。

    Runing_status: 3bit 表示节目段的状态。

    Free_CA_mode: 1bit 0时,表示节目段的所有的成分流没有加扰,为1时表示由一个CA系统控制访问一个或多个流。

    SDT

    SDTPID固定为0X0011SDT提供了节目的节目业务组,节目业务的类型(PLANTSCSECAM等),指向特定信息的链接信息,实现多画面的控制信息等。重要的是节目名称也包含在SDT中。描述现行TSSDT表的任何段的table_id应为0x42,而且具有相同的transport_stream_id)以及相同original_network_id。指向一个现行TS之外的其他TSSDT表的任何段的table_id应为0x46.

抱歉!评论已关闭.