CSeq: 302
Transport:RTP/P;unicast;client_port=4588-4589
S->C: RTSP/1.0 200 OK
CSeq: 302
Date: 23 Jan1997 15:35:06 GMT
Session:47112344
Transport:RTP/P;unicast;
client_port=4588-4589;server_port=6256-6257
服务器在响应SETUP请求时生成会话标识。如果发往服务器的SETUP请求中包含了会话标识,服务器必须把这个SETUP请求绑定到已存在的会话中,或是返回"459 不允许合控制"错误。
10.5 播放(PLAY)
PLAY方法告诉服务器通过SETUP规定的机制开始传输数据。客户端【必须不】在SETUP请求被明确确认为成功以前发送PLAY请求。
PLAY请求通过给出相对于正常播放时间的开始时间和结束时间,来给出播放范围。从开始时间开始传输流数据直到到达结束时间。PLAY请求可以用管道(队列)的形式;服务器【必须】按顺序执行收到的PLAY请求。即:在前一个PLAY请求依然活动期间收到的PLAY请求,要延迟到前一个PLAY请求执行完毕后才开始生效。
这允许了精确控制。
例如:不管下面例子中的两个PLAY请求的到达间隔多短,服务器将先从第10秒播放到第15秒,然后马上继以20到25秒,再从第30秒放到结束。
C->S: PLAYrtsp://audio.example.com/audio RTSP/1.0
CSeq:835
Session: 12345678
Range:npt=10-15
C->S: PLAYrtsp://audio.example.com/audio RTSP/1.0
CSeq:836
Session: 12345678
Range:npt=20-25
C->S: PLAY rtsp://audio.example.com/audioRTSP/1.0
CSeq:837
Session: 12345678
Range:npt=30-
更多例子请见关于PAUSE的叙述。
没有范围头部(Range header)的PLAY请求是合法的。这表示从流的开始处播放,除非流被暂停。如果流被PAUSE暂停,继续流传输时从暂停点开始。如果流正在播放,这种PLAY请求不会引起任何动作,客户端可以用它来测试服务器是否在直播。
范围头部也可能包含时间参数。这个参数给出回放开始的UTC时间。如果消息是在所指定的时间之后收到的,回放就立即从当前开始。时间参数可以被用于帮助同步从不同源得来的流。
播放完所需范围以后,表示将自动暂停,如同收到了PAUSE请求一样。
下面的例子从表示的0:10:20(SMPTE时间码)处开始播放,直到剪辑结束。回放动作从1997年1月23日15:36开始。
C->S: PLAY rtsp://audio.example.com/twister.en RTSP/1.0
CSeq:833
Session:12345678
Range:smpte=0:10:20-;time=19970123T153600Z
S->C: RTSP/1.0 200 OK
CSeq:833
Date:23 Jan 1997 15:35:06 GMT
Range:smpte=0:10:22-;time=19970123T153600Z
为回放一个现场表示的录像,使用时钟单位比较理想:
C->S: PLAY rtsp://audio.example.com/meeting.en RTSP/1.0
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-47669-20.html
我也是很支持进一步巩固领先优势的
长得好像庞麦郎啊