AXIS安訊士網(wǎng)絡(luò)攝像頭RTSP讀取視頻流信息_第1頁
AXIS安訊士網(wǎng)絡(luò)攝像頭RTSP讀取視頻流信息_第2頁
AXIS安訊士網(wǎng)絡(luò)攝像頭RTSP讀取視頻流信息_第3頁
AXIS安訊士網(wǎng)絡(luò)攝像頭RTSP讀取視頻流信息_第4頁
免費預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

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

文檔簡介

本人現(xiàn)在在做有關(guān)AXIS方面的應(yīng)用,昨天花了一天時間終于讀到了視頻流數(shù)據(jù),雖然是AXIS產(chǎn)品開發(fā),但是我相信RTSP部分的內(nèi)容對初學(xué)者應(yīng)該會有一些幫助,可能會有錯誤的地方,希望大家更正。首先說的是,如果你能夠從socket方面理解windows網(wǎng)絡(luò)編程的話,那么無論RTSP還是RTP,或者可以說大部分網(wǎng)絡(luò)協(xié)議,從本質(zhì)上都是一樣的,都是基于套接字socket的編程。這樣的話RTSP就是輕車熟路了。RTSP協(xié)議實現(xiàn)方式實時流協(xié)議(RTSP)是應(yīng)用層協(xié)議,控制實時數(shù)據(jù)的傳送。RTSP提供了一個可擴展框架,使受控、按需傳輸實時數(shù)據(jù)(如音頻與視頻)成為可能。數(shù)據(jù)源包括現(xiàn)場數(shù)據(jù)與存儲在剪輯中的數(shù)據(jù)。本協(xié)議旨在于控制多個數(shù)據(jù)發(fā)送會話,提供了一種選擇傳送途徑(如UDP、組播UDP與TCP)的方法,并提供了一種選擇基于RTP(RFC1889)的傳送機制的方法。RTSP和HTTP非常相似,在開發(fā)RTSP客戶端程序時有幾種方式可以選擇:RTP/RTSP/TCP采用RTSP通過TCP協(xié)議連接服務(wù)器,控制媒體流信息傳輸,然后通過此連接接收媒體流信息。RTP/RTSP/HTTP通過HTTP協(xié)議攜帶RTS控制信息和RTP數(shù)據(jù)信息實現(xiàn)流媒體的傳輸,這種方式有一個好處就是可以順利的通過防火墻。RTP/RTSP/UDP采用RTSP通過TCP協(xié)議連接服務(wù)器,控制媒體流信息傳輸,并告知客戶端UDP接收端口,然后通過UDP接收媒體流信息。各個服務(wù)器支持的方式可能不一樣,大家要先準(zhǔn)確知道服務(wù)器支持什么方式。RTSP發(fā)送指令格式:<CRLF>是回車換行("\r\n”的意思COMMANDrtsp://<servername>/axis-media/media.amp[?<parameter>=<value>[&<parameter>=<value>...]]RTSP/1.0<CRLF>Headerfield1:val1<CRLF>Headerfield2:val2<CRLF><CRLF>[Body]第一行包含有命令、協(xié)議、服務(wù)器地址、流媒體參數(shù)(編碼方式、分辨率等)。接著是頭信息,這和HTTP非常相似,AXISRTSP常用信息頭如下:Authorization:Authorizationinformationfromtheclient.CSeq:Requestsequencenumber.Session:Sessionidentifier(returnedbyserverinSETUPresponse).Content-Length:Lengthofcontent.Content-Type:Themediatypeofthecontent.User-Agent:Informationabouttheclientthatinitiatestherequest.Body就是要發(fā)送的信息實體。RTSP返回信息格式:RTSP/1.0<StatusCode><ReasonPhrase><CRLF>Headerfield3:val3<CRLF>Headerfield4:val4<CRLF><CRLF>[Body]RTSP編程RTSP編程從原理上很簡單,以方式1為例介紹RTSP編程的主要步驟:建立WinSock:SOCKETsock(AF_INET,SOCK_STREAM,0);與RTSP服務(wù)器建立TCP連接:connect(sock,server_addr,sizeof(server_addr));發(fā)送RTSP指令,這一部分也是整個程序和其他協(xié)議不一樣的部分:RTSP定義了很多方法,這里介紹AXIS開發(fā)中常用的幾個:OPTIONS,DISCRIBE,SETUP,PLAY,PAUSE,TEARDOWN.OPTIONS指令:用于得到RTSP服務(wù)器支持的指令發(fā)送信息包如下:OPTIONSrtsp://<servername>/axis-media/media.ampRTSP/1.0CSeq:1User-Agent:AxisAMCAuthorization:Basiccm9vdDpwYXNz其中Authorization為身份驗證信息,采用base64編碼返回信息如下:RTSP/1.0200OKCSeq:1Public:DESCRIBE,GET_PARAMETER,PAUSE,PLAY,SETUP,SET_PARAMETER,TEARDOWNDate:Sat,16Jun200112:38:56GMTDESCRIBE指令:得到媒體流的一個SDP(SessionDescriptionProtocol)描述DESCRIBErtsp://<servername>/axis-media/media.amp?videocodec=h264&resolution=640x480RTSP/1.0CSeq:2Accept:application/sdpUser-Agent:AxisMACAuthorization:Basiccm9vdDpwYXNz返回信息如下:RTSP/1.0200OKCSeq:2Content-Type:application/sdpContent-Base:rtsp://54:554/axis-media/media.amp/Date:Sat,16Jun200112:38:56GMTContent-Length:570v=0o=-992695136526595992695136526595INIP454s=MediaPresentatione=NONEc=INIP4b=AS:50000t=00a=control:rtsp://54:554/axis-media/media.amp?videocodec=h264&resolution=640x480a=range:npt=0.000000-m=video0RTP/AVP96b=AS:50000a=framerate:25.0a=transform:1,0,0;0,1,0;0,0,1a=control:rtsp://54:554/axis-media/media.amp/trackID=1?videocodec=h264&resolution=640x480a=rtpmap:96H264/90000a=fmtp:96packetization-mode=1;profile-level-id=420029;sprop-parameter-sets=Z0IAKeKQFAe2AtwEBAeHiRFQ,aM48gA==SETUP指令:設(shè)置流媒體傳輸方式,讓服務(wù)器給流分配資源,啟動RTSP會話。在SETUP指令中,需要多加一個信息頭:Transport:Specifyhowthedatastreamistransported.SupportedvariantsareRTP/AVP;unicast;client_port=port1-port2RTP/AVP;multicast;client_port=port1-port2RTP/AVP/TCP;unicast在AXIS開發(fā)中,雖然datasheet說明支持UDP傳輸,但是選擇方式一RTp/AVP時,服務(wù)器并不發(fā)送數(shù)據(jù),只好用第三種方式RTP/AVP/TCP。當(dāng)使用第三種方式的時候,可以在添加一個信息頭,設(shè)置blocksize為64000:Blocksize:64000發(fā)送指令如下:SETUPrtsp://<servername>/axis-media/media.amp?videocodec=h264&resolution=640x480RTSP/1.0CSeq:3Transport:RTP/AVP/TCP;unicast;Blocksize:64000User-Agent:AxisMACAuthorization:Basiccm9vdDpwYXNz返回信息如下:RTSP/1.0200OKCSeq:3Session:C306C41C;timeout=60Transport:RTP/AVP/TCP;unicast;interleaved=0-1;ssrc=737F3A5E;mode="PLAY"Date:Sat,16Jun200112:38:56GMT這里有個地方要注意,返回信息中有一個Session:C306C41C;這個會議標(biāo)識要存起來,在后邊的指令中都要加入這個信息頭以表示是同一個會話。PLAY指令:請求服務(wù)器開始給客戶端發(fā)送流數(shù)據(jù)PLAYrtsp://<servername>/axis-media/media.amp?videocodec=h264&resolution=640x480RTSP/1.0CSeq:4User-Agent:AxisAMCSession:C306C41CAuthorization:Basiccm9vdDpwYXNz返回信息如下:RTSP/1.0200OKCSeq:4Session:C306C41CRange:npt=0-RTP-Info:url=rtsp://54:554/axis-media/media.amp/trackID=1?videocodec=h264&resolution=640x480;seq=42296;rtptime=295889231Date:Sat,16Jun200112:38:57GMT此命令返回成功之后,服務(wù)器應(yīng)該就開始發(fā)送RTP數(shù)據(jù)包了,接下來就接受這些數(shù)據(jù)報。PAUSE和TEARDOWN就不一一介紹了,直接講接收RTP數(shù)據(jù)包intsize=recv(sock,(char*)pos,i_size,0);可以使用wireshark來分析數(shù)據(jù)包中的實時數(shù)據(jù),很容易看出那些事協(xié)議信息,哪些是實時數(shù)據(jù)信息,接下來的事情就不屬于RTSP了。如圖,找到一個抓到的RTP數(shù)據(jù)包,在Real-TimeTransportProtocol中點擊Payload就可以看到其對應(yīng)的信息。200.254■3Payload(rtp-paylcad),55$bytPgfi!畔Default*■*003C0040005000600070ggoooacoouoOOcCoodcOOeC&OfCrcavn192,l&a.1,101Packets:11150Di-spleyed:11150No.Time SourceBO42269.M咅2礎(chǔ)1^2.1?.200.254Destination01HfeLdttVi?wGoCaptureAnalyie TeleptiarayTaal?-HelpProtocolIrfo£TPFTH0ynam§匚氏TP-Ty口亡一96丫Frarre3Q4Z;S4Qbytes-onViireC5LZ0bits^?frIObyc^scaptured(512Qbits)EthernetIIrEre:Ehenzhen_8b13: (00:14;75;Sb:lJ;90J,Dst:Lurriversa.,53:34j7aCOO;le:rnt^rriMPr&rocol.sre:172.16,200.254C172.16.200,2543nDstJ192.1SS.1,101(192.l€S.l.Transnoisston匚ontro'BProtocolHSrcPort:rtsp(554)rDstPort:4413C441?)(Eeq:£41654FtrspinterleavedFrame,channel:OxOO.57ftbyresMagic:Qk2AchanreV*00rt^rht570toyr?Real-TimsTransportProtocol10………=version:RFC10B9version〔2)…O..... ?ifadding:Falie■ , ■ 0 ....工>E3ft日rision; Fmls自.”…OOOO=<oncribut

溫馨提示

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

評論

0/150

提交評論