若該文爲原創文章,轉載請註明原文出處
本文章博客地址:https://blog.csdn.net/qq21497936/article/details/1116396032html
紅胖子(紅模仿)的博文大全:開發技術集合(包含Qt實用技術、樹莓派、三維、OpenCV、OpenGL、ffmpeg、OSG、單片機、軟硬結合等等)持續更新中…(點擊傳送門)ubuntu
視頻監控、人臉識別等應用中常常使用到攝像頭,當前佔據主流視頻監控攝像頭就是海康和大華兩家,均可經過自家的sdk或者是onvif方式使用和控制攝像頭。
本文章講解海康的sdk方式。服務器
海康(海康威視)是以視頻爲核心的智能物聯網解決方案和大數據服務提供商,在視頻行業是當前實打實的老大哥,固然還有大華,其餘很少作介紹。網絡
下載地址:https://www.hikvision.com/cn/download_61.html
在ubuntu16.04 x86_64上開發,下載SDK_Linux64版本,可查看詳細描述,右上角下載:
點擊下載:
解壓後:
海康威視SDK自帶QtDemo,不過是qt4.7版本的,筆者使用qt5版本。異步
海康sdk有其固有的使用流程,以下圖:
函數
對整個網絡SDK系統的初始化,內存預分配等。大數據
設置SDK中的網絡鏈接超時時間,不調用則使用默認值。編碼
sdk中大部分模塊的功能是異步異常,海康提供此接口用於接收預覽、報警、回放、透明通道和語音對講等模塊發生異常信息。用戶能夠在初始化 SDK 後就設置該回調函數,在應用層對各個模塊異常消息的接收和處理。spa
該接口提供一種在僅知道設備名稱(或 DDNS 域名)或者序列號的狀況下,從解析服務器得到設備 IP 地址的方法。如:當前設備是經過撥號上網方式獲取到動態 IP 地址,而運行了我公司 IPServer 軟件的服務器即爲解析服務器或者設備註冊到我公司 DDNS 服務器上,咱們能夠經過此接口輸入服務器的地址、設備的名稱或序列號等信息查詢該設備的 IP 地址。(注意:由此看來不能達到沒有任何配置的狀況下,直接使用該函數搜索到局域網內的全部攝像頭信息)。.net
實現用戶的註冊功能,註冊成功後,返回的用戶 ID 做爲其餘功
能操做的惟一標識, SDK 容許最大註冊用戶數爲 512 個。就設備而言, V3.0 以上版本支持的設備容許有 32 個註冊用戶名,並且同時最多容許 128 個用戶註冊; V3.0 如下版本支持的設備容許有 16 個註冊用戶名,並且同時最多容許 128 個用戶註冊。
登陸後纔可進行功能其餘功能的調用(除了報警模塊不須要登陸)。
再也不使用sdk後,釋放其使用的資源。
從設備取實時碼流,解碼顯示以及播放控制等功能,同時支持軟解碼和解碼卡解碼。
能夠經過按時間和按文件名的方式遠程回放或者下載設備的錄像文件,後續能夠進行解碼或者存儲。同時還支持斷點續傳功能(須要設備支持)。
設置和獲取設備的參數,主要包括設備參數、網絡參數、通道壓縮參數、串口參數、報警參數、異常參數、交易信息和用戶配置等參數信息。
實現關閉設備、重啓設備、恢復默認值、遠程硬盤格式化、遠程升級和配置文件導入/導出等維護工做。
語音對講轉發模塊:實現和設備的語音數據對講和語音數據獲取,音頻編碼格式能夠指定。
報警模塊:處理設備上傳的各類報警信號。報警分爲「佈防」和「監聽」兩種方式,在採用監聽方式而且不 須要獲取用戶 ID 的狀況下,報警模塊能夠無需進行「用戶註冊」操做步驟。
透明通道模塊:透明通道是將 IP 數據報文解析後直接發送到串行口的一種技術。實際上起到了延伸串行設備控制距離的做用。可利用 IP 網絡控制多種串行設備,如控制解碼器、矩陣、報警主機、門禁、儀器儀表等串行設備,對用戶來講,只看到點對點傳輸,無須關心網絡傳輸過程,因此稱爲串口透明通道。SDK提供485和232串口做爲透明通道功能,其中要將 232 串口做爲透明通道使用,首先必須在232串口的配置信息(NET_DVR_RS232CFG)中將工做模式選爲透明通道,這樣232串口才可做爲透明通道使用。
雲臺控制模塊:實現對雲臺的基本操做、預置點、巡航、軌跡和透明雲臺的控制。SDK將雲臺控制分爲兩種模式:一種是經過圖像預覽返回的句柄進行控制;另外一種是無預覽限制,經過用戶註冊ID號進行雲臺控制。
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 通道個數大於 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。