海康攝像SDK開發筆記(一):海康威視網路攝像頭SDK介紹與模組功能
若該文為原創文章,轉載請註明原文出處 本文章部落格地址:http://blog.csdn.net/qq21497936/article/details/1116396032
紅胖子(紅模仿)的博文大全:開發技術集合(包含Qt實用技術、樹莓派、三維、OpenCV、OpenGL、ffmpeg、OSG、微控制器、軟硬結合等等)持續更新中…(點選傳送門)
Qt開發專欄:三方庫開發技術
<br>
前言
視訊監控、人臉識別等應用中經常使用到攝像頭,當前佔據主流視訊監控攝像頭就是海康和大華兩家,都可通過自家的sdk或者是onvif方式使用和控制攝像頭。 本文章講解海康的sdk方式。
<br>
海康
海康(海康威視)是以視訊為核心的智慧物聯網解決方案和大資料服務提供商,在視訊行業是當前實打實的老大哥,當然還有大華,其他不多做介紹。
海康裝置網路SDK下載
下載地址:http://www.hikvision.com/cn/download_61.html 在ubuntu16.04 x86_64上開發,下載SDK_Linux64版本,可檢視詳細描述,右上角下載:
點選下載:
解壓後:
海康威視SDK自帶QtDemo,不過是qt4.7版本的,筆者使用qt5版本。
<br>
海康SDK概述與使用流程
初始化SDK
海康sdk有其固有的使用流程,如下圖:
初始化SDK(NET_DVR_Init)
對整個網路SDK系統的初始化,記憶體預分配等。
設定連線超時時間(NET_DVR_SetConnectTime)可選
設定SDK中的網路連線超時時間,不呼叫則使用預設值。
異常回調函式(NET_DVR_SetDVRMessage或NET_DVR_SetExceptionCallBack_V30)
sdk中大部分模組的功能是非同步異常,海康提供此介面用於接收預覽、報警、回放、透明通道和語音對講等模組發生異常資訊。使用者可以在初始化 SDK 後就設定該回調函式,在應用層對各個模組異常訊息的接收和處理。
從解析伺服器獲得裝置的 IP 地址(NET_DVR_GetDVRIPByResolveSvr_EX)
該介面提供一種在僅知道裝置名稱(或 DDNS 域名)或者序列號的情況下,從解析伺服器獲得裝置 IP 地址的方法。如:當前裝置是通過撥號上網方式獲取到動態 IP 地址,而運行了我公司 IPServer 軟體的伺服器即為解析伺服器或者設備註冊到我公司 DDNS 伺服器上,我們可以通過此介面輸入伺服器的地址、裝置的名稱或序列號等資訊查詢該裝置的 IP 地址。(注意:由此看來不能達到沒有任何配置的情況下,直接使用該函式搜尋到區域網內的所有攝像頭資訊)。
使用者註冊裝置(NET_DVR_Login_V30)
實現使用者的註冊功能,註冊成功後,返回的使用者 ID 作為其他功 能操作的唯一標識, SDK 允許最大註冊使用者數為 512 個。就裝置而言, V3.0 以上版本支援的裝置允許有 32 個註冊使用者名稱,而且同時最多允許 128 個使用者註冊; V3.0 以下版本支援的裝置允許有 16 個註冊使用者名稱,而且同時最多允許 128 個使用者註冊。 登入後才可進行功能其他功能的呼叫(除了報警模組不需要登入)。
釋放SDK(NET_DVR_Cleanup)
不再使用sdk後,釋放其使用的資源。
SDK功能模組
預覽模組
從裝置取實時碼流,解碼顯示以及播放控制等功能,同時支援軟解碼和解碼卡解碼。
回放和下載模組
可以通過按時間和按檔名的方式遠端回放或者下載裝置的錄影檔案,後續可以進行解碼或者儲存。同時還支援斷點續傳功能(需要裝置支援)。
引數配置模組
設定和獲取裝置的引數,主要包括裝置引數、網路引數、通道壓縮引數、串列埠引數、報警引數、異常引數、交易資訊和使用者配置等引數資訊。
遠端裝置維護模組
實現關閉裝置、重啟裝置、恢復預設值、遠端硬碟格式化、遠端升級和配置檔案匯入/匯出等維護工作。
語音對講轉發模組
語音對講轉發模組:實現和裝置的語音資料對講和語音資料獲取,音訊編碼格式可以指定。
報警模組
報警模組:處理裝置上傳的各種報警訊號。報警分為“佈防”和“監聽”兩種方式,在採用監聽方式並且不 需要獲取使用者 ID 的情況下,報警模組可以無需進行“使用者註冊”操作步驟。
透明通道模組
透明通道模組:透明通道是將 IP 資料報文解析後直接傳送到序列口的一種技術。實際上起到了延伸序列裝置控制距離的作用。可利用 IP 網路控制多種序列裝置,如控制解碼器、矩陣、報警主機、門禁、儀器儀表等序列裝置,對使用者來說,只看到點對點傳輸,無須關心網路傳輸過程,所以稱為串列埠透明通道。SDK提供485和232串列埠作為透明通道功能,其中要將 232 串列埠作為透明通道使用,首先必須在232串列埠的配置資訊(NET_DVR_RS232CFG)中將工作模式選為透明通道,這樣232串口才可作為透明通道使用。
雲臺控制模組
雲臺控制模組:實現對雲臺的基本操作、預置點、巡航、軌跡和透明雲臺的控制。SDK將雲臺控制分為兩種模式:一種是通過影象預覽返回的控制代碼進行控制;另一種是無預覽限制,通過使用者註冊ID號進行雲臺控制。
IP通道概念與相關說明
模擬輸入
DVR 視訊輸入接模擬攝像機,其通道稱為模擬通道; 混合型 DVR、 NVR 等裝置支援 IPC 接入,通道稱IP 通道(或者數字通道),配置相關引數時需呼叫 IP 接入配置引數來進行資源的獲取和重新分配。
模擬通道個數
客戶端通過註冊裝置(NET_DVR_Login_V30)返回的裝置資訊 NET_DVR_DEVICEINFO_V30 獲取模擬通道個數(byChanNum)、模擬通道起始通道號(byStartChan)和裝置支援的最大 IP 通道數(byIPChanNum + byHighDChanNum * 256)、數字通道起始通道號(byStartDChan)。
通道號
從 byStartChan 到 byStartChan + byChanNum - 1 對應為模擬通道的通道號,IP 通道的通道號為 byStartDChan到 byStartDChan + (byIPChanNum + byHighDChanNum * 256) - 1。 DVR 只有模擬通道, NVR 只有 IP 通道,混合型 DVR 同時支援模擬通道和 IP 通道。
單裝置的多IP通道
如果裝置支援 IP 通道個數大於 0,則可以通過遠端引數配置介面 NET_DVR_GetDVRConfig(配置命令:NET_DVR_GET_IPPARACFG_V40)可以獲取得到裝置詳細的 IP 資源資訊(NET_DVR_IPPARACFG_V40),包括模擬通道是否禁用(byAnalogChanEnable)、 IP 通道個數(dwDChanNum)、 IP 通道起始通道號(dwStartDChan)、 IP 通道取流模式、 IP 通道有效狀態和線上狀態等。通過遠端引數配置介面NET_DVR_SetDVRConfig(配置命令: NET_DVR_SET_IPPARACFG_V40)可對裝置進行 IP 資源配置,包括新增、修改、刪除 IP 通道等。
報警
混合型 DVR 或 NVR 的 IP 報警輸入和報警輸出的通道是在音視訊 IP 通道資源分配好後,由裝置自動分配的。 如果要對 IP 報警引數進行配置,首先通過命令 NET_DVR_GET_IPALARMINCFG_V40 和NET_DVR_GET_IPALARMOUTCFG_V40 獲取 IP 報警輸入資源(NET_DVR_IPALARMINCFG_V40) 和 IP 報警輸出資源(NET_DVR_IPALARMOUTCFG_V40)。 然後通過命令 NET_DVR_SET_ALARMINCFG_V40 可以配置報警數相關引數(NET_DVR_ALARMINCFG_V40),包括報警輸入名稱、報警器型別、佈防時間、聯動方式等,通過命令 NET_DVR_SET_ALARMOUTCFG_V30 可以配置報警輸出相關引數(NET_DVR_ALARMOUTCFG_V30),比如報警輸出名稱、佈防時間、輸出報警延時等。 相關介面:NET_DVR_GetDVRConfig、 NET_DVR_SetDVRConfig。
- RK3568開發筆記(一):瑞芯微RK3568晶片介紹,入手開發板的核心板介紹
- 樹莓派開發筆記(十三):入手研華ADVANTECH工控樹莓派UNO-220套件(二):安裝rtc等驅動
- 紅胖子創業一年整總結:前二十年題記,萌芽初期,外包初期,創業初期,未來規劃
- Qt MPlayer音樂播放器開發筆記(二):交叉編譯MPlayer以及部署到開發板播放演示
- zlib開發筆記(三):zlib庫介紹、在ubuntu上進行arm平臺交叉編譯
- 案例分享:Qt政務標籤設計器,標籤排版軟體定製與列印
- Qt 騰訊IM開發筆記(一):騰訊IM介紹、使用和Qt整合騰訊IM-SDK的工程模板Demo
- Qt MPlayer音樂播放器開發筆記(一):ubuntu上編譯MPlayer以及Demo演示
- 案例分享:Qt Arm基於RV1126平臺的內窺鏡軟硬整套解決方案(實時影像、凍結、拍照、錄影、背光調整、硬體光源調整,其他產品也可使用該平臺,如視訊監控,物聯網產品等等)
- libzip開發筆記(二):libzip庫介紹、ubuntu平臺編譯和工程模板
- 臺達PLC開發筆記(二):臺達PLC設定主機通訊引數為RTU併成功通訊
- 臺達PLC開發筆記(一):臺達PLC連線介紹,分別使用485、網口與臺達PLC建立連線
- Qt的圖形檢視框架,最核心的三個類為:QGraphicsScene、QGraphicsItem與QGraphicsView。
- Windows上mingw32版本的openssl的編譯是屬於比較棘手的,OpenSSL本身不提供支援.。
- 案例分享:Qt modbus485除錯工具(讀寫Byte、Int、DInt、Real、DReal)(當前v1.3.0)
- 案例分享:某品牌音響系列協議除錯工具(搜尋主機,查詢通道,基本控制API,雲音樂API,語言節目API等,可增刪改指令)
- NSIS安裝包開發筆記(三):NSIS使用Qt做的安裝介面製作安裝包互動詳解
- NSIS製作安裝包筆記(一):NSIS介紹、使用NSIS預設嚮導指令碼製作Windows安裝包
- 海康攝像SDK開發筆記(一):海康威視網路攝像頭SDK介紹與模組功能
- Qt開發技術:Qt拽拖開發(一)拽託框架詳解及Demo