1、PS封装编码
2、PS header
I帧 : [00 00 01 BA ... ] [ 00 00 01 BB ...] [ 00 00 01 BC ...] [ 00 00 01 E0 长度 <SPS> ] [ 00 00 01 E0 长度 < PPS > ] [ 00 00 01 E0 长度 < I frame > ]
附带I帧分组:长度+6字节的,PTS和DTS一般为无效值
1) Packet start code prefix:值为0x000001的位串,它和后面的stream id 构成了标识分组开始的分组起始码,用来标志一个包的开始。
2) Stream id:在节目流中,它规定了基本流的号码和类型。0x(C0~DF)指音频,0x(E0~EF)为视频
3) PES packet length:16 位字段,指出了PES 分组中跟在该字段后的字节数目。值为0 表示PES 分组长度要么没有规定要么没有限制。这种情况只允许出现在有效负载包含来源于传输流分组中某个视频基本流的字节的PES 分组中。 2Byte
4) 标志数据: 1Byte
5) PTS_DTS:2 位。当值为'10'时,PTS 字段应出现在PES 分组标题中;当值为'11'时,PTS 字段和DTS 字段都应出现在PES 分组标题中;当值为'00'时,PTS 字段和DTS 字段都不出现在PES分组标题中。值'01'是不允许的。
6) ESCR:1位。置'1'时表示ESCR 基础和扩展字段出现在PES 分组标题中;值为'0'表示没有ESCR 字段。
7) ESrate:1 位。置'1'时表示ES rate 字段出现在PES 分组标题中;值为'0'表示没有ES rate 字段。
8) DSMtrick mode:1 位。置'1'时表示有8 位特技方式字段;值为'0'表示没有该字段。
9) Additionalinfo:1 位。附加版权信息标志字段。置'1'时表示有附加拷贝信息字段;值为'0'表示没有该字段。
10) CRC:1 位。置'1'时表示CRC 字段出现在PES 分组标题中;值为'0'表示没有该字段。
11) Extensionflag:1 位标志。置'1'时表示PES 分组标题中有扩展字段;值为'0'表示没有该字段。 1Byte
12) PES header data length: 8 位。PES 标题数据长度字段。指出包含在PES 分组标题中的可选字段和任何填充字节所占用的总字节数。该字段之前的字节指出了有无可选字段。 1Byte
根据 PTS_DTS标识
12) PTS
13) DTS
根据 ESrate 标识
14) ES_rate
以此类推....
P帧 : [00 00 01 BA ... ] [ 00 00 01 E0 长度 <P frame> ]
B帧 : [00 00 01 BA ... ] [ 00 00 01 E0 长度 <B frame> ]
audio帧 : [00 00 01 BA ... ] [ 00 00 01 E0 长度 <audio frame> ]