RTP中的FUs打包与NAL的关系

转载 2015年11月19日 22:35:43
NALU打包成RTP的方式有三种: 
.1、 单一 NAL 单元模式

 即一个 RTP 包仅由一个完整的 NALU 组成. 这种情况下 RTP NAL 头类型字段和原始的 H.264的
NALU 头类型字段是一样的.

2. 组合封包模式
    即可能是由多个 NAL 单元组成一个 RTP 包. 分别有4种组合方式: STAP-A, STAP-B, MTAP16, MTAP24.
那么这里的类型值分别是 24, 25, 26 以及 27.

3. 分片封包模式
    用于把一个 NALU 单元封装成多个 RTP 包. 存在两种类型 FU-A 和 FU-B. 类型值分别是 28 和 29.

在rtp打包时,如果一个NALU放在一个RTP包里,可以使用NALU的nal_unit_type,但是当需要把多个NALU打包成一个RTP包,或者需要把一个NALU打包成多个RTP包时,就定义新的type来标识

3 Fragmentation Units (FUs).

而当 NALU 的长度超过 MTU 时, 就必须对 NALU 单元进行分片封包. 也称为 Fragmentation Units (FUs).

       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
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      | FU indicator |   FU header   |                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               |
      |                                                               |
      |                         FU payload                            |
      |                                                               |
      |                               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                               :...OPTIONAL RTP padding        |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

      Figure 14. RTP payload format for FU-A

   FU indicator有以下格式:
      +---------------+
      |0|1|2|3|4|5|6|7|
      +-+-+-+-+-+-+-+-+
      |F|NRI|  Type   |
      +---------------+
   FU指示字节的类型域 Type=28表示FU-A。。NRI域的值必须根据分片NAL单元的NRI域的值设置。
 
   FU header的格式如下:
      +---------------+
      |0|1|2|3|4|5|6|7|
      +-+-+-+-+-+-+-+-+
      |S|E|R|  Type   |
      +---------------+
   S: 1 bit
   当设置成1,开始位指示分片NAL单元的开始。当跟随的FU荷载不是分片NAL单元荷载的开始,开始位设为0。
   E: 1 bit
   当设置成1, 结束位指示分片NAL单元的结束,即, 荷载的最后字节也是分片NAL单元的最后一个字节。当跟随的FU荷载不是分片NAL单元的最后分片,结束位设置为0。
   R: 1 bit
   保留位必须设置为0,接收者必须忽略该位。
   Type: 5 bits

三、拆包和解包

拆包:当编码器在编码时需要将原有一个NAL按照FU-A进行分片,原有的NAL的单元头与分片后的FU-A的单元头有如下关系:
原始的NAL头的前三位为FU indicator的前三位,原始的NAL头的后五位为FU header的后五位,FU indicator与FU header的剩余位数根据实际情况决定。
 
解包:当接收端收到FU-A的分片数据,需要将所有的分片包组合还原成原始的NAl包时,FU-A的单元头与还原后的NAL的关系如下:
还原后的NAL头的八位是由FU indicator的前三位加FU header的后五位组成,即:
nal_unit_type = (fu_indicator & 0xe0) | (fu_header & 0x1f)

相关文章推荐

H265(HEVC) nal 单元头介绍及rtp发送中的fu分组发送详解

h265(HEVC)nal单元头介绍,及h265视频数据传输,通过rtp传输时fu分组包头结构介绍...

H.264 NAL层解析(0x00000001,编码,打包,NALU)

 H.264 NAL层解析(0x00000001,编码,打包,NALU)   1.引言 H.264的主要目标: 1.高的视频压缩比 2.良好的网络亲和性 解决方案: VCL  vi...
  • zxh2075
  • zxh2075
  • 2016年08月18日 13:19
  • 382

H.264中帧、片、宏块和NAL的关系

怎么区分H.264视频流的I frame 和 P frame?   我是新手,前些天自己看那H.264规范文档及其他资料寻找答案时, 还有几个概念的关系还没能理解清楚,望达人指点一二: N...
  • patise
  • patise
  • 2012年03月04日 22:02
  • 2609

【转载】H.264中NAL、Slice与frame意思及相互关系

H.264中NAL、Slice与frame意思及相互关系 NAL nal_unit_type中的1(非IDR图像的编码条带)、2(编码条带数据分割块A)、3(编码条带数据分割块B)、4(编码...

RFC2250 rtp打包文档

  • 2017年06月02日 11:52
  • 23KB
  • 下载

android h263硬编码rtp打包

  • 2013年06月18日 15:45
  • 1.04MB
  • 下载

live555源码分析----RTP的打包与发送

这里主要分析一下,live555中关于RTP打包发送的部分。在处理完PLAY命令之后,就开始发送RTP数据包了(其实在发送PLAY命令的response包之前,就会发送一个RTP包,这里传输就已经开始...
  • gavinr
  • gavinr
  • 2011年12月02日 17:10
  • 17233

HEVC码流的RTP打包

  • 2015年09月26日 11:39
  • 161KB
  • 下载

PES,TS,PS,RTP等流的打包格式解析之PS流

本篇描述PS流的封装格式 1.PS头封装格式 PS流是对PES的进一步封装,是将具有共同时间基准的一个或多个PES包组合而成的单一的数据流;其基本单位是PS包,PS流由很多个PS包组成,PS包主要...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:RTP中的FUs打包与NAL的关系
举报原因:
原因补充:

(最多只允许输入30个字)