欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

RTSP-RFC2326协议格式分析1

程序员文章站 2022-03-15 23:38:06
RTSP-RFC2326协议格式分析1   应用层协议,控制实时数据流的传输,协议目的在于控制多个数据发送链接,为发送选择通道,如UDP,组播UDP和TCP.  ...

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          必须