自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

網(wǎng)絡(luò)流媒體協(xié)議之——RTSP協(xié)議

網(wǎng)絡(luò) 網(wǎng)絡(luò)管理
RTSP(Real-Time Stream Protocol)協(xié)議是一個基于文本的多媒體播放控制協(xié)議,屬于應(yīng)用層。RTSP以客戶端方式工作,對流媒體提供播放、暫停、后退、前進(jìn)等操作。該標(biāo)準(zhǔn)由IETF指定,對應(yīng)的協(xié)議是RFC2326。

RTSP(Real-Time Stream Protocol)協(xié)議是一個基于文本的多媒體播放控制協(xié)議,屬于應(yīng)用層。RTSP以客戶端方式工作,對流媒體提供播放、暫停、后退、前進(jìn)等操作。該標(biāo)準(zhǔn)由IETF指定,對應(yīng)的協(xié)議是RFC2326。

RTSP作為一個應(yīng)用層協(xié)議,提供了一個可供擴(kuò)展的框架,使得流媒體的受控和點播變得可能,它主要用來控制具有實時特性的數(shù)據(jù)的發(fā)送,但其本身并不用于傳送流媒體數(shù)據(jù),而必須依賴下層傳輸協(xié)議(如RTP/RTCP)所提供的服務(wù)來完成流媒體數(shù)據(jù)的傳送。RTSP負(fù)責(zé)定義具體的控制信息、操作方法、狀態(tài)碼,以及描述與RTP之間的交互操作。RTSP媒體服務(wù)協(xié)議框架如下:

客戶端要播放RTSP媒體流,就需要知道媒體源的URL,RTSP的URL格式一般如下:

  1. rtsp://host[:port]/[abs_path]/content_name 
  • host:有效的域名或IP地址;
  • port:端口號,缺省為554,若為缺省可不填寫,否則必須寫明。

例如,一個完整的RTSP URL可寫為:

  1. rtsp://192.168.1.67:554/test 

又如目前市面上常用的海康網(wǎng)絡(luò)攝像頭的RTSP地址格式為:

  1. rtsp://[username]:[password]@[ip]:[port]/[codec]/[channel]/[subtype]/av_stream 

示例:

  1. rtsp://admin:12345@192.168.1.67:554/h264/ch1/main/av_stream 
  2. rtsp://admin:12345@192.168.1.67/mpeg4/ch1/sub/av_stream 

RTSP報文

對RTSP協(xié)議的使用有了一個大概的了解之后,我們來看一下RTSP報文結(jié)構(gòu)。

RTSP是一種基于文本的協(xié)議,用CRLF(回車換行)作為每一行的結(jié)束符,其好處是,在使用過程中可以方便地增加自定義參數(shù),也方便抓包分析。從消息傳送方向上來分,RTSP的報文有兩類:請求報文和響應(yīng)報文。請求報文是指從客戶端向服務(wù)器發(fā)送的請求(也有少量從服務(wù)器向客戶端發(fā)送的請求),響應(yīng)報文是指從服務(wù)器到客戶端的回應(yīng)。

RTSP請求報文的常用方法與作用:

網(wǎng)絡(luò)流媒體協(xié)議之——RTSP協(xié)議

一次基本的RTSP交互過程如下,C表示客戶端,S表示服務(wù)端。

網(wǎng)絡(luò)流媒體協(xié)議之——RTSP協(xié)議

首先客戶端連接到流媒體服務(wù)器并發(fā)送一個RTSP描述請求(DESCRIBE request),服務(wù)器通過一個SDP(Session DescriptionProtocol)描述來進(jìn)行反饋(DESCRIBEresponse),反饋信息包括流數(shù)量、媒體類型等信息??蛻舳朔治鲈揝DP描述,并為會話中的每一個流發(fā)送一個RTSP連接建立請求(SETUPrequest),該命令會告訴服務(wù)器用于接收媒體數(shù)據(jù)的端口,服務(wù)器響應(yīng)該請求(SETUP response)并建立連接之后,就開始傳送媒體流(RTP包)到客戶端。在播放過程中客戶端還可以向服務(wù)器發(fā)送請求來控制快進(jìn)、快退和暫停等。最后,客戶端可發(fā)送一個終止請求(TEARDOWN request)來結(jié)束流媒體會話。

下面我們通過具體的消息實例來進(jìn)一步了解一下RTSP的工作過程:

(1) OPTIONS

OPTIONS請求是客戶端向服務(wù)器詢問可用的方法,請求和回復(fù)實例如下:

  1. C->S: OPTIONS rtsp://example.com/media.mp4 RTSP/1.0 
  2.  CSeq: 1 
  3.  Require: implicit-play 
  4.  Proxy-Require: gzipped-messages 
  5.   
  6. S->C: RTSP/1.0 200 OK 
  7.  CSeq: 1 
  8.  Public: DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE 

(2) DESCRIBE

客戶端向服務(wù)器請求媒體資源描述,服務(wù)器端通過SDP(Session Description Protocol)格式回應(yīng)客戶端的請求。資源描述中會列出所請求媒體的媒體流及其相關(guān)信息,典型情況下,音頻和視頻分別作為一個媒體流傳輸。實例如下:

  1. C->S: DESCRIBE rtsp://example.com/media.mp4 RTSP/1.0 
  2.  CSeq: 2 
  3.   
  4. S->C: RTSP/1.0 200 OK 
  5.  CSeq: 2 
  6.  Content-Base: rtsp://example.com/media.mp4 
  7.  Content-Type: application/sdp 
  8.  Content-Length: 460 
  9.   
  10.  m=video 0 RTP/AVP 96 
  11.  a=control:streamid=0 
  12.  a=range:npt=0-7.741000 
  13.  a=length:npt=7.741000 
  14.  a=rtpmap:96 MP4V-ES/5544 
  15.  a=mimetype:string;"video/MP4V-ES" 
  16.  a=AvgBitRate:integer;304018 
  17.  a=StreamName:string;"hinted video track" 
  18.  m=audio 0 RTP/AVP 97 
  19.  a=control:streamid=1 
  20.  a=range:npt=0-7.712000 
  21.  a=length:npt=7.712000 
  22.  a=rtpmap:97 mpeg4-generic/32000/2 
  23.  a=mimetype:string;"audio/mpeg4-generic" 
  24.  a=AvgBitRate:integer;65790 
  25.  a=StreamName:string;"hinted audio track" 

(3) SETUP

SETUP請求確定了具體的媒體流如何傳輸,該請求必須在PLAY請求之前發(fā)送。SETUP請求包含媒體流的URL和客戶端用于接收RTP數(shù)據(jù)(audio or video)的端口以及接收RTCP數(shù)據(jù)(meta information)的端口。服務(wù)器端的回復(fù)通常包含客戶端請求參數(shù)的確認(rèn),并會補(bǔ)充缺失的部分,比如服務(wù)器選擇的發(fā)送端口。每一個媒體流在發(fā)送PLAY請求之前,都要首先通過SETUP請求來進(jìn)行相應(yīng)的配置。

  1. C->S: SETUP rtsp://example.com/media.mp4/streamid=0 RTSP/1.0 
  2.  CSeq: 3 
  3.  Transport: RTP/AVP;unicast;client_port=8000-8001 
  4.   
  5. S->C: RTSP/1.0 200 OK 
  6.  CSeq: 3 
  7.  Transport: RTP/AVP;unicast;client_port=8000-8001;server_port=9000-9001;ssrc=1234ABCD 
  8.  Session: 12345678 

(4) PLAY

客戶端通過PLAY請求來播放一個或全部媒體流,PLAY請求可以發(fā)送一次或多次,發(fā)送一次時,URL為包含所有媒體流的地址,發(fā)送多次時,每一次請求攜帶的URL只包含一個相應(yīng)的媒體流。PLAY請求中可指定播放的range,若未指定,則從媒體流的開始播放到結(jié)束,如果媒體流在播放過程中被暫停,則可在暫停處重新啟動流的播放。

  1. C->S: PLAY rtsp://example.com/media.mp4 RTSP/1.0 
  2.  CSeq: 4 
  3.  Range: npt=5-20 
  4.  Session: 12345678 
  5.   
  6. S->C: RTSP/1.0 200 OK 
  7.  CSeq: 4 
  8.  Session: 12345678 
  9.  RTP-Info: url=rtsp://example.com/media.mp4/streamid=0;seq=9810092;rtptime=3450012 

(5) PAUSE

PAUSE請求會暫停一個或所有媒體流,后續(xù)可通過PLAY請求恢復(fù)播放。PAUSE請求中攜帶所請求媒體流的URL,若參數(shù)range存在,則指明在何處暫停,若該參數(shù)不存在,則暫停立即生效,且暫停時長不確定。

  1. C->S: PAUSE rtsp://example.com/media.mp4 RTSP/1.0 
  2.  CSeq: 5 
  3.  Session: 12345678 
  4.   
  5. S->C: RTSP/1.0 200 OK 
  6.  CSeq: 5 
  7.  Session: 12345678 

(6) TEARDOWN

結(jié)束會話請求,該請求會停止所有媒體流,并釋放服務(wù)器上的相關(guān)會話數(shù)據(jù)。

  1. C->S: TEARDOWN rtsp://example.com/media.mp4 RTSP/1.0 
  2.  CSeq: 8 
  3.  Session: 12345678 
  4.   
  5. S->C: RTSP/1.0 200 OK 
  6.  CSeq: 8 

(7) GET_PARAMETER

檢索指定URI數(shù)據(jù)中的參數(shù)值。不攜帶消息體的GET_PARAMETER可用來測試服務(wù)器端或客戶端是否可通(類似ping的功能)。

  1. S->C: GET_PARAMETER rtsp://example.com/media.mp4 RTSP/1.0 
  2.  CSeq: 9 
  3.  Content-Type: text/parameters 
  4.  Session: 12345678 
  5.  Content-Length: 15 
  6.   
  7.  packets_received 
  8.  jitter 
  9.   
  10. C->S: RTSP/1.0 200 OK 
  11.  CSeq: 9 
  12.  Content-Length: 46 
  13.  Content-Type: text/parameters 
  14.   
  15.  packets_received: 10 
  16.  jitter: 0.3838 

(8) SET_PARAMETER

用于設(shè)置指定媒體流的參數(shù)。

  1. C->S: SET_PARAMETER rtsp://example.com/media.mp4 RTSP/1.0 
  2.  CSeq: 10 
  3.  Content-length: 20 
  4.  Content-type: text/parameters 
  5.   
  6.  barparam: barstuff 
  7.   
  8. S->C: RTSP/1.0 451 Invalid Parameter 
  9.  CSeq: 10 
  10.  Content-length: 10 
  11.  Content-type: text/parameters 
  12.   
  13.  barparam 

(9) REDIRECT

重定向請求,用于服務(wù)器通知客戶端新的服務(wù)地址,客戶端需要向這個新地址重新發(fā)起請求。重定向請求中可能包含Range參數(shù),指明重定向生效的時間??蛻舳巳粜柘蛐路?wù)地址發(fā)起請求,必須先teardown當(dāng)前會話,再向指定的新主機(jī)setup一個新的會話。

  1. S->C: REDIRECT rtsp://example.com/media.mp4 RTSP/1.0 
  2.  CSeq: 11 
  3.  Location: rtsp://bigserver.com:8001 
  4.  Range: clock=19960213T143205 

(10) ANNOUNCE

ANNOUNCE請求有兩個用途:(1)C->S:客戶端向服務(wù)器端發(fā)布URL指定的媒體信息描述;(2) S->C:實時更新對話描述。若媒體表示中新增了一個媒體流,例如在直播過程中,則整個媒體表示的description都要被重新發(fā)送,而不是只發(fā)送新增部分。

  1. C->S: ANNOUNCE rtsp://example.com/media.mp4 RTSP/1.0 
  2.  CSeq: 7 
  3.  Date: 23 Jan 1997 15:35:06 GMT 
  4.  Session: 12345678 
  5.  Content-Type: application/sdp 
  6.  Content-Length: 332 
  7.   
  8.  v=0 
  9.  o=mhandley 2890844526 2890845468 IN IP4 126.16.64.4 
  10.  s=SDP Seminar 
  11.  i=A Seminar on the session description protocol 
  12.  u=http://www.cs.ucl.ac.uk/staff/M.Handley/sdp.03.ps 
  13.  e=mjh@isi.edu (Mark Handley) 
  14.  c=IN IP4 224.2.17.12/127 
  15.  t=2873397496 2873404696 
  16.  a=recvonly 
  17.  m=audio 3456 RTP/AVP 0 
  18.  m=video 2232 RTP/AVP 31 
  19.   
  20. S->C: RTSP/1.0 200 OK 
  21.  CSeq: 7 

(11) RECORD

請求錄制指定范圍的媒體數(shù)據(jù),請求中可指定錄制的起止時間戳;若未指定時間范圍,則使用presentation description中的開始和結(jié)束時間,這種情況下,如果會話已開始,則立即啟動錄制操作。

  1. C->S: RECORD rtsp://example.com/media.mp4 RTSP/1.0 
  2.  CSeq: 6 
  3.  Session: 12345678 
  4.   
  5. S->C: RTSP/1.0 200 OK 
  6.  CSeq: 6 
  7.  Session: 12345678 

以上就是RTSP中常用的命令及其實例介紹。最后,來看一段實際使用的RTSP命令交互過程,該過程是通過PC對??禂z像頭視頻流的拉取和播放,并通過Wireshark抓取客戶端的數(shù)據(jù)得到的:

  1. OPTIONS rtsp://10.3.8.202:554 RTSP/1.0 
  2. CSeq: 2 
  3. User-Agent: LibVLC/2.2.8 (LIVE555 Streaming Media v2016.02.22) 
  4.   
  5. RTSP/1.0 200 OK 
  6. CSeq: 2 
  7. Public: OPTIONS, DESCRIBE, PLAY, PAUSE, SETUP, TEARDOWN, SET_PARAMETER, GET_PARAMETER 
  8. Date: Mon, Jan 29 2018 16:56:47 GMT 
  9.   
  10. DESCRIBE rtsp://10.3.8.202:554 RTSP/1.0 
  11. CSeq: 3 
  12. User-Agent: LibVLC/2.2.8 (LIVE555 Streaming Media v2016.02.22) 
  13. Accept: application/sdp 
  14.   
  15. RTSP/1.0 401 Unauthorized 
  16. CSeq: 3 
  17. WWW-Authenticate: Digest realm="IP Camera(10789)"nonce="6b9a455aec675b8db81a9ceb802e4eb8"stale="FALSE" 
  18. Date: Mon, Jan 29 2018 16:56:47 GMT 
  19.   
  20. DESCRIBE rtsp://10.3.8.202:554 RTSP/1.0 
  21. CSeq: 4 
  22. Authorization: Digest username="admin"realm="IP Camera(10789)"nonce="6b9a455aec675b8db81a9ceb802e4eb8"uri="rtsp://10.3.8.202:554"response="3fc4b15d7a923fc36f32897e3cee69aa" 
  23. User-Agent: LibVLC/2.2.8 (LIVE555 Streaming Media v2016.02.22) 
  24. Accept: application/sdp 
  25.   
  26. RTSP/1.0 200 OK 
  27. CSeq: 4 
  28. Content-Type: application/sdp 
  29. Content-Base: rtsp://10.3.8.202:554/ 
  30. Content-Length: 551 
  31.   
  32. v=0 
  33. o=- 1517245007527432 1517245007527432 IN IP4 10.3.8.202 
  34. s=Media Presentation 
  35. e=NONE 
  36. b=AS:5050 
  37. t=0 0 
  38. a=control:rtsp://10.3.8.202:554/ 
  39. m=video 0 RTP/AVP 96 
  40. c=IN IP4 0.0.0.0 
  41. b=AS:5000 
  42. a=recvonly 
  43. a=x-dimensions:2048,1536 
  44. a=control:rtsp://10.3.8.202:554/trackID=1 
  45. a=rtpmap:96 H264/90000 
  46. a=fmtp:96 profile-level-id=420029packetization-mode=1sprop-parameter-sets=Z00AMp2oCAAwabgICAoAAAMAAgAAAwBlCA==,aO48gA== 
  47. a=Media_header:MEDIAINFO=494D4B48010200000400000100000000000000000000000000000000000000000000000000000000
  48. a=appversion:1.0 
  49.   
  50. SETUP rtsp://10.3.8.202:554/trackID=1 RTSP/1.0 
  51. CSeq: 5 
  52. Authorization: Digest username="admin"realm="IP Camera(10789)"nonce="6b9a455aec675b8db81a9ceb802e4eb8"uri="rtsp://10.3.8.202:554/"response="ddfbf3e268ae954979407369a104a620" 
  53. User-Agent: LibVLC/2.2.8 (LIVE555 Streaming Media v2016.02.22) 
  54. Transport: RTP/AVP;unicast;client_port=57844-57845 
  55.   
  56. RTSP/1.0 200 OK 
  57. CSeq: 5 
  58. Session: 1273222592;timeout=60 
  59. Transport: RTP/AVP;unicast;client_port=57844-57845;server_port=8218-8219;ssrc=5181c73a;mode="play" 
  60. Date: Mon, Jan 29 2018 16:56:47 GMT 
  61.   
  62. PLAY rtsp://10.3.8.202:554/ RTSP/1.0 
  63. CSeq: 6 
  64. Authorization: Digest username="admin"realm="IP Camera(10789)"nonce="6b9a455aec675b8db81a9ceb802e4eb8"uri="rtsp://10.3.8.202:554/"response="b5abf0b230de4b49d6c6d42569f88e91" 
  65. User-Agent: LibVLC/2.2.8 (LIVE555 Streaming Media v2016.02.22) 
  66. Session: 1273222592 
  67. Range: npt=0.000- 
  68.   
  69. RTSP/1.0 200 OK 
  70. CSeq: 6 
  71. Session: 1273222592 
  72. RTP-Info: url=rtsp://10.3.8.202:554/trackID=1;seq=65373;rtptime=3566398668 
  73. Date: Mon, Jan 29 2018 16:56:47 GMT 
  74.   
  75. GET_PARAMETER rtsp://10.3.8.202:554/ RTSP/1.0 
  76. CSeq: 7 
  77. Authorization: Digest username="admin"realm="IP Camera(10789)"nonce="6b9a455aec675b8db81a9ceb802e4eb8"uri="rtsp://10.3.8.202:554/"response="bb2309dcd083b25991c13e165673687b" 
  78. User-Agent: LibVLC/2.2.8 (LIVE555 Streaming Media v2016.02.22) 
  79. Session: 1273222592 
  80.   
  81. RTSP/1.0 200 OK 
  82. CSeq: 7 
  83. Date: Mon, Jan 29 2018 16:56:47 GMT 
  84.   
  85. TEARDOWN rtsp://10.3.8.202:554/ RTSP/1.0 
  86. CSeq: 8 
  87. Authorization: Digest username="admin"realm="IP Camera(10789)"nonce="6b9a455aec675b8db81a9ceb802e4eb8"uri="rtsp://10.3.8.202:554/"response="e08a15c27d3daac14fd4b4bcab424a5e" 
  88. User-Agent: LibVLC/2.2.8 (LIVE555 Streaming Media v2016.02.22) 
  89. Session: 1273222592 
  90.   
  91. RTSP/1.0 200 OK 
  92. CSeq: 8 
  93. Session: 1273222592 
  94. Date: Mon, Jan 29 2018 16:57:03 GMT 
責(zé)任編輯:趙寧寧 來源: 今日頭條
相關(guān)推薦

2022-05-26 07:54:43

TCPUDP協(xié)議

2023-12-28 08:30:42

媒體協(xié)議媒體格式Android

2022-12-01 10:40:09

IPCSRT網(wǎng)絡(luò)

2014-06-13 13:47:31

UDP

2010-07-14 18:25:14

RTSP協(xié)議

2022-07-19 16:59:04

流媒體傳輸IPC物聯(lián)網(wǎng)

2011-08-24 09:56:13

網(wǎng)絡(luò)協(xié)議BOOTP協(xié)議TFTP協(xié)議

2020-04-23 09:11:09

網(wǎng)絡(luò)協(xié)議網(wǎng)絡(luò)設(shè)備網(wǎng)絡(luò)

2010-06-12 15:54:09

TCP IP協(xié)議

2025-02-08 10:11:25

2014-06-16 09:22:59

2020-07-28 08:38:10

TCPUDP協(xié)議

2023-12-17 14:43:17

2010-09-27 14:10:29

DNS協(xié)議簡介

2010-06-17 17:51:12

資源預(yù)留協(xié)議

2011-08-24 10:31:01

網(wǎng)絡(luò)協(xié)議SLIPPPP

2019-04-29 10:26:49

TCP網(wǎng)絡(luò)協(xié)議網(wǎng)絡(luò)通信

2014-06-16 09:33:22

ICMPPingTraceroute

2010-09-02 23:52:15

VoIP網(wǎng)絡(luò)協(xié)議

2011-08-24 09:46:33

NetBIOS協(xié)議NetBEUI協(xié)議
點贊
收藏

51CTO技術(shù)棧公眾號