目录
背景
TS是Transport Stream 的缩写,全称则是MPEG2-TS。MPEG2-TS主要应用于实时传送的节目,比如实时广播的电视节目。
MPEG-2中规定TS传输包的长度为188 字节,包头为4个字节,负载为184个字节。但通信媒介会为包添加错误校验字节,从而有了不同于188字节的包长。例如:
DVB 规定中,使用204字节作为包长:
1、通过调制器时,在每个传输包后增加了16 字节的里德所罗门前向纠错码,因而形成了204字节的数据包。调制后总存在204 字节的数据包。2、调制之前存复用器插入RS码或虚构的RS码。
ATSC规定中,使用208字节作为包长:添加20 字节的 RS(Reed-Solomon)前向纠错码。与DVB不同,ATSC规定RS码只能出现在调制的TS流中。
所有的TS包都分为包头和净荷部分。TS包中可以填入很多东西(填入的东西都是填入到净荷部分),有:视频、音频、数据(包括PSI、SI以及其它任何形式的数据)。
1、TS包包头
TS包的包头提供关于传输方面的信息:同步、有无差错、有无加扰、PCR(节目参考时钟)等标志。TS包的包头长度不固定,前32比特(4个字节)固定,后面可能跟有自适应字段(适配域)。32个比特(4个字节)是最小包头。
sync_byte (同步字节):固定为0100 0111 (0x47);该字节由解码器识别,使包头和有效负载可相互分离。
transport_error_indicator(传输错误指示):‘1’表示在相关的传输包中至少有一个不可纠正的错误位。当被置1后,在错误被纠正之前不能重置为0。
payload_unit_start_indicator(开始指示):为1时,在前4个字节之后会有一个调整字节,其的数值为后面调整字段的长度length。因此有效载荷开始的位置应再偏移1+[length]个字节。
transport_priority(传输优先级):‘1’表明优先级比其他具有相同PID 但此位没有被置‘1’的分组高。
PID:指示存储与分组有效负载中数据的类型。PID 值 0x0000—0x000F 保留。其中0x0000为PAT保留;0x0001为