live555学习之二RTSP协议说明

RTSP协议 是一种基于C/S架构的并用于双方通信约定的流媒体协议。全称实时流协议(Real Time Streaming Protocol). 集成了网络实时控制、数据传输接收功能。客户端遵循协议发送指令控制多媒体的资源的功能如播放、暂停、停止、获取多媒体信息熟悉功能。

一:框架协议层次

RTSP协议遵循TCP/IP协议, 从协议分层模型方面来讲TCP/IP由四个层次组成:网络接口层、网络层、传输层、应用层。其和ISO 七层模型的关系如下:

TCP/IP结构对应OSI结构

TCP/IP

OSI

应用层

应用层

表示层

会话层

主机到主机层(TCP)(又称传输层)

传输层

网络层(IP)(又称互联层)

网络层

网络接口层(又称链路层)

数据链路层

物理层


详情可以参考 百科解释

https://baike.so.com/doc/2883582-3043043.html#2883582-3043043-1_1


RTSP 是一种基于文本的应用层协议,RTSP 本身的处于应用层,本身用于信令的交互。

其和TCP/IP 和ISO 七层的关系如下


二:协议通信流程

RTSP 遵循C/S的架构,客户端主动按照TCP三次模式协议规范连接服务器, 实现查询,获取多媒体信息,连接等功能。依据rfc2326的第十章的规定, RTSP 本身功能上包含如下的功能

method 			direction 	object 		requirement
DESCRIBE 		C->S 		P,S 		recommended
ANNOUNCE 		C->S, S->C 	P,S 		optional
GET_PARAMETER 		C->S, S->C 	P,S 		optional
OPTIONS 		C->S, S->C 	P,S 		required
							(S->C: optional)
PAUSE 			C->S 		P,		Srecommended
PLAY 			C->S 		P,		Srequired
RECORD 			C->S 		P,		Soptional
REDIRECT 		S->C 		P,S 		optional
SETUP 			C->S 				Srequired
SET_PARAMETER 		C->S, S->C 	P,S 		optional
TEARDOWN 		C->S 		P,S 		required




P: 呈现(Presentation),S:流(Stream)

详细描述如下

2.1RTSP的主要方法:

方法方向对象要求含义
DESCRIBEC->SP,S推荐

检查演示或媒体对象的描述,

也允许使用接收头指定用户理解的描述格式。

DESCRIBE的答复-响应组成媒体RTSP初始阶段

ANNOUNCEC->S S->CP,S可选

当从用户发往服务器时,

ANNOUNCE将请求URL识别的演示或媒体对象描述发送给服务器; 

反之,ANNOUNCE实时更新连接描述。

如新媒体流加入演示,整个演示描述再次发送,

而不仅仅是附加组件,使组件能被删除

GET_PARAMETERC->S S->CP,S可选

GET_PARAMETER

请求检查RUL指定的演示与媒体的参数值。

没有实体体时,

GET_PARAMETER也许能用来测试用户与服务器的连通情况

OPTIONSC->S S->CP,S要求

可在任意时刻发出OPTIONS请求,

如用户打算尝试非标准请求,并不影响服务器状态

PAUSEC->SP,S推荐

PAUSE请求引起流发送临时中断。

如请求URL命名一个流,仅回放和记录被停止;

如请求URL命名一个演示或流组,

演示或组中所有当前活动的流发送都停止。

恢复回放或记录后,必须维持同步。

在SETUP消息中连接头超时参数所指定时段期间被暂停后,

尽管服务器可能关闭连接并释放资源,但服务器资源会被预订

PLAYC->SP,S要求

PLAY告诉服务器以SETUP指定的机制开始发送数据;

直到一些SETUP请求被成功响应,客户端才可发布PLAY请求。

PLAY请求将正常播放时间设置在所指定范围的起始处,

发送流数据直到范围的结束处。

PLAY请求可排成队列,服务器将PLAY请求排成队列,顺序执行

RECORDC->SP,S可选

该方法根据演示描述初始化媒体数据记录范围,

时标反映开始和结束时间;

如没有给出时间范围,使用演示描述提供的开始和结束时间。

如连接已经启动,立即开始记录,

服务器数据请求URL或其他URL决定是否存储记录的数据;

如服务器没有使用URL请求,响应应为201(创建),

并包含描述请求状态和参考新资源的实体与位置头。

支持现场演示记录的媒体服务器必须支持时钟范围格式,

smpte格式没有意义

REDIRECTS->CP,S可选

重定向请求通知客户端连接到另一服务器地址

。它包含强制头地址,指示客户端发布URL请求;

也可能包括参数范围,以指明重定向何时生效。

若客户端要继续发送或接收URL媒体,

客户端必须对当前连接发送TEARDOWN请求,

而对指定主执新连接发送SETUP请求

SETUPC->SS要求

对URL的SETUP请求指定用于流媒体的传输机制。

客户端对正播放的流发布一个SETUP请求,

以改变服务器允许的传输参数。

如不允许这样做,响应错误为"455 Method Not Valid In This State”。

为了透过防火墙,客户端必须指明传输参数,

即使对这些参数没有影响

SET_PARAMETERC->S S->CP,S可选

请求设置演示或URL指定流的参数值。

请求仅应包含单个参数,

允许客户端决定某个特殊请求为何失败。

如请求包含多个参数,所有参数可成功设置,

服务器必须只对该请求起作用。

服务器必须允许参数可重复设置成同一值,但不让改变参数值。

注意:媒体流传输参数必须用SETUP命令设置。

将设置传输参数限制为SETUP有利于防火墙。

将参数划分成规则排列形式,结果有更多有意义的错误指示

TEARDOWNC->SP,S要求

TEARDOWN请求停止给定URL流发送,释放相关资源

。如URL是此演示URL,任何RTSP连接标识不再有效。

除非全部传输参数是连接描述定义的,

SETUP请求必须在连接可再次播放前发布                                        

注:P---演示,C---客户端,S---服务器, S(对象栏)---流

2.2  一次流程的过程如下

1.客户端按照协议标准 发送OPTIONS 获取服务器的功能信息。

2.服务器 回复OPTIONS 告知rtsp服务器提供的服务功能。

3.客户端 发送DESCRIBE针对一个多媒体文件的描述请求

4.服务器 回复  告知该文件的SDP 描述信息。

5.客户端 发送  SETUP 命令 要求服务端建立改文件的传输机制。

6.服务器 回复   告知OK。

7.客户端 发送  PLAY 执行播放功能

8.服务器 回复告知OK.

 

流程图如下


三:协议信息语法单位

RTSP 有着自身规定的语法结构组成。

3.1 RTSP URL的语法结构

不管我们是用VLC还是其他自己的开发的客户端去观看流媒体, 总是要遵循RTSP的 URL语法结构规范。详情参见RFC2326的第三节

3 Protocol Parameters

rtsp_URL = ( "rtsp:" | "rtspu:" )"//" host [ ":" port ] [ abs_path ]


The "rtsp" and "rtspu" schemes are used to refer to network resources via the RTSP protocol. This section defines the scheme-specific
syntax and semantics for RTSP URLs.

RTSP 或者RTSPU 表示遵循RTSP的协议规范。


host = <A legal Internet host domain name of IP address(in dotted decimal form), as defined by Section 2.1of RFC 1123 \cite{rfc1123}>

host 表示服务器的IP地址


port = *DIGIT

port 表示端口号


abs_path is defined in [H3.2.1].

abs_path 表示RTSPServer端的流媒体文件的标记描述


比如:rtsp://192.168.11.100:8554/h264ESVideoTest

表示 按照RTSP协议请求播放IP地址为192.168.11.100 端口号为8554的h264ESVideoTest文件


3.2 RTSP 报文数据语法结构

RTSP 采用模仿HTTP基于文本的形式,数据+CRLF的组合构成每一行信息。针对发送的方向,又分为如下的两种类型。

请求报文,请求报文是客户端发出,发向服务端,请求实现一些功能或者查询信息。


根据语法 RTSP的报文由三部分构成,开始行、首部行和实体主体


开始行(请求端就是请求行):

Method 空格 Request-URI 空格 RTSP-Version CRLF
其中

RTSP请求报文的方法包括:OPTIONS、DESCRIBE、SETUP、TEARDOWN、PLAY、PAUSE、GET_PARAMETER和SET_PARAMETER。

URL:表示目标的IP地址+端口号+流媒体文件的标记描述

RTSP-Version: 表示 RTSP的协议版本

例如

OPTIONS rtsp://192.168.11.100:8554/h264ESVideoTest RTSP/1.0



首部行:首部行包含的信息导致本身往往有多行

“首部字段名”   +   “:”  +  “VALU值” +  “CRLF”   组成
首部字段名 ( Require-Header)包括如下的功能

request-header =Accept | 

Accept-Encoding | 

Accept-Language | 

Authorization | 

Proxy-Require | 

User-Agent | 

Range | 

Scale | 

Session | 

Speed | 

Transport 

例子如下:

CSeq: 2
User-Agent: LibVLC/2.2.6 (LIVE555 Streaming Media v2016.02.22)


实体主体

实体往往不用

因此 请求报文整体上如下图


响应报文,相应报文是服务端发出, 发向客户端,响应客户端请求的功能。

同发送报文,相应报文也是有三部分组成


开始行(请求端就是请求行):

Method 空格 Request-URI 空格 RTSP-Version CRLF
其中

RTSP请求报文的方法包括:OPTIONS、DESCRIBE、SETUP、TEARDOWN、PLAY、PAUSE、GET_PARAMETER和SET_PARAMETER。

URL:表示目标的IP地址+端口号+流媒体文件的标记描述

RTSP-Version: 表示 RTSP的协议版本

例如

Response: RTSP/1.0 200 OK\r\n

首部行:首部行包含的信息导致本身往往有多行

“首部字段名”   +   “:”  +  “VALU值” +  “CRLF”   组成
首部字段名 ( Response-Header)包括如下的功能

Response-header 	=	Location
  			|	Proxy-Authenticate
  			|	Public
  			|	Retry-After
  			|	Server
  			|	Vary
  			|	WWW-Authenticate
例子如下:

CSeq: 2
Date: Mon, Sep 18 2017 00:02:36 GMT
Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN,PLAY, PAUSE, GET_PARAMETER, SET_PARAMETER

实体主体

实体往往不用

因此 响应报文整体上如下图


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值