RTP和RTCP讲解

1.RTP介绍

1.1.RTP(tcp)  interleaverframe

       说明:这种类型的头会在RTP头前加4个字节,结构如下:

      |- Byte[0]:'$'-|- Byte[1]:channel-|-Byte[2:3]:package len-|-RTP common head-|

          <1>第一个字节必须为'$';

         <2>第二个字节指示通道号,0表示RTP数据,1表示RTCP数据;

         <3>后面两个字节用来指示插入的有效数据长度


1.2.RTP头结构

RTP和RTCP讲解_第1张图片

         <1>第1字节:

                  V[6:7]:RTP协议的版本号,当前协议版本号为2

                  P[5]:填充标志,如果P=1,则在该报文的尾部填充一个或多个额外的八位组,它们不是有效载荷的一部分。

                  X[4]:扩展标志,如果X=1,则在RTP报头后跟有一个扩展报头

                  CC[0:3]:CSRC计数器,指示CSRC 标识符的个数

         <2>第2字节:

                  M[7]: 标记,不同的有效载荷有不同的含义,对于视频,标记一帧的结束;对于音频,标记会话的开始。

                  PT[0:6]: 有效荷载类型,用于说明RTP报文中有效载荷的类型,如GSM音频、JPEM图像等,在流媒体中大部分是用来区分音频流和视频流的,这样便于客户端进行解析。

         <3>第3-4字节:

                  序列号:用于标识发送者所发送的RTP报文的序列号,每发送一个报文,序列号增1。这个字段当下层的承载协议用UDP的时候,网络状况不好的时候可以用来检查丢包。同时出现网络抖动的情况可以用来对数据进行重新排序,序列号的初始值是随机的,同时音频包和视频包的sequence是分别记数的。

         <4>第5-8字节:

                  时戳(Timestamp):必须使用90 kHz 时钟频率。时戳反映了该RTP报文的第一个八位组的采样时刻。接收者使用时戳来计算延迟和延迟抖动,并进行同步控制。

         <5>第9-12字节:

                  同步信源(SSRC)标识符:占32位,用于标识同步信源。该标识符是随机选择的,参加同一视频会议的两个同步信源不能有相同的SSRC。

         <6>第13-(12+4*CC)字节:

                  特约信源(CSRC)标识符:每个CSRC标识符占32位,可以有0~15个。每个CSRC标识了包含在该RTP报文有效载荷中的所有特约信源。

         <7>第(12+4*CC+1)-(12+4*CC+4+len_header_extension*4)字节:

                  profile_data:占2位

                  len_header_extension:占2位,标识扩展字段的长度

                  扩展字段:4×N

注:RTP说明并不定义任何头扩展本身,如果遇到X=1,需要特殊处理

RTP封包中的有效负载类型(Payload Type)的栏位长度为7位元,因此RTP可以支援128种不通的有效负载类型。这个栏位用来指示音视频使用的编码类型,有效负载类型如下:(h264 的vidieo 负载类型可以用 96。)

    有效负载号    encondingname    audio/video    clockrate(Hz)    channels(audio)

       000    PCMU               A             8000              1
       001 1016-A-8000-1
       002 G.726-32-A-8000-1
       003 GSM-A-8000-1
       004 G.723-A-8000-1
       005 DVI4 -A-8000-1
       006 DVI4-A-16000-1
       007 LPC-A-8000-1
       008 PCMA-A-8000-1
       009 G.722-A-8000-1
       010 L16-A-44100-1
       011 L16-A-44100-1
       012 QCELP-A-8000-1
       013 reserved                  A
       014 MPA-A-90000-1
       015 G.728-A-8000-1
       016 DVI4-A-11025-1
       017 DVI4-A-22050-1
       018 G.729-A-8000-1
       019 reserved-A   
       020 unassigned-A
       021 unassigned-A
       022 unassigned-A
       023 unassigned-A
       dyn GSM-HR-A-8000-1
       dyn GSM-EFR-A-8000-1
       dyn L8-A-var.-var.
       dyn RED-A
       dyn VDVI-A-var-1
       024 unassigned-V
       025 CelB-V -90000                
       026 JPEG-V-90000                  
       027 unassigned-V
       028 nv-V -90000  
       029 unassigned- V
       030 unassigned-V     
       031 H.261- V- 90000
       032 MPV-V -90000                  
       033 MP2T-AV -90000                    
       034 H.263-V-90000      
       035-071 unassigned
       072-076 reserved for RTCP conflict avoidance           
       077-095 unassigned       
       096-127 dynamic               
       dyn BT656- V-90000
       dyn H.263-1998-V-90000
       dyn MP1S-V-90000
       dyn MP2P-V-90000
       dyn BMPEG-V -90000

 

2.RTCP介绍

参考文档:

RFC3550

你可能感兴趣的:(网络流媒体技术)