- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
MPEG2-PS
PS介绍
MPEG2-PS是一种多路复用 数字音频、视频等的封装容器。PS是Program Stream(程序流或节目流)的简称。程序流将一个或多个分组但有共同的时间基准的基本数据流 (PES)合并成一个整体流。它是为可靠稳定的储存媒介如光盘而设计的。
TS流与 PS流的区别在于TS流的包结构是固定长度的,而PS流的包结构是可变长度的。它是分包发送的,每一个包长为188字节。在TS流里可以填入很多类型的数据,如视频、音频、自定义信息等。他的包的结构为,包头为4个字节,负载为184个字节。
PS包与TS包在结构上的这种差异,导致了它们对传输误码具有不同的抵抗能力,因而应用的环境也有所不同。TS码流由于采用了固定长度的包结构,当传输误码破坏了某一TS包的同步信息时,接收机可在固定的位置检测它后面包中的同步信息,从而恢复同步,避免了信息丢失。而PS包由于长度是变化的,一旦某一PS包的同步信息丢失,接收机无法确定下一包的同步位置,就会造成失步,导致严重的信息丢失。因此,在信道环境较为恶劣,传输误码较高时,一般采用TS码流;而在信道环境较好,传输误码较低时,一般采用PS码流。辨别这两种格式最简便的方法是利用MediaInfo工具查看MPEG视频的编码信息,这样就能确定它是何种格式,以方便后续的无损剪辑。一般来说,采用MPEG2-HD格式的高清数码摄像机一般以“MPEG2-PS”来保存文件;而采用AVCHD格式的高清摄像机则通常以“.M2TS”或“.MTS”保存文件。
PS封装H264的流程
PS封装按照ISO DEC-13818-1标准。一个PS包包含PS Header, PES Header, PS system header, PS system map等。
针对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包由外到内顺序是:PS header | PS system header | PS system Map | PES header |? h264 raw data。对于其它非关键帧的PS包,就简单多了,直接加上PS头和PES头就可以了。顺序为:PS header | PES header | h264 raw data。以上是对只有视频video的情况,如果要把音频Audio也打包进PS封装,也可以。当有音频数据时,将数据加上PES header 放到视频PES后就可以了。顺序如下:PS包=PS头|PES(video)|PES(audio),再用RTP封装发送就可以了。
对应的解码流程则为:
GB28181对RTP传输的数据负载类型有规定(参考GB28181附录B),负载类型中96-127动态范围:
RFC2250建议96表示PS封装
RFC3016建议97为MPEG-4
RFC3984建议98为H264
即我们接收到的RTP包首先需要判断负载类型,若负载类型为96,则采用PS解复用,将音视频分开解码。若负载类型为98,直接按照H264的解码类型解码。
基于 RTP 的PS 封装首先按照 ISO/IEC 13818-1将视音频流封装成 PS 包,再将 PS 包以负载的方式封装成 RTP 包。PS 包的主要参数设置针对本文档规定的几种视音频格式,PS 包中的流类型(stream_type)的取值如下:
a) MPEG-4视频流: 0x10;
b) H.264视频流: 0x1B;
c) SVAC视频流: 0x80;
d) G.711音频流: 0x90;
e) G.722.1音频流: 0x92;
f) G.723.1音频流: 0x93;
g) G.729音频流: 0x99;
h) SVAC音频流: 0x9B。
PS的结构
3.1 PS包头
节目流包标题
offset
语法
位数
助记符
pack_header() {
0
pack_start_code
32
bslbf
4
01
2
bslbf
system_clock_reference_base[32..30]
3
bslbf
marker_bit
1
bslbf
system_clock_reference_base[29..15]
15
bslbf
marker_bit
1
bslbf
system_clock_reference_base[14..0]
15
bslbf
原创力文档


文档评论(0)