RTSP协议ppt
实体主体
rtsp消息的消息体被用来携带请求或响应的实 体信息。什么时候容许使用消息体对于请求和响 应是不同的,目前对我们实际应用仅在 DESCRIBE的响应中能带有消息体。 • 当请求带有Content-Length头域时,消息能带 有消息体,并且消息体只有在那些容许使用消息 体的方法中才能使用。 • 而响应中是否能包含一个消息体要依据请求的 方法及响应的状态码来定,所有的1xx,204,304响 应状态码都不能带有消息体。 •
SETUP
• SETUP方法让URI指定流媒体所使用的 传输机制。Transport头指定了客户端支持 的数据传输的传输参数,而SETUP的响应 包含服务器选择的传输参数。 • 服务器在对SETUP的响应里生成Sessi置URI指定流的参数值
PLAY方法告诉服务器开始按照SETUP指定的机制来传送数 据,客户端只有接收到SETUP的成功响应后才能执行PLAY 请求,PLAY请求按照range指定的开始和结束时间来定位 正常播放时间。
通用首部(General-Header)
CSeq 表示一个RTSP的请求/响应报文对的序列 号,出现在所有请求/响应报文中,一个请求报 文必须同它响应报文的CSeq一致,任何重传的 请求报文必须同原始报文的CSeq相同。命令的 序列号,逐 1 增加。
请求首部(Require-Header)
请求首部(Require-Header)允许向服务器传送请求行之外的以及客户 端自身的一些信息,类似于程序中方法所使用的传送参数。
三次握手
RTSP协议格式
• RTSP是一个基于文本的协议,它使用UTF-8编码(RFC2279)和 ISO10646字符序列,采用RFC882定义的通用格式,每个语句行由CRLF 结束。 • RTSP的消息包括请求和应答两类,格式如下: 请求报文 响应报文 Request-Line Status-Line *( general-header *( general-header | request-header | response-header | entity-header ) | entity-header ) CRLF CRLF [ entity-body ] [ entity-body ]
状态码
状态码是服务器试图理解和满足请求报文的结果代码,由三位数字组成, 其中第1位表示响应的分类,一共是5大类,剩余两位并未分类: • 1xx,Informational 接受请求,持续处理; • 2xx,Success 成功地接受理解行为; • 3xx,Redirection 为了完成请求采取进一步的措施; • 4xx,Client Error 请求存在语法错误,或不能被执行; • 5xx,Server Error 服务器不能执行正确的请求。 状态码是可扩展的,对RTSP应用软件来说没有必要理解全部注册状态 码的含义,但需要理解第1位表示的类别,这样就可以将一些不能够 识别的状态码等同于该类别的x00代码来对待。
RTP-Info 这个头被用来在PLAY响应里设置RTP特定参数。 url:指定RTP参数所对应的流的url(url格式与uri格式相同) seq:指定流的第一个包的序列号。 Rtptime:指出流的第一个包的时间戳值。 格式: RTP-Info = " RTP-Info: url=" +url参数+“;seq=”+seq参数+“;Rtptime=” +Rtptime参数+回车换行
Session
这个域用来表示一个会话的ID。是用作客户端和 服务器之间是否是正确的连接。 Session="Session":"session-id"session-id为 一个32位的正整数,在连接中每个session-id必 须保证唯一。
DESCRIBE方法
• 这是要连接的 url (服务器域名和流路径),后 面跟着 RTSP 的版本。 • 客户端通过向服务器发送请求URL,获取指定的演 示或媒体对象的描述信息 • 允许ACCEPT头指明客户端能理解的描述格式 • DESCRIBE回复-响应对构成了RTSP的媒体初始化 阶段。
TEARDOWN请求停止给定URI的流传输并释放相关资源
THE END THANK YOU!
RTSP协议
RTSP(Real Time Streaming Protocol)实时流协议
• RTSP协议是由RealNetwork和Netcape共同提出的。 • 协议定义了一对多应用程序如何有效地通过IP网 络传送多媒体数据 • RTSP协议用于控制具有实时特性的数据(例如多 媒体流)的传送。 • 为多媒体数据流提供远程控制功能,如播放、停 止、快进等。 • 一般与RTP/RTCP等底层协议一起协同工作 • 可以选择数据发送通道(如UDP、组播UDP和TCP) • RTSP在语法和操作上与http/1.1 类似 • RTSP连接没有绑定到传输层连接,如TCP
request-header = Accept | Accept-Encoding | Accept-Language | Authorization | Proxy-Require | User-Agent | Range | Scale | Session | Speed | Transport
通用首部
响应首部(Response-Header)
•
请求报文的接收者除在状态行外,在响应首部中给出了更多关于URI定位 的服务器和媒体资源进一步的信息。包括以下几个可选字段: response-header = Allow | Content-Type | Location | Public | Range | Retry-After | RTP-Info | Scale | Session | Server | Speed | Transport
UserUser-Agent: RealMedia player(HelixDNAClient)/10.0.0.0(win32) 这条表示了客户端使用的是什么播放器, 这条表示了客户端使用的是什么播放器,以及播放器的版本。
响应报文
状态行(Status-Line)
每一个请求发出后,都能收到一个响应。响应的第一个字 段就是状态行。其格式如下: Status-Line = RTSP-Version SP Status-Code SP Reason-Phrase CRLF • RTSP-Version是协议的版本号(RTSP/1.0) • Status-Code是状态码(200) • Reason-Phrase是解释状态的简单短语(OK)。
常用状态码
Code • 200 • 301 • 400 • 401 • 403 • 404 • 405 • 500 • 501 • 503 • 551 reason usage with RTSP methods OK all Redirect all Bad Request all Unauthorized all Forbidden all Not Found all Method Not Allowed all Internal Server Error all Not Implemented all Service Unavailable all Option not support all
请求报文
请求行(Request-Line)
格式
Request-Line = Method SP Request-URI SP RTSP-Version CRLF • Method是请求命令(OPTIONS方法用于得到服务器提供的可用方法, 服务器的回应信息会在Public 字段列出提供的方法) • Request-URI是媒体的表示地址(rtsp://202.118.65.133:554) • RTSP-Version是协议的版本号(RTSP/1.0)
content-type
这个头域指定了消息实体的类型。 在我们的应用里,属性参数固定为 application/sdp,格式固定为: Content-Type: application/sdp\r\n
content-length
• 这个头域包含消息体的长度。 • Content-Length = "Content-Length" ":"长 度值+回车换行,长度单位是byte。