📄 dotjox的专栏.htm
字号:
<TD style="TEXT-ALIGN: center"><FONT size=3>SETUP</FONT></TD>
<TD style="TEXT-ALIGN: center"><FONT size=3>就绪态</FONT></TD></TR>
<TR>
<TD style="TEXT-ALIGN: center"><FONT size=3> </FONT></TD>
<TD style="TEXT-ALIGN: center"><FONT size=3>TEARDOWN</FONT></TD>
<TD style="TEXT-ALIGN: center"><FONT size=3>初始态</FONT></TD></TR>
<TR>
<TD style="TEXT-ALIGN: center"><FONT size=3>就绪态</FONT></TD>
<TD style="TEXT-ALIGN: center"><FONT size=3>PLAY</FONT></TD>
<TD style="TEXT-ALIGN: center"><FONT size=3>播放态</FONT></TD></TR>
<TR>
<TD style="TEXT-ALIGN: center"><FONT size=3> </FONT></TD>
<TD style="TEXT-ALIGN: center"><FONT size=3>RECORD</FONT></TD>
<TD style="TEXT-ALIGN: center"><FONT size=3>记录态</FONT></TD></TR>
<TR>
<TD style="TEXT-ALIGN: center"><FONT size=3> </FONT></TD>
<TD style="TEXT-ALIGN: center"><FONT size=3>TEARDOWN</FONT></TD>
<TD style="TEXT-ALIGN: center"><FONT size=3>初始态</FONT></TD></TR>
<TR>
<TD style="TEXT-ALIGN: center"><FONT size=3> </FONT></TD>
<TD style="TEXT-ALIGN: center"><FONT size=3>SETUP</FONT></TD>
<TD style="TEXT-ALIGN: center"><FONT size=3>就绪态</FONT></TD></TR>
<TR>
<TD style="TEXT-ALIGN: center"><FONT size=3>播放态</FONT></TD>
<TD style="TEXT-ALIGN: center"><FONT size=3>PAUSE</FONT></TD>
<TD style="TEXT-ALIGN: center"><FONT size=3>就绪态</FONT></TD></TR>
<TR>
<TD style="TEXT-ALIGN: center"><FONT size=3> </FONT></TD>
<TD style="TEXT-ALIGN: center"><FONT size=3>TEARDOWN</FONT></TD>
<TD style="TEXT-ALIGN: center"><FONT size=3>初始态</FONT></TD></TR>
<TR>
<TD style="TEXT-ALIGN: center"><FONT size=3> </FONT></TD>
<TD style="TEXT-ALIGN: center"><FONT size=3>PLAY</FONT></TD>
<TD style="TEXT-ALIGN: center"><FONT size=3>播放态</FONT></TD></TR>
<TR>
<TD style="TEXT-ALIGN: center"><FONT size=3> </FONT></TD>
<TD style="TEXT-ALIGN: center"><FONT size=3>SETUP</FONT></TD>
<TD style="TEXT-ALIGN: center"><FONT size=3>播放态(改变传输)</FONT></TD></TR>
<TR>
<TD style="TEXT-ALIGN: center"><FONT size=3>记录态</FONT></TD>
<TD style="TEXT-ALIGN: center"><FONT size=3>PAUSE</FONT></TD>
<TD style="TEXT-ALIGN: center"><FONT size=3>就绪态</FONT></TD></TR>
<TR>
<TD style="TEXT-ALIGN: center"><FONT size=3> </FONT></TD>
<TD style="TEXT-ALIGN: center"><FONT size=3>TEARDOWN</FONT></TD>
<TD style="TEXT-ALIGN: center"><FONT size=3>初始态</FONT></TD></TR>
<TR>
<TD style="TEXT-ALIGN: center"><FONT size=3> </FONT></TD>
<TD style="TEXT-ALIGN: center"><FONT size=3>RECORD</FONT></TD>
<TD style="TEXT-ALIGN: center"><FONT size=3>记录态</FONT></TD></TR>
<TR>
<TD style="TEXT-ALIGN: center"><FONT size=3> </FONT></TD>
<TD style="TEXT-ALIGN: center"><FONT size=3>SETUP</FONT></TD>
<TD style="TEXT-ALIGN: center"><FONT
size=3>记录态(改变传输)</FONT></TD></TR></TBODY></TABLE><BR><BR>A.2
服务器端状态机<BR><BR> 服务器端呈现以下状态:<BR>
初始态(Init):最初的状态,未收到有效的SETUP请求<BR>
就绪态(Ready):成功接收上一个SETUP请求,回复发出,或者从播放态迁移而来,成功接收上一个PAUSE请求,向客户端发回回复<BR>
播放态(Playing):成功接收上一个PLAY请求,对其回复发出。数据正在发送<BR>
记录态(Recording):服务器正在记录媒体数据<BR><BR>
通常来说,服务器端在收到对请求后立即改变状态。在单播模式下,如果服务器在一个定义的时间间隔内(默认是1分钟)没有从客户端收到"满意的(wellness)"的信息,那么它将从播放态或记录态回复到初始态,并且关闭(tear
down)RTSP会话。服务器在会话响应头(Session response header)中声明另一个超时值(timeout
value)。<BR><BR>
如果处在就绪态的服务器在超过1分钟的时间间隔内没有收到一个RTSP请求,它将回复到初始态。注意某些请求(比如PAUSE)可能会在将来某个时间或某个位置生效,服务器状态会在恰当的时间改变(而不是在收到请求后立即改变)。到达客户端请求范围的结尾时,服务器状态从播放态或记录态回复到就绪态。<BR><BR>
除非REDIRECT消息有Range首部域指出重定向生效的时间,否则它在发出后立即生效。在有Range的情况下,服务器状态也会在恰当的时间改变。<BR><BR>
如果对象不需要显式的SETUP请求,那它将以就绪态开始,并且只有就绪和播放两个状态。<BR><BR>
"下一状态"列表示发出一个成功响应(2xx)后的状态。如果某个请求引起状态码3xx,则状态变成初始态。4xx的状态码不会引起状态改变。<BR><BR>
<TABLE style="WIDTH: 373px; HEIGHT: 363px" cellSpacing=1 cellPadding=1
summary="" border=1>
<TBODY>
<TR>
<TD style="TEXT-ALIGN: center">状态</TD>
<TD style="TEXT-ALIGN: center">收到的消息</TD>
<TD style="TEXT-ALIGN: center">下一状态</TD></TR>
<TR>
<TD style="TEXT-ALIGN: center">初始态</TD>
<TD style="TEXT-ALIGN: center">SETUP</TD>
<TD style="TEXT-ALIGN: center">就绪态</TD></TR>
<TR>
<TD style="TEXT-ALIGN: center"> </TD>
<TD style="TEXT-ALIGN: center">TEARDOWN</TD>
<TD style="TEXT-ALIGN: center">初始态</TD></TR>
<TR>
<TD style="TEXT-ALIGN: center">就绪态</TD>
<TD style="TEXT-ALIGN: center">PLAY</TD>
<TD style="TEXT-ALIGN: center">播放态</TD></TR>
<TR>
<TD style="TEXT-ALIGN: center"> </TD>
<TD style="TEXT-ALIGN: center">SETUP</TD>
<TD style="TEXT-ALIGN: center">就绪态</TD></TR>
<TR>
<TD style="TEXT-ALIGN: center"> </TD>
<TD style="TEXT-ALIGN: center">TEARDOWN</TD>
<TD style="TEXT-ALIGN: center">初始态</TD></TR>
<TR>
<TD style="TEXT-ALIGN: center"> </TD>
<TD style="TEXT-ALIGN: center">RECORD</TD>
<TD style="TEXT-ALIGN: center">记录态</TD></TR>
<TR>
<TD style="TEXT-ALIGN: center">播放态</TD>
<TD style="TEXT-ALIGN: center">PLAY</TD>
<TD style="TEXT-ALIGN: center">播放态</TD></TR>
<TR>
<TD style="TEXT-ALIGN: center"> </TD>
<TD style="TEXT-ALIGN: center">PAUSE</TD>
<TD style="TEXT-ALIGN: center">就绪态</TD></TR>
<TR>
<TD style="TEXT-ALIGN: center"> </TD>
<TD style="TEXT-ALIGN: center">TEARDOWN</TD>
<TD style="TEXT-ALIGN: center">初始态</TD></TR>
<TR>
<TD style="TEXT-ALIGN: center"> </TD>
<TD style="TEXT-ALIGN: center">SETUP</TD>
<TD style="TEXT-ALIGN: center">播放态</TD></TR>
<TR>
<TD style="TEXT-ALIGN: center">记录态</TD>
<TD style="TEXT-ALIGN: center">RECORD</TD>
<TD style="TEXT-ALIGN: center">记录态</TD></TR>
<TR>
<TD> </TD>
<TD style="TEXT-ALIGN: center">PAUSE</TD>
<TD style="TEXT-ALIGN: center">就绪态</TD></TR>
<TR>
<TD> </TD>
<TD style="TEXT-ALIGN: center"> TEARDOWN</TD>
<TD style="TEXT-ALIGN: center">初始态</TD></TR>
<TR>
<TD> </TD>
<TD style="TEXT-ALIGN: center">SETUP</TD>
<TD
style="TEXT-ALIGN: center">记录态</TD></TR></TBODY></TABLE><BR>附:RTSP状态<BR>
RTSP用以控制媒体流(stream),该媒体流可能通过一个单独的协议,与控制通道(control
channel)无关的方式被发送的。比如,RTSP控制可能出现在TCP连接,而数据却通过UDP传送。因此,媒体服务器即使没有收到RTSP请求,数据传递也会继续。同样地,在单个媒体流的生命周期里,它可能顺序地被不同TCP连接发出的RTSP请求所控制。所以服务器需要维护“会话状态(session
state)”,能够将RTSP请求和某个媒体流关联起来。状态迁移如上文所述。<BR><BR>
RTSP中许多方法对状态无影响。但是,下面几个方法在定义服务器上媒体流资源的分配和使用时,有重要作用:SETUP, PLAY, RECORD, PAUSE,
和TEARDOWN。<BR><BR>
<DIV style="MARGIN-LEFT: 40px">SETUP:使服务器为媒体流和启动一个RTSP会话分配资源。<BR></DIV>
<DIV style="MARGIN-LEFT: 40px">PLAY和RECORD:开始在媒体流(通过SETUP分配)上传送数据<BR></DIV>
<DIV style="MARGIN-LEFT: 40px">PAUSE:暂时中断某个媒体流,但没有释放服务器资源<BR></DIV>
<DIV
style="MARGIN-LEFT: 40px">TEARDOWN:释放与媒体流相关的资源。RTSP会话终止,在服务器退出。<BR></DIV><BR>
影响RTSP状态的方法使用会话首部域(Session header
field)来标识状态正在被操作的会话。服务器在响应SETUP请求时,产生会话标志符。<BR><BR>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体"><FONT
size=2><SPAN lang=EN-US><O:P></O:P></SPAN></SPAN></P><BR><BR>
<P id=TBPingURL>Trackback:
http://tb.blog.csdn.net/TrackBack.aspx?PostId=722320</P></DIV>
<DIV class=postFoot>
<SCRIPT src=""></SCRIPT>
[<A href="javascript:StorePage()">点击此处收藏本文</A>] DotJox发表于
2006年05月10日 17:31:00 </DIV></DIV><LINK
href="http://blog.csdn.net/DotJox/Services/Pingback.aspx" rel=pingback><!--
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
<rdf:Description
rdf:about="http://blog.csdn.net/DotJox/archive/2006/05/10/722320.aspx"
dc:identifier="http://blog.csdn.net/DotJox/archive/2006/05/10/722320.aspx"
dc:title="RTSP协议状态机"
trackback:ping="http://tb.blog.csdn.net/TrackBack.aspx?PostId=722320" />
</rdf:RDF>
-->
<SCRIPT>function hide(){showComment();}</SCRIPT>
<BR>
<SCRIPT type=text/javascript>document.write("<img src=http://counter.csdn.net/pv.aspx?id=24 border=0 width=0 height=0>");</SCRIPT>
没有评论。
<DIV class=CommentForm id=commentform>
<H3>发表评论</H3>
<TABLE class=CommentForm>
<TBODY>
<TR>
<TD width=69 height=0></TD>
<TD></TD></TR>
<TR>
<TD width=70>大名:</TD>
<TD align=left><INPUT id=PostComment.ascx_tbName style="WIDTH: 300px"
size=40 name=PostComment.ascx$tbName> <SPAN
id=PostComment.ascx_RequiredFieldValidator2
style="DISPLAY: none; COLOR: red"><BR>请输入尊姓大名</SPAN> </TD></TR>
<TR>
<TD width=70>网址:</TD>
<TD align=left><INPUT id=PostComment.ascx_tbUrl style="WIDTH: 300px"
size=40 name=PostComment.ascx$tbUrl> </TD></TR>
<TR>
<TD colSpan=3>评论 <SPAN id=PostComment.ascx_RequiredFieldValidator3
style="DISPLAY: none; COLOR: red"><BR>请输入评论</SPAN> <BR><TEXTAREA id=PostComment.ascx_tbComment style="WIDTH: 381px; HEIGHT: 193px" name=PostComment.ascx$tbComment rows=10 cols=50></TEXTAREA>
</TD></TR>
<TR style="DISPLAY: none">
<TD height=24>验证码</TD>
<TD><INPUT id=PostComment.ascx_ValidationKey style="WIDTH: 150px"
name=PostComment.ascx$ValidationKey> <INPUT id=VCImageSrc type=hidden
value=/VerifyCode.aspx?url=http%3a%2f%2fblog.csdn.net%2fDotJox%2farchive%2f2006%2f05%2f10%2f722320.aspx&datetime=7%2f26%2f2006+6%3a30%3a42+PM&ip=58.100.84.155>
<SPAN id=VCImageSpan></SPAN>
<SCRIPT src="DotJox的专栏.files/deferShowVerifyImage.js"
type=text/javascript></SCRIPT>
</TD></TR>
<TR>
<TD colSpan=3><INPUT class=Button id=PostComment.ascx_btnSubmit onclick='javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("PostComment.ascx$btnSubmit", "", true, "", "", false, false))' type=submit value=提交 name=PostComment.ascx$btnSubmit>
<INPUT id=PostComment.ascx_chkRemember type=checkbox
name=PostComment.ascx$chkRemember><LABEL
for=PostComment.ascx_chkRemember>记住我?</LABEL></TD></TR>
<TR>
<TD colSpan=3><SPAN id=PostComment.ascx_Message
style="COLOR: red"></SPAN></TD></TR></TBODY></TABLE></DIV></DIV>
<P id=footer>Powered by: <BR><A id=Footer1_Hyperlink2
href="http://scottwater.com/blog" name=Hyperlink1><IMG
style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px"
src="DotJox的专栏.files/100x30_Logo.gif"></A> <A id=Footer1_Hyperlink3
href="http://asp.net/" name=Hyperlink1><IMG
style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px"
src="DotJox的专栏.files/PoweredByAsp.Net.gif"></A> <BR>Copyright © DotJox </P>
<SCRIPT src="DotJox的专栏.files/counter.js"></SCRIPT>
<SCRIPT type=text/javascript>
<!--
var Page_Validators = new Array(document.getElementById("PostComment.ascx_RequiredFieldValidator2"), document.getElementById("PostComment.ascx_RequiredFieldValidator3"));
// -->
</SCRIPT>
<SCRIPT type=text/javascript>
<!--
var PostComment.ascx_RequiredFieldValidator2 = document.all ? document.all["PostComment.ascx_RequiredFieldValidator2"] : document.getElementById("PostComment.ascx_RequiredFieldValidator2");
PostComment.ascx_RequiredFieldValidator2.controltovalidate = "PostComment.ascx_tbName";
PostComment.ascx_RequiredFieldValidator2.errormessage = "<br>请输入尊姓大名";
PostComment.ascx_RequiredFieldValidator2.display = "Dynamic";
PostComment.ascx_RequiredFieldValidator2.evaluationfunction = "RequiredFieldValidatorEvaluateIsValid";
PostComment.ascx_RequiredFieldValidator2.initialvalue = "";
var PostComment.ascx_RequiredFieldValidator3 = document.all ? document.all["PostComment.ascx_RequiredFieldValidator3"] : document.getElementById("PostComment.ascx_RequiredFieldValidator3");
PostComment.ascx_RequiredFieldValidator3.controltovalidate = "PostComment.ascx_tbComment";
PostComment.ascx_RequiredFieldValidator3.errormessage = "<br>请输入评论";
PostComment.ascx_RequiredFieldValidator3.display = "Dynamic";
PostComment.ascx_RequiredFieldValidator3.evaluationfunction = "RequiredFieldValidatorEvaluateIsValid";
PostComment.ascx_RequiredFieldValidator3.initialvalue = "";
// -->
</SCRIPT>
<DIV><INPUT id=__EVENTVALIDATION type=hidden
value=/wEWBwL+raDpAgKYsei0AwKKr+LbDALQg87YCQKmqJOtCwLQ562RCALZosDQBC7jybkyrpOPCqA3xt6ksia1jdJK
name=__EVENTVALIDATION> </DIV>
<SCRIPT type=text/javascript>
<!--
var Page_ValidationActive = false;
if (typeof(ValidatorOnLoad) == "function") {
ValidatorOnLoad();
}
function ValidatorOnSubmit() {
if (Page_ValidationActive) {
return ValidatorCommonOnSubmit();
}
else {
return true;
}
}
// -->
</SCRIPT>
</FORM>
<SCRIPT language=javascript type=text/javascript>
<!--
try{
hide();
}
catch(e){
}
//-->
</SCRIPT>
</FONT></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -