分享

RTP包头分析(H.264)

 青松卓然 2012-08-31

RTP包头分析(H.264

h.264规范中使用了在NAL层使用了RTP包头形式,下面对RTP的包头做一下解释:

首先我们来看一下H.264中对于RPT的结构封装如下:

typedef struct
{
 
 unsigned int v;          //!< Version, 2 bits, MUST be 0x2
  unsigned int p;          //!<
 Padding bit, Padding MUST NOT be used
  unsigned int x;          //!< Extension, MUST be zero
  unsigned int cc;         /*!< CSRC count, normally 0 in the absence
                                of RTP mixers */
  unsigned int m;          //!< Marker bit
  unsigned int pt;         //!< 7 bits, Payload Type, dynamically established
  unsigned int seq;        /*!< RTP sequence number, incremented by one for
                                each sent packet */
  unsigned int old_seq;    //!< to detect wether packets were lost
  unsigned int timestamp;  //!< timestamp, 27 MHz for H.26L
  unsigned int ssrc;       //!< Synchronization Source, chosen randomly
  byte *       payload;    //!< the payload including payload headers
  unsigned int paylen;     //!< length of payload in bytes
  byte *       packet;     //!< complete packet including header and payload
  unsigned int packlen;    //!< length of packet, typically paylen+12
} RTPpacket_t;

对于RTP包头格式如下:

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 |
| .... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

前12个字节在每个RTP包中都存在,他们是:V、P、X、CC、M、PT、sequence numbertimestampSSRC.其中V是版本号(占2个bit);P是填充位(占1个bit);X是扩展位(占1个bit);CC是CSRC的记数位(占4个bit);M是标记位(占1个bit);PT是有效载荷的类型(占7个bit);sequence number是RTP包记数位(占16个bit);timestamp是时间戳位(占4个字节);SSRC是同步标志位(占4个字节)。

CSRC不是RTP必须的(占4个字节)。

rtp
包头的意思:
CSRC
记数(CC)  表示CSRC标识的数目。CSRC标识紧跟在RTP固定头部之后,用来表示RTP数据报的来源,RTP协议允许在同一个会话中存在多个数据源,它们可以通过RTP混合器合并为一个数据源。例如,可以产生一个CSRC列表来表示一个电话会议,该会议通过一个RTP混合器将所有讲话者的语音数据组合为一个RTP数据源。
负载类型(PT)  标明RTP负载的格式,包括所采用的编码算法、采样频率、承载通道等。例如,类型2表明该RTP数据包中承载的是用ITU G.721算法编码的语音数据,采样频率为8000Hz,并且采用单声道。
序列号
  用来为接收方提供探测数据丢失的方法,但如何处理丢失的数据则是应用程序自己的事情,RTP协议本身并不负责数据的重传。
时间戳  记录了负载中第一个字节的采样时间,接收方能够时间戳能够确定数据的到达是否受到了延迟抖动的影响,但具体如何来补偿延迟抖动则是应用程序自己的事情。

 

RTP:实时传输协议

 RTPReal Time Transport Protocol

 

  实时传输协议(RTP)为数据提供了具有实时特征的端对端传送服务,如在组播或单播网络服务下的交互式视频音频或模拟数据。应用程序通常在 UDP 上运行 RTP 以便使用其多路结点和校验服务;这两种协议都提供了传输层协议的功能。但是 RTP 可以与其它适合的底层网络或传输协议一起使用。如果底层网络提供组播方式,那么 RTP 可以使用该组播表传输数据到多个目的地。

  RTP 本身并没有提供按时发送机制或其它服务质量(QoS)保证,它依赖于低层服务去实现这一过程。 RTP 并不保证传送或防止无序传送,也不确定底层网络的可靠性。 RTP 实行有序传送, RTP 中的序列号允许接收方重组发送方的包序列,同时序列号也能用于决定适当的包位置,例如:在视频解码中,就不需要顺序解码。

RTP 由两个紧密链接部分组成:

  • RTP ――传送具有实时属性的数据;
  • RTP 控制协议(RTCP――监控服务质量并传送正在进行的会话参与者的相关信息。 RTCP 第二方面的功能对于松散受控会话是足够的,也就是说,在没有明确的成员控制和组织的情况下,它并不非得用来支持一个应用程序的所有控制通信请求。

协议结构

 

1

2

3

8

9

16bit

V

P

X

CSRC Count

M

Payload Type

Sequence number

Timestamp

SSRC

CSRC (variable 0 – 15 items 32bits each)

 

  • V ― 版本。识别 RTP 版本。
  • P ― 间隙(Padding)。设置时,数据包包含一个或多个附加间隙位组,其中这部分不属于有效载荷。
  • X ― 扩展位。设置时,在固定头后面,根据指定格式设置一个扩展头。
  • CSRC Count ― 包含 CSRC 标识符(在固定头后)的编号。
  • M ― 标记。标记由 Profile 文件定义。允许重要事件如帧边界在数据包流中进行标记。
  • Payload Type ― 识别 RTP 有效载荷的格式,并通过应用程序决定其解释。Profile 文件规定了从 Payload 编码到 Payload 格式的缺省静态映射。另外的 Payload Type 编码可能通过非 RTP 方法实现动态定义。
  • Sequence Number ― 每发送一个 RTP 数据包,序列号增加1。接收方可以依次检测数据包的丢失并恢复数据包序列。
  • Timestamp ― 反映 RTP 数据包中的第一个八位组的采样时间。采样时间必须通过时钟及时提供线性无变化增量获取,以支持同步和抖动计算。
  • SSRC ― 同步源。该标识符随机选择,旨在确保在同一个 RTP 会话中不存在两个同步源具有相同的 SSRC 标识符。
  • CSRC ― 贡献源标识符。识别该数据包中的有效载荷的贡献源。

 

相关协议

RTCPRTSPUDPTCPIP

组织来源

RTP IETFwww.)定义在 RFC 35503551中。

相关链接

http://www./protocol/rfc3550.pdf: RTP: A Transport Protocol for Real-Time Applications
http://www./protocol/rfc3551.pdf: RTP Profile for Audio and Video Conferences with Minimal Control

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多