RTSP
RTSP
RTSP(Real Time Streaming Protocol)是由
RTSP 和HTTP 的区别和联系
联系在于,两者都用纯文本来发送消息,且
区别在于,
RTSP 和SIP 的区别和联系
SIP(Session Initiation Protocol
-
联系:
sip 和rtsp 都是应用层的控制协议,负责一次通信过程的建立和控制和结束,不负责中间的传输部分。他们都是基于纯文本的信令协议,穿墙性能良好。支持tcp 、udp,支持多方通信。他们都需要服务器支持,都支持会话中重定向。sip 和rtsp 都使用sdp 协议来传送媒体参数,使用rtp (rtcp)协议来传输媒体流。 -
区别:
rtsp 是专门为流媒体制定的协议,在多个媒体流的时间同步方面比sip 强大。rtsp 还提供网络负载均衡的功能,减轻服务器压力和网络带宽要求。sip 一般用来创建一次音频、视频通话(双向) ,而rtsp 一般用来做视频点播、视频监控等(单向) 。当然,从原理上讲,rtsp 也可以做双向的视频通话。
RTSP 和RTP (RTCP)的关系

消息
请求消息格式:
方法 URI RTSP 版本 CR LF
消息头 CR LF CR LF
消息体 CR LF
其中方法包括
回应消息格式:
RTSP 版本 状态码 解释 CR LF
消息头 CR LF CR LF
消息体 CR LF
其中
- 1XX:保留,将来使用;
- 2XX:成功,操作被接收、理解、接受(received,understand,accepted
) ; - 3XX:重定向,要完成操作必须进行进一步操作;
- 4XX:客户端出错,请求有语法错误或无法实现;
- 5XX:服务器出错,服务器无法实现合法的请求。
方法
OPTION
目的是得到服务器提供的可用方法
OPTIONS rtsp://192.168.20.136:5000/xxx666 RTSP/1.0
CSeq: 1 //每个消息都有序号来标记,第一个包通常是 option 请求消息
User-Agent: VLC media player (LIVE555 Streaming Media v2005.11.10)
# 服务器的回应信息包括提供的一些方法,例如:
RTSP/1.0 200 OK
Server: UServer 0.9.7_rc1
Cseq: 1 //每个回应消息的 cseq 数值和请求消息的 cseq 相对应
Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, SCALE, GET_PARAMETER //服务器提供的可用的方法
DESCRIBE
DESCRIBE rtsp://192.168.20.136:5000/xxx666 RTSP/1.0
CSeq: 2
token:
Accept: application/sdp
User-Agent: VLC media player (LIVE555 Streaming Media v2005.11.10)
# 服务器回应一些对此会话的描述信息(sdp):
RTSP/1.0 200 OK
Server: UServer 0.9.7_rc1
Cseq: 2
x-prev-url: rtsp://192.168.20.136:5000
x-next-url: rtsp://192.168.20.136:5000
x-Accept-Retransmit: our-retransmit
x-Accept-Dynamic-Rate: 1
Cache-Control: must-revalidate
Last-Modified: Fri, 10 Nov 2006 12:34:38 GMT
Date: Fri, 10 Nov 2006 12:34:38 GMT
Expires: Fri, 10 Nov 2006 12:34:38 GMT
Content-Base: rtsp://192.168.20.136:5000/xxx666/
Content-Length: 344
Content-Type: application/sdp
v=0 //以下都是 sdp 信息
o=OnewaveUServerNG 1451516402 1025358037 IN IP4 192.168.20.136
s=/xxx666
u=http:///
e=admin@
c=IN IP4 0.0.0.0
t=0 0
a=isma-compliance:1,1.0,1
a=range:npt=0-
m=video 0 RTP/AVP 96 //m 表示媒体描述,下面是对会话中视频通道的媒体描述
a=rtpmap:96 MP4V-ES/90000
a=fmtp:96 profile-level-id=245;config=000001B0F5000001B509000001000000012000C888B0E0E0FA62D089028307
a=control:trackID=0//trackID = 0 表示视频流用的是通道 0
SETUP
客户端提醒服务器建立会话
SETUP rtsp://192.168.20.136:5000/xxx666/trackID=0 RTSP/1.0
CSeq: 3
Transport: RTP/AVP/TCP;unicast;interleaved=0-1
User-Agent: VLC media player (LIVE555 Streaming Media v2005.11.10)
//uri 中带有 trackID = 0,表示对该通道进行设置。Transport 参数设置了传输模式,包的结构。接下来的数据包头部第二个字节位置就是 interleaved,它的值是每个通道都不同的,trackID = 0 的 interleaved 值有两个 0或1,0 表示 rtp 包,1 表示 rtcp 包,接受端根据 interleaved 的值来区别是哪种数据包。
# 服务器回应信息:
RTSP/1.0 200 OK
Server: UServer 0.9.7_rc1
Cseq: 3
Session: 6310936469860791894 //服务器回应的会话标识符
Cache-Control: no-cache
Transport: RTP/AVP/TCP;unicast;interleaved=0-1;ssrc=6B8B4567
PLAY
客户端发送播放请求
PLAY rtsp://192.168.20.136:5000/xxx666 RTSP/1.0
CSeq: 4
Session: 6310936469860791894
Range: npt=0.000- //设置播放时间的范围
User-Agent: VLC media player (LIVE555 Streaming Media v2005.11.10)
# 服务器回应信息:
RTSP/1.0 200 OK
Server: UServer 0.9.7_rc1
Cseq: 4
Session: 6310936469860791894
Range: npt=0.000000-
RTP-Info: url=trackID=0;seq=17040;rtptime=1467265309
//seq 和 rtptime 都是 rtp 包中的信息
TEARDOWN
客户端发起关闭请求
TEARDOWN rtsp://192.168.20.136:5000/xxx666 RTSP/1.0
CSeq: 5
Session: 6310936469860791894
User-Agent: VLC media player (LIVE555 Streaming Media v2005.11.10)
# 服务器回应:
RTSP/1.0 200 OK
Server: UServer 0.9.7_rc1
Cseq: 5
Session: 6310936469860791894
Connection: Close
以上方法都是交互过程中最为常用的