1 介绍 ..............................................................................................................................................3
1.1 目的....................................................................................................................................3
1.2 要求....................................................................................................................................4
1.3 术语....................................................................................................................................4
1.4 协议特点............................................................................................................................6
1.5 扩展RTSP ..........................................................................................................................8
1.6 整体运作............................................................................................................................8
1.7 RTSP状态 ...........................................................................................................................9
1.8 与其他协议关系..............................................................................................................10
2 符号约定.....................................................................................................................................10
3 协议参数.....................................................................................................................................12
3.1 RTSP版本 .........................................................................................................................12
3.2 RTSP URL ........................................................................................................................13
3.3 会议标识..........................................................................................................................15
3.4 会话标识..........................................................................................................................15
3.5 SMPTE 相对时间戳........................................................................................................16
3.6 正常播放时间...................................................................................................................16
3.7 绝对时间..........................................................................................................................17
3.8 选择标签..........................................................................................................................18
4 RTSP消息 ....................................................................................................................................18
4.1 消息类型..........................................................................................................................19
4.2 消息头部..........................................................................................................................19
4.3 消息主体..........................................................................................................................20
4.4 消息长度..........................................................................................................................21
5 普通头部域.................................................................................................................................21
6 请求 ............................................................................................................................................21
6.1 请求行..............................................................................................................................22
6.2 请求头部域......................................................................................................................23
7 响应 ............................................................................................................................................23
7.1 状态行..............................................................................................................................24
7.1.1 状态码和原因解释...............................................................................................24
7.1.2 响应头部域...........................................................................................................29
8 实体 ............................................................................................................................................29
8.1 实体头部域......................................................................................................................29
8.2 实体主体..........................................................................................................................30
9 连接 ............................................................................................................................................30
9.1 管道..................................................................................................................................30
9.2 可靠性及确认..................................................................................................................31
10 方法定义...................................................................................................................................31
10.1 OPTIONS(可选项)....................................................................................................32
10.2 描述(DESCRIBE) ....................................................................................................33
10.3 通知(ANNOUNCE) .................................................................................................34
10.4 建立(SETUP) ...........................................................................................................35
10.5 播放(PLAY)..............................................................................................................36
10.6 暂停(PAUSE) ...........................................................................................................38
10.7 断开(TEARDOWN).................................................................................................39
10.8 获取参数(GET_PARAMETER) ..............................................................................40
10.9 设置参数(SET_PARAMETER)...............................................................................41
10.10 重定向(REDIRECT) ..............................................................................................42
10.11 录制(RECORD)......................................................................................................42
10.12 嵌入(交织)的二进制数据......................................................................................43
11 状态码定义...............................................................................................................................44
11.1 成功 2xx........................................................................................................................44
11.2 重定向 3xx....................................................................................................................44
11.3 客户端错误 4xx............................................................................................................44
12 头部域定义...............................................................................................................................46
13 Caching ......................................................................................................................................63
14 示例...........................................................................................................................................64
14.1 按需点播(单播)........................................................................................................64
14.2 容器文件的流化............................................................................................................67
14.3 单流容器文件................................................................................................................70
14.4 现场媒体表示使用多播................................................................................................72
14.5 向已存在的会话播放媒体............................................................................................73
14.6 录制................................................................................................................................75
15 语法...........................................................................................................................................77
15.1 基本语法........................................................................................................................77
16 安全考虑...................................................................................................................................79
附录A:RTSP 协议状态机...........................................................................................................81
附录B:同RTP交互.......................................................................................................................84
附录C:用SDP描述RTSP会话 .....................................................................................................85
附录D:最小RTSP实现 ................................................................................................................89
1 介绍
1.1 目的
实时流协议(RTSP)建立并控制一个或几个时间同步的连续流媒体,比如音频或视频。
尽管在连续媒体流中有可能插入控制流(见 10.12 节),但 RTSP 本身通常并不发送连续媒
体流。换言之,RTSP 充当多媒体服务器的"网络遥控器"。
表示描述定义了流的控制操作的集合,但本文并没有规定表示描述的格式。
RTSP 没有"连接"这个概念,而由 RTSP 会话(session)代替(服务器端保持一个由识别符
标记的会话)。RTSP 会话没有绑定传输层连接(如 TCP 连接)。在 RTSP 会话期间,RTSP
客户端可以打开或关闭多个到服务器端的可靠传输连接以发出 RTSP 请求。但也可以使用无
连接传输协议,比如 UDP,来发送 RTSP 请求。
RTSP 所控制的流可能用到 RTP,但 RTSP 的操作并不依赖用来传送连续媒体的传输机制。
实时流协议在语法和操作上有意地类似于 HTTP/1.1,使得 HTTP 的扩展机制大都可加入
RTSP。尽管如此,RTSP 在很多重要方面与 HTTP 有所不同:
*RTSP 引入了很多新方法并且有不同的协议标识符。
*RTSP 服务器在绝大多数默认情况下需要维持状态,而 HTTP 是无状态协议。
*RTSP 客户机和服务器都可以发出请求。
*数据由信带外的另一个协议传送(但有一个特例)。
*RTSP 使用 ISO 10646(UTF-8) 而不是 ISO 8859-1,以配合当前 HTML 的国际化。
*RTSP 的 URI 请求时总是包含绝对 URI。而由于历史原因造成的后向兼容性问题,
HTTP/1.1 只在请求中包含绝对路径,把主机名放入单独的头部域中。
当只有一个 IP 的主机要提供多个文档树时,可使"虚拟主机"的实现更简单。
协议支持以下操作:
从媒体服务器上获得媒体:
用户可通过 HTTP 或其它途径请求一个表示描述。如果该表示是组播,表示描述就包含
用于该连续媒体的的多播地址和端口。如表示仅通过单播发送给用户,用户为了安全应起见
要提供目的地址。
邀请媒体服务器进入会议:
媒体服务器可被"邀请"加入已存在的的会议,包括向该表示内回放媒体,或记录此表示
中的一部分或全部媒体。这种模式在分布式教学应用上很有用。会议中的各方可轮流"按网
络遥控器的按钮"。
将媒体加到已存在的表示中:
现场表示 的专用概念。当服务器可以告诉客户端"可以附加媒体"时有用。
和 HTTP/1.1 类似,RTSP 的请求可由代理、通道与缓存处理。
1.2 要求
在本文档中的关键字"必须","必须不"、"需要"、"必须"、"必须不"、"应该"、"不应该"、"
推荐"、"可能"、和"可选的",都和 RFC2119 [4]中的解释一致。
1.3 术语
一些 HTTP/1.1 的术语被采用。这里没有举出的术语,其定义与 HTTP/1.1 相同。
合控制:
服务器使用一条时间线对多个流进行控制。对音频/视频的回放来讲,这意味着客户端仅
需发送一条播放或者暂停消息就可同时控制音频和视频的回放。
会议:
多方参与的多媒体表示,这里的多方意味着大于或等于一方。
客户端:
指请求媒体服务器上连续流媒体数据的客户端。
连接:
以通讯为目的,在传输层建立的两个程序间的虚拟信道。
容器文件:
可以容纳多个媒体流的文件,而这些媒体流共同播放时通常还包含一个表示。RTSP 服务
器可以为这些容器文件提供合控制,但容器文件的概念本身并不包含在本协议中。
连续媒体:
接受器和数据源之间存在时序关系的数据。也就是说,接受器需要重放原来存在于源数
据中的时序关系。最普通的连续媒体的例子是音频和动画视频。连续媒体可以是实时的(交
互的),它们在源和接受器之间是一种紧密的时序关系;或者是流(回放)的形式,时序关
系没那么严格。
实体:
请求或者响应的载荷部分中所传输的信息。实体由信息元组成,而每个信息元由由实体
头部域和实体主体组成。实体头部域内是信息格式,实体主体内是信息内容,如第 8 章所述。
媒体初始化:
数据类型/编码的具体初始化。这包括时钟频率,颜色空间等。客户端请求一个媒体流回
放时所需的任何独立于传输的信息,都是在流创建时媒体初始化阶段产生的。
媒体参数:
对于某种特定的媒体类型来说,回放前或者回放中有可能会发生改变的一些参数。
媒体服务器:
提供一个或多个媒体流之回放或录制服务的服务器。同一个表示(presentation)中不同的媒
体流可能来自于不同的媒体服务器。媒体服务器可以建在激活该表示(presentation)的 Web 服
务器上,也可以建立在不同的主机上。
媒体服务器重定向:
重新把媒体客户端定向到另外一个媒体服务器。
(媒体)流:
单个媒体实例,比如,一个音频流或者一个视频流,连同一个白板或者共享程序组。当
使用 RTP 时,流包括由 RTP 会话(session)中同一个源所创建的所有 RTP 和 RTCP 包。这和
DSM-CC 流([5])的定义相同。
消息:
RTSP 通讯的基本单元。由 15 章语法定义的结构化八位位组序列组成,并通过有连接或
者无连接协议传送。
参与者:
一个会议的成员。参与者可以是机器,比如是媒体记录或回放服务器。
表示(presentation):
作为一个完整的媒体信息,回馈性地表述给客户端的一个或多个流的集合。表示使用下
面的表示描述进行表述。大部分情况下,在 RTSP 中的文字部分中,这暗示集合中的流的合
控制,但并非必须。
表示描述(presentation description):
表示描述包含在表示(presentation)中一个或者多个媒体流的信息。比如,编码,网络地址
和内容的信息,的集合。另外,其他 IETF 协议,如 SDP 协议使用术语"会话(session)"代替"
现场表示"。表示描述可以采用包括会话描述(session description)SDP 在内的多种格式。
响应:
RTSP 响应。如果能理解 HTTP 响应,就能清楚地理解 RTSP 响应。
请求:
RTSP 请求。如果能理解 HTTP 请求,就能清楚地理解 RTSP 请求。
RTSP 会话(session):
包括一次 RTSP"事务"(transaction)的全过程。比如,一个电影的观看过程。会话(session)
一般包括由客户端为连续媒体建立传输机制(SETUP),使用播放(PLAY)或录制(RECORD)开
始传送流,用停止(TEARDOWN)关闭流。
传输初始化:
客户端和服务器端之间关于传输所需的相关信息(端口号,传输协议等)的协商。
1.4 协议特点
RTSP 有以下特性:
易于扩展:
可以很容易地向 RTSP 加入新方法和参数。
易解析:
RTSP可由标准HTTP或MIME解析器解析。
安全:
RTSP重用 了网页安全机制。所有HTTP授权机构如basic (RFC 2068 [2, Section 11.1])和
digest (RFC 2069 [8])授权都可直接使用。也可以重用传输层或网络层安全机制。
独立于传输:
RTSP 即可使用不可靠数据报协议(UDP)、可靠数据报协议(RDP),如要实现应用级可
靠,也可使用可靠流协议如 TCP。
多服务器支持:
表示(presentation)中的每个流可放在不同服务器上,客户端自动同不同服务器建立几个并
发控制的会话,媒体同步在传输层执行。
录制设备控制:
协议可控制记录和回放设备,以及可在两种模式之间切换的设备(VCR)。
流控制与会议初始化分离:
流控制与邀请媒体服务器入会相分离;仅要求会议初始化协议可提供,或可用来创建具
有唯一性的会议标识号。具体地说, SIP 或 H.323 可用来邀请服务器入会。
适合专业应用:
通过 SMPTE 时标,RTSP 支持帧级别精度,以支持远程数字编辑。
适合专业应用:
RTSP 依赖 SMPTE 时间戳支持帧级精度,使得可以进行远程数字编辑。
表示描述中立:
协议没强行指定特定的表示或元文件格式,可传达所用的格式类型;然而,表示描述必
须至少包含一个 RTSP URI。
代理与防火墙友好:
协议需由应用层协同传输层(SOCKS [14])防火墙友好地进行处理。防火墙需要理解
SETUP 方法,以为 UDP 媒体流打开一个"洞口"。
HTTP 友好:
此处,RTSP明智地重用了HTTP概念,使现有的基础结构可被重用。这些基础结构包括
Internet 内容选择平台(PICS:Platform for Internet Content Selection [15,16]),以便通过相关
标签访问内容。但由于在大多数情况下,控制连续媒体需要服务器状态 , RTSP不仅仅向
HTTP 添加方法。
合适的服务器控制:
若客户端能启动一个流,它必须也能停止一个流。服务器不能启动一个用户不能停止的
流。
传输协商:
实际处理连续媒体流前,客户端可协商传输方法。
性能协商:
若基础特性被禁用,必须有某种明确的机制让用户决定哪种方法将不不被实现。这允许
用户提出适合的用户界面。 例如,如果不允许寻找,用户界面必须能禁止位置条滑动。
早期曾要求 RTSP 支持多用户,但现在有了更好的方案,就是保证 RTSP 能很容易扩展
成支持多用户即可。因为流的标志可以被多个控制流使用,因此可以"轮换持有控制器"。协
议不涉及到多个客户端如何协调入口--这项任务被留给"社会协议"或其他层。
1.5 扩展 RTSP
由于不是所有媒体服务器有着相同的功能,媒体服务器有必要支持不同的请求集。例如:
服务器可能只能回放,因此不必支持录制请求。
用于提供现场直播的服务器可能不支持寻找(绝对位置)功能。
一些服务器可能不支持设置流参数,因此不支持 GET_PARAMETER 和 SET_PARAMETER
请求。
但服务器应该实现所有 12 章中要求的标题域。
表示 描述(presentation description)应当 保 证不 提出 服 务器 不支 持 的功 能, 这 种情 形和
HTTP/1.1 [2]中,[H19.6]所描述的方法不太可能被所有服务器都支持的情形一致。
RTSP 可以如下三种方式扩展,按所支持的改变多少排序:
*已有的方法可以扩展加入新参数,只要这些参数可以被接收方安全地忽略。(这和给一
种 HTML tag 增加新标签是一样的)如果客户端在请求失败时需要一个拒绝确认,需要在请
求:字段(见 Section 12.32)中加入一个对应于该扩展的标签。
*可以加入新方法。如果接收方不理解请求,它就返回一个 501 错误码(意指未实现),
发送方就不应再尝试这种方法。客户端可以用 OPTIONS 方法去询问服务器支持的方法。服
务器应该在公共回应头里列出它所支持的所有方法。
*可以定义新版本的协议,以支持几乎所有方面的改变(除了版本协议号的位置)。
1.6 整体运作
每个表示和媒体流可用 RTSP URL 识别。表示组成的整个表示与媒体属性由表示描述