用libevent寫的海康攝像頭rtsp客戶端


  

  之前一直使用live555作為RTSP的客戶端,但其框架臃腫,雖然支持各種格式,但實際中並沒有這些需求,關鍵是其注重於格式的解析,卻不注重網絡IO,單線程下性能也不高,重新用libevent編寫rtspclient,目前支持海康攝像頭測試沒有問題。

  先通過libevent將所有的IO輸入進行隊列管理,再由回調函數來進行所有輸入輸出的處理,包括connect在內都采用無阻塞的方式運行。

  目錄下共有三個文件  net/   util/  makefile.pub

  先在util目錄下make

  然后在net 目錄下make ,目錄下會生成test_rtsp_test的測試文件,編譯時需要自己編譯下載libevent庫,並在編譯時指定。

  rtsp測試客戶端位於test目錄下,需要自己填寫正確的rtsp地址以及密碼。

  測試效果如下:

  源代碼地址:git@github.com:hpwang666/rtspclient.git

 <  OPTIONS rtsp://172.16.10.42/h264/ch1/main/av_stream RTSP/1.0
 <  CSeq: 1
 <  User-Agent: HPWANG_Net_Rtsp_Client
 <  DESCRIBE rtsp://172.16.10.42/h264/ch1/main/av_stream RTSP/1.0
 <  CSeq: 2
 <  User-Agent: HPWANG_Net_Rtsp_Client
 <  Accept: application/sdp
  > RTSP/1.0 200 OK
  > CSeq: 1
  > Public: OPTIONS, DESCRIBE, PLAY, PAUSE, SETUP, TEARDOWN, SET_PARAMETER, GET_PARAMETER
  > Date:  Sat, May 02 2020 09:22:33 GMT
  > RTSP/1.0 401 Unauthorized
  > CSeq: 2
  > WWW-Authenticate: Digest realm="c42f90c4d6a7", nonce="cc638c6d39dc662f5444a95297c7b448", stale="FALSE"
  > WWW-Authenticate: Basic realm="c42f90c4d6a7"
  > Date:  Sat, May 02 2020 09:22:33 GMT
 <  DESCRIBE rtsp://172.16.10.42/h264/ch1/main/av_stream RTSP/1.0
 <  CSeq: 3
 <  Authorization: Digest username="admin", realm="c42f90c4d6a7", nonce="cc638c6d39dc662f5444a95297c7b448", uri="rtsp://172.16.10.42/h264/ch1/main/av_stream", response="90931e51ea13fb16a2d8ceb4d70cf52f"
 <  User-Agent: HPWANG_Net_Rtsp_Client
 <  Accept: application/sdp
  > RTSP/1.0 200 OK
  > CSeq: 3
  > Content-Type: application/sdp
  > Content-Base: rtsp://172.16.10.42/h264/ch1/main/av_stream/
  > Content-Length: 588
  > v=0
  > o=- 1588411353108714 1588411353108714 IN IP4 172.16.10.42
  > s=Media Presentation
  > e=NONE
  > b=AS:5050
  > t=0 0
  > a=control:rtsp://172.16.10.42/h264/ch1/main/av_stream/
  > m=video 0 RTP/AVP 96
  > c=IN IP4 0.0.0.0
  > b=AS:5000
  > a=recvonly
  > a=x-dimensions:1280,720
  > a=control:rtsp://172.16.10.42/h264/ch1/main/av_stream/trackID=1
  > a=rtpmap:96 H264/90000
  > a=fmtp:96 profile-level-id=420029; packetization-mode=1; sprop-parameter-sets=Z00AH5WoFAFuhAAAHCAABX5AEA==,aO48gA==
  > a=Media_header:MEDIAINFO=494D4B48010100000400010000000000000000000000000000000000000000000000000000000000;
  > a=appversion:1.0
 <  SETUP rtsp://172.16.10.42/h264/ch1/main/av_stream/trackID=1 RTSP/1.0
 <  CSeq: 4
 <  Authorization: Digest username="admin", realm="c42f90c4d6a7", nonce="cc638c6d39dc662f5444a95297c7b448", uri="rtsp://172.16.10.42/h264/ch1/main/av_stream/trackID=1", response="e4d1d85ddf55cbe0265b147ff01db724"
 <  User-Agent: HPWANG_Net_Rtsp_Client
 <  Transport: RTP/AVP/TCP;unicast;interleaved=0-1
  > RTSP/1.0 200 OK
  > CSeq: 4
  > Session:        280814098;timeout=60
  > Transport: RTP/AVP/TCP;unicast;interleaved=0-1;ssrc=652f13b9;mode="play"
  > Date:  Sat, May 02 2020 09:22:33 GMT
 <  PLAY rtsp://172.16.10.42/h264/ch1/main/av_stream/ RTSP/1.0
 <  CSeq: 5
 <  Session: 280814098
 <  Authorization: Digest username="admin", realm="c42f90c4d6a7", nonce="cc638c6d39dc662f5444a95297c7b448", uri="rtsp://172.16.10.42/h264/ch1/main/av_stream/", response="85dd42ecf1c7056e1cf54b595586606b"
 <  User-Agent: HPWANG_Net_Rtsp_Client
 <  Range: npt=0.000-
  > RTSP/1.0 200 OK
  > CSeq: 5
  > Session:        280814098
  > RTP-Info: url=rtsp://172.16.10.42/h264/ch1/main/av_stream/trackID=1;seq=10268;rtptime=3312431238
  > Date:  Sat, May 02 2020 09:22:33 GMT
..................................................................................................................................
.......................................................................................................................................
........................................................................................................................................
.........................................................................................................................................
.....................

其中.........表示一個rtp的包,要注意網絡分片需要將其重新拼包。

源代碼地址:git@github.com:hpwang666/rtspclient.git

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM