RTSP協(xié)議學習筆記_第1頁
RTSP協(xié)議學習筆記_第2頁
RTSP協(xié)議學習筆記_第3頁
RTSP協(xié)議學習筆記_第4頁
RTSP協(xié)議學習筆記_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

RTSP協(xié)議學習筆記目錄TOC\o"1-5"\h\zRTSP協(xié)議學習筆記 1\o"CurrentDocument"第一部分:RTSP協(xié)議 3\o"CurrentDocument"一、 RTSP協(xié)議概述 3\o"CurrentDocument"二、 RTSP協(xié)議與HTTP協(xié)議區(qū)別 3\o"CurrentDocument"三、 RTSP重要術語 4\o"CurrentDocument"集合控制(Aggregatecontrol): 4\o"CurrentDocument"實體(Entity): 4\o"CurrentDocument"容器文件(Container file): 4\o"CurrentDocument"RTSP會話(RTSP session ): 4\o"CurrentDocument"四、 RTSP請求消息 4消息格式: 4\o"CurrentDocument"五、 RTSP回應消息 51. 消息格式: 5\o"CurrentDocument"六、 RTSP重要方法 5\o"CurrentDocument"OPTIONS: 6\o"CurrentDocument"DESCRIBE: 6\o"CurrentDocument"SETUP: 7\o"CurrentDocument"PLAY: 8\o"CurrentDocument"PAUSE: 9\o"CurrentDocument"TEARDOWN: 10\o"CurrentDocument"七、 RTSP重要頭字段參數(shù) 10\o"CurrentDocument"Accept: 10\o"CurrentDocument"Bandwidth: 10CSeq: 11Rang: 11\o"CurrentDocument"Session: 11\o"CurrentDocument"Transport: 11\o"CurrentDocument"八、 簡單的RTSP消息交互過程 11\o"CurrentDocument"第一步:查詢服務器端可用方法 11\o"CurrentDocument"第二步:得到媒體描述信息 12\o"CurrentDocument"第三步:建立RTSP會話 12\o"CurrentDocument"第四步:請求開始傳送數(shù)據(jù) 12\o"CurrentDocument"第五步:數(shù)據(jù)傳送播放中 12\o"CurrentDocument"第六步:關閉會話,退出 12\o"CurrentDocument"第二部分:SDP協(xié)議 13\o"CurrentDocument"一、 SDP協(xié)議概述 13\o"CurrentDocument"二、 SDP格式 13\o"CurrentDocument"三、 SDP示例 14\o"CurrentDocument"第三部分:MMS協(xié)議 15\o"CurrentDocument"一、 MMS協(xié)議概述 15第一部分:RTSP協(xié)議一、 RTSP協(xié)議概述RTSP(Real-TimeStreamProtocol)是一種基于文本的應用層協(xié)議,在語法及一些消息參數(shù)等方面,RTSP協(xié)議與HTTP協(xié)議類似。RTSP被用于建立的控制媒體流的傳輸,它為多媒體服務扮演“網(wǎng)絡遠程控制”的角色。盡管有時可以把RTSP控制信息和媒體數(shù)據(jù)流交織在一起傳送,但一般情況RTSP本身并不用于轉(zhuǎn)送媒體流數(shù)據(jù)。媒體數(shù)據(jù)的傳送可通過RTP/RTCP等協(xié)議來完成。一次基本的RTSP操作過程是:首先,客戶端連接到流服務器并發(fā)送一個RTSP描述命令(DESCRIBE)。流服務器通過一個SDP描述來進行反饋,反饋信息包括流數(shù)量、媒體類型等信息??蛻舳嗽俜治鲈揝DP描述,并為會話中的每一個流發(fā)送一個RTSP建立命令(SETUP),RTSP建立命令告訴服務器客戶端用于接收媒體數(shù)據(jù)的端口。流媒體連接建立完成后,客戶端發(fā)送一個播放命令(PLAY),服務器就開始在UDP上傳送媒體流(RTP包)到客戶端。在播放過程中客戶端還可以向服務器發(fā)送命令來控制快進、快退和暫停等。最后,客戶端可發(fā)送一個終止命令(TERADOWN)來結束流媒體會話二、 RTSP協(xié)議與HTTP協(xié)議區(qū)別RTSP引入了幾種新的方法,比如DESCRIBE、PLAY、SETUP等,并且有不同的協(xié)議標識符,RTSP為rtsp1.0,HTTP為http1.1;HTTP是無狀態(tài)的協(xié)議,而RTSP為每個會話保持狀態(tài);RTSP協(xié)議的客戶端和服務器端都可以發(fā)送Request請求,而在HTTPF協(xié)議中,只有客戶端能發(fā)送Request請求。在RTSP協(xié)議中,載荷數(shù)據(jù)一般是通過帶外方式來傳送的(除了交織的情況),及通過RTP協(xié)議在不同的通道中來傳送載荷數(shù)據(jù)。而HTTP協(xié)議的載荷數(shù)據(jù)都是通過帶內(nèi)方式傳送的,比如請求的網(wǎng)頁數(shù)據(jù)是在回應的消息體中攜帶的。使用ISO10646(UTF-8)而不是ISO8859-1,以配合當前HTML的國際化;RTSP使用URI請求時包含絕對URI。而由于歷史原因造成的向后兼容性問題,HTTP/1.1只在請求中包含絕對路徑,把主機名放入單獨的標題域中;三、 RTSP重要術語集合控制(Aggregatecontrol):對多個流的同時控制。對音頻/視頻來講,客戶端僅需發(fā)送一條播放或者暫停消息就可同時控制音頻流和視頻流。實體(Entity):作為請求或者回應的有效負荷傳輸?shù)男畔?。由以實體標題域(entity-headerfield)形式存在的元信息和以實體主體(entitybody)形式存在的內(nèi)容組成容器文件(Containerfile):可以容納多個媒體流的文件。RTSP服務器可以為這些容器文件提供集合控制。RTSP會話(RTSPsession):RTSP交互的全過程。對一個電影的觀看過程,會話(session)包括由客戶端建立媒體流傳輸機制(SETUP),使用播放(PLAY)或錄制(RECORD)開始傳送流,用停止(TEARDOWN)關閉流。四、 RTSP請求消息1.消息格式:方法URIRTSP版本 CRLF消息頭CRLFCRLF消息體CRLF其中方法包括OPIONS、DESCRIBE.SETUP、PLAY、TEARDOWN等,URI是接受方的地址,例如:rtsp:///video1.3gp。RTSP版本一般都是RTSP/1.0。每行后面的CRLF表示回車換行,需要接受端有相應的解析,最后一個消息頭需要有兩個CRLF消息體是可選的,有的Request消息并不帶消息體。五、 RTSP回應消息1.消息格式:RTSP版本狀態(tài)碼解釋 CRLF消息頭CRLFCRLF消息體CRLF其中RTSP版本一般都是RTSP/1.0,狀態(tài)碼是一個數(shù)值,用于表示Request消息的執(zhí)行結果,比如200表示成功,解釋是與狀態(tài)碼對應的文本解釋.六、 RTSP重要方法

inethcddirectionobjectrequirement.DESCRIBE己srecommendedANNOUNCE己soptionalGET_?ARAHETER己soptionalOPTIONS己srequiredoptional)PAUSE己srecommendedPLAY己srequiredRECORD匚-K孔曰optionalREDIRECToptionalSETUP匚-KreqiiiredSET?ARAMFTEPl-->S.E->Coptional■7EARDOWN匚-Kreqiiired2:Overviewof mftTLhods,,the:fdirftction, whstobiftcrs[Pi 自口二m二ion『S:Ft:T?自amitheyop^Tati^orOPTIONS:用于得到服務器提供的可用方法;如:OPTIONSrtsp://36:5000/xxx666RTSP/1.0CSeq:1服務器的回應信息會在Public字段列出提供的方法。如:RTSP/1.0200OKCSeq:1 //每個回應消息的cseq數(shù)值和請求消息的cseq相對應Public:OPTIONS,DESCRIBE,SETUP,TEARDOWN,PLAY,PAUSEDESCRIBE:客戶端向服務器端發(fā)送DESCRIBE,用于得到URI所指定的媒體描述信息,一般是SDP信息??蛻舳送ㄟ^Accept頭指定客戶端可以接受的媒體述信息類型。如:C->S:DESCRIBErtsp:///fizzle/fooRTSP/1.0CSeq:312Accept:application/sdp,application/rtsl,application/mheg)服務器回應URI指定媒體的描述信息:如:S->C:RTSP/1.0200OKCSeq:312Date:23Jan199715:35:06GMTContent-Type:application/sdp表示回應為SDP信息Content-Length:376//這里為一個空行//以下為具體的SDP信息v=0。二mhandley28908445262890842807INIP4s=SDPSeminari=ASeminaronthesessiondescriptionprotocolu=http://www.cs.ucl.ac.Uk/staff/M.Handley/sdp.03.pse=(MarkHandley)c=INIP42/127t=28733974962873404696a=recvonlym二audio3456RTP/AVP0m二video2232RTP/AVP31m二whiteboard32416UDPWBa=orient:portrait媒體初始化是任何基于RTSP系統(tǒng)的必要條件,但RTSP規(guī)范并沒有規(guī)定它必須通過DESCRIBE方法完成。RTSP客戶端可以通過以下方法來接收媒體描述信息:a) 通過DESCRIBE方法;b) 其它一些協(xié)議(HTTP,email附件,等);c) 通過命令行或標準輸入設備3.SETUP:用于確定轉(zhuǎn)輸機制,建立RTSP會話。客戶端能夠發(fā)出一個SETUP請求為正在播放的媒體流改變傳輸參數(shù),服務器可能同意這些參數(shù)的改變。若是不同意,它必須響應錯誤"455MethodNotValidInThisState”。Request中的Transport頭字段指定了客戶端可接受的數(shù)據(jù)傳輸參數(shù);Response中的Transport頭字段包含了由服務器選出的傳輸參數(shù)。如:C->S:SETUPrtsp:///foo/bar/baz.rmRTSP/1.0CSeq:302Transport:RTP/AVP;unicast;clientport=4588-4589服務器端對SETUPRequest產(chǎn)生一個SessionIdentifiers。如:S->C:RTSP/1.0200OKCSeq:302Date:23Jan199715:35:06GMTSession:47112344/產(chǎn)生一個SessionIDTransport:RTP/AVP;unicast;clientport=4588-4589;serverport=6256-62574.PLAY:PLAY方法告知服務器通過SETUP中指定的機制開始發(fā)送數(shù)據(jù)。在尚未收到SETUP請求的成功應答之前,客戶端不可以發(fā)出PLAY請求。PLAY請求將正常播放時間(normalplaytime)定位到指定范圍的起始處,并且傳輸數(shù)據(jù)流直到播放范圍結束。PLAY請求可能被管道化(pipelined),即放入隊列中(queued);服務器必須將PLAY請求放到隊列中有序執(zhí)行。也就是說,后一個PLAY請求需要等待前一個PLAY請求完成才能得到執(zhí)行。比如,在下例中,不管到達的兩個PLAY請求之間有多緊湊,服務器首先play第10到15秒,然后立即第20到25秒,最后是第30秒直到結束。C->S:PLAYrtsp:///audioRTSP/1.0CSeq:835Session:12345678Range:npt=10-15C->S:PLAYrtsp:///audioRTSP/1.0CSeq:836Session:12345678Range:npt=20-25C->S:PLAYrtsp:///audioRTSP/1.0CSeq:837Session:12345678Range:npt=30-Range頭可能包含一個時間參數(shù)。該參數(shù)以UTC格式指定了播放開始的時間。如果在這個指定時間后收到消息,那么播放立即開始。時間參數(shù)可能用來幫助同步從不同數(shù)據(jù)源獲取的數(shù)據(jù)流。不含Range頭的PLAY請求也是合法的。它從媒體流開頭開始播放,直到媒體流被暫停。如果媒體流通過PAUSE暫停,媒體流傳輸將在暫停點(thepausepoint)重新開始。如果媒體流正在播放,那么這樣一個PLAY請求將不起更多的作用,只是客戶端可以用此來測試服務器是否存活。5.PAUSE:PAUSE請求引起媒體流傳輸?shù)臅簳r中斷。如果請求URL中指定了具體的媒體流,那么只有該媒體流的播放和記錄被暫停(halt)。比如,指定暫停音頻,播放將會無聲。如果請求URL指定了一組流,那么在該組中的所有流的傳輸將被暫停。如:C->S:PAUSErtsp:///fizzle/fooRTSP/1.0CSeq:834Session:12345678S->C:RTSP/1.0200OKCSeq:834Date:23Jan199715:35:06GMTPAUSE請求中可能包含一個Range頭用來指定何時媒體流暫停,我們稱這個時刻為暫停點(pausepoint)。該頭必須包含一個精確的值,而不是一個時間范圍。媒體流的正常播放時間設置成暫停點。當服務器遇到在任何當前掛起(pending)的PLAY請求中指定的時間點后,暫停請求生效。如果Range頭指定了一個時間超出了任何一個當前掛起的PLAY請求,將返回錯誤"457InvalidRange"。如果一個媒體單元(比如一個音頻或視頻植)正好在一個暫停點開始,那么表示將不會被播放或記錄。如果Range頭缺失,那么在收到暫停消息后媒體流傳輸立即中斷,并且暫停點設置成當前正常播放時間。&TEARDOWN:TEARDOWN請求終止了給定URI的媒體流傳輸,并釋放了與該媒體流相關的資源。如:C->S:TEARDOWNrtsp:///fizzle/fooRTSP/1.0CSeq:892Session:12345678S->C:RTSP/1.0200OKCSeq:892七、RTSP重要頭字段參數(shù)Accept:用于指定客戶端可以接受的媒體描述信息類型。比如:Accept:application/rtsl,application/sdp;level=2Bandwidth:用于描述客戶端可用的帶寬值。

CSeq:指定了RTSP請求回應對的序列號,在每個請求或回應中都必須包括這個頭字段。對每個包含一個給定序列號的請求消息,都會有一個相同序列號的回應消息。Rang:用于指定一個時間范圍,可以使用SMPTE、NTP或clock時間單元。Session:Session頭字段標識了一個RTSP會話。SessionID是由服務器在SETUP的回應中選擇的,客戶端一當?shù)玫絊essionID后,在以后的對Session的操作請求消息中都要包含SessionID.Transport:Transport頭字段包含客戶端可以接受的轉(zhuǎn)輸選項列表,包括傳輸協(xié)議,地址端口,TTL等。服務器端也通過這個頭字段返回實際選擇的具體選項。如:Transport:RTP/AVP;multicast;ttl=127;mode="PLAY”,RTP/AVP;unicast;clientport=3456-3457;mode="PLAY”八、 簡單的RTSP消息交互過程C表示RTSP客戶端,S表示RTSP服務端第一步:查詢服務器端可用方法C->S:OPTIONrequest //詢問S有哪些方法可用1.S->C:OPTIONresponse所有可用方法//S回應信息的public頭字段中包括提供的第二步:得到媒體描述信息〃要求得到S提供的媒體描述信息C->S:DESCRIBErequest〃要求得到S提供的媒體描述信息>C:DESCRIBEresponse //S回應媒體描述信息,一般是sdp信息第三步:建立RTSP會話C->S:SETUPrequest //通過Transport頭字段列出可接受的傳輸選項,請求S建立會話>C:SETUPresponse //S建立會話,通過Transport頭字段返回選擇的具體轉(zhuǎn)輸選項,并返回建立的SessionID;第四步:請求開始傳送數(shù)據(jù)C->S:PLAYrequest //C請求S開始發(fā)送數(shù)據(jù)>C:PLAYresponse //S回應該請求的信息第五步: 數(shù)據(jù)傳送播放中S->C:發(fā)送流媒體數(shù)據(jù) //通過RTP協(xié)議傳送數(shù)據(jù)第六步:關閉會話,退出6.C->S:TEARDOWNrequest //C請求關閉會話>C:TEARDOWNresponse//S回應該請求上述的過程只是標準的、友好的rtsp流程,但實際的需求中并不一定按此過程。其中第三和第四步是必需的!第一步,只要服務器客戶端約定好,有哪些方法可用,則option請求可以不要。第二步,如果我們有其他途徑得到媒體初始化描述信息(比如http請求等等),則我們也不需要通過rtsp中的describe請求來完成。第二部分:SDP協(xié)議、SDP協(xié)議概述SDP(SessionDescriptionProtocol)會話描述協(xié)議,用于描述多媒體會話,它為會話通知、會話初始和其它形式的多媒體會話初始等操作提供服務。SDP的設計宗旨是通用性協(xié)議,所有它可以應用于很大范圍的網(wǎng)絡環(huán)境和應用程序,但SDP不支持會話內(nèi)容或媒體編碼的協(xié)商操作。SDP信息包括:.會話名稱和目標;?會話活動時間;.構成會話的媒體;?有關接收媒體的信息、地址等。二、SDP格式SDP信息是文本信息,UTF-8編碼采用ISO10646字符設置。SDP會話描述如下(標注 v= v=(協(xié)議版本)o=(所有者/創(chuàng)建者和會話標識符)s=(會話名稱)i=* (會話信息)u=* (URI描述)e=* (Email地址)p=* (電話號碼)c=* (連接信息一如果包含在所有媒體中,則不需要該字段)b=* (帶寬信息)一個或更多時間描述(如下所示):z=*(時間區(qū)域調(diào)整)k=*(加密密鑰)a=*(0個或多個會話屬性線路)//字段解釋V=0Version給定了SDP協(xié)議的版本o=<username><sessionid><version><networktype><addresstype><address>;Origin,給定了會話的發(fā)起者信息s=<sessionname>;給定7SessionNamei=<sessiondescription〉;Information關于Session的一些信息u=<URI>;URIe=<emailaddress>;Emailc=<networktype><addresstype>〈connectionaddress>;ConnectData包含連接數(shù)據(jù)t=<starttime><stoptime>;Timea=<attribute>;Attribute0個或多個媒體描述(如下所示)時間描述.t=(會話活動時間)r=*(0或多次重復次數(shù))媒體描述m=(媒體名稱和傳輸?shù)刂罚﹊=* (媒體標題)c=* (連接信息一如果包含在會話層則該字段可選)b=* (帶寬信息)k=* (加密密鑰)a=* (0個或多個會話屬性線路)三、SDP示例v=0。二mhandley28908445262890842807INIP4s二SDPSeminari=ASeminaronthesessiondescriptionprotocolu=http://www.cs.ucl.ac.Uk/staff/M.Handley/sdp.03.pse二***********(MarkHandley)c=INIP42/127t=28733974962873404696a二recvonlym二audio49170RTP/AVP0m二video51372RTP/AVP31m二application32416udpwba二orient:portraita=<attribute>:<value>m=<media><port>〈transport〉<fmtlist>;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論