解析TS

1.  TS->PES->ES(H264)。

2.  下面是一段携带PAT的TS的数据  

47 40 00 30    A6 00    

FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 00 (从第一个FF到这里是A6个)

00 B0 0D E5 18 EF 00 00 00 01 E0 42 9D C9 35 9E 

2.1 TS数据固定长度188个字节,不足188个字节,添加 调整字段 0XFF 补充。

2.2 TS头部为前4个字节,上面的为(47 40 00 30

      133643_yD77_813663.png

      01000111  0          1         0        0000000000000    00  11      0000  

       2.2.1  同步字节(sync byte): 1B,其值固定为0x47,该字段是MPEG-2 TS传送包标识符;

  2.2.2  传输误差指示符(transport error indicator): 1bit,其值为1时,表示在相关的传送包中至少  有一个不可纠正的错误位,只有在错误纠正之后,该位才能被重新置0;

  2.2.3  有效载荷单元起始符(payload unit start indicator): 1bit, 当TS包带有PES包数据时,置为1,表示TS包的有效净荷以PES包的第一个字节开始;置为0,表示该TS包的开始不是PES包;当TS带有PSI数据时,置为1,表示TS包带有PSI部分的第一个字节,即第一个字节带有指针       pointer_field;置为0,表示TS包不带有一个PSI部分的第一个字节,即有效净荷中没有指针 pointer_field。空包时,该位置为0;

  2.2.4  传输优先级(transport_prority): 1bit, 置为1,表示相关的包比其他具有相同PID,但是此字段 置0的包有更高的优先级;

  2.2.5  PID: 13bit, 表示传送包的有效净荷中的数据的类型

                 0x0000   节目关联表(program association table, PAT)

                               上面的数据为PAT数据,通过PAT 可以找到PMT

                 0x0001   条件访问表(conditional access table, CAT)

                 0x0002    传送流描述表(transport stream description table, TSDT)

                 0x0003~0x000F  保留

                 0x0010~0x1FFE      可以分配为network PID, Program map PID,  elementary PID, 或其它

                  0x1FFF     空包(8191)

       2.2.6   传输加扰控制(transport scrambling control): 2bit,该字段用来指示传送流包有效净荷的加扰方式;

  2.2.7   自适应字段控制(adaption field control): 2bit,表示传送流包首部是否跟随有调整字段和/或有效净荷。

                   00      保留

                   01      没有调整字段,仅含有184B长度的有效净荷

                   10      没有有效净荷,仅含有183B长度的调整字段0XFF

                   11     0~182B的调整字段0XFF 后为有效净荷

                            如上面的为11,所以先填充0XFF,后面是有效数据

     2.2.8   连续计数器(continuity counter): 4bit,随着具有相同PID TS包的增加而增加,达到最大则恢复为0。

2.3 TS头部信息以后为自适应字段,前两个字节包含重要信息,其意义如下图

133822_zSIX_813663.png

2.3.1   自适应字段长度  1B,表示后续TS数据的长度,不包含PES。

          如上面的为(A6),所以一直到FF 00 都为调成的调整字段

          00 B0 0D E5 18 EF 00 00 00 01 E0 42 9D C9 35 9E 为有效数据,因为我们已经从PID得知该TS数据为PAT数据,所以该有效数据按照PAT解析。

           解析得到 program_number=1,program_map_PID=0x42

3.  下面是一段携带PMT的TS的数据  

47 40 42 30                                                                                      A1    00

01000111   0    1     0    0000001000010    00    11     0000                161

PID  0000001000010   0X42 从PAT中得知该PID为PMT数据

adaption field control   11   先填充0XFF,后面是有效数据

FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 00 (共161个)

02 B0 12 00 01 D7 00 00 E0 44 F0 00 1B E0 44 F0 00 F1 67 5E F2  (这些为PMT数据)

解析PMT数据,得到stream_type=27(264数据),elementary_PID=0X44

4.  下面是一段携带PES的数据

47 40 44 30                                                                                    07    

01000111   0   1   0    0000001000100    00    11   0000 

PID  0000001000100   0X44 从PMT中得知该PID为视频数据              7个TS填充数据,剩下的为PES

10 18 3D 40 51 7E 00

00 00 01       PES包起始前缀,占3B;

E0                 224    stream_id,流ID,占1B;

FF E9            PES_packet_length  PES包长度,也就是一帧数据的总长度;

80      

C0

0A               10: PES_header_data_length              

31 C1 ED 1A 69    PTS

11 C1 ED 1A 69    DTS

00 00 00 01 09 E0 00 00 00 01 67 42 40 20 F4 03 C0 11 3F 2C 20 00 00 03 00 20 00 00 06 50 80 00 00 00 01 68 CE 06 F2 00 00 00 01 65 88 84 0F C4 18 44 20 C1 B3 0F 00 24 ED A6 37 00 01 03 D1 E4 42 C8 A5 93 A0 A3 47 7F 2E CB 41 69 6F 76 4D AB AB 8A 48 70 0F 9F 88 2D 68 5A 91 51 69 48 7B 7F 95 05 FA 71 81 A8 02 00 01 00 55 0A FD 89 61 92 2C 8B 3F FD E0 2C 04 07 80 A8 A2 E3 B2 26 C2 9F 0E 0C 30 00 10 01 50 05 A6 4D C0 04 0C 00 E4 EB 00 70 4D C2 00 00 A8 05 05 CB 20 46 7B 

145439_0XTr_813663.png

  5.  下面是一段只携带264数据的TS数据

47 00 44 11    

01000111   0 0 0 0000001000100    00   01   0001

adaption field control   01  出来TS头4个字节,后面的都是数据

9C 45  22 2C 07 0C 62 94 B1 22 7F B6 41 7F B2 E9 E9 64 39 A9 FF E5 D1 C9 C0 10 CA 14 F6 E2 10 58 1C 17 AA CC 3B 24 0F 79 9E 2C 47 11 B0 34 1B 65 A6 7E B7 25 2B FB 92 BB 6F 06 AB 57 62 96 C7 0D 6C BC CE 59 AB E4 B3 D1 83 DA 8C 87 10 01 C0 08 0F C1 FD 42 E8 12 6B B2 EA 65 4C 78 00 02 00 20 41 7E E2 18 28 4E FA 1E B3 0C 49 25 9B 97 09 D2 89 F8 34 FE 81 FA 69 E8 C6 37 F3 EA F9 7E 22 11 1B 34 01 81 99 66 5A CC 68 87 FE A7 81 8D 8F 19 3F 20 96 57 A2 02 C5 27 F6 F4 4F 83 10 AB CF C2 70 F1 7F 30 78 99 74 58 27 FE 89 A2 91 83 89 95 05 AA DF 7C 04 81 8C 25 

转载于:https://my.oschina.net/hanxiaodong/blog/1501234

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值