ts流中PAT表与PMT表详解
### TS流中PAT表与PMT表详解 #### 一、TS流概述 在MPEG-2标准中,传输流(Transport Stream, TS)是一种高效且灵活的数据传输格式,广泛应用于数字电视广播系统中。TS流由一系列固定大小的数据包组成,每个数据包称为TS包。TS包的主要组成部分包括包头和包数据。 - **包头**:包含用于同步、识别、检错以及加密等关键功能的信息。 - **包数据**:包含了实际的有效负载数据,如音频、视频或其他元数据。 #### 二、TS包结构 TS包的基本结构由4字节的包头和184字节的自适应区或包数据组成,总长度为188字节。具体结构如下: - **同步字节**:固定的0x47,用于标识接下来的内容为TS包。 - **传输误码指示符**:1比特,用于指示包内是否存在不可纠正的误码。 - **有效载荷单元起始指示符**:1比特,用于标识该包是否包含新的有效载荷单元的开始。 - **传输优先**:1比特,用于标识该包的传输优先级。 - **包识别(PID)**:13比特,用于区分不同的TS包,每个PID对应一个特定的类型。 - **传输加扰控制**:2比特,用于指示包是否经过加扰处理。 - **自适应区控制**:2比特,用于指定包是否包含自适应区及其内容。 - **连续计数器**:4比特,用于检测包的顺序并判断是否有包丢失。 #### 三、PAT表(Program Association Table) PAT表是TS流中的一个关键表格,用于关联不同的节目号(Program Number)与其对应的PID。PAT表的作用在于帮助接收端找到特定节目的PMT表的位置。PAT表通常位于PID值为0x0000的TS包中,并且按照以下结构组织: - **表头**:包含版本号、当前/下一个标志、节目标记等信息。 - **程序映射表**:列出所有节目的节目号和对应的PMT表PID。 #### 四、PMT表(Program Map Table) PMT表提供了节目内部各个元素(如视频、音频、字幕等)的具体PID信息。每个节目都有一个唯一的PMT表,它位于PID值为PAT表中指定的PID的TS包中。PMT表的主要内容包括: - **表头**:包含版本号、当前/下一个标志等信息。 - **基本流映射**:列出构成节目的各个基本流(Elementary Stream, ES)的PID。 - **条件访问表**:如果存在,则提供加密信息。 #### 五、TS包解析示例 下面给出一个简单的TS包头解析函数示例,用于演示如何解析TS包头: ```c++ HRESULT adjust_TS_packet_header(TS_packet_header* TS_header) { unsigned char buf[4]; memcpy(buf, TS_header, 4); // 解析包头字段 TS_header->transport_error_indicator = (buf[1] >> 7) & 0x01; TS_header->payload_unit_start_indicator = (buf[1] >> 6) & 0x01; TS_header->transport_priority = (buf[1] >> 5) & 0x01; TS_header->PID = ((buf[2] & 0x1F) << 8) | buf[3]; TS_header->transport_scrambling_control = (buf[1] >> 3) & 0x03; TS_header->adaption_field_control = (buf[1] >> 1) & 0x03; TS_header->continuity_counter = buf[1] & 0x0F; return S_OK; } ``` #### 六、自适应区 自适应区(Adaptation Field)是TS包中的一个可选部分,主要用于插入定时信息(如PCR)、填充数据等。自适应区的存在与否及其具体内容由“自适应区控制”字段决定。 - **PCR标志**:用于同步接收端的时钟,确保解码时序准确。 - **填充数据**:当PES包长度不能正好转化为TS包的整数倍时,剩余的空间将用填充数据填充。 #### 七、总结 TS流是MPEG-2标准中非常重要的组成部分,通过PAT表和PMT表实现了对多个数据流的有效复用与管理。PAT表用于关联节目号与PMT表PID,而PMT表则详细列出了每个节目中各个基本流的PID信息。通过对这些表的理解与应用,可以实现高效的数字信号传输与接收。
剩余8页未读,继续阅读
- 粉丝: 27
- 资源: 3
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
- 1
- 2
前往页