完整word版视音频数据PS封装offset要点word文档良心出品.docx
- 文档编号:1798576
- 上传时间:2022-10-24
- 格式:DOCX
- 页数:25
- 大小:69.08KB
完整word版视音频数据PS封装offset要点word文档良心出品.docx
《完整word版视音频数据PS封装offset要点word文档良心出品.docx》由会员分享,可在线阅读,更多相关《完整word版视音频数据PS封装offset要点word文档良心出品.docx(25页珍藏版)》请在冰豆网上搜索。
完整word版视音频数据PS封装offset要点word文档良心出品
MPEG2-PS
1.PS介绍
MPEG2-PS是一种多路复用数字音频、视频等的封装容器。
PS是ProgramStream(程序流或节目流)的简称。
程序流将一个或多个分组但有共同的时间基准的基本数据流(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”保存文件。
2.PS封装H264的流程
PS封装按照ISODEC-13818-1标准。
一个PS包包含PSHeader,PESHeader,PSsystemheader,PSsystemmap等。
针对H264做如下PS封装:
每个IDRNALU前一般都会包含SPS、PPS等NALU,因此将SPS、PPS、IDR的NALU封装为一个PS包,包括ps头,然后加上PSsystemheader,PSsystemmap,PESheader+h264rawdata。
所以一个IDRNALUPS包由外到内顺序是:
PSheader|PSsystemheader|PSsystemMap|PESheader| h264rawdata。
对于其它非关键帧的PS包,就简单多了,直接加上PS头和PES头就可以了。
顺序为:
PSheader|PESheader|h264rawdata。
以上是对只有视频video的情况,如果要把音频Audio也打包进PS封装,也可以。
当有音频数据时,将数据加上PESheader放到视频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/IEC13818-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。
3.PS的结构
3.1PS包头
节目流包标题
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
marker_bit
1
bslbf
system_clock_reference_extension
9
uimsbf
marker_bit
1
bslbf
10
program_mux_rate
22
uimsbf
marker_bit
1
bslbf
marker_bit
1
bslbf
13
reserved
5
bslbf
pack_stuffing_length
3
uimsbf
14
for(i=0;i stuffing_byte 8 bslbf } if(nextbits()==system_header_start_code){ system_header() } } 包起始码字段pack_start_code 值为'00000000000000000000000110111010'(0x000001BA)的位串,用来标志一个包的开始。 系统时钟参考字段system_clock_reference_base,system_clock_reference_extenstion 系统时钟参考(SCR)分两部分编码的42位字段。 第一部分system_clock_reference_base是一个长度为33位的字段;第二部分system_clock_reference_extenstion是一个长度为9位的字段。 SCR字段指出了基本流中包含ESCR_base最后一位的字节到达节目目标解码器输入端的期望时间。 标记位字段marker_bit 1位字段,取值'1'。 节目复合速率字段program_mux_rate 一个22位整数,规定P-STD在包含该字段的包期间接收节目流的速率。 其值以50字节/秒为单位。 不允许取0值。 该字段值在本标准中的节目多路复合流的不同包中取值可能不同。 包填充长度字段pack_stuffing_length 3位整数,规定该字段后填充字节的个数。 填充字节字段stuffing_byte 8位字段,取值恒为'11111111'。 该字段能由编码器插入,例如为了满足通道的要求。 它由解码器丢弃。 在每个包标题中最多只允许有7个填充字节。 3.2系统标题 offset 语法 位数 助记符 system_header(){ 0 system_header_start_code 32 bslbf 4 header_length 16 uimsbf 6 marker_bit 1 bslbf rate_bound 22 uimsbf marker_bit 1 bslbf 9 audio_bound 6 uimsbf fixed_flag 1 bslbf CSPS_flag 1 bslbf 10 system_audio_lock_flag 1 bslbf system_video_lock_flag 1 bslbf marker_bit 1 bslbf vedio_bound 5 uimsbf 11 packet_rate_restriction_flag 1 bslbf reserved_bits 7 bslbf 12 while(nextbits()=='1'){ stream_id 8 uimsbf '11' 2 bslbf P-STD_buffer_bound_scale 1 bslbf P-STD_buffer_size_bound 13 uimsbf } } 系统标题起始码字段system_header_start_code 取值'00000000000000000000000110111011'(0x000001BB)的位串,指出系统标题的开始。 标题长度字段header_length 16位字段。 指出该字段后的系统标题的字节长度。 在本规范将来的扩充中可能扩展该字段。 速率界限字段rate_bound 22位字段,取值不小于编码在节目流的任何包中的program_mux_rate字段的最大值。 该字段可被解码器用于估计是否有能力对整个流解码。 音频界限字段audio_bound 6位字段,取值是在从0到32的闭区间中的整数,且不小于节目流中音频流的最大数目。 固定标志字段fixed_flag 1位标志位。 置'1'时表示比特率恒定的操作;置'0'时,表示操作的比特率可变。 CSPS标志字段CSPS_flag 1位字段。 系统音频锁定标志字段system_audio_lock_flag 1位字段。 表示在系统目标解码器的音频采样率和system_clock_frequency之间存在规定的比率。 系统视频锁定标志字段system_video_lock_flag 1位字段。 表示在系统目标解码器的视频帧速率和system_clock_frequency之间存在规定的比率。 比率SCFR的值是精确的。 视频界限字段video_bound 5位字段,取值是在从0到16的闭区间中的整数且不小于节目流中解码过程同时活动的流的最大数目。 分组速率限制标志字段packet_rate_restriction_flag 1位标志位。 若CSPS标识为'0',则该字段的含义未定义。 保留位字段reserved_bits 7位字段。 被保留供ISO/IEC将来使用。 它的值应为'1111111',除非ISO/IEC对它作出其它规定。 流标识字段stream_id 8位字段。 指示其后的P-STD_buffer_bound_scale和P-STD_buffer_size_bound字段所涉及的流的编码和基本流号码。 若取值'10111000'(0xB8),则其后的P-STD_buffer_bound_scale和P-STD_buffer_size_bound字段指节目流中所有的音频流;若取值'10111001'(0xB9),则其后的P-STD_buffer_bound_scale和P-STD_buffer_size_bound字段指节目流中所有的视频流;若stream_id取其它值,则应该是大于或等于'10111100'的一字节值且应根据下表解释为流的编码和基本流号码。 a)MPEG-4
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 完整 word 音频 数据 PS 封装 offset 要点 文档 良心 出品