欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

RTCP&RTP协议格式分析2:RTP

程序员文章站 2022-06-22 18:04:18
RTCP&RTP协议格式分析2:RTP   RTP头有以下格式:     0          ...

RTCP&RTP协议格式分析2: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                                             |

   |                             ....                                                                                   |

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

 

前12个字节出现在每个RTP包中,仅仅在被混合器插入后,才出现CSRC列表。

 

~~~~~~~~~下面开始分析各个字段的意义:

 

版本号:2位,值为2.

 

填充P:1位:

 

若填料比特被设置,则此包包含一到多个附加在末端的填充比特,填充比特不算作

 

负载的一部分。填充的最后一个字节指明可以忽略多少个填充比特(包括它自己)。填充可能用于某些具有固定长度的加密算法,或者用于在底层数据单元中传输多个RTP包。

 

~~~~~~~

 

 X:扩展位,如果设置了,表示固定头后面跟着一个头扩展。

 

CC:4比特CSRC计数包含了跟在固定头后面CSRC识别符的数目。

 

标志(M):1比特标志的解释由具体协议规定。它用来允许在比特流中标记重要的事件,如帧边界。

 

~~~~~~~~

 

负载类型(7位): 定义了负载的格式,

 

序列号: sequence number,16位,每发送一个RTP报文,序列号加1。

 

时间戳:标志了数据的第一个字节的采样时间,初始值是随机的,

 

 即RTP时间戳记录当前是第几个采样数据,NTP时间戳记录当前数据包相对于参考时钟(1900年1月1日0点算起,当前时间相对于该时刻所经过的秒数)的绝对时间

 

~~~~~~~~~~~~

 

SSRC:32位,随机生成。

 

CSRC列表:0到15项,每项32位,个数由CC域决定。