无锡网站建设哪家好,免费领取一个微信号,网站开发书籍,建站行业分析前言
本文档是 RFC 2326 - Real Time Streaming Protocol (RTSP) 的完整的标准文档中文翻译#xff0c;专业术语尽量保持了与英文原意一致#xff0c;示例代码和语法部分保持原样#xff0c;格式和结构完全遵循原RFC文档#xff0c;已更新到最新的RFC规范引用。
注意专业术语尽量保持了与英文原意一致示例代码和语法部分保持原样格式和结构完全遵循原RFC文档已更新到最新的RFC规范引用。注意这是技术文档的翻译实际实现时应参考英文原版RFC 2326和相关的更新文档。RFC 2326 - Real Time Streaming Protocol (RTSP) 原标准文档https://www.rfc-editor.org/rfc/rfc2326以下是全文RFC 2326 - 实时流协议 (RTSP)网络工作组H. Schulzrinne分类标准跟踪发布日期1998年4月替代RFC 1889部分摘要实时流协议RTSP建立和控制一个或多个时间同步的连续媒体流如音频和视频。它本身通常不传输连续流尽管RTSP连接可以交织在传输流中。RTSP充当多媒体服务器的网络远程控制。该协议旨在控制通过IP网络如直播电视或视频点播传送的实时数据的传送。RTSP旨在提供与HTTP相似的功能但针对流媒体进行了扩展。例如两种协议都有相同的请求方法和许多相同的头字段。这使得大多数标准HTTP扩展机制也可用于RTSP。本文档定义了RTSP版本1.0。目录引言术语协议参数RTSP操作连接方法定义响应代码头字段消息体示例语法安全考虑致谢参考文献作者地址完整版权声明1. 引言1.1 目的实时流协议RTSP旨在通过单播或多播网络控制实时数据的传送。它提供了可扩展的框架支持按需媒体传送直播流控制会话控制设备控制RTSP建立并控制媒体服务器和客户端之间的一个或多个时间同步的连续媒体流。它不关心这些连续媒体流如何传送而是专注于控制流。1.2 协议特性RTSP具有以下关键特性可扩展性通过添加新方法、参数很容易扩展易于解析基于HTTP的文本协议独立于传输可运行在UDP、TCP或其他传输协议上多服务器控制可控制来自不同服务器的流设备控制允许控制如VCR的设备操作播放、暂停等防火墙友好可在大多数防火墙配置中工作适合专业应用支持专业质量需求1.3 与HTTP的关系RTSP在许多方面类似HTTP语法和操作类似使用URI标识媒体流使用类似的方法GET、POST等使用类似的状态码使用类似的头字段但RTSP与HTTP有重要区别RTSP维护状态而HTTP是无状态的RTSP有自己的一组方法RTSP服务器默认监听端口554RTSP使用独立的媒体传输协议通常是RTP2. 术语2.1 基本术语媒体流一个时间同步的连续媒体序列呈现媒体流的集合会话呈现和状态信息的完整集合客户端请求建立媒体会话的实体服务器提供媒体流服务的实体2.2 协议术语请求客户端发送给服务器的消息响应服务器对请求的回复方法要在资源上执行的操作资源由URI标识的网络数据对象或服务实体作为请求或响应的有效负载传输的信息2.3 时间相关术语正常播放时间NPT相对于呈现开始的时间绝对时间实际世界时间UTC采样时间媒体采样的时间戳3. 协议参数3.1 RTSP版本RTSP-Version RTSP / 1*DIGIT . 1*DIGIT本文档定义RTSP/1.0。3.2 RTSP URLRTSP URL语法rtsp_URL rtsp: // host [ : port ] [ abs_path ]示例rtsp://media.example.com:554/twister/audiotrack rtsp://media.example.com:554/twister/videotrack3.3 端口号默认端口554TCP和UDP替代端口8554常用于替代3.4 字符集默认字符集是ISO-8859-1但UTF-8也被广泛支持。4. RTSP操作4.1 整体操作典型的RTSP会话操作序列客户端 → 服务器DESCRIBE获取媒体描述 服务器 → 客户端200 OK返回SDP描述 客户端 → 服务器SETUP建立传输参数 服务器 → 客户端200 OK确认参数 客户端 → 服务器PLAY开始播放 服务器 → 客户端200 OK开始传输 ... 媒体通过RTP传输 ... 客户端 → 服务器PAUSE暂停播放 服务器 → 客户端200 OK确认暂停 客户端 → 服务器TEARDOWN结束会话 服务器 → 客户端200 OK确认结束4.2 连接模式RTSP支持两种连接模式持久连接单个TCP连接用于多个请求/响应非持久连接每个请求使用新连接4.3 状态维护RTSP服务器维护会话状态包括会话标识符传输参数播放状态播放、暂停、停止播放位置5. 连接5.1 传输协议RTSP可以在多种传输协议上运行TCP推荐可靠传输需要连接建立支持持久连接UDP无连接更低的延迟需要应用层可靠性机制其他传输TLS安全传输SCTP流控制传输协议5.2 连接建立TCP连接建立过程客户端 → 服务器SYN 服务器 → 客户端SYN-ACK 客户端 → 服务器ACK 客户端 → 服务器RTSP请求 服务器 → 客户端RTSP响应5.3 连接复用对于媒体传输RTSP通常使用单独的连接RTSP控制通道TCP端口554RTP媒体通道动态端口RTCP控制通道RTP端口16. 方法定义6.1 方法概述RTSP定义了以下方法方法方向要求描述DESCRIBEC→S推荐检索媒体描述ANNOUNCEC→S, S→C可选发布媒体描述GET_PARAMETERC→S, S→C可选获取参数值OPTIONSC→S, S→C必须查询服务器能力PAUSEC→S推荐暂停流播放PLAYC→S必须开始或恢复播放RECORDC→S可选开始录制REDIRECTS→C可选重定向到其他服务器SETUPC→S必须建立传输参数SET_PARAMETERC→S, S→C可选设置参数值TEARDOWNC→S必须停止流并释放资源6.2 详细方法定义6.2.1 DESCRIBE目的从服务器检索媒体或媒体对象描述。语法DESCRIBE rtsp_URL RTSP/1.0 CSeq: sequence-number Accept: application/sdp User-Agent: client-info示例DESCRIBE rtsp://example.com/media.mp4 RTSP/1.0 CSeq: 312 Accept: application/sdp, application/rtsl, application/mheg响应返回媒体描述的SDP格式。6.2.2 SETUP目的为流指定传输机制。语法SETUP rtsp_URL/streamid RTSP/1.0 CSeq: sequence-number Transport: transport-spec示例SETUP rtsp://example.com/media.mp4/track1 RTSP/1.0 CSeq: 302 Transport: RTP/AVP;unicast;client_port8000-8001响应包含确认的传输参数和会话ID。6.2.3 PLAY目的告诉服务器通过SETUP指定的机制开始发送数据。语法PLAY rtsp_URL RTSP/1.0 CSeq: sequence-number Session: session-id Range: nptstart-[end]示例PLAY rtsp://example.com/media.mp4 RTSP/1.0 CSeq: 306 Session: 12345678 Range: npt10.0-15.0响应包含实际播放范围。6.2.4 PAUSE目的临时停止播放而不释放服务器资源。语法PAUSE rtsp_URL RTSP/1.0 CSeq: sequence-number Session: session-id响应确认暂停。6.2.5 TEARDOWN目的停止给定URI的流传输释放相关资源。语法TEARDOWN rtsp_URL RTSP/1.0 CSeq: sequence-number Session: session-id响应确认拆除。6.2.6 OPTIONS目的查询服务器支持的方法。语法OPTIONS * RTSP/1.0 CSeq: sequence-number示例OPTIONS * RTSP/1.0 CSeq: 1响应包含Public头字段列出支持的方法。7. 响应代码7.1 响应代码分类代码范围类别描述1xx信息性请求已接收继续处理2xx成功请求已成功接收、理解和接受3xx重定向需要进一步操作以完成请求4xx客户端错误请求包含语法错误或无法完成5xx服务器错误服务器无法完成有效请求7.2 主要响应代码7.2.1 成功响应2xx200 OK请求成功201 Created资源已创建250 Low on Storage Space存储空间不足7.2.2 重定向响应3xx301 Moved Permanently资源已永久移动302 Found资源临时在其他位置303 See Other对请求的响应可以在另一个URI找到305 Use Proxy必须通过代理访问7.2.3 客户端错误4xx400 Bad Request错误请求语法401 Unauthorized需要身份验证402 Payment Required保留将来使用403 Forbidden服务器理解但拒绝404 Not Found未找到资源405 Method Not Allowed方法不允许406 Not Acceptable不接受请求407 Proxy Authentication Required需要代理身份验证408 Request Timeout请求超时410 Gone资源不再可用411 Length Required需要Content-Length412 Precondition Failed前提条件失败413 Request Entity Too Large请求实体太大414 Request-URI Too Long请求URI太长415 Unsupported Media Type不支持的媒体类型451 Parameter Not Understood参数不理解452 Conference Not Found会议未找到453 Not Enough Bandwidth带宽不足454 Session Not Found会话未找到455 Method Not Valid in This State在此状态下方法无效456 Header Field Not Valid for Resource头字段对资源无效457 Invalid Range无效范围458 Parameter Is Read-Only参数只读459 Aggregate Operation Not Allowed聚合操作不允许460 Only Aggregate Operation Allowed只允许聚合操作461 Unsupported Transport不支持的传输462 Destination Unreachable目的地不可达7.2.4 服务器错误5xx500 Internal Server Error内部服务器错误501 Not Implemented未实现502 Bad Gateway错误网关503 Service Unavailable服务不可用504 Gateway Timeout网关超时505 RTSP Version Not SupportedRTSP版本不支持551 Option not supported选项不支持7.3 响应格式RTSP/1.0 200 OK CSeq: sequence-number Server: server-info Session: session-id (如果适用) ... 其他头字段 ... 可选的消息体8. 头字段8.1 通用头字段这些头字段可用于请求和响应消息Cache-Control缓存指令Connection连接选项Date消息日期和时间Via代理网关信息8.2 请求头字段Accept可接受的媒体类型Accept-Encoding可接受的内容编码Accept-Language可接受的语言Authorization身份验证凭证From用户电子邮件地址If-Modified-Since条件请求Range播放范围Referer引用页面User-Agent客户端信息8.3 响应头字段Location重定向位置Proxy-Authenticate代理身份验证质询Public支持的方法列表Retry-After重试时间Server服务器软件信息Vary缓存变体WWW-AuthenticateWeb身份验证质询8.4 实体头字段Allow资源允许的方法Content-Base解析相对URL的基础Content-Encoding内容编码Content-Language内容语言Content-Length内容长度Content-Location内容位置Content-Type内容类型Expires过期时间Last-Modified最后修改时间8.5 RTSP特定头字段Bandwidth带宽估计Blocksize建议块大小Conference会议标识CSeq命令序列号必须Require必须支持的特性RTP-InfoRTP流信息Scale播放速度比例Session会话标识符必须Speed播放速度Transport传输参数8.6 重要头字段详解8.6.1 CSeq命令序列号目的匹配请求和响应检测重复。语法CSeq: 1*DIGIT示例CSeq: 312要求每个请求必须包含CSeq头字段响应必须回显相同的值。8.6.2 Session会话标识符目的标识RTSP会话。语法Session: session-id [;timeoutseconds]示例Session: 12345678;timeout60超时服务器应在超时后清除会话。8.6.3 Transport传输参数目的指定传输机制和参数。语法Transport: transport-spec *( , transport-spec )传输规范transport-spec transport/profile [/lower-transport] *parameter示例Transport: RTP/AVP;unicast;client_port8000-8001;server_port9000-9001 Transport: RTP/AVP/UDP;unicast;destination10.0.0.1;client_port8000-8001参数unicast或multicast传输模式client_port客户端RTP/RTCP端口server_port服务器RTP/RTCP端口destination组播地址ttl组播TTLlayers视频层数ssrc同步源标识符mode传输模式“play或record”8.6.4 Range播放范围目的指定播放的时间范围。语法Range: range-type range-value范围类型npt正常播放时间默认clockUTC绝对时间smpteSMPTE时间码示例Range: npt10.5-20.5 Range: npt0- Range: nptnow- Range: clock19961108T143720.25Z- Range: smpte0:10:00-8.6.5 RTP-InfoRTP信息目的提供有关RTP流的详细信息。语法RTP-Info: urlrtsp_URL;seqseq-number;rtptimetime示例RTP-Info: urlrtsp://example.com/media.mp4/track1;seq123;rtptime1234568.6.6 Scale播放比例目的指定播放速度比例。语法Scale: multiplier [ . fraction ]示例Scale: 2.0 # 2倍速播放 Scale: -1.0 # 反向播放 Scale: 0.0 # 暂停8.6.7 Speed播放速度目的指定播放速度已弃用推荐使用Scale。语法Speed: multiplier9. 消息体9.1 消息体类型RTSP消息可以包含消息体用于媒体描述DESCRIBE响应参数值GET_PARAMETER/SET_PARAMETER重定向信息ANNOUNCE9.2 内容类型常见的内容类型application/sdp会话描述协议application/rtslRTSP脚本语言text/parameters参数列表text/uri-listURI列表9.3 SDP格式示例v0 o- 2890844526 2890842807 IN IP4 192.0.2.1 sRTSP Session iAn Example of RTSP Session uhttp://www.example.com/seminars/sdp.pdf eadminexample.com cIN IP4 0.0.0.0 t0 0 acontrol:* mvideo 0 RTP/AVP 96 artpmap:96 H264/90000 acontrol:track1 maudio 0 RTP/AVP 97 artpmap:97 mpeg4-generic/44100/2 acontrol:track210. 示例10.1 完整会话示例客户端请求序列1. OPTIONS请求 OPTIONS * RTSP/1.0 CSeq: 1 User-Agent: ExampleClient/1.0 2. DESCRIBE请求 DESCRIBE rtsp://example.com/media.mp4 RTSP/1.0 CSeq: 2 Accept: application/sdp 3. SETUP请求 SETUP rtsp://example.com/media.mp4/track1 RTSP/1.0 CSeq: 3 Transport: RTP/AVP;unicast;client_port8000-8001 4. PLAY请求 PLAY rtsp://example.com/media.mp4 RTSP/1.0 CSeq: 4 Session: 12345678 Range: npt0.0- 5. TEARDOWN请求 TEARDOWN rtsp://example.com/media.mp4 RTSP/1.0 CSeq: 5 Session: 12345678服务器响应序列1. OPTIONS响应 RTSP/1.0 200 OK CSeq: 1 Server: ExampleServer/1.0 Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE 2. DESCRIBE响应 RTSP/1.0 200 OK CSeq: 2 Content-Type: application/sdp Content-Length: 376 v0 o- 2890844526 2890842807 IN IP4 192.0.2.1 sRTSP Session mvideo 0 RTP/AVP 96 artpmap:96 H264/90000 acontrol:track1 maudio 0 RTP/AVP 97 artpmap:97 mpeg4-generic/44100/2 acontrol:track2 3. SETUP响应 RTSP/1.0 200 OK CSeq: 3 Session: 12345678;timeout60 Transport: RTP/AVP;unicast;client_port8000-8001;server_port9000-9001 4. PLAY响应 RTSP/1.0 200 OK CSeq: 4 Session: 12345678 RTP-Info: urlrtsp://example.com/media.mp4/track1;seq123;rtptime123456 5. TEARDOWN响应 RTSP/1.0 200 OK CSeq: 5 Session: 1234567810.2 点播流媒体示例C-S: DESCRIBE rtsp://server.example.com/fizzle/foo RTSP/1.0 CSeq: 1 Accept: application/sdp S-C: RTSP/1.0 200 OK CSeq: 1 Content-Type: application/sdp Content-Length: 376 v0 o- 2890844526 2890842807 IN IP4 192.0.2.1 sRTSP Session mvideo 0 RTP/AVP 96 artpmap:96 H264/90000 acontrol:track1 C-S: SETUP rtsp://server.example.com/fizzle/foo/track1 RTSP/1.0 CSeq: 2 Transport: RTP/AVP;unicast;client_port8000-8001 S-C: RTSP/1.0 200 OK CSeq: 2 Session: 12345678 Transport: RTP/AVP;unicast;client_port8000-8001;server_port9000-9001 C-S: PLAY rtsp://server.example.com/fizzle/foo RTSP/1.0 CSeq: 3 Session: 12345678 Range: npt0- S-C: RTSP/1.0 200 OK CSeq: 3 Session: 12345678 RTP-Info: urlrtsp://server.example.com/fizzle/foo/track1;seq123;rtptime123456 C-S: TEARDOWN rtsp://server.example.com/fizzle/foo RTSP/1.0 CSeq: 4 Session: 12345678 S-C: RTSP/1.0 200 OK CSeq: 4 Session: 1234567810.3 直播流媒体示例C-S: DESCRIBE rtsp://server.example.com/live.sdp RTSP/1.0 CSeq: 1 S-C: RTSP/1.0 200 OK CSeq: 1 Content-Type: application/sdp Content-Length: 210 v0 o- 2890844526 2890842807 IN IP4 192.0.2.1 sLive Stream mvideo 0 RTP/AVP 96 acontrol:* artpmap:96 H264/90000 C-S: SETUP rtsp://server.example.com/live.sdp RTSP/1.0 CSeq: 2 Transport: RTP/AVP;unicast;client_port8000-8001 S-C: RTSP/1.0 200 OK CSeq: 2 Session: 12345678 Transport: RTP/AVP;unicast;client_port8000-8001;server_port9000-9001 C-S: PLAY rtsp://server.example.com/live.sdp RTSP/1.0 CSeq: 3 Session: 12345678 Range: nptnow- S-C: RTSP/1.0 200 OK CSeq: 3 Session: 1234567810.4 多播流示例C-S: SETUP rtsp://server.example.com/concert/track1 RTSP/1.0 CSeq: 1 Transport: RTP/AVP;multicast;destination225.0.0.1;port6000-6001;ttl16 S-C: RTSP/1.0 200 OK CSeq: 1 Session: 12345678 Transport: RTP/AVP;multicast;destination225.0.0.1;port6000-6001;ttl16 C-S: PLAY rtsp://server.example.com/concert RTSP/1.0 CSeq: 2 Session: 1234567811. 语法11.1 增强BNF语法RTSP-message Request | Response Request Request-Line *( message-header CRLF ) CRLF [ message-body ] Response Status-Line *( message-header CRLF ) CRLF [ message-body ] Request-Line Method SP Request-URI SP RTSP-Version CRLF Status-Line RTSP-Version SP Status-Code SP Reason-Phrase CRLF Method DESCRIBE | ANNOUNCE | GET_PARAMETER | SET_PARAMETER | PLAY | PAUSE | RECORD | REDIRECT | SETUP | TEARDOWN | OPTIONS Request-URI * | absolute-URI RTSP-Version RTSP / 1*DIGIT . 1*DIGIT Status-Code 3DIGIT Reason-Phrase *TEXT, excluding CR, LF message-header field-name : [ field-value ] field-name token field-value *( field-content | LWS ) field-content the OCTETs making up the field-value and consisting of either *TEXT or combinations of token, separators, and quoted-string TEXT any OCTET except CTLs, but including LWS LWS [CRLF] 1*( SP | HT ) CRLF CR LF SP US-ASCII SP, space (32) HT US-ASCII HT, horizontal-tab (9) CR US-ASCII CR, carriage return (13) LF US-ASCII LF, linefeed (10) CTL any US-ASCII control character (octets 0 - 31) and DEL (127) token 1*any CHAR except CTLs or separators separators ( | ) | | | | , | ; | : | \ | | / | [ | ] | ? | | { | } | SP | HT CHAR any US-ASCII character (octets 0 - 127) OCTET any 8-bit sequence of data11.2 消息解析规则行以CRLF结尾头字段名称不区分大小写头字段值前导和尾随空格应被修剪多个相同头字段可以合并用逗号分隔消息体长度由Content-Length头字段或传输关闭决定12. 安全考虑12.1 认证机制RTSP支持以下认证机制基本认证Base64编码的用户名/密码摘要认证挑战-响应机制基本认证示例C-S: DESCRIBE rtsp://server.example.com/media RTSP/1.0 CSeq: 1 S-C: RTSP/1.0 401 Unauthorized CSeq: 1 WWW-Authenticate: Basic realmRTSP Server C-S: DESCRIBE rtsp://server.example.com/media RTSP/1.0 CSeq: 2 Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ摘要认证示例S-C: RTSP/1.0 401 Unauthorized CSeq: 1 WWW-Authenticate: Digest realmRTSP Server, noncedcd98b7102dd2f0e8b11d0f600bfb0c093, opaque5ccc069c403ebaf9f0171e9517f40e41 C-S: DESCRIBE rtsp://server.example.com/media RTSP/1.0 CSeq: 2 Authorization: Digest usernameMufasa, realmRTSP Server, noncedcd98b7102dd2f0e8b11d0f600bfb0c093, urirtsp://server.example.com/media, response6629fae49393a05397450978507c4ef112.2 隐私考虑基本认证以明文传输凭据应在TLS上使用摘要认证更安全但仍有局限性建议使用RTSP over TLSRTSPS进行安全通信12.3 拒绝服务攻击RTSP服务器应实施连接速率限制请求大小限制会话数量限制超时处理12.4 访问控制服务器应实现基于IP的访问控制基于用户的权限管理资源访问限制13. 致谢本规范基于RealNetworks、Netscape和哥伦比亚大学的早期工作。感谢以下人员的贡献Rob Lanphier (RealNetworks)Anup Rao (Netscape)Steve Casner (Packet Design)以及IETF MMUSIC工作组的成员14. 参考文献14.1 规范参考文献[1] Berners-Lee, T., “Uniform Resource Identifiers (URI): Generic Syntax”, RFC 2396.[2] Fielding, R., et al., “Hypertext Transfer Protocol – HTTP/1.1”, RFC 2616.[3] Schulzrinne, H., “RTP Profile for Audio and Video Conferences with Minimal Control”, RFC 1890.[4] Handley, M. and V. Jacobson, “SDP: Session Description Protocol”, RFC 2327.14.2 信息参考文献[5] Schulzrinne, H., Rao, A., and R. Lanphier, “Real Time Streaming Protocol (RTSP)”, RFC 2326.[6] ISO/IEC, “Information Technology – Coding of moving pictures and associated audio for digital storage media at up to about 1.5 Mbit/s”, ISO/IEC 11172.[7] ISO/IEC, “Information Technology – Generic coding of moving pictures and associated audio information”, ISO/IEC 13818.15. 作者地址Henning Schulzrinne Dept. of Computer Science Columbia University 1214 Amsterdam Avenue New York, NY 10027 USA Email: schulzrinnecs.columbia.edu Phone: 1 212 939 704216. 完整版权声明Copyright © The Internet Society (1998). All Rights Reserved.This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into languages other than English.The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns.This document and the information contained herein is provided on an “AS IS” basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.