相关索引:https://blog.csdn.net/knowledgebao/article/details/84776869
PS封包到rtp中
针对H264 做如下PS 封装:每个IDR NALU 前一般都会包含SPS、PPS 等NALU,因此将SPS、PPS、IDR 的NALU 封装为一个PS 包,包括ps 头,然后加上PS system header,PS system map,PES header+h264 raw data。所以一个IDR NALU PS 包由外到内顺序是:PSheader| PS system header | PS system Map | PES header | h264 raw data。对于其它非关键帧的PS 包,就简单多了,直接加上PS头和PES 头就可以了。顺序为:PS header | PES header | h264raw data。以上是对只有视频video 的情况,如果要把音频Audio也打包进PS 封装,也可以。当有音频数据时,将数据加上PES header 放到视频PES 后就可以了。顺序如下:PS 包=PS头|PES(video)|PES(audio),再用RTP 封装发送就可以了。
- PS header:00 00 01 BA 总共14个字节
- System header:00 00 01 BB :总共18个字节
- System Map:00 00 01 BC 总共24个字节
- PES header :00 00 01 (C0-DF) 音频(E0-EF)视频,总共14个字节
- 关键帧PS header | PS system header | PS system Map | PES header | H264
- 非关键帧PS header |PES header | h264
具体解释详见下边内容:
基于RTP的PS封装首先按照ISO/IEC 13818-1:2000将视音频流封装成PS包,再将PS包以负载的方式封装成RTP包。PS包的主要参数设置针对本文档规定的几种视音频格式,PS包中的流类型(stream_type)的取值如下:
- MPEG-4视频流:0x10;
- H.264视频流:0x1B;
- SVAC视频流:0x80;
- G.711音频流:0x90;
- G.722.1音频流:0x92;
- G.723.1音频流:0x93;
- G.729音频流:0x99;
- SVAC音频流:0x9B。
PS包的RTP封装格式参照RFC2250,RTP的主要参数设置如下:
- 负载类型(payload type):96;
- 编码名称(encoding name):PS;
- 时钟频率(clock rate):90kHz;
- SDP描述中“m”字段的“media”项:video。
抓包分析具体详见《SMS6.4_PS_SYS_MAP_PES.ps》《ISO_IEC_13818-1_2000(E).pdf》
具体详见文章底部的参考资料。
PS Header(2.5.3.3)
PS System Header
PS system Map
PES Header
PES是Packetized Elementary Stream的简称,是将原始ES流打包后形成的,再将PES经过不同的打包方式可以组成MPEG program stream 和 MPEG transport stream,即PS流和TS流。
PES的组成结构如图,包括6个字节的包头字段,加上3个字节基本流信息字段,根据信息字段的设置可在之后附加其他字段。
PES结构
前三字节是包头起始标识字段,内容为0x000001
第四个字节是流ID字段,不同的流ID有不用的意义,如图,音频流ID范围从0xC0到0xDF,视频流ID范围从0xE0到0xEF。
PES流ID字段
第五六个字节是PES包长度,表示PES包头部在该字段之后的长度,单位是字节
接下来的第七八九字节是PES的扩展头部字段,用于设置流的基本信息,结构如图
PES可选扩展
第七字节的高两位是标识位,值为10b
第八字节的高两位是PTS和DTS指示位,00表示无PTS无DTS,01禁止使用,10表示PES头部字段会附加PTS结构,11表示PES头部字段会附加PTS和DTS结构
pts结构
pts和dts结构
其中PTS和DTS使用的是90KHZ时钟单位,即1PTS表示1/90000秒,PTS和DTS虽然是33位,但占用了5个字节
ESCR FLAG字段设为1,会在头部附加6个字节的ESCR结构,ES RATE FLAG字段设置为1,会在头部附加3个字节ES rate结构,其他标识位如果设置为1也会相应的在头部附加对应字段。
ES rate结构
ESCR结构
参考资料:
2,PS封包总结
3,PS数据解析
4,ISO_IEC_13818-1_2000(E).pdf
5,RFC2250
6,PES结构详解
------------------有任何问题可以联系:knowlegebao@163.com