📄 rfc2326(中文版)-实时流协议(rtsp) - p2p - confluence.htm
字号:
</STYLE>
<!-- Delay the loading of the external javascript file needed for labels (as it takes too long to load and visibly holds loading of the page body) --><!-- To do this without javascript errors over undefined functions, we need to declare stubs here (that are overrided later by the proper implementations) -->
<SCRIPT language=JavaScript type=text/javascript> function doAddLabel(hideTextfieldAfterAddParam) { // stub } function onAddLabel() { // stub } function showLabelsInput() { // stub }</SCRIPT>
<!-- This is a hack to work around an apparent SiteMesh bug - http://jira.opensymphony.com/browse/SIM-198 --><SPAN
class=error><SPAN class=errorMessage
id=errorSpan></SPAN></SPAN>
<FORM
style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px"
name=addLabelForm onsubmit="doAddLabel(false); return false;"
action="">
<DIV style="FLOAT: left">Labels: </DIV>
<DIV id=labelsInfo style="FLOAT: left; WIDTH: 90%"><SPAN
id=labelsList>(None) </SPAN><SPAN class=inline-control-link
id=editLabelsLink style="DISPLAY: none"></SPAN></DIV><BR
clear=all><!-- Do not remove this line-break. You will make Safari cry. -->
<DIV id=labelInputSpan style="CLEAR: both; DISPLAY: none"><BR>
<DIV
style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 8px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 8px; PADDING-BOTTOM: 8px; BORDER-LEFT: #cccccc 1px solid; PADDING-TOP: 8px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #f0f0f0; align: center">
<DIV id=labelOperationErrorContainer
style="DISPLAY: none"><SPAN class=error><SPAN
class=errorMessage
id=labelOperationErrorMessage></SPAN></SPAN></DIV>
<TABLE width="100%">
<TBODY>
<TR>
<TD>
<DIV class=formtitle
style="FONT-SIZE: 13px; PADDING-BOTTOM: 3px">Add
Labels</DIV></TD>
<TD align=right>
<DIV id=waitImageAndStatus
style="DISPLAY: none; HEIGHT: 16px"><IMG
alt="Wait Image"
src="RFC2326(中文版)-实时流协议(RTSP) - P2P - Confluence.files/wait.gif"
align=absMiddle border=0> <SPAN class=smalltext
id=labelOperationStatus
style="VERTICAL-ALIGN: middle"></SPAN></DIV></TD></TR>
<TR>
<TD width="50%">Enter labels to add to this
page:<BR><INPUT class=monospaceInput id=labelName
size=40 name=labelsString autocomplete="off"> <INPUT onclick="doAddLabel(false); return false;" type=submit value=Add><INPUT onclick="doAddLabel(true); return false;" type=button value=Done>
<DIV class=auto_complete
id=labelsAutocompleteList></DIV>
<DIV class=smalltext><EM>Tip:</EM> Looking for a label?
Just start typing. </DIV></TD>
<TD vAlign=top width="50%">
<DIV
id=suggestedLabelsSpan></DIV></TD></TR></TBODY></TABLE></DIV></DIV></FORM>
<SCRIPT type=text/javascript> // if there is javascript support, enable the [Edit] link that enables AJAX label adding/removing functionality document.getElementById('editLabelsLink').style.display = 'inline'; </SCRIPT>
</SPAN></TD>
<TD vAlign=top align=right></TD></TR></TBODY></TABLE>
<DIV class=wiki-content><!-- wiki content -->
<P>Network Working Group H. Schulzrinne<BR>Request for Comments:
2326 Columbia U.<BR>Category: Standards Track A.
Rao<BR>Netscape<BR>R. Lanphier<BR>RealNetworks<BR>April 1998<BR>翻译:
radium 2005.1<BR>实时流协议(RTSP)<BR>( Real Time Streaming Protocol
(RTSP) )</P>
<P>备忘录的状态:</P>
<P>本文档讲述了一种Internet社区的Internet标准跟踪协议,它需要进一步进行讨论和建议以得到改进。请参考最新版的"Internet正式协议标准"(STD1)来获得本协议的标准化程度和状态。本备忘录的发布不受任何限制。</P>
<P>版权声明:</P>
<P>版权为The Internet Society 所有。所有权利保留。</P>
<P>摘要:</P>
<P>实时流协议(RTSP)是应用层协议,控制实时数据的传送。RTSP提供了一个可扩展框架,使实时数据,如音频与视频的受控、点播成为可能。数据源包括现场数据与存储在剪辑中数据。该协议目的在于控制多个数据发送连接,为选择发送通道,如UDP、组播UDP与TCP,提供途径,并为选择基于RTP
(RFC1889)上传送机制提供方法。</P>
<P>目录:</P>
<P>1 绪论 5<BR>1.1 目的 5<BR>1.2 要求 6<BR>1.3 术语 6<BR>1.4 协议特点 7<BR>1.5
RTSP扩展 8<BR>1.6 操作模式 9<BR>1.7 RTSP状态 9<BR>1.8 与其他协议关系 10<BR>2 符号协定
10<BR>3 协议参数 10<BR>3.1 RTSP版本 10<BR>3.2 RTSP URL 11<BR>3.3 会议标识
13<BR>3.4 会话标识 13<BR>3.5 SMPTE 相对时间戳 13<BR>3.6正常播放时间 14<BR>3.7 绝对时间
15<BR>3.8 选择标签 15<BR>3.8.1 用IANA注册新的选择标签 15<BR>4 RTSP消息 15<BR>4.1
消息类型 16<BR>4.2 消息标题 17<BR>4.3 消息主体 17<BR>4.4 消息长度 18<BR>5 普通标题域
18<BR>6 请求 19<BR>6.1 请求队列 19<BR>6.2 请求标题域 19<BR>7 回应 20<BR>7.1 状态行
20<BR>7.1.1 状态代码和原因分析 20<BR>7.1.2 回应标题域 23<BR>8 实体 23<BR>8.1 实体标题域
24<BR>8.2 实体主体 24<BR>9 连接 25<BR>9.1 流水线操作 25<BR>9.2 可靠性及确认 25<BR>10
方法定义 25<BR>10.1 选择 26<BR>10.2 描述 26<BR>10.3 通告 26<BR>10.4 建立
26<BR>10.5 播放 27<BR>10.6 暂停 27<BR>10.7 断开 27<BR>10.8 获取参数 28<BR>10.9
设置参数 28<BR>10.10 重定向 28<BR>10.11 录制 29<BR>10.12 嵌入二进制数据
29<BR>11状态代码定义(Status Code Definitions) 29<BR>11.1成功2xx(Success 2xx)
30<BR>11.1.1 存储空间低 250 30<BR>11.2 重定向(Redirection 3xx) 31<BR>11.3
客户端错误(Client Error )4xx 31<BR>11.3.1方法不允许 32<BR>11.3.2参数不能理解
32<BR>11.3.3会议未找到 33<BR>11.3.4 带宽不足 33<BR>11.3.5 会话未找到 34<BR>11.3.6
本状态下该方法无效 34<BR>11.3.7 标题域对资源无效 34<BR>11.3.8 无效范围 35<BR>11.3.9 参数只读
35<BR>11.3.10 不允许合操作 36<BR>11.3.11 只允许合操作 36<BR>11.3.12 不支持的传输
36<BR>11.3.13 目标不可达 37<BR>11.3.14 选择不支持 37<BR>12 标题域定义(Header Field
Definitions) 38<BR>12.1 接受 38<BR>12.2 接受编码 38<BR>12.3 接受语言
39<BR>12.4 允许(Allow) 39<BR>12.5 授权(Authorization) 40<BR>12.6 带宽
40<BR>12.7 块大小 40<BR>12.8 缓存控制 41<BR>12.9 会议 41<BR>12.10 连接
41<BR>12.11 基本内容 42<BR>12.12 内容编码(Content-Encoding) 42<BR>12.13 内容语言
43<BR>12.14 内容长度(Content-Length) 43<BR>12.15 内容位置 43<BR>12.16
内容类型(Content-Type) 44<BR>12.17 序列号 44<BR>12.18 日期(Date) 44<BR>12.19
过期(Expires) 45<BR>12.20 来自(From) 45<BR>12.21 主机 45<BR>12.22 如果匹配
45<BR>12.23 从何时更改(If-Modified-Since) 46<BR>12.24 最近更改(Last-Modified)
46<BR>12.25 位置(Location) 46<BR>12.26 代理授权 47<BR>12.27 代理要求
47<BR>12.28 公用性 47<BR>12.29 范围 49<BR>12.30 提交方(Referer) 49<BR>12.31
稍后再试 49<BR>12.32 要求 49<BR>12.33 RTP信息 49<BR>12.34 比例 49<BR>12.35 速度
49<BR>12.36 服务器(Server) 49<BR>12.37 会话 49<BR>12.38 时间戳 49<BR>12.39
传输 49<BR>12.40 不支持 49<BR>12.41 用户代理(User-Agent) 49<BR>12.42 变化
49<BR>12.43 通过 49<BR>12.44 WWW-授权(WWW-Authenticate) 50<BR>13 缓存
50<BR>14 实例 50<BR>14.1 要求媒体(单播) 50<BR>14.2 容器文件的流 51<BR>14.3 单个流容器文件
51<BR>14.4 组播现场媒体表示 51<BR>14.5 在存在的会话中播放媒体 51<BR>14.6 录制 52<BR>15 语法
52<BR>15.1 基本语法 52<BR>16 安全考虑(Security Considerations) 52<BR>附录A
RTSP协议状态机 53<BR>A.1 客户端状态机 53<BR>A.2 服务器端状态机 53<BR>附录B 同RTP协议的交互
53<BR>附录C 使用SDP进行RTSP会话描述 54<BR>C.1 定义 54<BR>C.1.1 控制URL 55<BR>C.1.2
媒体流 55<BR>C.1.3 有效载荷类型 55<BR>C.1.4 详细格式参数 55<BR>C.1.5 表示的范围
56<BR>C.1.6 有效时间 56<BR>C.1.7 连接信息 56<BR>C.1.8 实体标签 57<BR>C.2 合控制不可用
57<BR>C.3 合控制可用 57<BR>附录D 最简单的RTSP实现 58<BR>D.1 客户端 58<BR>D.1.1回放
58<BR>D.1.2 授权 58<BR>D.2 服务器 59<BR>D.2.1回放 59<BR>D.2.2授权 59<BR>附录E
作者地址 60<BR>附录F 致谢 60<BR>参考书目 60<BR>版权申明 61</P>
<P>1 绪论<BR>1.1
目的<BR>实时流协议(RTSP)建立并控制一个或几个时间同步的连续流媒体。尽管连续媒体流与控制流有可能交叉,但RTSP本身通常并不发送连续媒体流。换言之,RTSP充当多媒体服务器的网络远程控制。</P>
<P>表示描述(presentation description)定义了被控流,但本文并没有定义表示描述的格式。</P>
<P>这里没有使用RTSP连接的概念,而由RTSP会话(session)代替(每次服务由服务器端保持一个带标签的会话)。RTSP会话没有绑定到传输层连接(如TCP连接)。因为虽然在RTSP会话期间,RTSP客户端可打开或关闭多个对服务器端的可靠传输连接以发出RTSP
请求。但此外,也可能使用无连接传输协议,比如用UDP发送RTSP请求。</P>
<P>RTSP控制的流可能用到RTP,但RTSP操作并不依赖用于携带连续媒体的传输机制。实时流协议在语法和操作上与HTTP/1.1类似,因此HTTP的扩展机制大都可加入RTSP。尽管如此,RTSP在很多方面还是和HTTP有很大的不同:</P>
<P>² RTSP引入了很多新方法并且有不同的协议标识符。<BR>²
RTSP服务器在大多数默认情况下需要维持一个状态,但HTTP是无状态协议。<BR>² RTSP客户机和服务器都可以发出请求。<BR>²
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -