RTSP协议

来源:互联网 发布:源码下载easck 编辑:程序博客网 时间:2024/06/06 10:42

原文地址:http://www.mikewootc.com/wiki/net/protocol/rtsp.html

RTSP简介

RTSP(Real Time Streaming Protocol), 实时流传输协议, 是TCP/IP协议体系中的一个应用层协议, 由哥伦比亚大学, 网景和RealNetworks公司提交的IETF RFC标准. 该协议定义了一对多应用程序如何有效地通过IP网络传送多媒体数据. RTSP在体系结构上位于RTP和RTCP之上, 它使用TCP或RTP完成数据传输.


RTSP提供了一个可扩展框架, 使实时数据, 如音频与视频的受控点播成为可能. 数据源包括现场数据与存储在剪辑中数据. 该协议目的在于控制多个数据发送连接, 为选择发送通道, 如UDP, 组播UDP与TCP, 提供途径, 并为选择基于RTP上发送机制提供方法.

它的语法和运作跟HTTP 1.1类似, 但并不特别强调时间同步, 所以比较能容忍网络延迟.

HTTP与RTSP相比, * HTTP传送HTML. HTTP请求由客户机发出, 服务器作出响应 * RTSP传送的是多媒体数据. 使用RTSP时, 客户机和服务器都可以发出请求, 即RTSP可以是双向的.

RTSP是用来控制声音或影像的多媒体串流协议, 并允许同时多个串流需求控制, 传输时所用的网络通讯协议并不在其定义的范围内, 服务器端可以自行选择使用TCP或UDP来传送串流

协议细节

典型的rtsp交互过程

C表示rtsp客户端, S表示rtsp服务端
1. C->S:OPTION request //询问S有哪些方法可用1. S->C:OPTION response //S回应信息中包括提供的所有可用方法2. C->S:DESCRIBE request //要求得到S提供的媒体初始化描述信息2. S->C:DESCRIBE response //S回应媒体初始化描述信息, 主要是sdp3. C->S:SETUP request //设置会话的属性, 以及传输模式, 提醒S建立会话3. S->C:SETUP response //S建立会话, 返回会话标识符, 以及会话相关信息4. C->S:PLAY request //C请求播放4. S->C:PLAY response //S回应该请求的信息S->C:发送流媒体数据5. C->S:TEARDOWN request //C请求关闭会话5. S->C:TEARDOWN response //S回应该请求

上述的过程是标准的, 友好的rtsp流程, 但实际的需求中并不一定按部就班来. 其中第3和4步是必需的!

第一步, 只要服务器客户端约定好, 有哪些方法可用, 则option请求可以不要.

第二步, 如果我们有其他途径得到媒体初始化描述信息(比如http请求等等), 则我们也不需要通过rtsp中的describe请求来完成.

第五步, 可以根据系统需求的设计来决定是否需要.

RTSP消息格式

RTSP的消息有两大类: 请求消息(request)回应消息(response).

请求消息
方法 URI RTSP版本 CR LF消息头 CR LFCR LF消息体 CR LF

其中方法包括OPTION回应中所有的命令,URI是接受方的地址,例如:rtsp://192.168.20.136. RTSP版本一般都是 RTSP/1.0. 每行后面的CR LF表示回车换行, 需要接受端有相应的解析, 最后一个消息头需要有两个CR LF(即空行)

回应消息
RTSP版本 状态码 解释 CR LF消息头 CR LFCR LF消息体 CR LF

其中RTSP版本一般都是RTSP/1.0, 状态码是一个数值, 200表示成功, 解释是与状态码对应的文本解释.

rtsp中常用方法举例

本节针对上面所述的典型交互过程进行说明

OPTION

目的是得到服务器提供的可用方法:
OPTIONS rtsp://192.168.20.136:5000/xxx666 RTSP/1.0CSeq: 1 //每个消息都有序号来标记, 第一个包通常是option请求消息User-Agent: VLC media player (LIVE555 Streaming Media v2005.11.10)
服务器的回应信息包括提供的一些方法,例如:
RTSP/1.0 200 OKServer: UServer 0.9.7_rc1Cseq: 1 //每个回应消息的cseq数值和请求消息的cseq相对应Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, SCALE,GET_PARAMETER //服务器提供的可用的方法

DESCRIBE

C向S发起DESCRIBE请求,为了得到会话描述信息(SDP):
DESCRIBE rtsp://192.168.20.136:5000/xxx666 RTSP/1.0CSeq: 2token:Accept: application/sdpUser-Agent: VLC media player (LIVE555 Streaming Media v2005.11.10)
服务器回应一些对此会话的描述信息(sdp):
RTSP/1.0 200 OKServer: UServer 0.9.7_rc1Cseq: 2x-prev-url: rtsp://192.168.20.136:5000x-next-url: rtsp://192.168.20.136:5000x-Accept-Retransmit: our-retransmitx-Accept-Dynamic-Rate: 1Cache-Control: must-revalidateLast-Modified: Fri, 10 Nov 2006 12:34:38 GMTDate: Fri, 10 Nov 2006 12:34:38 GMTExpires: Fri, 10 Nov 2006 12:34:38 GMTContent-Base: rtsp://192.168.20.136:5000/xxx666/Content-Length: 344Content-Type: application/sdpv=0 //以下都是sdp信息o=OnewaveUServerNG 1451516402 1025358037 IN IP4 192.168.20.136s=/xxx666u=http:///e=admin@c=IN IP4 0.0.0.0t=0 0a=isma-compliance:1,1.0,1a=range:npt=0-m=video 0 RTP/AVP 96 //m表示媒体描述, 下面是对会话中视频通道的媒体描述a=rtpmap:96 MP4V-ES/90000a=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.0CSeq: 3Transport: RTP/AVP/TCP;unicast;interleaved=0-1User-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 OKServer: UServer 0.9.7_rc1Cseq: 3Session: 6310936469860791894 //服务器回应的会话标识符Cache-Control: no-cacheTransport: RTP/AVP/TCP;unicast;interleaved=0-1;ssrc=6B8B4567

PLAY

客户端发送播放请求:
PLAY rtsp://192.168.20.136:5000/xxx666 RTSP/1.0CSeq: 4Session: 6310936469860791894Range: npt=0.000- //设置播放时间的范围User-Agent: VLC media player (LIVE555 Streaming Media v2005.11.10)
服务器回应信息:
RTSP/1.0 200 OKServer: UServer 0.9.7_rc1Cseq: 4Session: 6310936469860791894Range: 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.0CSeq: 5Session: 6310936469860791894User-Agent: VLC media player (LIVE555 Streaming Media v2005.11.10)
服务器回应:
RTSP/1.0 200 OKServer: UServer 0.9.7_rc1Cseq: 5Session: 6310936469860791894Connection: Close

以上方法都是交互过程中最为常用的, 其它还有一些重要的方法如get/set_parameter,pause,redirect等等


0 0
原创粉丝点击