创新路
我们一直在努力

RTP协议学习

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头结构

         <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

 

——————— 

未经允许不得转载:天府数据港官方信息博客 » RTP协议学习

客官点个赞呗! (0)
分享到:

评论 抢沙发

评论前必须登录!

天府云博 - 做有态度的开发&运维&设计学习分享平台!

联系我们百度云主机