Qt編寫監控Onvif綜合示例(支持雲臺/預置位/抓圖/事件訂閱等)

一、功能特點

  1. 廣播搜索設備,支持IPC和NVR,依次返回。
  2. 可選擇不同的網卡IP進行對應網段設備的搜索。
  3. 依次獲取Onvif地址、Media地址、Profile文件、Rtsp地址。
  4. 可對指定的Profile獲取視頻流Rtsp地址,比如主碼流地址、子碼流地址。
  5. 可對每個設備設置Onvif用戶信息,用於認證獲取詳細信息。
  6. 可實時預覽攝像機圖像。
  7. 支持雲臺控制,可上下左右調節雲臺,支持絕對移動、相對移動、連續移動三種方式,可對圖像拉近拉遠。
  8. 支持獲取預置位集合、調用預置位、添加預置位、刪除預置位等。
  9. 支持圖片參數設置,包括亮度、對比度、飽和度、銳度等。
  10. 支持Qt4和Qt6任意Qt版本以及後續Qt版本,親測Qt4.7.0到Qt6.2。
  11. 支持任意編譯器,親測mingw、msvc、gcc、clang。
  12. 支持任意操作系統,親測xp、win7、win10、android、linux、嵌入式linux、樹莓派全志H3等。
  13. 支持任意Onvif攝像機和NVR,親測海康、大華、宇視、天地偉業、華爲、海思芯片內核等,可定製開發。
  14. 支持對指定IP地址及onvif地址進行單播搜索,比如跨網段情況下非常有用。
  15. 支持指定過濾條件過濾搜索設備。
  16. 支持搜索間隔和搜索策略設置,保證所有設備搜索回來,在大量設備現場很有用(親測上千個攝像機現場,搜索回來的設備數量比攝像機廠家自帶搜索工具還要準確)。
  17. 可對設備進行重啓、網絡參數獲取等。
  18. 支持各種事件訂閱、Onvif抓圖等操作。
  19. 支持NTP校時和時間同步設置。
  20. 內置了線程實時執行Onvif指令隊列,排隊最大速度的執行對應的指令,執行結果信號發出。
  21. 採用的最底層的TCP+UDP通信機制,原創最底層協議解析,純QtWidget編寫。
  22. 超級小巧輕量,總共約3000行代碼,不依賴任何第三方的庫和組件,跨平臺。
  23. 封裝好了通用的數據發送和接收解析的函數,可以非常方便的自行拓展其他Onvif處理。
  24. 工具上提供了收發數據文本框,顯示收發的數據,方便查看和分析。
  25. 支持所有Onvif設備,代碼工整,接口友好,直接引入pri即可使用。

二、主要功能

  1. 搜索設備,獲取設備的信息比如廠家、型號等。
  2. 獲取設備的多個配置文件信息profile。
  3. 獲取對應配置文件的視頻流地址rtsp,以及分辨率等參數。
  4. 雲臺控制,上下左右移動,焦距放大縮小,相對和絕對移動。
  5. 獲取預置位信息,觸發預置位。
  6. 訂閱事件,接收設備的各種消息尤其是報警事件比如IO口的報警。
  7. 抓圖,獲取設備當前的圖片。
  8. 獲取、創建、刪除用戶信息。
  9. 獲取和設備網絡配置信息比如IP地址等。
  10. 獲取和設置NTP時間同步以及設置設備時間。
  11. 獲取和設置視頻參數和圖片參數(亮度、色彩、飽和度)。
  12. 重啓設備。

三、雲臺說明

  1. x、y、z 範圍都在0-1之間。
  2. x爲負數,表示左轉,x爲正數,表示右轉。
  3. y爲負數,表示下轉,y爲正數,表示上轉。
  4. z爲正數,表示拉近,z爲負數,表示拉遠。
  5. 通過x和y的組合,來實現雲臺的控制。
  6. 通過z的組合,來實現焦距控制。

四、處理流程

  1. 綁定組播IP(239.255.255.250)和端口(3702),發送固定的xml格式的數據搜索設備。
  2. 接收到的xml格式的數據解析,得到設備的Onvif地址。
  3. 對Onvif地址發送對應的數據,收到數據取出對應的節點數據。
  4. 請求Onvif地址獲取Media地址和Ptz地址,Media地址用來獲取詳細的配置文件,Ptz地址用來雲臺控制。
  5. ptz控制是對Ptz地址發送對應的數據即可。
  6. 設置了用戶認證的需要組織用戶token信息一塊發送,每次都需要作鑑權處理。
  7. 接收到的數據不是標準的xml數據,帶有前綴命名空間,解析的時候要注意。
  8. 每個廠家設備返回的數據未必完全一致,基本上都不一致,需要進行模糊查找節點值。
  9. 特意採用底層協議解析,因爲soap太臃腫函數名稱太另類,特意做的輕量級的。
  10. 兩個必備工具,Onvif Device Manager 和 Onvif Device Test Tool。

五、使用說明

  1. 必須確認攝像機是支持onvif的攝像機。
  2. 搜索的時候選定正確的網卡,建議同一網段。
  3. 攝像機必須開啓了onvif服務,很多攝像機爲了安全性考慮默認可能不開啓。
  4. onvif用戶信息必須正確,一般攝像機onvif功能開啓的地方可以添加用戶。
  5. 在界面上輸入用戶名和密碼的時候記得在界面中輸入,不要在配置文件中輸入,配置文件中存儲的是密文。
  6. 圖片參數的範圍值有多種:0-100 0-128 0-255 如果發現設置不成功可以把值調小一點試試。
  7. 可以用國際官方工具(Onvif Device Manager 和 Onvif Device Test Tool)進行測試對比。
  8. 國際工具下載地址:https://pan.baidu.com/s/1d7TH_GEYl5nOecuNlWJJ7g 提取碼:01jf

六、效果圖




七、體驗地址

  1. 體驗地址:https://pan.baidu.com/s/1d7TH_GEYl5nOecuNlWJJ7g 提取碼:01jf 名稱:bin_video_onvif
  2. 國內站點:https://gitee.com/feiyangqingyun
  3. 國際站點:https://github.com/feiyangqingyun
  4. 個人主頁:https://blog.csdn.net/feiyangqingyun
  5. 知乎主頁:https://www.zhihu.com/people/feiyangqingyun/
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章