<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          RTSP協(xié)議

          共 6978字,需瀏覽 14分鐘

           ·

          2021-12-30 14:57

          點擊關注,與你共同成長!




          RTSP協(xié)議

          簡介

          RTSP協(xié)議即實時流協(xié)議Real TIme Streaming Protocol,RTSP)是一種網絡應用協(xié)議,用以控制流媒體服務器。流數(shù)據(jù)本身的傳輸不是RTSP的任務,大多數(shù)RTSP服務器使用實時傳輸協(xié)議(RTP)和實時傳輸控制協(xié)議(RTCP)結合媒體流傳輸

          RTSP由RealNetworks公司,NetScape公司和哥倫比亞大學開發(fā)。

          RTSP與HTTP

          雖然RTSP協(xié)議在某些方面與HTTP類似,RTSP定義了控制多媒體播放控制順序。HTTP是無狀態(tài)的,但是RTSP是具有狀態(tài)的,當需要跟蹤會話時使用標識符。RTSP和HTTP一樣使用TCP來維護端到端的鏈接,大多數(shù)RTSP控制消息由客戶端發(fā)送到服務器,一些命令從服務器到客戶端傳播。RTSP協(xié)議使用554端口,http使用80端口。

          RTSP消息

          RTSP的消息有兩大類,一是請求消息,一個是回應消息,兩種消息的格式不同。

          CR(Carriage Return)表示回車

          LF(Line Feed)表示換行

          請求的消息格式如下:

          方法 URI RTSP版本 CR LF

          消息頭 CR LF CR LF

          消息體 CR LF

          其中方法包括OPTIONS回應中所有的命令

          響應的格式消息如下:

          RTSP版本 狀態(tài)碼 解釋 CR LF

          消息頭 CR LF CR LF

          消息體 CR LF

          狀態(tài)碼

          其中RTSP版本一般都是RTSP/1.0,狀態(tài)碼200表示成功,對應的狀態(tài)碼說明如下:

          Status-Code?=?"100"?;?Continue
          |?"200"?;?OK
          |?"201"?;?Created
          |?"250"?;?Low?on?Storage?Space
          |?"300"?;?Multiple?Choices
          |?"301"?;?Moved?Permanently
          |?"302"?;?Moved?Temporarily
          |?"303"?;?See?Other
          |?"304"?;?Not?Modified
          |?"305"?;?Use?Proxy
          |?"400"?;?Bad?Request
          |?"401"?;?Unauthorized
          |?"402"?;?Payment?Required
          |?"403"?;?Forbidden
          |?"404"?;?Not?Found
          |?"405"?;?Method?Not?Allowed
          |?"406"?;?Not?Acceptable
          |?"407"?;?Proxy?Authentication?Required
          |?"408"?;?Request?Time-out
          |?"410"?;?Gone
          |?"411"?;?Length?Required
          |?"412"?;?Precondition?Failed
          |?"413"?;?Request?Entity?Too?Large
          |?"414"?;?Request-URI?Too?Large
          |?"415"?;?Unsupported?Media?Type
          |?"451"?;?Parameter?Not?Understood
          |?"452"?;?Conference?Not?Found
          |?"453"?;?Not?Enough?Bandwidth
          |?"454"?;?Session?Not?Found
          |?"455"?;?Method?Not?Valid?in?This?State
          |?"456"?;?Header?Field?Not?Valid?for?Resource
          |?"457"?;?Invalid?Range
          |?"458"?;?Parameter?Is?Read-Only
          |?"459"?;?Aggregate?operation?not?allowed
          |?"460"?;?Only?aggregate?operation?allowed
          |?"461"?;?Unsupported?transport
          |?"462"?;?Destination?unreachable
          |?"500"?;?Internal?Server?Error
          |?"501"?;?Not?Implemented
          |?"502"?;?Bad?Gateway
          |?"503"?;?Service?Unavailable
          |?"504"?;?Gateway?Time-out
          |?"505"?;?RTSP?Version?not?supported
          |?"551"?;?Option?not?supported

          RTSP中定義的方法

          rtsp中定義的方法有:OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, SCALE, GET_PARAMETER ,SET_PARAMETER

          下面是RTSP的基本請求

          (C代表客戶端,S代表服務端)

          OPTIONS請求, OPTIONS請求返回服務器將接受的請求類型

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

          DESCRIBE請求,DESCRIBE請求包括RTSPURL (rstp://)以及可以處理的回復數(shù)據(jù)類型。該回復包括呈現(xiàn)描述,通常以會話描述協(xié)議SDP格式。其中,演示文稿描述列出了使用匯總網址控制的媒體流。在典型的情況下,每個音頻和視頻都有一個媒體流

          C->S:?
          ????DESCRIBE?rtsp://example.com/media.mp4?RTSP/1.0
          ??????CSeq:?2

          S->C:?
          ????RTSP/1.0?200?OK
          ??????CSeq:?2
          ??????Content-Base:?rtsp://example.com/media.mp4
          ??????Content-Type:?application/sdp
          ??????Content-Length:?460

          ??????m=video?0?RTP/AVP?96
          ??????a=control:streamid=0
          ??????a=range:npt=0-7.741000
          ??????a=length:npt=7.741000
          ??????a=rtpmap:96?MP4V-ES/5544
          ??????a=mimetype:string;"video/MP4V-ES"
          ??????a=AvgBitRate:integer;304018
          ??????a=StreamName:string;"hinted?video?track"
          ??????m=audio?0?RTP/AVP?97
          ??????a=control:streamid=1
          ??????a=range:npt=0-7.712000
          ??????a=length:npt=7.712000
          ??????a=rtpmap:97?mpeg4-generic/32000/2
          ??????a=mimetype:string;"audio/mpeg4-generic"
          ??????a=AvgBitRate:integer;65790
          ??????a=StreamName:string;"hinted?audio?track"

          SETUP請求,SETUP請求制定如何傳輸媒體流,必須在發(fā)送PLAY請求之前完成。請求包含媒體流URL和傳輸說明符,該說明符通常包括用于接受RTP數(shù)據(jù)的本地端口,另一個用于RTCP數(shù)據(jù),服務器回復通常會確認所選參數(shù),并填寫缺少的部分。必須在發(fā)送聚合播放請求之前,使用SETUP配置每個媒體流。

          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=1234ABCD
          ??????Session:?12345678

          PLAY請求:PLAY播放請求,請求播放一個或者所有媒體流,如果媒體流暫停,則在暫停點恢復播放。

          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請求恢復播放。

          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

          RECORD記錄請求,用于記錄一系列媒體數(shù)據(jù),時間戳反映開始時間和結束時間。

          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

          ANNOUNCE發(fā)布請求,發(fā)布方法有兩個目的:從客戶端發(fā)送到服務器時,ANNOUNCE將請求URL標識的演示文稿或媒體對象的描述發(fā)布到服務器。當從服務器發(fā)送到客戶端時,ANNOUNCE會實時更新會話描述。

          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:?332

          ??????v=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

          TEARDOWN 停止發(fā)布流請求,該請求用于停止所有媒體流。并釋放服務器上所有與會話相關的數(shù)據(jù)

          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 獲取參數(shù)請求,請求檢索URI中指定的流的參數(shù)。

          S->C:?
          ??????GET_PARAMETER?rtsp://example.com/media.mp4?RTSP/1.0
          ??????CSeq:?9
          ??????Content-Type:?text/parameters
          ??????Session:?12345678
          ??????Content-Length:?15

          ??????packets_received
          ??????jitter

          C->S:?
          ??????RTSP/1.0?200?OK
          ??????CSeq:?9
          ??????Content-Length:?46
          ??????Content-Type:?text/parameters

          ??????packets_received:?10
          ??????jitter:?0.3838

          SET_PARAMETER 設置參數(shù)請求,請求設置URI指定的流的參數(shù)值

          C->S:?
          ??????SET_PARAMETER?rtsp://example.com/media.mp4?RTSP/1.0
          ??????CSeq:?10
          ??????Content-length:?20
          ??????Content-type:?text/parameters

          ??????barparam:?barstuff

          S->C:?
          ??????RTSP/1.0?451?Invalid?Parameter
          ??????CSeq:?10
          ??????Content-length:?10
          ??????Content-type:?text/parameters

          ??????barparam

          REDIRECT 重定向請求,該請求通知客戶端必須鏈接到另一個服務器位置上。

          S->C:?
          ??????REDIRECT?rtsp://example.com/media.mp4?RTSP/1.0
          ??????CSeq:?11
          ??????Location:?rtsp://bigserver.com:8001
          ??????Range:?clock=19960213T143205Z-

          RTSP的重要字段參數(shù)

          1. Accept: 用于指定客戶端可以接受的媒體描述信息類型。比如: Accept: application/rtsl, application/sdp;level=2
          2. Bandwidth: 用于描述客戶端可用的帶寬值。
          3. CSeq:指定了RTSP請求回應對的序列號,在每個請求或回應中都必須包括這個頭字段。對每個包含一個給定序列號的請求消息,都會有一個相同序列號的回應消息。
          4. Rang:用于指定一個時間范圍,可以使用SMPTE、NTP或clock時間單元。
          5. Session: Session頭字段標識了一個RTSP會話。Session ID 是由服務器在SETUP的回應中選擇的,客戶端一當?shù)玫絊ession ID后,在以后的對Session 的操作請求消息中都要包含Session ID.
          6. Transport: Transport頭字段包含客戶端可以接受的轉輸選項列表,包括傳輸協(xié)議,地址端口,TTL等。服務器端也通過這個頭字段返回實際選擇的具體選項。如: Transport: RTP/AVP;multicast;ttl=127;mode="PLAY", RTP/AVP;unicast;client_port=3456-3457;mode="PLAY"

          SDP的格式如下

          v=
          o=???type>?type>?

          s=
          i=
          u=
          e=
          p=
          c=type>?type>?
          b=:
          t=?
          r=??
          z=????....
          k=
          k=:
          a=
          a=:
          m=???

          v?=?(協(xié)議版本)
          o?=?(所有者/創(chuàng)建者和會話標識符)
          s?=?(會話名稱)
          i?=?*?(會話信息)
          u?=?*?(URI?描述)
          e?=?*?(Email?地址)
          p?=?*?(電話號碼)
          c?=?*?(連接信息)
          b?=?*?(帶寬信息)
          z?=?*?(時間區(qū)域調整)
          k?=?*?(加密密鑰)
          a?=?*?(0?個或多個媒體屬性行)

          轉自:https://zhuanlan.zhihu.com/p/405784336



          RTC 技術知識體系

          幾種直播流媒體協(xié)議


          以上,便是今天的分享,希望大家喜歡,覺得內容不錯的,歡迎「分享」「」或者點擊「在看」支持,謝謝各位。

          瀏覽 57
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  午夜免费激情视频 | 欧美a片中文字幕 | 大鸡吧视频免费在线看 | 亚州男人的天堂 | 五月天婷婷激情四射在线观看 |