TS流结构分析(PAT和PMT).doc
TS流(Transport Stream)是一种广泛应用于数字电视广播和多媒体数据传输的封装格式,它通过将多个Program Specific Information(PSI)和Payload(有效载荷)数据进行复用,形成了一个可高效传输的流。在TS流中,PAT(Program Association Table)和PMT(Program Map Table)是两个关键的组成部分,它们提供了解析和理解TS流结构的关键信息。 PAT是TS流中的全局信息表,它的主要任务是列出所有可用的节目(Program),并为每个节目指明对应的PMT的PID(Packet Identifier)。PAT通常包含一个表ID(Table ID),用于标识这是PAT,以及版本号和当前有效标志,确保接收端能够获取最新的信息。PAT还包含网络_PID,这是一个特殊的PID,用于指定携带网络级信息的PMT,例如,它可以包含多个节目的信息。 PMT则更具体地描述了每个节目包含的元素,如视频、音频和数据流。PMT中包含了节目PID,这是用于传输节目数据的PID,以及对应服务的各个组成部分(如AVC视频、AAC音频等)的PID。此外,PMT还会包含这些组件的传输方式、编码格式和其他相关参数,以便接收端正确解码。 TS包是TS流的基本传输单位,由包头和包数据两部分构成。包头中,同步字节(Sync Byte)通常是0x47,用于识别TS包的起始位置。传输误码指示符(Transport Error Indicator)表示传输过程中是否有误码,而有效载荷单元起始指示符(Payload Unit Start Indicator)则标记数据包内是否有新的PES包开始。PID是区分不同服务或信息的关键,传输加扰控制(Transport Scrambling Control)表明数据是否经过加密,自适应区控制(Adaptation Field Control)则指示自适应区的存在和内容,连续计数器(Continuity Counter)用于检测数据包的完整性和顺序。 TS包的自适应区可以根据需要包含各种控制信息,如PCR(Program Clock Reference)用于同步解码器的时钟,间断指示符(Discontinuity Indicator)指示流的改变,随机存取指示符(Random Access Indicator)用于在节目切换或I帧时提供入口点,而填充数据(Stuffing Bytes)则用于保持恒定的码率和避免缓冲区溢出。 解析TS包头的过程通常涉及读取和解释这些字段的值,例如,通过C++中的结构体定义,我们可以创建一个函数来解码TS包头,并从中提取所需的信息。在实际的编程实现中,可能还需要处理其他如TS包的连续性计数器检查,以及自适应区中的PCR和其他控制信息的解析。 TS流的结构和解析涉及多个层次,从TS包头的识别和解码,到PAT和PMT的理解,再到自适应区中重要信息的提取,都是实现数字电视和多媒体数据传输不可或缺的部分。对这些知识点的深入理解和掌握,有助于在实际的开发和调试工作中有效地处理TS流数据。
剩余8页未读,继续阅读
- waite12342012-03-14对ts流进行了较详细的分析,有助于了解TS流
- garfield_trump2013-04-11不错的ts基础学习文档
- DG求败2012-12-23适合初学者,谢谢分享。
- small_flyer2014-09-22对ts学习很有帮助,感谢分享
- 粉丝: 0
- 资源: 2
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助