MPEG2-PS格式分析实例

一、 PS 包头格式

1、PS 包头格式


包起始码字段  pack_start_code 

值为'0000 0000 0000 00000000 0001 1011 1010' (0x000001BA)的位串,用来标志一个包的开始。

系统时钟参考字段  system_clock_reference_basesystem_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位字段,取值恒为'1111 1111'。该字段能由编码器插入,例如为了满足通道的要求。它由解码器丢弃。在每个包标题中最多只允许有7个填充字节。


2、分析实例

结合上面的格式,分析图1.


图1

0x000001BA用来标志一个包的开始,从后面划线的ff到01表示填充字符,其他的分析见图2


图2



二、 PS map格式

1、格式说明

见图2-1


图2-1

分组起始码前缀字段  packet_start_code_prefix 

24位码。它和跟随其后的map_stream_id共同组成一个分组起始码以标志分组的开始。该字段是值为'0000 0000 0000 0000 0000 0001' (0x000001)的位串。

映射流标识字段  map_stream_id 

8位字段,值为0xBC。

节目流映射长度字段  program_stream_map_length 

16位字段。指示紧跟在该字段后的program_stream_map中的字节数。该字段的最大值为1018(0x3FA)。

当前下一个指示符字段  current_next_indicator 

1位字段。置'1'时表示传送的节目流映射当前是可用的。置'0'时表示传送的节目流映射还不可用,但它将是下一个生效的表。

节目流映射版本字段  program_stream_map_version 

5位字段,表示整个节目流映射的版本号。一旦节目流映射的定义发生变化,该字段将递增1,并对32取模。在current_next_indicator为'1'时,该字段应该是当前适用的节目流映射的版本号;在current_next_indicator为'0'时,该字段应该是下一个适用的节目流映射的版本号。

节目流信息长度字段  program_stream_info_length 

16位字段,指出紧跟在该字段后的描述符的总长度。

标记位字段  marker_bit 

1位字段,取值为'1'。

基本流映射长度字段  elementary_stream_map_length 

16位字段,指出在该节目流映射中的所有基本流信息的字节长度。它包括stream_type、elementary_stream_id和elementary_stream_info_length字段。

流类型字段  stream_type 

8位字段,根据表2-29规定了流的类型。该字段只能标志包含在PES分组中的基本流且取值不能为0x05。

基本流标识字段  elementary_stream_id 

8位字段,指出该基本流所在PES分组的PES分组标题中stream_id字段的值。

基本流信息长度字段  elmentary_stream_info_length 

16位字段,指出紧跟在该字段后的描述符的字节长度。

CRC 32字段  CRC_32 

32位字段。


2、实例分析

分析见图2-2


图2-2

0x000001表示分组起始码前缀字段 packet_start_code_prefix, 0xBC表示映射流标识字段  map_stream_id

①表示节目流映射长度字段 program_stream_map_length

②表示节目流信息长度字段 program_stream_info_length

③表示基本流映射长度字段 elementary_stream_map_length

④表示流类型字段  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。 


⑤表示基本流标识字段  elementary_stream_id , 常见值见图2-3


图2-3

其他分析见下图




3
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值