RTSP(Real-Time Stream Protocol )是一种基于文本的应用层协议,直白的讲客户端与服务器建立连接并从服务器上接收流,服务器上的流可以是采集的,文件,等等。
二:服务器模式
1:以文件为例,输入到服务器的源可以做一个MediaSession, 的list来管理各各文件流,最理想的方式是这个list管理各个客户端要请求的流,这中间就要做复制流的操作。
2:接收客户端请求,当每一个客户端连接到服务器时,建立一个RtspSession, 的list, 对每一个客户端的请求,命令做出响应。即每一个客户端都是一个RtspSession。
三:RTSP请求消息
服务器启动后已经创建了TCP,listen,等待客户端的连接,当客户端请求和服务器连接时,要发送一个例如RTSP://*.*.*.*(ip):(端口)/文件path,的请求,这样根据信息,客户端和服务器就可以建立TCP连接。
然后服务器对客户端的请求开始做出响应。
DESCRIBE,ANNOUNCE,GET_PARAMETER,OPTIONS,PAUSE,PLAY,RECORD,SETUP,SET_PARAMETER,TEARDOWN,这里只说下常用的几种请求。
1:OPTIONS,C主动发出请求,查询S有哪些方法可以用(这10种当中),然后S回应给C自己有什么处理方法可以用。
2:DESCRIBE,C主动发出请求,要求S给出C请求媒体的描述信息(即要C要接收的媒体,音频或视频的描述信息SDP),S将从文件或采集时读取的信息填写到固定格式的SDP中发送给请求本媒体的C。
3:SETUP,C主动发出请求,要求S创建传输数据的连接一般为UDP,S创建UDP,C与之连接。
4:PLAY,C主动发出请求,要求S开始往C传输数据,这时用到的就是SETUP建立的UDP连接,S开始往C传输数据,C接收,然后显示,存储等等。
5:TEARDOWN,C主动发出请求,要求S关闭连接的会话,一个传输命令的TCP,一个传输数据的UDP,一般先停止传输数据(UDP),然后关闭连接。
四:会话描述协议(SDP)
SDP用到的地方就是在DESCRIBE的,服务器将从文件或采集时读取的信息填写到固定格式的SDP中发送给请求本媒体的客户端。
SDP 信息是文本信息,采用 UTF-8 编 码中的 ISO 10646 字符集。SDP 会话描述如下:(标注 * 符号的表示可选字段):
v = (协议版本)
o = (所有者/创建者和会话标识符)
s = (会话名称)
i = * (会话信息)
u = * (URI 描述)
e = * (Email 地址)
p = * (电话号码)
c = * (连接信息 ― 如果包含在所有媒体中,则不需要该字段)
b = * (带宽信息)
一个或更多时间描述(如下所示):
z = * (时间区域调整)
k = * (加密密钥)
a = * (0 个或多个会话属性行)
0个或多个媒体描述(如下所示) 时间描述
t = (会话活动时间)
r = * (0或多次重复次数)
编辑本段媒体描述m = (媒体名称和传输地址)
i = * (媒体标题)
c = * (连接信息 — 如果包含在会话层则该字段可选)
b = * (带宽信息)
k = * (加密密钥)
a = * (0 个或多个会话属性行)
五:实时传输协议(RTP)
RTP用到的地方就是 PLAY ,服务器往客户端传输数据用UDP协议,RTP是在传输数据的前面加了个12字节的头(描述信息)。
RTP载荷封装设计本文的网络传输是基于IP协议,所以最大传输单元(MTU)最大为1500字节,在使用IP/UDP/RTP的协议层次结构的时候,
这其中包括至少20字节的IP头,8字节的UDP头,以及12字节的RTP头。这样,头信息至少要占用40个字节,那么RTP载荷的最大尺寸为1460字节。
以H264 为例,如果一帧数据大于1460,则需要分片打包,然后到接收端再拆包,组合成一帧数据,进行解码播放。
六:RTP/RTSP/RTCP的区别
1:•RTP:实时传输协议(Real-time Transport Protocol) •RTP/RTCP是实际传输数据的协议
•RTP传输音频/视频数据,如果是PLAY,Server发送到Client端,如果是RECORD,可以由Client发送到Server
•整个RTP协议由两个密切相关的部分组成:RTP数据协议和RTP控制协议(即RTCP)
2:•RTSP:实时流协议(Real Time Streaming Protocol,RTSP) •RTSP的请求主要有DESCRIBE,SETUP,PLAY,PAUSE,TEARDOWN,OPTIONS等,
顾名思义可以知道起对话和控制作用
•RTSP的对话过程中SETUP可以确定RTP/RTCP使用的端口,PLAY/PAUSE/TEARDOWN可以开始或者停止RTP的发送,等等.
3:•RTCP: •RTP/RTCP是实际传输数据的协议
•RTCP包括Sender Report和Receiver Report,用来进行音频/视频的同步以及其他用途,是一种控制协议。(本文暂不做分析)。
七:可扩展方式
1:媒体源,可扩展为摄像头,麦克风,经编码后的数据,或mux(复用后的音视频数据),如ts,mp4等等。
2:添加媒体源流复制功能,对多个客户端请求一个流做处理。
3:服务器对各个客户端完成不同响应的处理,可以根据不同需求做扩展。
4:局域网穿透。
5:增加rtcp,控制。等等。