九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
AXIS安訊士網(wǎng)絡(luò)攝像頭RTSP讀取視頻流信息
 本人現(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 提供了一個可擴(kuò)展框架,使受控、按需傳輸實時數(shù)據(jù)(如音頻與視頻)成為可能。數(shù)據(jù)源包括現(xiàn)場數(shù)據(jù)與存儲在剪輯中的數(shù)據(jù)。本協(xié)議旨在于控制多個數(shù)據(jù)發(fā)送會話,提供了一種選擇傳送途徑(如UDP、組播UDP 與TCP)的方法,并提供了一種選擇基于RTP (RFC1889)的傳送機(jī)制的方法。

      RTSP和HTTP非常相似,在開發(fā)RTSP客戶端程序時有幾種方式可以選擇:

         1. RTP/RTSP/TCP 采用RTSP通過TCP協(xié)議連接服務(wù)器,控制媒體流信息傳輸,然后通過此連接接收媒體流信息。

         2. RTP/RTSP/HTTP 通過HTTP協(xié)議攜帶RTS控制信息和RTP數(shù)據(jù)信息實現(xiàn)流媒體的傳輸,這種方式有一個好處就是可以順利的通過防火墻。

         3. RTP/RTSP/UDP 采用RTSP通過TCP協(xié)議連接服務(wù)器,控制媒體流信息傳輸,并告知客戶端UDP接收端口,然后通過UDP接收媒體流信息。

      各個服務(wù)器支持的方式可能不一樣,大家要先準(zhǔn)確知道服務(wù)器支持什么方式。

      RTSP發(fā)送指令格式:<CRLF>是回車換行("\r\n”)的意思

      COMMAND rtsp://<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非常相似,AXIS RTSP常用信息頭如下:

      Authorization :Authorization information from the client.
      CSeq :Request sequence number.
      Session :Session identifier (returned by server in SETUP response).
      Content-Length :Length of content.
      Content-Type :The media type of the content.
      User-Agent :Information about the client that initiates the request.

      Body就是要發(fā)送的信息實體。

      RTSP返回信息格式:

      RTSP/1.0 <Status Code> <Reason Phrase> <CRLF>
      Headerfield3: val3<CRLF>
      Headerfield4: val4<CRLF>
      ...
      <CRLF>
      [Body]

RTSP編程

      RTSP編程從原理上很簡單,以方式1為例介紹RTSP編程的主要步驟:

      1. 建立WinSock:

      SOCKET sock(AF_INET,SOCK_STREAM,0);

      2. 與RTSP服務(wù)器建立TCP連接:

      connect(sock,server_addr,sizeof(server_addr));

      3. 發(fā)送RTSP指令,這一部分也是整個程序和其他協(xié)議不一樣的部分:

      RTSP定義了很多方法,這里介紹AXIS開發(fā)中常用的幾個:OPTIONS, DISCRIBE, SETUP, PLAY, PAUSE, TEARDOWN.

      OPTIONS指令:用于得到RTSP服務(wù)器支持的指令

      發(fā)送信息包如下:

      OPTIONS rtsp://<servername>/axis-media/media.amp RTSP/1.0

      CSeq: 1

      User-Agent: Axis AMC

      Authorization: Basic cm9vdDpwYXNz

 

      其中Authorization為身份驗證信息,采用base64編碼

      返回信息如下:

      RTSP/1.0 200 OK

      CSeq: 1
      Public: DESCRIBE, GET_PARAMETER, PAUSE, PLAY, SETUP, SET_PARAMETER, TEARDOWN
      Date: Sat, 16 Jun 2001 12:38:56 GMT

      4. DESCRIBE指令:得到媒體流的一個SDP(Session Description Protocol)描述

      DESCRIBE rtsp://<servername>/axis-media/media.amp?videocodec=h264&resolution=640x480 RTSP/1.0

      CSeq: 2

      Accept: application/sdp

      User-Agent: Axis MAC

      Authorization: Basic cm9vdDpwYXNz

 

      返回信息如下:

      RTSP/1.0 200 OK

      CSeq: 2
      Content-Type: application/sdp
      Content-Base: rtsp://172.16.200.254:554/axis-media/media.amp/
      Date: Sat, 16 Jun 2001 12:38:56 GMT
      Content-Length: 570
      v=0
      o=- 992695136526595 992695136526595 IN IP4 172.16.200.254
      s=Media Presentation
      e=NONE
      c=IN IP4 0.0.0.0
      b=AS:50000
      t=0 0
      a=control:rtsp://172.16.200.254:554/axis-media/media.amp?videocodec=h264&resolution=640x480
      a=range:npt=0.000000-
      m=video 0 RTP/AVP 96
      b=AS:50000
      a=framerate:25.0
      a=transform:1,0,0;0,1,0;0,0,1
      a=control:rtsp://172.16.200.254:554/axis-media/media.amp/trackID=1?videocodec=h264&resolution=640x480
      a=rtpmap:96 H264/90000
      a=fmtp:96 packetization-mode=1; profile-level-id=420029; sprop-parameter-sets=Z0IAKeKQFAe2AtwEBAeHiRFQ,aM48gA==

      5. SETUP指令:設(shè)置流媒體傳輸方式,讓服務(wù)器給流分配資源,啟動RTSP 會話。

      在SETUP指令中,需要多加一個信息頭:

      Transport :Specify how the data stream is transported. Supported variants are

                         RTP/AVP;unicast;client_port=port1-port2

                         RTP/AVP;multicast;client_port=port1-port2

                         RTP/AVP/TCP;unicast

      在AXIS開發(fā)中,雖然datasheet說明支持UDP傳輸,但是選擇方式一RTp/AVP時,服務(wù)器并不發(fā)送數(shù)據(jù),只好用第三種方式RTP/AVP/TCP。

      當(dāng)使用第三種方式的時候,可以在添加一個信息頭,設(shè)置blocksize為64000:

      Blocksize :64000

      發(fā)送指令如下:

      SETUP rtsp://<servername>/axis-media/media.amp?videocodec=h264&resolution=640x480 RTSP/1.0

      CSeq: 3  

      Transport: RTP/AVP/TCP;unicast;

      Blocksize: 64000
      User-Agent: Axis MAC

      Authorization: Basic cm9vdDpwYXNz

 

      返回信息如下:

      RTSP/1.0 200 OK

      CSeq: 3
      Session: C306C41C; timeout=60
      Transport: RTP/AVP/TCP;unicast;interleaved=0-1;ssrc=737F3A5E;mode="PLAY"
      Date: Sat, 16 Jun 2001 12:38:56 GMT

      這里有個地方要注意,返回信息中有一個Session:C306C41C;這個會議標(biāo)識要存起來,在后邊的指令中都要加入這個信息頭以表示是同一個會話。

      6. PLAY指令:請求服務(wù)器開始給客戶端發(fā)送流數(shù)據(jù)

      PLAY rtsp://<servername>/axis-media/media.amp?videocodec=h264&resolution=640x480 RTSP/1.0

      CSeq: 4
      User-Agent: Axis AMC
      Session: C306C41C
      Authorization: Basic cm9vdDpwYXNz

 

      返回信息如下:

      RTSP/1.0 200 OK

      CSeq: 4

      Session: C306C41C
      Range: npt=0-
      RTP-Info: url=rtsp://172.16.200.254:554/axis-media/media.amp/trackID=1?videocodec=h264&resolution=640x480;seq=42296;rtptime=295889231
      Date: Sat, 16 Jun 2001 12:38:57 GMT

      此命令返回成功之后,服務(wù)器應(yīng)該就開始發(fā)送RTP數(shù)據(jù)包了,接下來就接受這些數(shù)據(jù)報。

      7. PAUSE和TEARDOWN就不一一介紹了,直接講接收RTP數(shù)據(jù)包

      int size=recv(sock,(char *)pos,i_size,0);

      可以使用wireshark來分析數(shù)據(jù)包中的實時數(shù)據(jù),很容易看出那些事協(xié)議信息,哪些是實時數(shù)據(jù)信息,接下來的事情就不屬于RTSP了。

      如圖,找到一個抓到的RTP數(shù)據(jù)包,在Real-Time Transport Protocol中點擊Payload就可以看到其對應(yīng)的信息。

             

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
RTSP回放時如何通過RTP的timestamp計算npt時間
RTSP點播——消息流程實例
RTSP 交互過程(抓包)
RTP/RTCP/RTSP協(xié)議分析
網(wǎng)絡(luò)流媒體協(xié)議之——RTSP協(xié)議
RTSP協(xié)議
更多類似文章 >>
生活服務(wù)
熱點新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服