rtsp实时流协议
1、rtsp协议用于控制具有实时性的数据(例如多媒体流) 的传送,对媒体流提供了诸如开始、暂停、快进等控制功能。
2、它本身并不传输数据。它体系结构上在RTP/RTCP协议之上,传输协议可多选(如TCPUDP组播udptcp)
3、RTSP是一个基于文本的协议,它的语法和操作上跟HTTP1.1类似,且都是纯文本协议,但它们也有区别:
- RTSP是有状态的,它命令总是按照顺序来发送,其中某个命令可能需要总在另外一个命令之前要发送。而http则是无状态,协议在发送一个命令以后,连接就会断开,且命令之间是没有依赖性的。
- rtsp协议默认使用554端口,http使用80端口。
- RTSP的请求服务器和客户端都可以发送,而HTTP请求则只能由客户端发送
rtsp协议的工作原理
RTSP中所有的操作都是通过服务器和客户端的消息应答机制完成的,其中消息包括请求(request)和应答(response)两种。
- 请求报文
RTSP方法
常用:OPTIONS/DESCRIBE/SETUP/PLAY/PAUSE/TEARDOWN
2、响应报文
常用状态码
重要的首部字段
- CSeq: 指定了RTSP请求响应对的序列号,对每个包含一个给定序列号的请求消息,都会有一个相同序列号的回应消息,且每个请求或回应中都必须包括这个头字段
- Content-Length:该字段指明在RTSP协议最后一个标头之后的双 CRLF 之后的内容长度。例如在服务器响应DESCRIBE中,指明sdp信息长度
- Content-Type:告诉客户端实际返回的内容的类型
OPTIONS
一般用于客户端主动发出,获取服务器支持的方法。可以在任何时候发送,不影响服务器的状态。
注意Cseq,Public字段
DESCRIBE
客户端向服务器获取URL指定的媒体对象的描述信息,一般参照SDP协议格式,describe阶段构成了rtsp的媒体初始化阶段
- Accept字段指定了客户端能理解的描述格式
- Content-Length:该字段指明在RTSP协议最后一个标头之后的双 CRLF 之后的内容长度。例如在服务器响应DESCRIBE中,指明sdp信息长度
- Content-Type:告诉客户端实际返回的内容的内容类型
SETUP
客户端向服务器请求建立会话并准备传输。请求信息主要包括流媒体传输的初始化信息
Transport: Transport字段包含客户端可以接受的传输选项列表,包括传输协议,地址端口等。服务器端也通过这个头字段返回实际选择的具体选项。
Session: Session字段标识了一个RTSP会话。Session ID 是由服务器在SETUP的回应中选择的,客户端一当得到Session ID后,在以后的对Session的操作请求消息中都要包含Session ID
PLAY
客户端主动通知服务器以SETUP指定的传输机制开始发送数据。当多个PLAY请求到达时,服务器会将PLAY请求排成队列,顺序执行,即必须等待第一个PLAY的时间完成后,才会继续处理第二个PLAY消息。
- Range字段指定了播放的起止时间,可以使用SMPTE、NTP或clock时间单元。
PAUSE
客户端请求服务器的媒体流传输临时暂停,不释放资源。可以通过Range参数在指定时间点暂停,也可以指定某股流暂停,例如如果指定音频流暂停,则播放将是无音状态
TEARDOWN
TEARDOWN请求停止给定URL流发送,释放相关资源。
RECOED
RECORD通知服务器方法客户端将会根据之前的描述开始记录媒体数据。
目前使用情况
live555提供了RTSP流媒体服务器的一个开源解决方案。