TS科普4 寻找下一个TS包

本节将粗略讲述在确定好第一个包位置后如何找后续包

一个TS流如下图所示:


第一个TS包

47 60 00 10 00 00 B0 0D 00 00 C1 00 00 00 01E0
81 0
C 8C BE 32 FF FF ……………………………..
………………………………………………………
………………………………………………………
………………………………….FF

包头:47 60 00 10 

指针:00

tableid:00

固定值:B

section_length:0 0D(值:13)

transport_stream_id:00 00

version number & current_next_indicator:C1

section_number:00

last_section_number:00

program_number:00 01

program_map_PID:E081  (PMT的pid为081 前三位为保留位)

CRC_32:0C 8C BE 32 

第二个TS包

47 60 81 10   (47 同步字节  6 说明数据正确  pid = 081  1 负载中只含有有效载荷)

00 02 B0 17 00 01 C1 00 00 E8 10 F0 00 1B E8 10
F0 00 03 E8 14 F0 00 66 74 A4 2D FF FF FF FF FF
...................................................................................
...................................................................................
...................................................................................

.......................................................................FF

包头:47 60 81 10   (47 同步字节  6 说明数据正确  pid = 081  1 负载中只含有有效载荷)
指针:00
tableid:02
固定值:B
section_length:0 17(值:23 表示到后面FF总共有23个字节)
program_number:00 01
reserved&version_number&current_next_indicator:C1
section_number:00
last_section_number:00
PCR_PID:E8 10
program_info_length: F0 00 (前四位不算 后12位表示后面节目描述信息长度 此处无)
此时剩余23-9=14字节-4字节(CRC)  = 10字节/5 = 2  N=2 此处有两个流类型
第一流类型:
stream_type: 1B  H264流
elementary_PID:E8 10 前3位为保留位取后13位  则PID=810 表示此PID的都是H264流
ES_info_length:F0 00 前4位为保留位 后12位为描述信息长度 此处为0
第二流类型:
stream_type: 03  音频流
elementary_PID:E8 14  前3位为保留位取后13位  则PID=814 表示此PID的都是音频流
ES_info_length:F0 00 前4位为保留位 后12位为描述信息长度 此处为0


CRC: 66 74 A4 2D

03 E8 14 : 03 表示流是音频流 MP3 格式   814  表示  pid=814 的TS包存储的是MP3格式的音频流

1B E8 10: 1B表示流是视频流h264格式    810  表示  pid=810 的TS包存储的是h264格式的视频流


第一个TS包 一般叫做 PAT (Program Association Table,节目相关表)

第二个TS包 一般叫做PMT  (Program Map Table,节目映射表)


第三个TS包

00000170h: 47 48 14 10 00 00 01 C0 (PTD 为814 前面 4 说明含有有效载荷起始符为1 含有PES包头)
00000180h: 01 88 80 80 05 21 00 01 96 07 FF FD 85 00 33 22
00000190h: 22 11 22 11 11 11 11 11 11 24 82 41 00 90 40 00
000001a0h: 00 00 00 00 40 00 .................................................
...............................................................................
................................................................................
00000220h: 70 34 5B CE 64 B7 D2 F5 4E 07 50 8E 11 1E 60 61
00000230h: 21 32 11 59

第四个TS包
00000230h: 47 08 14 11 68 4D 8C CB A7 24 92 45   (PTD 为814 前面为 0 说明有效载荷起始符为0 不含有PES包头)
00000240h: B8 EE A7 1C C4 ……………………………….
…………………………………………………………………….
…………………………………………………………………….
000002e0h:C8 31 B5 59 8C B7 3A 7B 53 9D AB 73 54 E6 D8 0D
47(同步字节)0(0 说明有效载荷起始符为0 不含有PES包头)
814PID  1 (负载中只有有效载荷,没有自适应字段,后面的都是一帧数据 本例为MP3(由第二个TS包知道))

第五个TS包
000002f0h:47 08 14 32 99 00 FF FF FF FF FF FF FF FF FF FF
00000300h:FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
…………………………………………………………………….
…………………………………………………………………….
…………………………………………………………………….
00000380h:FF FF FF FF FF FF FF FF FF FF FF FF FF FF 52 DE
00000390h:E6 B5 D0 76 CD CB B2 24 B3 92 AD 4E CD 19 D2 CC
000003a0h:82 D4 78 10 80 6C 0E 99 49 A4 59 C0
47(同步字节)0(0 说明有效载荷起始符为0 不含有PES包头)
814PID  3 (先有自适应字段,再有有效载荷)
自适应字段长度: 0x 99   表示占用 153个字节
00: 各个指示器都为0 表示不含其它信息
跳到第153个字节 到52 开始时真正的帧数据

第六个TS包
000003a0h: 47 48 14 13
000003b0h:00 00 01 C0 01 88 80 80 05 21 00 01 A6 E7 FF FD
000003c0h:85 00 54 44 22 22 34 21 12 11 22 22 21 48 90 00
....................................................................................................
....................................................................................................
....................................................................................................
00000460h:B4 12 54 02 48 19 F3 D8
47(同步字节)4(4 说明含有有效载荷起始符为1 含有PES包头)
814PID  1 (负载中只有有效载荷,没有自适应字段,后面的都是一帧数据 本例为MP3(由第二个TS包知道))

注意: 本TS包 又包含PES头信息 说明开始下一帧

第七个TS包
00000460h: 47 48 10 30 07 10 00 00
00000470h:01 0F 7E 88 00 00 01 E0 00 00 80 C0 0A 31 00 01
00000480h:96 07 11 00 01 7E 91 00 00 00 01 67 4D 40 1E 96
…………………………………………………………………
…………………………………………………………………
…………………………………………………………………
00000520h:D2 99 71 F3
47(同步字节)4(4 说明含有有效载荷起始符为1 含有PES包头)
810PID  3 (先有自适应字段,再有有效载荷,后面的都是一帧数据 本例为h264(由第二个TS包知道) 流ID E0
自适应字段长度, 0x07  说明后面7个字节后为PES包头或者h264数据

第八个TS包
00000520h: 47 08 10 11 64 C9 FC 5A 40 40 BD 8C
……………………………………………………………………
……………………………………………………………………
…………………………………………………………………….
000005d0h:18 91 2F 18 98 2D B2 AF EE 0E 3D 53 FB B2 91 FE
47(同步字节)0(0 说明有效载荷起始符为0 不含有PES包头)
810PID  1 (负载中只有有效载荷,没有自适应字段,后面的都是一帧数据 本例为h264(由第二个TS包知道))

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值