
TS流格式分析文档
一、引言
TS(Transport Stream)流是一种用于传输音频、视频以及相关数据流的复用格式,广泛应用于数字电视广播、网络流媒体等领域。本文将对TS流的基本结构、关键组件及其解析方法进行详细分析。
二、TS流基本结构
TS包(Packet):
- TS流由一系列固定长度的TS包组成,每个包的长度为188字节。
- 每个TS包包含一个4字节的包头(Header),一个可选的适应域(Adaptation Field),以及一个有效载荷(Payload)。
包头(Header):
- 同步字节(Sync Byte):每个TS包的第一个字节为0x47,用于标识包的开始并作为同步信号。
- 传输错误指示器(Transport Error Indicator, TEI):指示在传输过程中是否发生错误。
- 有效载荷单元起始指示器(Payload Unit Start Indicator, PUSI):指示当前包是否包含一个新的有效载荷单元的起始部分。
- 传输优先级(Transport Priority):设置传输优先级。
- PID(Packet Identifier):唯一标识一个特定的节目或数据流。
- 连续计数器(Continuity Counter):用于检测丢失的包和重复的包。
适应域(Adaptation Field):
- 可选字段,用于容纳额外的信息,如PCR(Program Clock Reference)、填充数据等。
- 当需要调整TS包的长度以符合特定要求时,适应域会被使用。
有效载荷(Payload):
- 包含实际的数据内容,如PES(Packetized Elementary Stream)包或其他类型的数据。
三、关键组件分析
PID与PMT(Program Map Table):
- PID用于区分不同的数据流。
- PMT表列出了每个节目的所有元素流(ES)及其对应的PID,包括视频流、音频流和其他辅助数据流。
PAT(Program Association Table):
- PAT表是TS流的入口点,列出了所有可用的节目及其对应的PMT表的PID。
- 通过解析PAT表,可以找到特定节目的PMT表位置。
PCR(Program Clock Reference):
- PCR是一个时间戳,用于同步解码器和发送端的时间基准。
- 它通常位于适应域中,并且对于保持音视频同步至关重要。
四、TS流解析方法
同步与解包:
- 首先通过识别同步字节(0x47)来定位TS包的起始位置。
- 解析包头中的各个字段,获取PID等信息。
构建PMT与PAT表:
- 根据PID找到PMT表和PAT表的位置,并解析这些表的内容。
- 构建PMT与PAT表的映射关系,以便后续查找特定节目的数据流。
提取有效载荷:
- 根据PID判断当前TS包的有效载荷类型。
- 如果是PES包,则进一步解析PES头和数据内容。
处理PCR与时间同步:
- 在解析适应域时,检查是否存在PCR字段。
- 如果存在,则更新解码器的系统时钟以保持音视频同步。
五、结论
TS流作为一种高效的复用格式,在数字电视和网络流媒体领域具有广泛的应用前景。通过对TS流的基本结构、关键组件及其解析方法的深入分析,可以更好地理解其工作原理和应用场景。在实际应用中,需要根据具体需求选择合适的解析方法和工具来处理TS流数据。
