RTP协议
Ver.(2 bits)是目前协定的版本号码,目前版号是 2。
P(1 bit)如果该位被设置,则在该packet末尾包含了额外的附加信息,附加信息的最后一个字节表示额外附加信息的长度(包含该字节本身)。该字段之所以存在是因为一些加密机制需要固定长度的数据块,或者为了在一个底层协议数据单元中传输多个RTP packets。
X(1 bit)如果应用程序类型允许扩展,则使用X指定分组中是否有扩展,如果该位被设置,则在固定的头部后存在一个扩展头部。.
CC(4 bits)包含了 CSRC 数目用于修正标头(fixed header).
M(1 bit) 是用于应用等级以及其原型(profile)的定义。如果不为零表示目前的数据有特别的程序解译。
PT(7 bits)标识RTP负载的格式,包括所采用的编码算法、采样频率、承载通道等。如果接收方不识别该类型,必须忽略该packet。
序号(16位)包含分组的序号,某些会话的第一个序号是随机选择的。在每一次发送时才增加1,接收方根据序列号重新排列数据包顺序。也可通过此项为接收方提供探测数据丢失的方法,但是如果数据丢失则是应用程序自己的事情,协议本身不负责数据的重传。
timerstamp(32位)时间戳:反映packet所携带信息包中第一个字节的采样时间。时间戳连续增加,即使是没有信号、没有发送的期间也是如此。当同事对多个分组采样,可以允许这些分组的时间戳一样。通过此项来确定时间间隔,判断数据的到达是否受到抖动的影响。
SSRC 是同步化来源。在使用混合器时,将多个数据流混合成新的数据流,此项用于标识数据流的源,最多可以流出15个源。每个源站必须选择一个唯一的32位标识符,如果冲突,协议中包含解决冲突的机制。
CSRC,只有存在Mixer的时候才有效,如一个将多声道的语音流合并成一个单声道的语音流,在这里就列出原来每个声道的SSRC。
RTCP协议
负责管理传输质量在当前应用进程之间交换控制信息。RTP本身不能为按序传输数据包提供可靠的保障,也不提供流量控制和拥塞控制,于是配合RTCP一起使用。当应用程序启动一个RTP会话时将同时占用两个端口,分别供RTP和RTCP使用。RTCP向会话中的所有成员周期性的发送控制信息,应用程序通过接收这些数据来获取会话参与者的相关信息、网络状况、分组丢失数量等。因此,服务器利用这些信息动态地改变传输速率,甚至改变有效载荷类型。RTP和RTCP配合使用,能有效的反馈和最小化开销使传输效率最佳化。
①SR:发送端报告,用来使发送端周期的向所有接收端用多播方式进行报告,
内容包括:该RTP流的SSRC;该RTP流中最新产生的RTP分组的时间戳和绝对时钟时间(或称墙上时间:wall clock time);该RTP流包含的分组数;该RTP流包含的字节数。绝对时钟时间是必要的。因为RTP要求每一种媒体使用单独的流,所以发送视频和伴随的音频需要两个数据流。有了绝对时钟时间就可以进行图形和声音的同步。
②RR:接收端报告,用来使接收端周期性的向所有的点用多播方式进行报告。
内容包括:所接收到的RTP流的SSRC;该RTP流的分组丢失率;在该RTP流中的最后一个RTP分组的序号;分组到达时间间隔的抖动等。发送RR分组有两个目的。第一,可以使所有的接收端和发送端了解当前网络的状态。第二,可以使所有发送RTCP分组的站点自适应的调整自己发送RTCP分组的速率,RTCP分组的通信量不超过网络中的数据分组的通信量的5%,而接收端分组报告分组的通信量又应小于所有RTCP分组的通信量的75%。
③SDES:源描述,主要功能是作为会话成员有关标识信息的载体,如用户名、邮件地址、电话号码等,此外还具有向会话成员传达会话控制信息的功能。
RTSP协议
用来控制声音或影像的多媒体串流协议,并允许同时多个串流需求控制,传输所用协议并不在其定义的范围,服务器可自行选择TCP或UDP来传送串流内容。它的语法和运作与HTTP1.1类似,但不特别强调时间同步,所以比较能容忍网络延迟,而且proxy的缓冲功能也使用于RTSP,在负载均衡上,因RTSP有重定向功能,所以可根据负载情况来转换提供服务的服务器。RTSP支持多播,所以除了降低网络的负载,还能提供视频会议的功能。
RTSP状态:RTSP的控制信息和数据是分开的,我们可以用TCP来传控制信息,用UDP来传数据,主要状态有:
SETUP:服务器将会开辟资源,准备传输被请求的数据流。
PLAY和RECORD:经由SETUP开辟的流,开始传数据。
PAUSE:暂停流,但是不将服务器段的资源释放。
TEARDOWN:将流占用的资源释放掉,并关闭这个RTSP会话。
rtp rstp 编程