H.264视频的RTP负载格式
1介绍-----------------------------------------------------------
一个nal单元由一字节的头和负载字节组成
h.264的一个主要特性是传输时间,解码时间,图像有片断采样时间完全解耦合
参数集概念-------------------------------------------------------
h.264规范包含两类参数集:
顺序参数集
图像参数集
参数集结构包含 :图像大小,采用的可选的编码模式,宏块到片断组映射等信息
网络抽象层单元类型-------------------------------------------------
nal的设计信息?????????????
所有nal单元有一个单个nal单元类型字节,也作为rtp负载格式的负载头,后加nal单元的负载
nal单元字节的结构语义
+---------------+
|0|1|2|3|4|5|6|7|
+-+-+-+-+-+-+-+-+
|F|NRI| Type |
+---------------+
f: 1bit forbidden_zero_bit H.264规范声明设置为1,指示语法违例
nri: 2bit 值为00时指示nal单元的内容不用于重建引用图像的帧
大于00时要求维护引用图像的完整性
type: 5bit nal_unit_type 本部件指定nal单元负载类型定义
定义和缩写
don(decoding order number):解码顺序号
donb:
dond:解码顺序号差
fec:向前纠错
fu:分片单元
idr:舜间解码刷新
mane:美提感知网络元素
mtap:多时刻聚合包
mtap16:16位时戳位移
mtap24:24位时戳位移
nal网络抽象层
nalu:nal单元
sei:被充增强信息
stap:单时刻聚合包
stap-a:stab类型a
stap-b:stab类型b
ts:时间戳
vcl:视频解码层
RTP 负载格式
RTP头的使用(再看一看rtp头吧)
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|V=2|P|X| CC |M| PT | sequence number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| timestamp |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| synchronization source (SSRC) identifier |
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
| contributing source (CSRC) identifiers |
| .... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
图 1. RTP 头。
对RTP头作如下设置:
maker_bit(M): 1bit
对RTP时间戳指示的访问单元的最后一个包位进行设置
允许有效缓冲处理布局
对于聚合包(stap,mtap) m位必须设置成最后一个NAL单元
如果传送在单个RTP包中
注:运送多个nal单元的聚合包只有一个M位相关联, 如果一个网关重新打包一个聚合包为几个包,M位的设置就会显得不可靠
playload type(pt): 7bit
sequece number(sn):16bit
对于单个nalu与非交错打包方式,序号用于nalu解码顺序
timestamp:32bit
设置为内容的采样时戳,必须使用90khz的时钟频率
如果nal单元没有自已的时间戳设置成访问单元主编码图象的时间戳
接收者应该忽略包含在访问单元的任何图像时间SEI消息,通过rtp时戳同步显示过程
注:因为h.264允许解码顺序可以和显示顺序不同,RTP时戳的值对于RTP的序号可以不是单调非减的
RTP负载格式的公共结构-------------------------------------------
可以通过rtp负载的第一个字节来识别负载结构
单个nal单元包 (h264需要的rbsp)
聚合包:
stap-a聚合包a (nal单元的大小为65535)
stap-b聚合包b
mtap16
mtap24
分片单元:
FU-A分片单元fu-a
FU-B分片单元fu-b
Table 1. 单元类型以及负载结构总结
单元类型号
Type Packet Type name Section
---------------------------------------------------------
0 undefined -
1-23 NAL unit Single NAL unit packet per H.264 5.6
24 STAP-A Single-time aggregation packet 5.7.1
25 STAP-B Single-time aggregation packet 5.7.1
26 MTAP16 Multi-time aggregation packet 5.7.2
27 MTAP24 Multi-time aggregation packet 5.7.2
28 FU-A Fragmentation unit 5.8
29 FU-B Fragmentation unit 5.8
30-31 undefined -
注:没有限制单封装在单个nal单元包和分片单元的大小
封装在聚合包nal单无的大小为(65535)
nal单元字节的使用-------------------------------------------------
+---------------+
|0|1|2|3|4|5|6|7|
+-+-+-+-+-+-+-+-+
|F|NRI| Type |
+---------------+
f:1bit forbidden_zero_bit
nri: 2bit nal_ref_idc
0值和非0值与h264规范一样
大于00的nri值指示相对传输优先级
最高优先级是11,依次为10-01 ,00最低
注:任何非零的nri在h.264解码器的处理是相同的,接收者在传送nal单元给解码器时不必操作nri的值
nal单元类型的值:
h.264编码器必须要据h264的规范设置nri值
当nal_unit_type范围是1到12
在h.264规范要求对于nal_unit_type为6,9,10,11,12的nal单元的nri值为0
nal_unit_type为7,8的nal单元的nri值为11,nal单元里封装有是(序列参数集和图像参数集)
nal_unit_type为5的nal单元的nri值为11
注:在某些profile中数据分区不可用,在main或baseline profiles
如果nal 单元类型2,3,4出现在视频流符合数据分区被允许的profile情况下
不会出现在符合main/baseline profile
Table 2. 编码片和主编码参考图像数据分区的编码片的NRI值的例子
NAL Unit Type Content of NAL unit NRI (binary)
----------------------------------------------------------------
1 non-IDR coded slice 10
2 Coded slice data partition A 10
3 Coded slice data partition B 01
4 Coded slice data partition C 01
注释: 像以前提起的, 非参考图像NRI值是00.
h.264编码器应该设置冗余编码参考图像的编码片和编码片分区nal单元的nri值为01
nal单元类型(nal_unit_type)24-29的nri的定义??????????????
nal单元类型(nal_unit_type)13-23的nri的值,这些值保留给itu-t,iso/iec
nal单元类型(nal_unit_type)0,30,31的nri的值,没有指定
打包方式------------------------------------------------------------------
1 单个NAL单元方式 常规系统,兼容itu-t h.261
2 非交错方式 可以不符合ITU-T H.241建议.在非交错方式, NAL单元按照NAL单元解码顺序传送
3 交错方式 不要求非常低端到端延迟的系统,允许传送NAL单元不按照NAL单元解码顺序
设置打包方式:通过optional packetization-mode mime的值指定
每个打包方式允许的NAL单元类型总结(yes = 允许, no = 不允许, ig = 忽略)
单个nal方式 非交错方式 交错方式
Type Packet Single NAL Non-Interleaved Interleaved
Unit Mode Mode Mode
-------------------------------------------------------------
0 undefined ig ig ig
1-23 NAL unit yes yes no
24 STAP-A no yes no
25 STAP-B no no yes
26 MTAP16 no no yes
27 MTAP24 no no yes
28 FU-A no yes yes
29 FU-B no no yes
30-31 undefined ig ig ig
解码顺序号don-------------------------------------------------------------
在交错打包方式,nal单元的传输顺序允许和nal单元的解码顺序不同
1介绍-----------------------------------------------------------
一个nal单元由一字节的头和负载字节组成
h.264的一个主要特性是传输时间,解码时间,图像有片断采样时间完全解耦合
参数集概念-------------------------------------------------------
h.264规范包含两类参数集:
顺序参数集
图像参数集
参数集结构包含 :图像大小,采用的可选的编码模式,宏块到片断组映射等信息
网络抽象层单元类型-------------------------------------------------
nal的设计信息?????????????
所有nal单元有一个单个nal单元类型字节,也作为rtp负载格式的负载头,后加nal单元的负载
nal单元字节的结构语义
+---------------+
|0|1|2|3|4|5|6|7|
+-+-+-+-+-+-+-+-+
|F|NRI| Type |
+---------------+
f: 1bit forbidden_zero_bit H.264规范声明设置为1,指示语法违例
nri: 2bit 值为00时指示nal单元的内容不用于重建引用图像的帧
大于00时要求维护引用图像的完整性
type: 5bit nal_unit_type 本部件指定nal单元负载类型定义
定义和缩写
don(decoding order number):解码顺序号
donb:
dond:解码顺序号差
fec:向前纠错
fu:分片单元
idr:舜间解码刷新
mane:美提感知网络元素
mtap:多时刻聚合包
mtap16:16位时戳位移
mtap24:24位时戳位移
nal网络抽象层
nalu:nal单元
sei:被充增强信息
stap:单时刻聚合包
stap-a:stab类型a
stap-b:stab类型b
ts:时间戳
vcl:视频解码层
RTP 负载格式
RTP头的使用(再看一看rtp头吧)
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|V=2|P|X| CC |M| PT | sequence number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| timestamp |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| synchronization source (SSRC) identifier |
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
| contributing source (CSRC) identifiers |
| .... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
图 1. RTP 头。
对RTP头作如下设置:
maker_bit(M): 1bit
对RTP时间戳指示的访问单元的最后一个包位进行设置
允许有效缓冲处理布局
对于聚合包(stap,mtap) m位必须设置成最后一个NAL单元
如果传送在单个RTP包中
注:运送多个nal单元的聚合包只有一个M位相关联, 如果一个网关重新打包一个聚合包为几个包,M位的设置就会显得不可靠
playload type(pt): 7bit
sequece number(sn):16bit
对于单个nalu与非交错打包方式,序号用于nalu解码顺序
timestamp:32bit
设置为内容的采样时戳,必须使用90khz的时钟频率
如果nal单元没有自已的时间戳设置成访问单元主编码图象的时间戳
接收者应该忽略包含在访问单元的任何图像时间SEI消息,通过rtp时戳同步显示过程
注:因为h.264允许解码顺序可以和显示顺序不同,RTP时戳的值对于RTP的序号可以不是单调非减的
RTP负载格式的公共结构-------------------------------------------
可以通过rtp负载的第一个字节来识别负载结构
单个nal单元包 (h264需要的rbsp)
聚合包:
stap-a聚合包a (nal单元的大小为65535)
stap-b聚合包b
mtap16
mtap24
分片单元:
FU-A分片单元fu-a
FU-B分片单元fu-b
Table 1. 单元类型以及负载结构总结
单元类型号
Type Packet Type name Section
---------------------------------------------------------
0 undefined -
1-23 NAL unit Single NAL unit packet per H.264 5.6
24 STAP-A Single-time aggregation packet 5.7.1
25 STAP-B Single-time aggregation packet 5.7.1
26 MTAP16 Multi-time aggregation packet 5.7.2
27 MTAP24 Multi-time aggregation packet 5.7.2
28 FU-A Fragmentation unit 5.8
29 FU-B Fragmentation unit 5.8
30-31 undefined -
注:没有限制单封装在单个nal单元包和分片单元的大小
封装在聚合包nal单无的大小为(65535)
nal单元字节的使用-------------------------------------------------
+---------------+
|0|1|2|3|4|5|6|7|
+-+-+-+-+-+-+-+-+
|F|NRI| Type |
+---------------+
f:1bit forbidden_zero_bit
nri: 2bit nal_ref_idc
0值和非0值与h264规范一样
大于00的nri值指示相对传输优先级
最高优先级是11,依次为10-01 ,00最低
注:任何非零的nri在h.264解码器的处理是相同的,接收者在传送nal单元给解码器时不必操作nri的值
nal单元类型的值:
h.264编码器必须要据h264的规范设置nri值
当nal_unit_type范围是1到12
在h.264规范要求对于nal_unit_type为6,9,10,11,12的nal单元的nri值为0
nal_unit_type为7,8的nal单元的nri值为11,nal单元里封装有是(序列参数集和图像参数集)
nal_unit_type为5的nal单元的nri值为11
注:在某些profile中数据分区不可用,在main或baseline profiles
如果nal 单元类型2,3,4出现在视频流符合数据分区被允许的profile情况下
不会出现在符合main/baseline profile
Table 2. 编码片和主编码参考图像数据分区的编码片的NRI值的例子
NAL Unit Type Content of NAL unit NRI (binary)
----------------------------------------------------------------
1 non-IDR coded slice 10
2 Coded slice data partition A 10
3 Coded slice data partition B 01
4 Coded slice data partition C 01
注释: 像以前提起的, 非参考图像NRI值是00.
h.264编码器应该设置冗余编码参考图像的编码片和编码片分区nal单元的nri值为01
nal单元类型(nal_unit_type)24-29的nri的定义??????????????
nal单元类型(nal_unit_type)13-23的nri的值,这些值保留给itu-t,iso/iec
nal单元类型(nal_unit_type)0,30,31的nri的值,没有指定
打包方式------------------------------------------------------------------
1 单个NAL单元方式 常规系统,兼容itu-t h.261
2 非交错方式 可以不符合ITU-T H.241建议.在非交错方式, NAL单元按照NAL单元解码顺序传送
3 交错方式 不要求非常低端到端延迟的系统,允许传送NAL单元不按照NAL单元解码顺序
设置打包方式:通过optional packetization-mode mime的值指定
每个打包方式允许的NAL单元类型总结(yes = 允许, no = 不允许, ig = 忽略)
单个nal方式 非交错方式 交错方式
Type Packet Single NAL Non-Interleaved Interleaved
Unit Mode Mode Mode
-------------------------------------------------------------
0 undefined ig ig ig
1-23 NAL unit yes yes no
24 STAP-A no yes no
25 STAP-B no no yes
26 MTAP16 no no yes
27 MTAP24 no no yes
28 FU-A no yes yes
29 FU-B no no yes
30-31 undefined ig ig ig
解码顺序号don-------------------------------------------------------------
在交错打包方式,nal单元的传输顺序允许和nal单元的解码顺序不同