编辑本段概念
RTSP是用来控制声音或影像的多媒体串流 协议,并允许同时多个串流需求控制,传输时所用的网络通讯协定并不在其定义的范围内, 服务器端可以自行选择使用TCP或UDP来传送串流内容,它的语法和运作跟HTTP 1.1类似,但并不特别强调 时间同步,所以比较能容忍网 络延迟。而前面提到的允许同时多个串流需求控制(Multicast),除了可以降低 服务器端的网络用量,更进而支持多方视讯会议(Video Conference)。因为与 HTTP1.1的运作方式相似,所以 代理服务器〈Proxy〉的快取功能〈Cache〉也同样适用于RTSP,并因RTSP具有重新导向功能,可视实际负载情况来转换提供服务的服务器,以避免过大的负载集中于同一服务器而造成延迟。编辑本段简介
该 协议用于 C/S模型,是一个基于 文本的 协议,用于在 客户端和 服务器端建立和协商实时流会话。 实时流协议(RTSP)是应用级协议,控制实时数据的发送。RTSP提供了一个可扩展框架,使实时数据,如音频与视频的受控点播成为可能。数据源包括现场数据与存储在剪辑中数据。该 协议目的在于控制多个数据发送连接,为选择发送通道,如UDP、 组播UDP与TCP,提供途径,并为选择基于RTP上发送机制提供方法。 实时流 协议(RTSP)建立并控制一个或几个 时间同步的连续 流媒体。尽管连续媒体流与 控制流交换是可能的,通常它本身并不发送连续流。换言之,RTSP充当多 媒体服务器的网络 远程控制。RTSP连接没有绑定到 传输层连接,如TCP。在RTSP连接期间,RTSP用户可打开或关闭多个对 服务器的可传输连接以发出RTSP请求。此外,可使用无连接 传输协议,如UDP。RTSP 流控制的流可能用到RTP,但RTSP操作并不依赖用于携带连续媒体的传输机制。 协议支持的操作如下: (1)从 媒体服务器上检索媒体:用户可通过HTTP或其它方法提交一个演示描述。如演示是 组播,演示式就包含用于连续媒体的的 组播地址和 端口。如演示仅通过 单播发送给用户,用户为了安全应提供目的地址。 (2) 媒体服务器邀请进入会议:媒体服务器可被邀请参加正进行的会议,或回放媒体,或记录其中一部分,或全部。这种模式在分布式教育应用上很有用,会议中几方可轮流按 远程控制按钮。 (3)将媒体加到现成讲座中:如 服务器告诉用户可获得附加媒体内容,对现场讲座显得尤其有用。如HTTP/1.1中类似,RTSP请求可由代理、通道与 缓存处理。编辑本段协议特点
(1) 可扩展性:新方法和参数很容易加入RTSP。 (2) 易解析:RTSP可由标准HTTP或MIME解析器解析。 (3) 安全:RTSP使用网页安全机制。 (4) 独立于传输:RTSP可使用不可靠数据报 协议(EDP)、可靠数据报协议(RDP);如要实现应用级可靠,可使用可靠流协议。 (5) 多 服务器支持:每个流可放在不同服务器上,用户端自动与不同服务器建立几个 并发控制连接,媒体同步在 传输层执行。 (6) 记录设备控制: 协议可控制记录和回放设备。 (7) 流控与会议开始分离:仅要求会议初始化 协议提供,或可用来创建惟一会议标识号。特殊情况下,可用SIP或H.323来邀请 服务器入会。 (8) 适合专业应用:通过SMPTE时标,RTSP支持帧级精度,允许远程数字编辑。 (9) 演示描述中立: 协议没强加特殊演示或元文件,可传送所用格式类型;然而,演示描述至少必须包括一个RTSP URL。 (10) 代理与防火墙友好: 协议可由应用和 传输层防火墙处理。防火墙需要理解SETUP方法,为UDP媒体流打开一个“缺口”。 (11) HTTP友好:此处,RTSP明智地采用HTTP观念,使现在结构都可重用。结构包括Internet内容选择平台(PICS)。由于在大多数情况下控制连续媒体需要 服务器状态,RTSP不仅仅向HTFP添加方法。 (12) 适当的 服务器控制:如用户启动一个流,必须也可以停止一个流。 (13) 传输协调:实际处理连续媒体流前,用户可协调传输方法。 (14) 性能协调:如基本特征无效,必须有一些清理机制让用户决定哪种方法没生效。这允许用户提出适合的用户界面。编辑本段协议结构
RTSP是一种文本 协议,采用UTF-8编码中的ISO 10646 字符集。一行可通过CRLF终止,但接收端需要做好解释CR和LF作为一行终止符的准备。关于头字段概述如下: Header Type Support Methods Accept R opt. entity Accept-Encoding R opt. entity Accept-Language R opt. all Allow R opt. all Authorization R opt. all Bandwidth R opt. all Blocksize R opt. All but OPTIONS,TEARDOWN Cache-Control G opt. SETUP Conference R opt. SETUP Connection G req. all Content-Base E opt. entity Content-Encoding E req. SET_PARAMETER Content-Encoding E req. DESCRIBE,ANNOUNCE Content-Language E req. DESCRIBE,ANNOUNCE Content-Length E req. SET_PARAMETER,ANNOUNCE Content-Length E req. entity Content-Location E opt. entity Content-Type E req. SET_PARAMETER,ANNOUNCE Content-Type R req. entity CSeq G req. all Date G opt. all Expires E opt. DESCRIBE,ANNOUNCE From R opt. all If-Modified-Since R opt. DESCRIBE,SETUP Last-Modified E opt. entity Proxy-Authenticate Proxy-Require R req. all Public R opt. all Range R opt. PLAY,PAUSE,RECORD Range R opt. PLAY,PAUSE,RECORD Referer R opt. all Require R req. all Retry-After R opt. all RTP-Info R req. PLAY Scale Rr opt. PLAY,RECORD Session Rr req. All but SETUP,OPTIONS Server R opt. all Speed Rr opt. PLAY Transport Rr req. SETUP Unsupported R req. all User-Agent R opt. all Via G opt. all WWW-Authenticate R opt. all 类型"g"表示请求和响应中的通用请求头;类型“R”表示请求头;类型“r”表示响应头;类型"e"表示实体头字段。在“support”一栏中标有“req.”的字段必须由接收者以特殊的方法实现;而“opt.”的字段是可选的。注意,不是所有“req.”字段在该类型的每个请求中都会被发送。“req.”只表示客户机(支持响应头)和 服务器(支持请求头)必须执行该字段。最后一栏列出了关于头字段产生作用的方法;其中“entity”针对于返回一个信息主体的所有方法。编辑本段协议参数
1.RTSP版本 H.321采用,用RTSP代替HTTP。 2.RTSPURL “rksp"和“rtspu"方案用于指RTSP 协议使用的网络资源,为RTSP URL定义方案特定的语法和语义。 3.会议标识 会议标识对RTSP来说是模糊的,采用标准URI编码方法编码,可包含任何八位组数值。会议标识必须全局惟一。 4.连接标识 连接标识是长度不确定的字符串,必须随机选择,至少要8个八位组长,使其很难被猜出。 5.SMPTE相关时标 SMPTE相关时标表示相对剪辑开始的时间,相关时标表示成SMPTE时间代码,精确到帧级。时间代码格式为小时:分钟:秒:帧。缺省smpte格式是"SMPTE 30",帧速率为每秒29.97帧。其他SMPTE代码可选择使用smpte时间获得支持(如"SMPIE 25")。时间数值中帧段值可从0到29。每秒30与29.97帧的差别可将每分钟的头两帧丢掉来实现。如帧值为零,就可删除。 6.正常播放时间 正常播放时间(NPT)表示相对演示开始的流绝对位置。时标由十进制分数组成。左边部分用秒或小时、分钟、秒表示;小数点右边部分表示秒的部分。演示的开始对应0.0秒,负数没有定义。特殊常数定义成现场事件的当前时刻,这也许只用于现场事件。直观上,NPT是联系观看者与程序的时钟,通常以数字式显示在VCR上。 7.绝对时间 绝对时间表示成ISO 8601时标,采用UTC(GMT)。 8.可选标签 可选标签是用于指定RTSP新可选项的惟一标记。这些标记用在请求和代理-请求头段。当登记新RTSP选项时,需提供下列信息: (1)名称和描述选项。名称长度不限,但不应该多于20个字符。名称不能包括空格、 控制字符。 (2)表明谁改变选项的控制。如IETF,ISO,ITU-T,或其他国际标准团体、联盟或公司。 (3)深入描述的参考,如RFC、论文、专利、技术报告、文档源码和计算机手册。 (4)对专用选项,附上联系方式。编辑本段RTSP信息
RTSP是基于 文本的 协议,采用ISO 10646 字符集,使用UTF-8编码方案。行以CRLF中断,但接收者本身可将CR和LF解释成行终止符。基于 文本的 协议使以自描述方式增加可选参数更容易。由于参数的数量和命令的频率出现较低,处理效率没引起注意。文本 协议很容易以 脚本语言(如:Tcl,Visual Basic与Perl)实现研究原型。 ISO 10646 字符集避免敏感字符集切换,但对应用来说不可见。RTCP也采用这种编码方案。带有重要意义位的ISO 8859-1字符表示如100001x 10x x x x x x。RTSP信息可通过任何低层 传输协议携带。 请求包括方法、方法作用于其上的对象以及进一步描述方法的参数。方法也可设计为在 服务器端只需要少量或不需要状态维护。当信息体包含在信息中,信息体长度由如下因素决定: (1)不管实体头段是否出现在信息中,不包括信息体的响应,信息总以头段后第一个空行结束。 (2)如出现内容长度头段,其值以 字节计,表示信息体长度。如未出现头段,其值为零。 (3) 服务器关闭连接。 注意,RTSP目前并不支持HTTP 1.1“块”传输编码,需要有内容长度头。假如返回适度演示描述长度,即使动态产生,使 块传输编码没有必要, 服务器也应该能决定其长度。如有实体,即使必须有内容长度,且长度没显式给出,规则可确保行为合理。 从用户到 服务器端的请求信息在第一行内包括源采用的方法、源标识和所用 协议版本。RTSP定义了附加 状态代码,但没有定义任何HTTP代码。编辑本段RTSP实体
如不受请求方法或响应状态编码限制,请求和响应信息可传输实体,实体则由实体头文件和实体体组成,有些响应仅包括实体头。在此,根据谁发送实体、谁接收实体,发送者和接收者可分别指用户和 服务器。 实体头定义实体体可选元信息,如没有实体体,指请求标识的资源。扩展头机制允许定义附加实体头段,而不用改变 协议,但这些段不能假定接收者能识别。不可识别头段应被接收者忽略,而让代理转发。编辑本段连接
RTSP请求可以几种不同方式传送: · 持久传输连接,用于多个请求/响应传输。 · 每个请求/响应传输一个连接。 · 无连接模式。 传输连接类型由RTSP URL来定义。对“rtsp'’方案,需要持续连接;而"rtspu"方案,调用RTSP请求发送,而不用建立连接。 不像HTTP,RTSP允许 媒体服务器给媒体用户发送请求。然而,这仅在 持久连接时才支持,否则 媒体服务器没有可靠途径到达用户,这也是请求通过 防火墙从媒体服务器传到用户的惟一途径。编辑本段方法定义
方法记号表示资源上执行的方法,它区分大小写。新方法可在将来定义,但不能以$开头。已定义方法如下表所示。 RTSP方法方法 | 方向 | 对象 | 要求 | 含义 |
DESCRIBE | C->S | P,S | 推荐 | 检查演示或媒体对象的描述,也允许使用接收头指定用户理解的描述格式。DESCRIBE的答复-响应组成媒体RTSP初始阶段 |
ANNOUNCE | C->S S->C |
P,S | 可选 | 当从用户发往服务器时,ANNOUNCE将请求URL识别的演示或媒体对象描述发送给服务器;反之,ANNOUNCE实时更新连接描述。如新媒体流加入演示,整个演示描述再次发送,而不仅仅是附加组件,使组件能被删除 |
GET_PARAMETER | C->S S->C |
P,S | 可选 | GET_PARAMETER请求检查RUL指定的演示与媒体的参数值。没有实体体时,GET_PARAMETER也许能用来测试用户与服务器的连通情况 |
OPTIONS | C->S S->C |
P,S | 要求 | 可在任意时刻发出OPTIONS请求,如用户打算尝试非标准请求,并不影响服务器状态 |
PAUSE | C->S | P,S | 推荐 | PAUSE请求引起流发送临时中断。如请求URL命名一个流,仅回放和记录被停止;如请求URL命名一个演示或流组,演示或组中所有当前活动的流发送都停止。恢复回放或记录后,必须维持同步。在SETUP消息中连接头超时参数所指定时段期间被暂停后,尽管服务器可能关闭连接并释放资源,但服务器资源会被预订 |
PLAY | C->S | P,S | 要求 | PLAY告诉服务器以SETUP指定的机制开始发送数据;直到一些SETUP请求被成功响应,客户端才可发布PLAY请求。PLAY请求将正常播放时间设置在所指定范围的起始处,发送流数据直到范围的结束处。PLAY请求可排成队列,服务器将PLAY请求排成队列,顺序执行 |
RECORD | C->S | P,S | 可选 | 该方法根据演示描述初始化媒体数据记录范围,时标反映开始和结束时间;如没有给出时间范围,使用演示描述提供的开始和结束时间。如连接已经启动,立即开始记录,服务器数据请求URL或其他URL决定是否存储记录的数据;如服务器没有使用URL请求,响应应为201(创建),并包含描述请求状态和参考新资源的实体与位置头。支持现场演示记录的媒体服务器必须支持时钟范围格式,smpte格式没有意义 |
REDIRECT | S->C | P,S | 可选 | 重定向请求通知客户端连接到另一服务器地址。它包含强制头地址,指示客户端发布URL请求;也可能包括参数范围,以指明重定向何时生效。若客户端要继续发送或接收URL媒体,客户端必须对当前连接发送TEARDOWN请求,而对指定主执新连接发送SETUP请求 |
SETUP | C->S | S | 要求 | 对URL的SETUP请求指定用于流媒体的传输机制。客户端对正播放的流发布一个SETUP请求,以改变服务器允许的传输参数。如不允许这样做,响应错误为"455 Method Not Valid In This State”。为了透过防火墙,客户端必须指明传输参数,即使对这些参数没有影响 |
SET_PARAMETER | C->S S->C |
P,S | 可选 | 这个方法请求设置演示或URL指定流的参数值。请求仅应包含单个参数,允许客户端决定某个特殊请求为何失败。如请求包含多个参数,所有参数可成功设置,服务器必须只对该请求起作用。服务器必须允许参数可重复设置成同一值,但不让改变参数值。注意:媒体流传输参数必须用SETUP命令设置。将设置传输参数限制为SETUP有利于防火墙。将参数划分成规则排列形式,结果有更多有意义的错误指示 |
TEARDOWN | C->S | P,S | 要求 | TEARDOWN请求停止给定URL流发送,释放相关资源。如URL是此演示URL,任何RTSP连接标识不再有效。除非全部传输参数是连接描述定义的,SETUP请求必须在连接可再次播放前发布 |