PES是打包过的ES,已经插入PTS和DTS,一般是一个pes包为一帧图像
PES包格式:
PES再打包成TS流或PS流,往往一个PES会分存到多个ts包中,
start_code: 0x00 00 01
PES 长: 为这个字节之后整个pes 长度--es 长度+剩余ps报头长
stream_id: --- video (1110xxxx) audio (110xxxxx) 所以打包的时候 h264 定义为0xE0 G711 音频定义为0xC0 其中后4位 xxxx 都为私有协议使用。
pes包头长: 整个pes 报头长字节 (不包括es长度)- 9;
信息区:包含附加信息以及PTS和DTS PTS ,DTS 都为5个字节的信息,所以pes 头一共长度为9+10 = 19 byte,至少是19个字节,后面可以自己进行扩展。
PS流:
每一个pes header包含pts和dts,在解码时,pes-->es,音视频的同步,除了使用pts和dts以外,还会用到SCR(system clock reference),在编码时,都是由STC(system time clock)生成
ps包长度是可变的
TS也是有多个pes组合而成,ts包由包头和包数据2部分组成,长度固定,包头长4bytes,包数据和自使用区共占184bytes