海康攝像SDK開發筆記(一):海康威視網路攝像頭SDK介紹與模組功能

語言: CN / TW / HK

若該文為原創文章,轉載請註明原文出處 本文章部落格地址:https://blog.csdn.net/qq21497936/article/details/1116396032

紅胖子(紅模仿)的博文大全:開發技術集合(包含Qt實用技術、樹莓派、三維、OpenCV、OpenGL、ffmpeg、OSG、微控制器、軟硬結合等等)持續更新中…(點選傳送門)

Qt開發專欄:三方庫開發技術

<br>

前言

  影片監控、人臉識別等應用中經常使用到攝像頭,當前佔據主流影片監控攝像頭就是海康和大華兩家,都可通過自家的sdk或者是onvif方式使用和控制攝像頭。   本文章講解海康的sdk方式。

<br>

海康

  海康(海康威視)是以影片為核心的智慧物聯網解決方案和大資料服務提供商,在影片行業是當前實打實的老大哥,當然還有大華,其他不多做介紹。

海康裝置網路SDK下載

  下載地址:https://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_V40NET_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_GetDVRConfigNET_DVR_SetDVRConfig

「其他文章」