出处: ISOIEC 13818-1
PS流:
PS流由PSGOP组成,每个PSGOP是由I帧起始的多帧集合,每个GOP之间没有相互依赖信息,可以剪切拼接。
| PSGOP0 | PSGOP1 | PSGOP2 | PSGOP3 | PSGOP4 | …… |
PSGOP:
PSGOP由一个或多个PS包组成,一个PS包包含一个PSH(PS Header)和若干个PES(Packetized Elementary Stream,ps流数据的基本单位)包,PSGOP的第一个PS包应该在包头PSH后跟一个PSM(program stream map,节目流映射)包。
PS包格式(PSM只有是PSGOP的第一个PS才需要):
| PSH | SystemHeader | PSM | PES0 | PES1 | PES2 | PES3 | PES4 | …… |
PES包格式:
| PES header | stream raw data |
PSH格式:
| pack_start_code(32) | "01"(2) |
pack_start_code: 32bit,定义ps流的开始,值为0x000001BA
"01": 2bit,固定为01
system_clock_refference
system header PS流的系统头:
| system_header_start_code(32) | header_length(16) |
system_header_start_code: 32bit 0x000001BB
header_length: 16bit,系统头长度
PES包详细格式:
| packet_start_code_prefix(24) | stream_id(8) | PES_packet_length(16) | other_info_and_data |
packet_start_code_prefix:24bit ,包起始标记,值固定为0x000001;
stream_id: 8bit
PES_packet_length: 16bit,PES包的长度
other_info_and_data:的值跟stream_id的值相关
PS封装H264:
典型的H264 I帧PS包 : | PSH | SystemHeader | PSM | PES of SPS | PES of PPS | PES of SEI | PES0 of I frameData | PES1 of I frameData | …… | PESn of I frameData |
典型的H264 P/B帧PS包 :| PSH | PES0 of P/B frameData | PES1 of P/B frameData | …… | PESn of P/B frameData |
转载于:https://www.cnblogs.com/shawn-meng/p/9705039.html