RTSP-RFC2326协议格式分析1
RTSP-RFC2326协议格式分析1
应用层协议,控制实时数据流的传输,协议目的在于控制多个数据发送链接,为发送选择通道,如UDP,组播UDP和TCP.
很多方法对于RTSP的状态无关,但是以下几种方法很重要:
SETUP,PLAY,RECORD,PAUSE,TEARDOWN.
~~~~~~~~~~~
SETUP:让服务器给流分配资源,启动RTSP会话。
PLAY&RECORD:启动SETUP分配流的数据传输。
PAUSE:暂停流,但不要释放流的资源。
TEARDOWN:释放所有资源,会话结束。
注意:为了回应SETUP请求,服务器生成会话标识ID.
所有的方法如下:
Method = "DESCRIBE" ; Section 10.2
| "ANNOUNCE" ; Section 10.3
| "GET_PARAMETER" ; Section 10.8
| "OPTIONS" ; Section 10.1
| "PAUSE" ; Section 10.6
| "PLAY" ; Section 10.5
| "RECORD" ; Section 10.11
| "REDIRECT" ; Section 10.10
| "SETUP" ; Section 10.4
| "SET_PARAMETER" ; Section 10.9
| "TEARDOWN" ; Section 10.7
| extension-method
~~~~~~~~~~~~~~~~~~
关于RTSP/RTSPU协议使用的传输层承载方式说明:
rtsp要求使用可靠协议(TCP)承载命令,而rtspu则使用不可靠协议(UDP)。
也就是说,我们常用的rtsp协议是基于TCP协议。
~~~~~~~~~~~~~~~~~~~~~~~
关于端口:如果rtsp中的URL没有特别指明端口,则默认使用554端口,这点跟HTTP不同
关于时间戳:格式为--- 时:分:秒:帧.子帧 hours:minutes:seconds:frames.subframes
~~~~~~~~
RTSP基于文本的协议,采用UTF-8编码方案,
行以CRLF中断,
~~~~~~~~~~~~~
请求体的格式如下:
Request = Request-Line ; Section 6.1
*( general-header ; Section 5
| request-header ; Section 6.2
| entity-header ) ; Section 8.1
CRLF
[ message-body ] ; Section 4.3
~~~~~~~~~~~
request-header:
request-header = Accept ; Section 12.1
| xxxxxxxxxxxxxxx ; Section 12.2
| Accept-Language ; Section 12.3
| Authorization ; Section 12.5
| From ; Section 12.20
| If-Modified-Since ; Section 12.23
| Range ; Section 12.29
| Referer ; Section 12.30
| User-Agent ; Section 12.41
~~~~~~~~~~~响应体如下:
Response = Status-Line ; Section 7.1
*( general-header ; Section 5
| response-header ; Section 7.1.2
| entity-header ) ; Section 8.1
CRLF
[ message-body ] ; Section 4.3
~~~~~~~~~
response-header = Location ; Section 12.25
| Proxy-Authenticate ; Section 12.26
| Public ; Section 12.28
| Retry-After ; Section 12.31
| Server ; Section 12.36
| Vary ; Section 12.42
| WWW-Authenticate ; Section 12.44
~~~~~~~~~~~~~
关于方法的说明:
DESCRIBE C->S P,S 建议
ANNOUNCE C->S, S->C P,S 可选
GET_PARAMETER C->S, S->C P,S 可选
OPTIONS C->S, S->C P,S 必须
(S->C: 可选)
PAUSE C->S P,S 建议
PLAY C->S P,S 必须
RECORD C->S P,S 可选
REDIRECT S->C P,S 可选
SETUP C->S S 必须
SET_PARAMETER C->S, S->C P,S 可选
TEARDOWN C->S P,S 必须