RTSP协议分析与标准RTSP服务端与客户端交互流程
2017-06-07 23:45
435 查看
1.1. RTSP协议简介
一种应用层协议,可基于tcp或udp协议。RTSP(Real Time StreamingProtocol,实时流媒体协议)是由Real Network和Netscape共同提出的一种应用层协议,它定义了如何在IP网络上有效地传输流媒体数据。RTSP提供了一种机制,使音频、视频等数据可以按照需要进行实时传输,并且可以实施诸如暂停、快进等控制功能。源数据可以是存储的文件,也可以是现场数据的反馈。RTSP协议本身并不传输数据,数据的传输是通过基于UDP协议的RTP协议来完成的。
要实现 RTSP 的控制功能,不仅要有协议,而且要有专门的媒体播放器(media player)和媒体服务器(media server)。媒体服务器与媒体播放器的关系是服务器与客户的关系。
媒体服务器与普通的万维网服务器的最大区别就是媒体服务器支持流式音频和视频的传送,因而在客户端的媒体播放器可以边下载边播放(需要先缓存一小段时间的节目)。但从普通万维网服务器下载多媒体节目时,是先将整个文件下载完毕,然后再进行播放。
图1 RTSP与RTP和RTCP的关系
RTSP 仅仅是使媒体播放器能控制多媒体流的传送。因此,RTSP 又称为带外协议,而多媒体流是使用 RTP 在带内传送的。
1.2. RTSP的报文结构
RTSP有两类报文:请求报文和响应报文。请求报文是指从客户向服务器发送请求报文,响应报文是指从服务器到客户的回答。由于 RTSP 是面向正文的(text-oriented),因此在报文中的每一个字段都是一些 ASCII 码串,因而每个字段的长度都是不确定的。
RTSP报文由三部分组成,即开始行、首部行和实体主体。在请求报文中,开始行就是请求行,RTSP请求报文的结构如图2所示。
图2 RTSP请求报文的结构
RTSP请求报文的方法包括:OPTIONS、DESCRIBE、SETUP、TEARDOWN、PLAY、PAUSE、GET_PARAMETER和SET_PARAMETER。RTSP请求报文的常用方法及作用如表1所示。
表1 RTSP请求报文的常用方法及作用
方法 | 作用 |
OPTIONS | 获得服务器提供的可用方法 |
DESCRIBE | 得到会话描述信息 |
SETUP | 客户端提醒服务器建立会话,并确定传输模式 |
TEARDOWN | 客户端发起关闭请求 |
PLAY | 客户端发送播放请求 |
响应报文的开始行是状态行,RTSP响应报文的结构如图3所示。
图3 RTSP响应报文的结构
1.3. RTSP交互过程
C表示RTSP客户端,S表示RTSP服务端① C->S: OPTION request //询问S有哪些方法可用
S->C: OPTION response //S回应信息中包括提供的所有可用方法
② C->S: DESCRIBE request //要求得到S提供的媒体初始化描述信息
S->C: DESCRIBE response //S回应媒体初始化描述信息,主要是sdp
③ C->S: SETUP request //设置会话属性,以及传输模式,提醒S建立会话
S->C: SETUP response //S建立会话,返回会话标识符及会话相关信息
④ C->S: PLAY request //C请求播放
S->C: PLAY response //S回应请求信息
S->C: 发送流媒体数据
⑤ C->S: TEARDOWN request //C请求关闭会话
S->C: TEARDOWN response //S回应请求
上述的过程是标准的RTSP流程,其中第3步和第4步是必需的。
相关文章推荐
- 客户端从服务端下载文件的流程分析
- Fresco 源码分析(二) Fresco客户端与服务端交互(1) 解决遗留的Q1问题
- CAS单点登录原理,CAS服务端和客户端验证流程,抓包分析,CAS代码分析
- 客户端与服务端交互流程
- ArcGis Server ADF Toolbar与Map的客户端和服务端交互过程分析2
- ArcGis Server ADF Toolbar与Map的客户端和服务端交互过程分析1
- zookeeper客户端和服务端交互分析
- TeamTalk服务端分析之服务端以及客户端流程
- Fresco 源码分析(二) Fresco客户端与服务端交互(3) 前后台打通
- 服务端与客户端交互流程
- TeamTalk服务端分析 三、服务端以及客户端流程
- TeamTalk服务端分析 三、服务端以及客户端流程
- TeamTalk服务端分析之服务端以及客户端流程
- Fresco 源码分析(二) Fresco客户端与服务端交互(3) 前后台打通
- Fresco 源码分析(二) Fresco客户端与服务端交互(2) Fresco.initializeDrawee()分析 续
- Netty5源码分析--3.客户端与服务端交互过程详解
- 提交接收端服务端与客户端交互流程
- 4. 游戏客户端和服务端的交互流程
- live555客户端程序openrtsp程序流程详细分析
- java服务端,python客户端交互