⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dotjox的专栏1.htm

📁 rtsp的一些说明文档,包含中文rfc格式以及其他的一些格式说明
💻 HTM
📖 第 1 页 / 共 3 页
字号:
<UL class=list>
  <LI class=listitem><A href="http://www.shanghai.ws/gnu/gcc_1.htm" 
  target=_self>GNU GCC中文手册</A>
  <LI class=listitem><A href="http://www.leftworld.net/online/index.html" 
  target=_self>左岸贵族网络</A></LI></UL></DIV>
<DIV class=sidebarItem>
<H3 class=listtitle>存档</H3>
<UL class=list>
  <LI><A href="http://blog.csdn.net/DotJox/archive/2006/07.aspx">2006年07月(4)</A>
  <LI><A href="http://blog.csdn.net/DotJox/archive/2006/06.aspx">2006年06月(7)</A>
  <LI><A 
  href="http://blog.csdn.net/DotJox/archive/2006/05.aspx">2006年05月(14)</A></LI></UL></DIV>
<H3 class=listtitle id=recentCommentCaption>最近评论</H3>
<UL class=list id=recentComment>
  <LI class=listitem>DotJox:<A title=点击查看《Eclipse的Tomcat插件安装》 
  href="http://blog.csdn.net/dotjox/archive/2006/07/07/889288.aspx">为了编译servlet,需要在classpath环境变量之后加上D:\apache-tomcat-5.5.17\common\lib\jsp-api.jar;(以本地为例)。注意:最后的;必须。刚开始我因为漏掉了它,所以在编译好一个类,在解释字节码的时候出现: 
  <BR>Exception in thread "main" java.lang.NoClassDefFound……</A>
  <LI class=listitem>DotJox:<A title=点击查看《点阵汉字显示》 
  href="http://blog.csdn.net/dotjox/archive/2006/07/20/948272.aspx">恩,当初我也是看了此文完成LCD显示字库内容的</A>
  <LI class=listitem>Veiz:<A title=点击查看《点阵汉字显示》 
  href="http://blog.csdn.net/dotjox/archive/2006/07/20/948272.aspx">不错。此文正为为我这样的日文游戏汉化初学者提供了一些帮助。</A>
  <LI class=listitem>goddie:<A title="点击查看《关于《Java2核心技术 卷二:高级特性的 (V1.3)5E》的翻译》" 
  href="http://blog.csdn.net/dotjox/archive/2006/05/29/760887.aspx">你找的中文应该是第二版的翻译,英文可能是第七版的,所以看来不同.</A>
  <LI class=listitem>goddie:<A title="点击查看《关于《Java2核心技术 卷二:高级特性的 (V1.3)5E》的翻译》" 
  href="http://blog.csdn.net/dotjox/archive/2006/05/29/760887.aspx">Of course, 
  unless you have a multiple-processor machine, the operating system is really 
  doling out CPU time to each program, giving the impression of parallel 
  activity. <BR><BR><BR>翻译为: <BR><BR……< a></LI></UL><BR><BR></DIV>
<DIV id=main>
<DIV class=Tag>
<SCRIPT language=javascript src="DotJox的专栏1.files/urltag.aspx"></SCRIPT>

<DIV style="CLEAR: both"></DIV></DIV>
<SCRIPT>function StorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));keyit.focus();}</SCRIPT>

<DIV class=post id=article>
<DIV class=postTitle><A 
href="http://blog.csdn.net/DotJox/archive/2006/05/09/714773.aspx"><IMG height=13 
src="DotJox的专栏1.files/trans.gif" width=15 border=0>&nbsp;读RFC2326RTSP 
ch10方法定义</A></DIV>
<DIV class=postText>
<P>&nbsp;&nbsp;&nbsp; 方法表征(method 
token)表示了对请求统一资源标志符(Request-URI)识别的资源所执行的操作。方法名区分大小写。将来可能定义新的方法。方法名可能不以美元符'$'(十进制数24)开头,但必须具有表征意义(must 
be a token)。</P>
<P><BR></P>
<P>&nbsp;&nbsp;&nbsp; 表格2是对方法的一个小结。 
<TABLE cellSpacing=1 cellPadding=1 width="80%" align=center summary="" 
  border=1><TBODY>
  <TR>
    <TD>method</TD>
    <TD>direction</TD>
    <TD>object</TD>
    <TD>requirement</TD></TR>
  <TR>
    <TD>DESCRIBE</TD>
    <TD>C&nbsp;-&gt; S</TD>
    <TD>P,S</TD>
    <TD>recommended</TD></TR>
  <TR>
    <TD>ANNOUNCE</TD>
    <TD>C&nbsp;-&gt; S,S -&gt;C</TD>
    <TD>P,S</TD>
    <TD>optional</TD></TR>
  <TR>
    <TD>GET PARAMETER</TD>
    <TD>C&nbsp;-&gt; S,S -&gt;C</TD>
    <TD>P,S</TD>
    <TD>optional</TD></TR>
  <TR>
    <TD>OPTIONS</TD>
    <TD>C&nbsp;-&gt; S,S -&gt;C</TD>
    <TD>P,S</TD>
    <TD>required(S ! C: optional)</TD></TR>
  <TR>
    <TD>PAUSE</TD>
    <TD>C&nbsp;-&gt; S</TD>
    <TD>P,S</TD>
    <TD>recommended</TD></TR>
  <TR>
    <TD>PLAY</TD>
    <TD>C&nbsp;-&gt; S</TD>
    <TD>P,S</TD>
    <TD>required</TD></TR>
  <TR>
    <TD>RECORD</TD>
    <TD>C&nbsp;-&gt; S</TD>
    <TD>P,S</TD>
    <TD>optional</TD></TR>
  <TR>
    <TD>REDIRECT</TD>
    <TD>S -&gt;C</TD>
    <TD>P,S</TD>
    <TD>optional</TD></TR>
  <TR>
    <TD>SETUP</TD>
    <TD>C&nbsp;-&gt; S</TD>
    <TD>S</TD>
    <TD>required</TD></TR>
  <TR>
    <TD>SET PARAMETER</TD>
    <TD>C&nbsp;-&gt; S,S -&gt;C</TD>
    <TD>P,S</TD>
    <TD>optional</TD></TR>
  <TR>
    <TD>TEARDOWN</TD>
    <TD>C&nbsp;-&gt; S</TD>
    <TD>P,S</TD>
    <TD>required</TD></TR></TBODY></TABLE><BR>&nbsp;&nbsp;&nbsp; 
表2:对RTSP方法,和其操作方向及所操作对象(P: 表示, S: 媒体流)的一个概览 <BR>&nbsp;&nbsp;&nbsp; 
注意:PAUSE方法是推荐的, 但在构建一个全功能的服务器(fully functional server)时可能不支持此方法,这时就不需要它,比如对于live 
feeds。如果服务器不支持某个特殊方法,它必将返回"501 Not 
Implemented",并且客户端应该不再向该服务器请求该方法。<BR>(注:Presentation是一个以完整的media 
feed呈现给client的一个或多个媒体流的集合,暂且翻译成表示)</P>
<P>10.1 OPTIONS<BR>&nbsp;&nbsp;&nbsp; 
其行为与[H9.2]中描述的等同。OPTIONS请求可能在任何时候发出,例如客户端将要发出一个非标准的请求时。它不影响服务器状态。</P>
<P>示例:<BR>C-&gt;S: OPTIONS * RTSP/1.0<BR>CSeq: 1<BR>Require: 
implicit-play<BR>Proxy-Require: gzipped-messages</P>
<P>S-&gt;C: RTSP/1.0 200 OK<BR>CSeq: 1<BR>Public: DESCRIBE, SETUP, TEARDOWN, 
PLAY, PAUSE</P>
<P>注意:这些都是必要的构造特征(necessarily fictional features)。 
(你可能不希望我们去有意忽略那些实际上有用的特征,因此在这一部分中我们将给出一个详细的例子)。</P>
<P>10.2 DESCRIBE<BR>&nbsp;&nbsp;&nbsp; 
DESCRIBE方法从服务器检索表示的描述或媒体对象,这些资源通过请求统一资源定位符(the request 
URL)识别。此方法可能结合使用Accept首部域来指定客户端理解的描述格式。服务器端用被请求资源的描述对客户端作出响应。DESCRIBE的答复-响应对(reply-response 
pair)组成了RTSP的媒体初始化阶段。</P>
<P>示例:<BR>C-&gt;S: DESCRIBE rtsp://server.example.com/fizzle/foo 
RTSP/1.0<BR>CSeq: 312<BR>Accept: application/sdp, application/rtsl, 
application/mheg</P>
<P>S-&gt;C: RTSP/1.0 200 OK<BR>CSeq: 312<BR>Date: 23 Jan 1997 15:35:06 
GMT<BR>Content-Type: application/sdp<BR>Content-Length: 376</P>
<P>v=0<BR>o=mhandley 2890844526 2890842807 IN IP4 126.16.64.4<BR>s=SDP 
Seminar<BR>i=A Seminar on the session description 
protocol<BR>u=http://www.cs.ucl.ac.uk/staff/M.Handley/sdp.03.ps<BR><A 
href="mailto:e=mjh@isi.edu">e=mjh@isi.edu</A> (Mark Handley)<BR>c=IN IP4 
224.2.17.12/127<BR>t=2873397496 2873404696<BR>a=recvonly<BR>m=audio 3456 RTP/AVP 
0<BR>m=video 2232 RTP/AVP 31<BR>m=whiteboard 32416 UDP 
WB<BR>a=orient:portrait</P>
<P>&nbsp;&nbsp;&nbsp; 
DESCRIBE响应必须包含它所描述资源的所有媒体初始化信息。如果媒体客户端从一个数据源获得表示描述,而非通过DESCRIBE,并且该描述包含了一个媒体初始化参数的全集,那么客户端就应该使用这些参数,而不是再通过RTSP请求相同媒体的描述。</P>
<P>&nbsp;&nbsp;&nbsp; 再有,服务器不应该(SHOULD NOT)使用DESCRIBE响应作为media 
indirection的方法。</P>
<P>&nbsp;&nbsp;&nbsp; 
需要建立基本的规则,使得客户端有明确的方法了解何时通过DESCRIBE请求媒体初始化信息,何时不请求。强制DESCRIBE响应包含它所描述媒体流集合的所有初始化信息,不鼓励将DESCRIBE用作media 
indirection的方法,通过这两点避免了使用其他方法可能会引起的循环问题(looping problems)。</P>
<P>&nbsp;&nbsp;&nbsp; 
媒体初始化是任何基于RTSP系统的必要条件,但RTSP规范并没有规定它必须通过DESCRIBE方法完成。RTSP客户端可以通过3种方法来接收媒体初始化信息:<BR></P>
<UL>
  <LI>. DESCRIBE方法; </LI></UL>
<UL>
  <LI>.其它一些协议(HTTP,email附件,等); </LI></UL>
<UL>
  <LI>.命令行或标准输入(同一个SDP或其它媒体初始化格式的文件一起启动,工作方式类似于浏览器的帮助程序)。 </LI></UL>
<P>&nbsp;&nbsp;&nbsp; 为了实际协同工作,严重(<IMG alt="" 
src="DotJox的专栏1.files/tounge_smile.gif">)推荐最精简的服务器也支持DESCRIBE方法,最精简的客户端也支持从标准输入,命令行和/或其它对于客户端操作环境合适的方法来接收媒体初始化文件的能力。</P>
<P>10.3 ANNOUNCE<BR>&nbsp;&nbsp;&nbsp; ANNOUNCE方法有两个用途:<BR>&nbsp;&nbsp;&nbsp; 
当客户端向服务器发送时,ANNOUNCE将通过请求URL识别的表示描述或者媒体对象提交给服务器;<BR>&nbsp;&nbsp;&nbsp; 
当服务器相客户端发送时,ANNOUNCE实时更新会话描述。<BR>&nbsp;&nbsp;&nbsp; 
如果有新的媒体流加到表示中(比如在一个现场表示中),整个表示描述应该重发;而不只是增加组件,如果这样做的话,组件也可以被删除了。</P>
<P>示例:<BR>C-&gt;S: ANNOUNCE rtsp://server.example.com/fizzle/foo 
RTSP/1.0<BR>CSeq: 312<BR>Date: 23 Jan 1997 15:35:06 GMT<BR>Session: 
47112344<BR>Content-Type: application/sdp<BR>Content-Length: 
332<BR>v=0<BR>o=mhandley 2890844526 2890845468 IN IP4 126.16.64.4<BR>s=SDP 
Seminar<BR>i=A Seminar on the session description 
protocol<BR>u=http://www.cs.ucl.ac.uk/staff/M.Handley/sdp.03.ps<BR><A 
href="mailto:e=mjh@isi.edu">e=mjh@isi.edu</A> (Mark Handley)<BR>c=IN IP4 
224.2.17.12/127<BR>t=2873397496 2873404696<BR>a=recvonly<BR>m=audio 3456 RTP/AVP 
0<BR>m=video 2232 RTP/AVP 31</P>
<P>S-&gt;C: RTSP/1.0 200 OK<BR>CSeq: 312</P>
<P>10.4 SETUP<BR>&nbsp;&nbsp;&nbsp; 
SETUP请求为URI指定流式媒体的传输机制。客户端能够发出一个SETUP请求为正在播放的媒体流改变传输参数,服务器可能同意这些参数的改变。若是不同意,它必须响应错误"455 
Method Not Valid In This State"。 
为了尽量绕开防火墙干涉,即使它不会影响参数,客户端也必须指出传输参数,例如,指出服务器向外发布的固定的广播地址。</P>
<P>&nbsp;&nbsp;&nbsp; 
由于SETUP包括了所有传输初始化信息,防火墙和其他中间的网络设备(它们需要这些信息)分让了解析DESCRIBE响应的繁琐任务,这些任务留给了媒体初始化。</P>
<P>&nbsp;&nbsp;&nbsp; 
Transport首部域指定了客户端数据传输时可接受的传输参数;响应包含了由服务器选出的传输参数。<BR>C-&gt;S: SETUP 
rtsp://example.com/foo/bar/baz.rm RTSP/1.0<BR>CSeq: 302<BR>Transport: 
RTP/AVP;unicast;client_port=4588-4589</P>
<P>S-&gt;C: RTSP/1.0 200 OK<BR>CSeq: 302<BR>Date: 23 Jan 1997 15:35:06 
GMT<BR>Session: 47112344<BR>Transport: 
RTP/AVP;unicast;<BR>client_port=4588-4589;server_port=6256-6257</P>
<P>&nbsp;&nbsp;&nbsp; 
作为对SETUP请求的响应,服务器产生了会话标志符。如果对服务器的请求中包含了会话标志符,服务器必须将此setup请求捆绑到一个存在的会话,或者返回"459 
Aggregate Operation Not Allowed"。</P>
<P>10.5 PLAY<BR>&nbsp;&nbsp;&nbsp; PLAY方法告知服务器通过SETUP中指定的机制开始发送数据 
。在尚未收到SETUP请求的成功应答之前,客户端不可以发出PLAY请求。PLAY请求将正常播放时间(normal play 
time)定位到指定范围的起始处,并且传输数据流直到播放范围结束。PLAY请求可能被管道化(pipelined),即放入队列中(queued);服务器必须将PLAY请求放到队列中有序执行。也就是说,后一个PLAY请求需要等待前一个PLAY请求完成才能得到执行。</P>
<P>&nbsp;&nbsp;&nbsp; 
比如,在下例中,不管到达的两个PLAY请求之间有多紧凑,服务器首先play第10到15秒,然后立即第20到25秒,最后是第30秒直到结束。<BR>C-&gt;S: 
PLAY rtsp://audio.example.com/audio RTSP/1.0<BR>CSeq: 835<BR>Session: 
12345678<BR>Range: npt=10-15</P>
<P>C-&gt;S: PLAY rtsp://audio.example.com/audio RTSP/1.0<BR>CSeq: 
836<BR>Session: 12345678<BR>Range: npt=20-25</P>
<P>C-&gt;S: PLAY rtsp://audio.example.com/audio RTSP/1.0<BR>CSeq: 
837<BR>Session: 12345678<BR>Range: npt=30-</P>
<P>&nbsp;&nbsp;&nbsp; 结合PAUSE请求的描述,看更深一层的示例。</P>
<P>&nbsp;&nbsp;&nbsp; 
不含Range首部域的PLAY请求也是合法的。它从媒体流开头开始播放,直到媒体流被暂停。如果媒体流通过PAUSE暂停,媒体流传输将在暂停点(the pause 
point)重新开始。</P>
<P>&nbsp;&nbsp;&nbsp; 如果媒体流正在播放,那么这样一个PLAY请求将不起更多的作用,只是客户端可以用此来测试服务器是否存活。</P>
<P>&nbsp;&nbsp;&nbsp; 
Range首部域可能包含一个时间参数。该参数以UTC格式指定了播放(palayback)开始的时间。如果在这个指定时间后收到消息,那么播放立即开始。时间参数可能用来帮助同步从不同数据源获取的数据流。</P>
<P>&nbsp;&nbsp;&nbsp; 对于一个点播(On-demand)媒体流,服务器用播放(play back)的实际范围答复请求。This may 
differ from the requested range if alignment of the requested range to valid 
frame boundaries is required for the media 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -