标准定义
ISO/IEC 13818-1 (或 ITU-T H.222.0)
TS各个头部定义
TS Header
| 字段 | 长度 (bits) | 含义与说明 |
|---|---|---|
| sync_byte | 8 | 同步字节,固定为 0x47。接收端通过扫描此字节来识别一个 TS 包的开始,并实现同步。 |
| transport_error_indicator | 1 | 传输错误指示符。用于指示该 TS 包中存在一个无法修复的错误。 |
| payload_unit_start_indicator | 1 | 负载单元开始标识。占用1bit,负载单元起始标识位,1:表示起始数据 0:表示累加数据.一个TS包固定为188字节,而一帧数据将会被分割为多个包,故通过起始标识符可以得知是否为新的数据帧.在前4个字节后会有一个调整字节。所以实际数据应该为去除第一个字节后的数据。即上面数据中红色部分不属于有效数据包。该字段用来表示TS包的有效净荷带有PES包或者PSI数据的情况。当TS包带有PES包数据时,payload_unit_start_indicator具有以下特点:置为1,表示TS包的有效净荷以PES包的第一个字节开始;置为0,表示TS包的开始不是PES包。当TS包带有PSI数据时,payload_unit_start_indicator具有以下特点:置为1,表示TS包带有PSI部分的第一个字节,即第一个字节带有指针pointer_field;置为0,表示TS包不带有一个PSI部分的第一个字节,即在有效净荷中没有指针pointer_field。对于空包的包,payload_unit_start_indicator应该置为0。 |
| transport_priority | 1 | 传输优先级。用于标识该 TS 包相对于同一 PID 的其他包具有更高的优先级。 |
| PID | 13 | 包标识符 (Packet Identifier)。用于唯一标识 TS 包所属的流类型,例如 PAT、PMT、视频流或音频流。 |
| transport_scrambling_control | 2 | 传输加扰控制。指示 TS 包负载的加密状态,00 表示未加扰(清流)。 |
| adaptation_field_control | 2 | 适配域控制。指示 TS 包是否包含适配域和/或负载域。01: 无适配域,仅有负载10: 仅有适配域,无负载11: 同时包含适配域和负载 |
| continuity_counter | 4 | 连续性计数器。一个从 0 到 15 循环递增的计数器,用于检测同一 PID 的 TS 包是否发生丢失或乱序。 |
SDT(Service Description Table)
| 字段 | 长度 (bits) | 含义与说明 |
|---|---|---|
| table_id | 8 | 表标识符。固定为 0x42,表示这是当前传输流的 SDT 信息(0x46 表示其他流)。 |
| section_syntax_indicator | 1 | 段语法标志。固定为 1,表示使用标准的段语法结构。 |
| reserved_future_use | 2 | 保留位。用于未来扩展,通常置为 11。 |
| reserved | 1 | 保留位。防止控制字冲突,通常置为 0。 |
| section_length | 12 | 段长度。指示从本字段之后到 CRC_32 结束的长度(单位字节),最大 1021 字节。 |
| transport_stream_id | 16 | 传输流 ID。唯一标识当前传输流的编号。 |
| reserved | 2 | 保留位。通常置为 11。 |
| version_number | 5 | 版本号。当 SDT 内容更新时,该值加 1(0-31 循环),用于通知接收端更新缓存。 |
| current_next_indicator | 1 | 当前/下一指示符。1 表示当前发送的是正在使用的表;0 表示下一张表。 |
| section_number | 8 | 段号。当前段的序号,从 0 开始。 |
| last_section_number | 8 | 最后段号。该表最后一个段的序号。 |
| original_network_id | 16 | 原始网络 ID。标识该传输流所属的原始网络(如卫星轨道位置或地面广播网)。 |
| Service Loop | 不定长 | 见下方定义 |
| CRC_32 | 32 | 循环冗余校验。用于检测整个表数据的完整性,确保没有传输错误。 |
Service Loop
| 字段 | 长度 (bits) | 含义与说明 |
|---|---|---|
| service_id | 16 | 业务 ID。对应 PMT 表中的 program_number,是频道的唯一标识。 |
| reserved_future_use | 6 | 保留位。通常为 111111。 |
| EIT_schedule_flag | 1 | 调度信息标志。1 表示该业务包含 EIT(电子节目指南)的调度信息(未来的节目单)。 |
| EIT_present_following_flag | 1 | 当前/后续信息标志。1 表示该业务包含当前正在播放和接下来播放的节目信息。 |
| running_status | 3 | 运行状态。0: 未定义1: 未运行2: 几分钟后开始3: 暂停4: 正在播放 |
| free_CA_mode | 1 | 加密模式。0: 所有业务组件均未加扰(免费)。1: 业务组件受条件接收系统控制(加密/付费)。 |
| descriptors_loop_length | 12 | 描述符循环长度。指示后续描述符区域的总字节数。 |
PAT(Program Association Table)
| 字段 | 长度 (bits) | 含义与说明 |
|---|---|---|
| table_id | 8 | 表标识符。固定为 0x00,明确标识这是一个 PAT 表。 |
| section_syntax_indicator | 1 | 段语法标志。固定为 1,表示采用标准的段语法。 |
| reserved | 2 | 保留位。通常置为 11。 |
| section_length | 12 | 段长度。从本字段之后到 CRC_32 结束的字节数。 |
| transport_stream_id | 16 | 传输流 ID。用于区分网络中不同的 TS 流,由运营商指定。 |
| reserved | 2 | 保留位。通常置为 11。 |
| version_number | 5 | 版本号。当 PAT 内容更新时,该值加 1(0-31 循环),用于通知接收端更新。 |
| current_next_indicator | 1 | 当前/下一指示符。1 表示当前发送的是正在使用的表;0 表示下一张表。 |
| section_number | 8 | 段号。当前段的序号,从 0 开始。 |
| last_section_number | 8 | 最后段号。该表最后一个段的序号。 |
| Program Loop | 不定长 | 见下方定义 |
| CRC_32 | 32 | 循环冗余校验。用于检测整个表数据的完整性,确保没有传输错误。 |
Program Loop
| 字段 | 长度 (bits) | 含义与说明 |
|---|---|---|
| program_number | 16 | 节目号。 • 非0值:代表一个具体的频道编号(如 1, 101 等)。 • 0x0000:这是一个特殊值,表示后面跟随的是网络信息表(NIT)的 PID。 |
| reserved | 3 | 保留位。通常置为 111。 |
| program_map_PID | 13 | PMT 的 PID。 • 如果 program_number 非 0,这里指向该节目对应的 PMT 表 所在的 PID。• 如果 program_number 为 0,这里指向 NIT 表 的 PID。 |
PMT(Program Map Table)
| 字段 | 长度 (bits) | 含义与说明 |
|---|---|---|
| table_id | 8 | 表标识符。固定为 0x02,明确标识这是一个 PMT 表。 |
| section_syntax_indicator | 1 | 段语法标志。固定为 1。 |
| reserved | 2 | 保留位。通常置为 11。 |
| section_length | 12 | 段长度。从本字段之后到 CRC_32 结束的字节数。 |
| program_number | 16 | 节目号。与 PAT 表中的 program_number 对应,表明这张 PMT 属于哪个频道。 |
| reserved | 2 | 保留位。通常置为 11。 |
| version_number | 5 | 版本号。当 PMT 内容更新时,该值加 1(0-31 循环)。 |
| current_next_indicator | 1 | 当前/下一指示符。1 表示当前表有效;0 表示下一张表有效。 |
| section_number | 8 | 段号。PMT 通常不分段,固定为 0x00。 |
| last_section_number | 8 | 最后段号。固定为 0x00。 |
| Program Info | 不定长 | 见下方定义 |
| CRC_32 | 32 | 循环冗余校验。用于检测整个表数据的完整性,确保没有传输错误。 |
Program Info
| 字段 | 长度 (bits) | 含义与说明 |
|---|---|---|
| reserved | 3 | 保留位。通常置为 111。 |
| PCR_PID | 13 | 节目时钟参考 PID。 指示包含 PCR(Program Clock Reference)字段的 TS 包的 PID。接收端利用 PCR 来恢复系统时钟,实现音视频同步。通常与视频 PID 相同。 |
| reserved | 4 | 保留位。通常置为 1111。 |
| program_info_length | 12 | Elementary Stream Loop 节目描述信息长度。指示紧随其后的描述符区域的字节数。 |
Elementary Stream Loop
| 字段 | 长度 (bits) | 含义与说明 |
|---|---|---|
| stream_type | 8 | 流类型。 指示该流的编码格式,例如: • 0x1B: H.264 视频• 0x24: H.265 (HEVC) 视频• 0x0F: AAC 音频• 0x03: MPEG-1 音频 |
| reserved | 3 | 保留位。通常置为 111。 |
| elementary_PID | 13 | 基本流 PID。 这是最重要的字段之一,指示视频、音频或字幕数据所在的 TS 包 PID。 |
| reserved | 4 | 保留位。通常置为 1111。 |
| ES_info_length | 12 | ES 信息长度。指示紧随其后的 ES 描述符的字节数。 |
评论已关闭