本文介绍RTSP(Real Time Streaming Protocol)协议的相关知识。

1 概述

RTSP(Real Time Streaming Protocol),即实时流协议,是TCP/IP协议体系中的一个应用层协议,用于控制实时媒体流数据的传输,扮演多媒体服务的“网络远程控制”角色。RTSP 包含在由哥伦比亚大学、网景和RealNetworks公司提交的IETF RFC标准(RFC2326)中。

RTSP 定义了一对多模式下,应用程序如何有效地通过IP网络传输多媒体数据。

RTSP 是用来控制声音或影像的多媒体串流协议,允许同时控制多个串流(支持多方视频会议),媒体数据传输时所用的网络通讯协议并不在 RTSP 的定义范围内,服务端可以自行选择传输层协议(TCP、UDP等)来传输多媒体串流内容。

2 协议介绍

在网络体系结构层面,RTSP 位于 RTP 和 RTCP 之上(如图2-1所示),它可以使用 TCP 或 UDP 完成数据传输。

rtp协议 java传输文件 rtsp传输协议_服务器

RTSP 中所有的操作都是通过服务器和客户端的消息应答机制完成的,其中消息包括请求消息和应答消息。RTSP 是对称的协议,客户端和服务器都可以发送和响应请求。RTSP 是基于文本的协议,采用 ISO10646 字符集,使用 UTF-8 编码方案。行以 CRLF 中断,包括消息类型、消息头、消息体和消息长。但接收者本身可将 CR 和 LF 解释成行终止符。基于文本的协议使其以自描述方式增加可选参数更加容易,接口中采用 SDP 作为描述语言。

RTSP 提供了一个可扩展框架,使实时数据(如音频与视频)的受控点播成为可能。数据源包括现场数据与存储在剪辑中的数据。

RTSP 协议目的在于控制多个数据发送连接,为选择发送通道(如 UDP、组播UDP和 TCP)提供途径,并为选择基于 RTP 的发送机制提供方法。在 RTSP 连接期间,RTSP 用户可打开或关闭多个服务器传输连接,以发出 RTSP 请求。

RTSP 建立并控制一个或几个时间同步的媒体流,尽管媒体流与控制流交换是可能的,但通常 RTSP 本身并不发送媒体流。换言之,RTSP 主要作用是多媒体服务器的远程控制。

3 重要概念

3.1 集合控制

对音频、视频来讲,客户端仅需发送一条播放或者暂停消息就可同时控制音频流和视频流。

3.2 会话

会话即 RTSP 交互的全过程。对于一个视频的观看过程,会话(session)主要包括:

  1.  由客户端建立媒体流传输机制(SETUP),建立 RTSP 会话;
  2.  使用播放(PLAY)或录制(RECORD)开始传送媒体流;
  3.  用停止(TEARDOWN)关闭媒体流。

4 重要方法

RTSP 的下列方法在服务器媒体流资源的分配与应用上起着重要的作用:

  • SETUP:让服务器给媒体流分配资源,启动RTSP连接;
  • PLAY 与 RECORD:启动SETUP方法分配的媒体流的数据传输;
  • PAUSE:临时停止媒体流,不释放服务器资源;
  • TEARDOWN:释放媒体流的资源,RTSP连接停止。

下面通过一次简单的 RTSP 消息交互过程,介绍 RTSP 的会话流程和相关命令:

  1.  客户端连接到服务器,并发送一个RTSP描述命令(DESCRIBE);
  2.  服务器通过一个SDP描述将反馈回复给客户端,反馈的信息包括流数量、媒体类型等信息;
  3.  客户端分析收到的SDP描述,并为会话中的每一个流发送一个RTSP建立命令(SETUP),SETUP命令会将客户端用于接收媒体数据的端口告知服务器;
  4.  流媒体连接建立完成后,客户端发送播放命令(PLAY);
  5.  服务器收到PLAY命令,开始在 UDP 上传送媒体流(RTP包)到客户端;
  6.  在播放过程中,客户端还可以向服务器发送命令来控制快进、快退和暂停(PAUSE)等;
  7.  最后,客户端发送一个终止命令(TERADOWN)来结束流媒体会话。

5 RTSP与HTTP

1. 在语法及一些消息参数等方面,RTSP 与 HTTP 类似;

2. HTTP 的请求是由客户端发出、服务器做出响应;而使用 RTSP 时,客户端和服务器都可以发出请求,即 RTSP 是双向的;

3. HTTP 传送的是 HTML 数据,而 RTSP 传送的是多媒体数据;

4. HTTP 是无状态协议,而 RTSP 会为每个会话保持状态;

5. 两种传输数据载荷的方式不同。在 RTSP 中,载荷数据一般是通过带外方式来传送的(除了交织的情况),即通过 RTP 在不同的通道中来传送载荷数据。而 HTTP 的载荷数据都是通过带内方式传送的,比如请求的网页数据是在应答的消息体中携带的;