23.1.2 实时流媒体协议RTSP
RTSP(Real Time Streaming Protocol,实时流媒体协议)是由Real Network和Netscape共同提出的一种应用层协议,它定义了如何在IP网络上有效地传输流媒体数据。RTSP提供了一种机制,使音频、视频等数据可以按照需要进行实时传输,并且可以实施诸如暂停、快进等控制。源数据可以是存储的文件,也可以是现场数据的反馈。RTSP协议本身并不传输数据,数据的传输是通过基于UDP协议的RTP协议来完成的。
RTSP协议与HTTP协议有点类似,通信双方是通过请求消息和回应消息进行交互的。请求消息的格式如下:
<请求方法> <URI> <RTSP版本>
[消息头]
CR/ LF
[消息体]
其中,请求方法包括PLAY、DESCRIBE等,可以通过OPTION方法得到对方所支持的其他方法名称。URI是对方的地址,例如:rtsp://192.168.0.1。“RTSP版本”一般都是RTSP/1.0。每一行的最后都是回车换行符CR/LF,消息头和消息体之间要有一个空行。回应消息格式如下:
<RTSP版本> <状态码> <解释>
[消息头]
CR/LF
[消息体]
回应消息的格式规定与请求消息类似。其中状态码是一个3位数,后面跟随着解释文本,例如,200表示成功。
HTTP协议是单向的,即只能是客户端提出请求,服务端给予回应,而使用RTSP时,客户机和服务器都可以发出请求,双方都可以对收到的请求进行应答,即RTSP可以是双向的。一个典型的RSTP交互过程如下所示,其中C表示RTSP客户端,S表示RTSP服务端
C->S: OPTION request //客户端通过OPTION方法询问服务端支持哪些方法
S->C: OPTION response //服务端进行回应,提供了所支持方法的名称
C->S: DESCRIBE request //客户端通过DESCRIBE方法查询服务端媒体的初始化描述 //信息
S->C: DESCRIBE response //服务端回应媒体初始化描述信息,采用的是sdp会话描述 //格式
C->S: SETUP request //客户端通过SETUP方法设置会话的属性、传输模式等参数, //并请求建立会话
S->C: SETUP response //服务端响应回话请求,与客户端建立会话,并返回会话标识 //符及其他相关信息
C->S: PLAY request //客户端通过PLAY方法请求播放某一多媒体资源
S->C: PLAY response //服务器回应请求,开始发送流数据
S->C: … //此时,RTSP通过其他协议发送流媒体数据
C->S: TEARDOWN request //客户端通过TEARDOWN方法请求关闭会话
S->C: TEARDOWN response //服务器回应请求,会话关闭,交互结束
实际应用中,RTCP的交互过程可能和以上过程会有区别,但基本的流程是一样的。
%说明:还有一种常见的流媒体协议是由Microsoft公司开发的MMS协议,但Microsoft公司没有公开该协议。