附录A:RTSP 协议状态机
RTSP客户端和服务器状态机给出了协议从RTSP会话初始化到RTSP会话终止之间的表现。
PLAYrtsp://foo.com/movie RTSP/1.0
CSeq: 559
Session:12345678
将对/movie/audio 和/movie/video的状态有影响。
该示例没有示范标准URL形式或和文件系统的关系的意思。见3.2节。
OPTIONS, ANNOUNCE, DESCRIBE, GET_PARAMETER,SET_PARAMETER请求对客户端或服务器的状态没有影响,因此未列入状态表。
A.1 客户端状态机
客户端可以处于如下的状态:
Init(初始):
已经发出SETUP,等待回应中。
Ready(就绪):
Playing(播放):
Recording(录制):
“下一状态”栏指示接受到成功响应(2xx)后可能的状态。如果请求所得来的状态码是3xx,那么状态变成Init,而4xx状态码不会导致状态改变。没有在对应状态列出的消息,【必须不】在此状态下被客户端发出--例外是上文列出的对状态没有影响的消息。从服务器收到一个REDIRECT等同于收到3xx重定向状态。
状 态 可发消息响应后下一状态
InitSETUP Ready
TEARDOWN Init
ReadyPLAYPlaying
RECORD Recording
TEARDOWN Init
SETUP Ready
PlayingPAUSE Ready
TEARDOWN Init
PLAYPlaying
SETUP Playing(changed transport)
RecordingPAUSE Ready
TEARDOWN Init
RECORD Recording
SETUPRecording (changed transport)
A.2 服务器状态码
服务器可以处于如下状态:
Init(初始):
初始化状态,没有收到有效SETUP。
Ready(就绪):
Playing(播放):
Recording(录制):
服务器正在录制媒体数据。
总之,服务器根据收到的请求改变状态。如果服务器处于Playing或Recording和单播模式下,且如果在给定期间没有从客户端收到“健康的”信息,例如RTCP报告或RTSP命令,服务器【可能】会转到Init状态或关闭RTSP会话。服务器可以在会话响应头部(12.37节)声明另一个超时。如果服务器状态为Ready,且在一分钟或者更长时间内没有收到RTSP请求,它【可能】转为Init状态。注意某些请求是在未来的时间或位置起作用(如PAUSE),服务器在合适的时间状态的改变。在到达客户端所请求范围的末端后,服务器从Playing或Recording状态转为Ready。
REDIRECT消息一旦发出就立即生效,除非在Range头部中另外指出了重定向何时生效。此种情况中,服务器状态也是在合适的时间才改变。
如果对象不要求有显式的SETUP,则状态从Ready开始,且只有Ready和Playing两个状态。
“下一状态”栏指示接受到成功响应(2xx)后可能的状态。如果请求所得来的状态码是3xx,那么状态变成Init,而4xx状态码不会导致状态改变。
状 态可收消息 下一状态
InitSETUPReady
TEARDOWN Init
ReadyPLAYPlaying
SETUPReady
TEARDOWN Init
RECORDRecording
PlayingPLAYPlaying
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-47669-43.html
谢谢您