传输流的包(Packet)长度必须是188字节,其中sync_byte必须是0x47,由TS Header、Adaptation field、payload构成:
TS Header:(4字节)
- 同步字节(Sync Byte):8bit,值固定为0x47,目的是用于标识TS包的开始;
- 传输误差指示符(Transport Error Indicator):1bit,值为0则代表无错误;当值为1时,表示在相关的传送包中至少有一个不可纠正的错误位,错误被纠正才可置为0;
- 有效载荷单元起始符(Payload Unit Start Indicator):1bit,用于指示TS包的有效净荷是否以PES包或PSI数据的第一个字节开始;以PES为例,该值等于0时,表示传输流数据包里面不应该开始与PES数据包,即开始位置不是PES头,直接是ES数据,PSI同上;空包的该值置为0;
- 传输优先级(Transport Priority):1bit,置为1时,表示相关的包比其他具有相同PID但此字段置0的包有更高的优先级;
- 包标识符(Packet Identifier,PID):13bit,用于唯一标识TS包中有效净荷的数据类型;如:
- PID=0x0000:PAT;
- PID=0x0001:CAT;
- PID=0x0002:TSDT;
- PID=0x0003~0x00F:保留;
- 传输扰乱控制(Transport Scrambling Control):2bit,用于指示传送流包有效净荷的加扰方式;
- 自适应字段控制(Adaption Field Control):2bit,表示传送流包首部是否跟随有调整字段和或有效净荷;00代表保留值,01代表负载中只有有效载荷,10代表只有填充数据、11先是填充再有有效;
- 连续计数器(Continuity Counter):4bit,随着具有相同PID的TS包的增加而增加,主要用于检测数据包的连续性和完整性,达到最大则会恢复为0,如果不连续则代表有丢包;