option -> Announce -> Setup -> Record
option -> Describe -> Setup -> Play
1、OPTIONS
OPTIONSrtsp://10.137.10.103/test.mpg RTSP/1.0
CSeq: 1
User-Agent:LibVLC/2.1.5 (LIVE555 Streaming Media v2014.05.27)
/**********************注释***********************/
OPTIONS请求
通过该方法检测服务器所支持的方法;该方法可在任何时候发往服务器。
【OPTIONS】:方法。
【rtsp://10.137.10.103/test.mpg】:所请求媒体流的URL。
【RTSP/1.0】:RTSP版本。
【CSeq】:序列号,每发出一个单独的请求,这个序列号就加一。如果由于缺少确认而重发一个请求,该请求必须携带原来的序列号。
/***********************************************/
RTSP/1.0 200 OK
CSeq: 1
Date: Fri, May 082015 06:19:14 GMT
Public: OPTIONS,DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, GET_PARAMETER, SET_PARAMETER
/**********************注释***********************/
OPTIONS响应
【RTSP/1.0】RTSP版本。
【200 OK】:状态码和原因解释。
【CSeq】:序列号,与请求序列号对应。
【Public: OPTIONS,DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, GET_PARAMETER, SET_PARAMETER】:服务器支持的所有方法。
/***********************************************/
2、DESCRIBE
DESCRIBErtsp://10.137.10.103/test.mpg RTSP/1.0
CSeq: 2
User-Agent:LibVLC/2.1.5 (LIVE555 Streaming Media v2014.05.27)
Accept:application/sdp
/**********************注释***********************/
DESCRIBE请求
从服务器取得请求URL所标识的表示或者媒体对象的描述,它可能使用Acceptheader来指出客户端能理解的媒体描述格式,服务器以所请求的资源的描述作为回应。RTSP客户端可以通过以下方法来接收媒体描述信息:
l 通过DESCRIBE方法
l 其它一些协议(HTTP,email附件,等)
l 通过命令行或标准输入设备
【Accept: application/sdp】:指定客户端能理解的媒体描述格式。
/***********************************************/
RTSP/1.0 200 OK
CSeq: 2
Date: Fri, May 082015 06:19:14 GMT
Content-Base:rtsp://10.137.10.103/test.mpg/
Content-Type:application/sdp
Content-Length: 480
v=0
o=- 14310658681918091 IN IP4 10.137.10.103
s=MPEG-1 or 2 ProgramStream, streamed by the LIVE555 Media Server
i=test.mpg
t=0 0
a=tool:LIVE555Streaming Media v2014.03.16
a=type:broadcast
a=control:*
a=range:npt=0-1510.048
a=x-qt-text-nam:MPEG-1or 2 Program Stream, streamed by the LIVE555 Media Server
a=x-qt-text-inf:test.mpg
m=video 0 RTP/AVP 32
c=IN IP4 0.0.0.0
b=AS:500
a=control:track1
m=audio 0 RTP/AVP 14
c=IN IP4 0.0.0.0
b=AS:128
a=control:track2
/**********************注释***********************/
DESCRIBE响应
Content内容为SDP信息。
/***********************************************/
3、SETUP
SETUPrtsp://10.137.10.103/test.mpg/track1 RTSP/1.0
CSeq: 3
User-Agent:LibVLC/2.1.5 (LIVE555 Streaming Media v2014.05.27)
Transport:RTP/AVP;unicast;client_port=61948-61949
/**********************注释***********************/
SETUP请求
定义服务器与客户端间实时流的传输方式。Transport header详细列出了客户端能接受的数据传输参数 ;响应中会包含服务器选定的传输参数。 服务器在响应SETUP请求时生成会话标识;如果发往服务器的SETUP请求中包含了会话标识,服务器必须把这个SETUP请求绑定到已存在的会话中。
【Transport】:列出了客户端能接受的数据传输参数。Transport请求头部指示要用哪个传输协议,并配置如目的地址、压缩、多播时的time-to-live(生存时间)和每个流的目的端口号这类参数。传输参数是用逗号分隔的,按优先级排序。
/***********************************************/
RTSP/1.0 200 OK
CSeq: 3
Date: Fri, May 082015 06:19:14 GMT
Transport:RTP/AVP;unicast;destination=10.137.10.107;source=10.137.10.103;client_port=61948-61949;server_port=6970-6971
Session:1072919D;timeout=65
/**********************注释***********************/
SETUP响应
【Transport】: 服务器会返回一个Transport响应头部以指出服务器实际选取的参数。 Transport请求头部域可包含客户端可以接受的传输选项清单,此种情况下,服务器必须返回实际选定的某一个传输选项。通用参数:
l unicast(单播)| multicast(多播)
二选一地指定是进行单播还是多播的传输尝试。默认值是多播。单播和多播都能处理的客户端必须通过包含两个传输的完整具体参数来指出这样的能力。
l destination(目的地)
流将被发往的地址。客户端用destination参数来给出多播地址。
l source(来源)
如果流的源地址不同于可从RTSP末端点地址 (回放中的服务器或录制中的客户端)得到的,可能会给出source。该信息也可以通过SDP得到。但是,因为这更多的是一项传输特性而不是媒体初始化特性,该信息的权威性的source应该放在SETUP响应中。
l interleaved(交织)
interleaved参数意味着不管控制流使用何种协议,都把媒体流和控制流混合在一起。用 $ 语法提供表示信道号的参数。该参数可能会以一个范围的形式提供,例如:interleaved=4-5 在这里表示向媒体流提供的传输选择。 这允许用类似UDP的方式来处理RTP/RTCP,例如,一个信道给RTP,另一个给RTCP。
l port(端口号)
该参数为多播会话提供RTP/RTCP端口号对。它用范围的形式给出,例如,port=3456-3457。
l client_port(客户端端口)
该参数提供客户端选择的接收媒体数据和控制信息的单播RTP/RTCP端口号对。它用范围的形式给出,例如,client_port=3456-3457。
l server_port(服务器端口)
该参数提供服务器选择的用来接收媒体数据和 控制信息的单播RTP/RTCP端口号对。它用范围的形式给出,例如,server_port=3456-3457。
【Session】:会话标识。该请求和响应头部域标识出一个根据表示URL,由媒体服务器的SETUP响应开始,由TEARDOWN终止的会话。会话标识由媒体服务器给出。一旦客户端收到一个会话标识,它必须对每个与该会话关联的请求都返回该标识。
Session = "Session"":" session-id [ ";" "timeout" "="delta-seconds ]
超时(timeout)参数只允许出现在响应头部。服务器用它向客户端指示,服务器打算在由于缺少反馈信息而关闭会话前等RTSP命令等多久。timeout的单位是秒,默认值为60秒。
/***********************************************/
4、PLAY
PLAYrtsp://10.137.10.103/test.mpg/ RTSP/1.0
CSeq: 4
User-Agent:LibVLC/2.1.5 (LIVE555 Streaming Media v2014.05.27)
Session: 1072919D
Range: npt=0.000-
/**********************注释***********************/
PLAY请求
告诉服务器通过SETUP规定的机制开始传输数据。客户端必须在SETUP请求被明确确认为成功以后才能发送PLAY请求。
【Range】:播放范围。只支持回放的服务器必须支持npt时间格式,可能支持时钟格式、smpte格式。对于一个按需点播的流,服务器以将实际回放的范围回应。如果媒体源要求把所请求的范围转换为有效的帧范围,这将有可能和所请求的范围不同 。如果请求中没有指定范围,在回应中返回当前位置。回应中范围的单位和请求一致。播放完所需范围以后,表示将自动暂停,如同收到了PAUSE请求一样。
l npt时间格式
Range: npt=20-250
从录像20秒位置播放至250秒位置。
l 时钟格式
Range:clock=19961108T142300Z-19961108T143520Z
从录像19961108T142300Z位置播放至19961108T143520Z位置。
l smpte格式
Range:smpte=0:10:20-;time=19970123T153600Z
从录像0:10:20位置播放至结束;time=19970123T153600Z为录像开始时间。
/***********************************************/
RTSP/1.0 200 OK
CSeq: 4
Date: Fri, May 082015 06:19:14 GMT
Range: npt=0.000-
Session: 1072919D
RTP-Info:url=rtsp://10.137.10.103/test.mpg/track1;seq=19893;rtptime=3768953250,url=rtsp://10.137.10.103/test.mpg/track2;seq=23314;rtptime=3554328602
/**********************注释***********************/
PLAY响应
【RTP-Info】:用于设定PLAY响应中的RTP相关参数。
l url
指示后面的RTP参数跟哪个流UTL相关联。
l seq
指示流的第一个包的序列号。这使得客户端在搜索 时方便地处理包。客户端使用该值来区分搜索位置前生成的包和搜索位置后生成的包。
l rtptime
指示和Range响应头部的时间值对应的RTP时间戳。
【Scale】:倍速。为1的倍速值表示和正常播放速度一样的播放速度。如果不是1,该值表示相对正常播放速度的比值。例如,比值2表示比正常播放速度快两倍(快进);而比值0.5表示只有正常播放速度的一半。也就是说,比值2使正常播放时间的时钟频率增加了两倍。在时钟时间的每一秒内,放了两秒的内容。负值表示反方向。 除非Speed参数另有要求,否则数据速率应该不被改变。倍速改变的实现依赖于服务器和媒体类型。对于视频,服务器可能只传送关键帧或者所选的关键帧。对于音频,可能在保留完整音频的前提下调整时间倍速,或者作为次选,传输音频的小片段。服务器应该试着估计播放速率,但可能把倍速值限制在自己支持的范围内,响应必须包含服务器实际选择的倍速值。
【Speed】:速度。该请求头部要求服务器以特定的速度向客户端发送数据,根据服务器的能力和意愿去用给定的速度来提供媒体流。服务器端对它的实现是可选的。默认值是流本身的比特率。该参数值以十进制小数的一个比率给出,例如,2.0说明数据被以正常的两倍的速度传输。Speed值为0是不允许的。
/***********************************************/
5、PAUSE
PAUSErtsp://10.137.10.103/test.mpg/ RTSP/1.0
CSeq: 5
User-Agent:LibVLC/2.1.5 (LIVE555 Streaming Media v2014.05.27)
Session: 1072919D
/**********************注释***********************/
PAUSE请求
使得流传输被临时暂停(中断)。
/************************************************/
RTSP/1.0 200 OK
CSeq: 5
Date: Fri, May 082015 06:19:17 GMT
Session: 1072919D
/**********************注释***********************/
PAUSE响应
/************************************************/
6、TEARDOWN
TEARDOWNrtsp://10.137.10.103/test.mpg/ RTSP/1.0
CSeq: 6
User-Agent:LibVLC/2.1.5 (LIVE555 Streaming Media v2014.05.27)
Session: 1072919D
/**********************注释***********************/
TEARDOWN请求
停止所给URI的流传输,释放与它相关的资源。
/************************************************/
RTSP/1.0 200 OK
CSeq: 6
Date: Fri, May 082015 06:19:24 GMT
/**********************注释***********************/
TEARDOWN响应
/************************************************/
---------------------
7、RTSP的主要方法:
方法 | 方向 | 对象 | 要求 | 含义 |
---|---|---|---|---|
DESCRIBE | C->S | P,S | 推荐 | 检查演示或媒体对象的描述,也允许使用接收头指定用户理解的描述格式。DESCRIBE的答复-响应组成媒体RTSP初始阶段 |
ANNOUNCE | C->S S->C | P,S | 可选 | 当从用户发往服务器时,ANNOUNCE将请求URL识别的演示或媒体对象描述发送给服务器;反之,ANNOUNCE实时更新连接描述。如新媒体流加入演示,整个演示描述再次发送,而不仅仅是附加组件,使组件能被删除 |
GET_PARAMETER | C->S S->C | P,S | 可选 | GET_PARAMETER请求检查RUL指定的演示与媒体的参数值。没有实体体时,GET_PARAMETER也许能用来测试用户与服务器的连通情况 |
OPTIONS | C->S S->C | P,S | 要求 | 可在任意时刻发出OPTIONS请求,如用户打算尝试非标准请求,并不影响服务器状态 |
PAUSE | C->S | P,S | 推荐 | PAUSE请求引起流发送临时中断。如请求URL命名一个流,仅回放和记录被停止;如请求URL命名一个演示或流组,演示或组中所有当前活动的流发送都停止。恢复回放或记录后,必须维持同步。在SETUP消息中连接头超时参数所指定时段期间被暂停后,尽管服务器可能关闭连接并释放资源,但服务器资源会被预订 |
PLAY | C->S | P,S | 要求 | PLAY告诉服务器以SETUP指定的机制开始发送数据;直到一些SETUP请求被成功响应,客户端才可发布PLAY请求。PLAY请求将正常播放时间设置在所指定范围的起始处,发送流数据直到范围的结束处。PLAY请求可排成队列,服务器将PLAY请求排成队列,顺序执行 |
RECORD | C->S | P,S | 可选 | 该方法根据演示描述初始化媒体数据记录范围,时标反映开始和结束时间;如没有给出时间范围,使用演示描述提供的开始和结束时间。如连接已经启动,立即开始记录,服务器数据请求URL或其他URL决定是否存储记录的数据;如服务器没有使用URL请求,响应应为201(创建),并包含描述请求状态和参考新资源的实体与位置头。支持现场演示记录的媒体服务器必须支持时钟范围格式,smpte格式没有意义 |
REDIRECT | S->C | P,S | 可选 | 重定向请求通知客户端连接到另一服务器地址。它包含强制头地址,指示客户端发布URL请求;也可能包括参数范围,以指明重定向何时生效。若客户端要继续发送或接收URL媒体,客户端必须对当前连接发送TEARDOWN请求,而对指定主执新连接发送SETUP请求 |
SETUP | C->S | S | 要求 | 对URL的SETUP请求指定用于流媒体的传输机制。客户端对正播放的流发布一个SETUP请求,以改变服务器允许的传输参数。如不允许这样做,响应错误为”455 Method Not Valid In This State”。为了透过防火墙,客户端必须指明传输参数,即使对这些参数没有影响 |
SET_PARAMETER | C->S S->C | P,S | 可选 | 请求设置演示或URL指定流的参数值。请求仅应包含单个参数,允许客户端决定某个特殊请求为何失败。如请求包含多个参数,所有参数可成功设置,服务器必须只对该请求起作用。服务器必须允许参数可重复设置成同一值,但不让改变参数值。注意:媒体流传输参数必须用SETUP命令设置。将设置传输参数限制为SETUP有利于防火墙。将参数划分成规则排列形式,结果有更多有意义的错误指示 |
TEARDOWN | C->S | P,S | 要求 | TEARDOWN请求停止给定URL流发送,释放相关资源。如URL是此演示URL,任何RTSP连接标识不再有效。除非全部传输参数是连接描述定义的,SETUP请求必须在连接可再次播放前发布 |
==================================================
1. 实时流协议RTSP
RTSP[3]协 议以客户服务器方式工作,它是一个多媒体播放控制协议,用来使用户在播放从因特网下载的实时数据时能够进行控制,如:暂停/继 续、后退、前进等。因此 RTSP 又称为“因特网录像机遥控协议”。
1.1. RTSP协 议简介
要 实现 RTSP 的控制功能,不仅要有协议,而且要有专门的媒体播放器(media player)和 媒体服务器(media server)。媒体服务器与媒体播放器的关系是服务器与客户的关系。
媒 体服务器与普通的万维网服务器的最大区别就是媒体服务器支持流式音频和视频的传送,因而在客户端的媒体播放器可以边下载边播放(需要先缓存一小段时间的节 目)。但从普通万维网服务器下载多媒体节目时,是先将整个文件下载完毕,然后再进行播放。
图1 RTSP与RTP和RTCP的关系
RTSP 仅仅是使媒体播放器能控制多媒体流的传送。因此,RTSP 又称为带外协议,而多媒体流是使用 RTP 在带内传送的。