PS封包到rtp中

相关索引:https://blog.csdn.net/knowledgebao/article/details/84776869


PS封包到rtp中

PS Header(2.5.3.3)

PS System Header

PS system Map

PES Header


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)的取值如下:

  1. MPEG-4视频流:0x10;
  2. H.264视频流:0x1B;
  3. SVAC视频流:0x80;
  4. G.711音频流:0x90;
  5. G.722.1音频流:0x92;
  6. G.723.1音频流:0x93;
  7. G.729音频流:0x99;
  8. SVAC音频流:0x9B。

PS包的RTP封装格式参照RFC2250,RTP的主要参数设置如下:

  1. 负载类型(payload type):96;
  2. 编码名称(encoding name):PS;
  3. 时钟频率(clock rate):90kHz;
  4. 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结构


参考资料:

1,RTP协议全解析(H264码流和PS流)

2,PS封包总结

3,PS数据解析

4,ISO_IEC_13818-1_2000(E).pdf

5,RFC2250

6,PES结构详解

7,PS流的格式和解析总结

------------------有任何问题可以联系:knowlegebao@163.com

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值