网络流媒体协议之——RTSP协议( 二 )


C->S: SETUP rtsp://example.com/media.mp4/streamid=0 RTSP/1.0 CSeq: 3 Transport: RTP/AVP;unicast;client_port=8000-8001 S->C: RTSP/1.0 200 OK CSeq: 3 Transport: RTP/AVP;unicast;client_port=8000-8001;server_port=9000-9001;ssrc=https://www.isolves.com/it/qt/2019-07-08/1234ABCD Session: 12345678

  • PLAY
客户端通过PLAY请求来播放一个或全部媒体流,PLAY请求可以发送一次或多次,发送一次时,URL为包含所有媒体流的地址,发送多次时,每一次请求携带的URL只包含一个相应的媒体流 。PLAY请求中可指定播放的range,若未指定,则从媒体流的开始播放到结束,如果媒体流在播放过程中被暂停,则可在暂停处重新启动流的播放 。
C->S: PLAY rtsp://example.com/media.mp4 RTSP/1.0 CSeq: 4 Range: npt=5-20 Session: 12345678 S->C: RTSP/1.0 200 OK CSeq: 4 Session: 12345678 RTP-Info: url=rtsp://example.com/media.mp4/streamid=0;seq=9810092;rtptime=3450012
  • PAUSE
PAUSE请求会暂停一个或所有媒体流,后续可通过PLAY请求恢复播放 。PAUSE请求中携带所请求媒体流的URL,若参数range存在,则指明在何处暂停,若该参数不存在,则暂停立即生效,且暂停时长不确定 。
C->S: PAUSE rtsp://example.com/media.mp4 RTSP/1.0 CSeq: 5 Session: 12345678 S->C: RTSP/1.0 200 OK CSeq: 5 Session: 12345678
  • TEARDOWN
结束会话请求,该请求会停止所有媒体流,并释放服务器上的相关会话数据 。
C->S: TEARDOWN rtsp://example.com/media.mp4 RTSP/1.0 CSeq: 8 Session: 12345678 S->C: RTSP/1.0 200 OK CSeq: 8
  • GET_PARAMETER
检索指定URI数据中的参数值 。不携带消息体的GET_PARAMETER可用来测试服务器端或客户端是否可通(类似ping的功能) 。
S->C: GET_PARAMETER rtsp://example.com/media.mp4 RTSP/1.0 CSeq: 9 Content-Type: text/parameters Session: 12345678 Content-Length: 15packets_received jitter C->S: RTSP/1.0 200 OK CSeq: 9 Content-Length: 46 Content-Type: text/parameterspackets_received: 10 jitter: 0.3838
  • SET_PARAMETER
用于设置指定媒体流的参数 。
C->S: SET_PARAMETER rtsp://example.com/media.mp4 RTSP/1.0 CSeq: 10 Content-length: 20 Content-type: text/parametersbarparam: barstuff S->C: RTSP/1.0 451 Invalid Parameter CSeq: 10 Content-length: 10 Content-type: text/parametersbarparam
  • REDIRECT
重定向请求,用于服务器通知客户端新的服务地址,客户端需要向这个新地址重新发起请求 。重定向请求中可能包含Range参数,指明重定向生效的时间 。客户端若需向新服务地址发起请求,必须先teardown当前会话,再向指定的新主机setup一个新的会话 。
S->C: REDIRECT rtsp://example.com/media.mp4 RTSP/1.0 CSeq: 11 Location: rtsp://bigserver.com:8001 Range: clock=19960213T143205
  • ANNOUNCE
ANNOUNCE请求有两个用途:(1)C->S:客户端向服务器端发布URL指定的媒体信息描述;(2) S->C:实时更新对话描述 。若媒体表示中新增了一个媒体流,例如在直播过程中,则整个媒体表示的description都要被重新发送,而不是只发送新增部分 。
C->S: ANNOUNCE rtsp://example.com/media.mp4 RTSP/1.0 CSeq: 7 Date: 23 Jan 1997 15:35:06 GMT Session: 12345678 Content-Type: application/sdp Content-Length: 332v=0 o=mhandley 2890844526 2890845468 IN IP4 126.16.64.4 s=SDP Seminar i=A Seminar on the session description protocol u=http://www.cs.ucl.ac.uk/staff/M.Handley/sdp.03.ps e=mjh@isi.edu (Mark Handley) c=IN IP4 224.2.17.12/127 t=2873397496 2873404696 a=recvonly m=audio 3456 RTP/AVP 0 m=video 2232 RTP/AVP 31 S->C: RTSP/1.0 200 OK CSeq: 7
  • RECORD
请求录制指定范围的媒体数据,请求中可指定录制的起止时间戳;若未指定时间范围,则使用presentation description中的开始和结束时间,这种情况下,如果会话已开始,则立即启动录制操作 。
C->S: RECORD rtsp://example.com/media.mp4 RTSP/1.0 CSeq: 6 Session: 12345678 S->C: RTSP/1.0 200 OK CSeq: 6 Session: 12345678以上就是RTSP中常用的命令及其实例介绍 。最后,来看一段实际使用的RTSP命令交互过程,该过程是通过PC对海康摄像头视频流的拉取和播放,并通过Wireshark抓取客户端的数据得到的:
OPTIONS rtsp://10.3.8.202:554 RTSP/1.0CSeq: 2User-Agent: LibVLC/2.2.8 (LIVE555 Streaming Media v2016.02.22) RTSP/1.0 200 OKCSeq: 2Public: OPTIONS, DESCRIBE, PLAY, PAUSE, SETUP, TEARDOWN, SET_PARAMETER, GET_PARAMETERDate: Mon, Jan 29 2018 16:56:47 GMT DESCRIBE rtsp://10.3.8.202:554 RTSP/1.0CSeq: 3User-Agent: LibVLC/2.2.8 (LIVE555 Streaming Media v2016.02.22)Accept: application/sdp RTSP/1.0 401 UnauthorizedCSeq: 3WWW-Authenticate: Digest realm="IP Camera(10789)", nonce="6b9a455aec675b8db81a9ceb802e4eb8", stale="FALSE"Date: Mon, Jan 29 2018 16:56:47 GMT DESCRIBE rtsp://10.3.8.202:554 RTSP/1.0CSeq: 4Authorization: Digest username="admin", realm="IP Camera(10789)", nonce="6b9a455aec675b8db81a9ceb802e4eb8", uri="rtsp://10.3.8.202:554", response="3fc4b15d7a923fc36f32897e3cee69aa"User-Agent: LibVLC/2.2.8 (LIVE555 Streaming Media v2016.02.22)Accept: application/sdp RTSP/1.0 200 OKCSeq: 4Content-Type: application/sdpContent-Base: rtsp://10.3.8.202:554/Content-Length: 551 v=0o=- 1517245007527432 1517245007527432 IN IP4 10.3.8.202s=Media Presentatione=NONEb=AS:5050t=0 0a=control:rtsp://10.3.8.202:554/m=video 0 RTP/AVP 96c=IN IP4 0.0.0.0b=AS:5000a=recvonlya=x-dimensions:2048,1536a=control:rtsp://10.3.8.202:554/trackID=1a=rtpmap:96 H264/90000a=fmtp:96 profile-level-id=420029; packetization-mode=1; sprop-parameter-sets=Z00AMp2oCAAwabgICAoAAAMAAgAAAwBlCA==,aO48gA==a=Media_header:MEDIAINFO=494D4B48010200000400000100000000000000000000000000000000000000000000000000000000;a=appversion:1.0 SETUP rtsp://10.3.8.202:554/trackID=1 RTSP/1.0CSeq: 5Authorization: Digest username="admin", realm="IP Camera(10789)", nonce="6b9a455aec675b8db81a9ceb802e4eb8", uri="rtsp://10.3.8.202:554/", response="ddfbf3e268ae954979407369a104a620"User-Agent: LibVLC/2.2.8 (LIVE555 Streaming Media v2016.02.22)Transport: RTP/AVP;unicast;client_port=57844-57845 RTSP/1.0 200 OKCSeq: 5Session: 1273222592;timeout=60Transport: RTP/AVP;unicast;client_port=57844-57845;server_port=8218-8219;ssrc=https://www.isolves.com/it/qt/2019-07-08/5181c73a;mode="play"Date: Mon, Jan 29 2018 16:56:47 GMT PLAY rtsp://10.3.8.202:554/ RTSP/1.0CSeq: 6Authorization: Digest username="admin", realm="IP Camera(10789)", nonce="6b9a455aec675b8db81a9ceb802e4eb8", uri="rtsp://10.3.8.202:554/", response="b5abf0b230de4b49d6c6d42569f88e91"User-Agent: LibVLC/2.2.8 (LIVE555 Streaming Media v2016.02.22)Session: 1273222592Range: npt=0.000- RTSP/1.0 200 OKCSeq: 6Session: 1273222592RTP-Info: url=rtsp://10.3.8.202:554/trackID=1;seq=65373;rtptime=3566398668Date: Mon, Jan 29 2018 16:56:47 GMT GET_PARAMETER rtsp://10.3.8.202:554/ RTSP/1.0CSeq: 7Authorization: Digest username="admin", realm="IP Camera(10789)", nonce="6b9a455aec675b8db81a9ceb802e4eb8", uri="rtsp://10.3.8.202:554/", response="bb2309dcd083b25991c13e165673687b"User-Agent: LibVLC/2.2.8 (LIVE555 Streaming Media v2016.02.22)Session: 1273222592 RTSP/1.0 200 OKCSeq: 7Date: Mon, Jan 29 2018 16:56:47 GMT TEARDOWN rtsp://10.3.8.202:554/ RTSP/1.0CSeq: 8Authorization: Digest username="admin", realm="IP Camera(10789)", nonce="6b9a455aec675b8db81a9ceb802e4eb8", uri="rtsp://10.3.8.202:554/", response="e08a15c27d3daac14fd4b4bcab424a5e"User-Agent: LibVLC/2.2.8 (LIVE555 Streaming Media v2016.02.22)Session: 1273222592 RTSP/1.0 200 OKCSeq: 8Session: 1273222592Date: Mon, Jan 29 2018 16:57:03 GMT


推荐阅读