1、 前言
互联网上关于RTSP的文章很多,但是大多数都是抽象的理论介绍,本文将从实际例子解说RTSP协议,不求面面俱到,但求简单易懂。RTSP(Real-Time Streaming Protocol)实时流式协议是IETF的MMUSIC工作组开发的协议,现在已成为因特网建议标准[RFC 2326]。RTSP是为了给流式过程增加更多的功能(暂停、继续、播放、快进、快退)而设计的协议。需要注意的是,RTSP本身不传输数据,音视频流数据是通过RTP传输的。
2、 RTSP的请求方法
在开始实例分析前先介绍RTSP很重的概念,RTSP请求方法,顾名思义,就是定义一系列方法来进行客户端与服务端通信。下面枚举是有关于RTSP的请求方法集合:
typedef enum RtspReqMethod
{
RTSP_REQ_METHOD_SETUP = 0,
RTSP_REQ_METHOD_DESCRIBE,
RTSP_REQ_METHOD_REDIRECT,
RTSP_REQ_METHOD_PLAY,
RTSP_REQ_METHOD_PAUSE,
RTSP_REQ_METHOD_SESSION,
RTSP_REQ_METHOD_OPTIONS,
RTSP_REQ_METHOD_RECORD,
RTSP_REQ_METHOD_TEARDOWN,
RTSP_REQ_METHOD_GET_PARAM,
RTSP_REQ_METHOD_SET_PARAM,
RTSP_REQ_METHOD_EXTENSION,
RTSP_REQ_METHOD_MAX,
}RtspReqMethod_e;
看上去很多,羞涩难懂,其实只要了解常用几个就好,其它是为了让协议具有兼容性而拓展的,在实际应用中遇到较少,有兴趣可以多了解,没兴趣的话知道就好了。
OPTIONS 请求用于返回服务端支持的 RTSP方法列表 。也可以定时发送这个请求来保活相关的 RTSP 会话。
DESCRIBE 命令用于请求指定的媒体流的 SDP 描述信息(详细包括音视频流的帧率、编码类型等等媒体信息)
SETUP 命令用于配置数据交互的方法。(比如制定音视频的传输方式TCP UDP)
PLAY 用于启动 (当暂停时重启) 交付数据给客户端. PLAY 命令的应答消息包含如下附加的头字