【RTSP/RTP流媒体】5、RTSP协议简单分析

5.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】:服务器支持的所有方法。

/***********************************************/

5.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信息。

/***********************************************/

5.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秒。

/***********************************************/

5.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.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响应

/************************************************/

5.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响应

/************************************************/
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值