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)
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头部信息以后为自适应字段,前两个字节包含重要信息,其意义如下图
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
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