




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、數(shù)字硬盤錄像機程序開發(fā)文檔基于設備網(wǎng)絡SDK使用手冊概述設備網(wǎng)絡SDK是基于設備私有網(wǎng)絡通信協(xié)議開發(fā)的,為后端設備(嵌入式網(wǎng)絡硬盤錄像機、視頻服務器)、前端設備(網(wǎng)絡攝像機、網(wǎng)絡球機、IP模塊)等產(chǎn)品服務的配套模塊,用于遠程訪問和控制設備軟件的二次開發(fā)。 設備網(wǎng)絡SDK主要功能 序號功能備注1.圖像預覽2.文件回放和下載3.云臺控制、布防/撤防4.語音對講5.日志管理6.解碼卡7.遠程升級8.遠程重啟/關(guān)閉9.格式化硬盤10.參數(shù)配置(系統(tǒng)配置、通道配置、串口配置、報警配置、用戶配置)11.多路解碼器12.智能設備功能和獲取設備能力集設備網(wǎng)絡SDK包含網(wǎng)絡通訊庫、軟解碼庫、硬解碼庫等功能組件,
2、我們提供Windows和Linux兩個版本的SDK,各自所包含的組件如下: Windows下設備網(wǎng)絡SDK: 網(wǎng)絡通訊庫HCNetSDK.h頭文件HCNetSDK.lib LIB庫文件HCNetSDK.dll DLL庫文件hpr庫hpr.lib LIB庫文件hpr.dll DLL庫文件RTSP通訊庫StreamTransClient.dll DLL庫文件軟解碼庫PlayM4.h頭文件PlayCtrl.lib LIB庫文件PlayCtrl.dll DLL庫文件轉(zhuǎn)封裝庫SystemTransform.dll DLL庫文件硬解碼庫DataType.hDecodeCardSdk.h頭文件DsSdk.l
3、ib LIB庫文件DsSdk.dll DLL庫文件Linux下設備網(wǎng)絡SDK庫: 網(wǎng)絡通訊庫hcnetsdk.h頭文件libhcnetsdk.soSO庫文件hpr庫libhpr.soSO庫文件RTSP通訊庫libStreamTransClient.soSO庫文件軟解碼庫playsdkpu.h頭文件libm4play.soSO庫文件轉(zhuǎn)封裝庫libSystemTransform.soSO庫文件本版本的設備網(wǎng)絡SDK開發(fā)包中包含以上各個組件,以下將對各個組件在SDK中的作用和使用條件分別說明。網(wǎng)絡通訊庫是設備網(wǎng)絡SDK的主體,主要用于網(wǎng)絡客戶端與各類產(chǎn)品之間的通訊交互,負責遠程功能調(diào)控、遠程參數(shù)配置
4、及碼流數(shù)據(jù)的獲取和處理等。 hpr庫是網(wǎng)絡通訊庫的依賴庫。 RTSP通訊庫是支持RTSP傳輸協(xié)議的網(wǎng)絡庫。當需要對支持RTSP協(xié)議的產(chǎn)品進行取流等操作時就必須加載該項組件。 軟解碼庫主要用于對實時碼流數(shù)據(jù)進行解碼顯示(實現(xiàn)預覽功能)和對錄像文件進行回放解碼等。用戶如果需要在SDK內(nèi)部進行對實時流和錄像碼流播放顯示時(即NET_DVR_RealPlay_V30接口的第二個結(jié)構(gòu)體參數(shù)的播放句柄設置成有效句柄時)必須加載該組件,而如果用戶僅需要用網(wǎng)絡通訊庫捕獲到數(shù)據(jù)后再外部自行處理就不需要加載該組件,這種情況下用戶在外部自行解碼將更靈活,可參見軟解碼庫函數(shù)說明播放器SDK編程指南。 轉(zhuǎn)封裝庫的功能可
5、以分為兩種:一種是將標準碼流轉(zhuǎn)換成采用我們公司封裝格式的碼流。當用戶需要對支持RTSP協(xié)議的產(chǎn)品捕獲采用本公司封裝格式的碼流數(shù)據(jù)時(即當設置NET_DVR_RealPlay_V30接口中的回調(diào)函數(shù)捕獲數(shù)據(jù)或者調(diào)用NET_DVR_SetRealDataCallBack接口捕獲數(shù)據(jù)時)必須加載該組件。另一種功能是能將標準碼流轉(zhuǎn)換成其他格式的封裝,如3GPP、PS等。例如,當用戶需要對支持RTSP協(xié)議的產(chǎn)品實時捕獲指定封裝格式的碼流數(shù)據(jù)(對應的SDK接口為NET_DVR_SaveRealData)時必須加載該項組件。 硬解碼庫需在配備硬解碼卡(MD卡)的前提下使用,通過解碼卡的解碼與輸出功能實現(xiàn)實時
6、流的解碼顯示及向監(jiān)視器上矩陣輸出的功能。用戶如果需要在SDK內(nèi)部對實時流碼流播放顯示時必須加載該項組件。為更方便靈活地調(diào)用硬解碼的相關(guān)功能,建議用戶通過捕獲數(shù)據(jù)在外部處理解碼。相關(guān)硬解碼庫的功能函數(shù)可參見板卡SDK編程指南中解碼卡API相關(guān)介紹。Linux下無硬解功能。通用接口介紹接口功能支持的產(chǎn)品備注NET_DVR_Init初始化SDK全部NET_DVR_Cleanup釋放SDK資源全部NET_DVR_SetConnectTime設置SDK網(wǎng)絡連接超時時間和連接嘗試次數(shù)全部NET_DVR_SetReconnect設置SDK重連功能全部NET_DVR_GetDVRIPByResolveSvr通
7、過解析服務器,獲取設備的動態(tài)IP地址全部NET_DVR_SetDVRMessage注冊接收異常、重連等消息的窗口句柄全部NET_DVR_SetExceptionCallBack_V30注冊接收異常、重連等消息的窗口句柄或回調(diào)函數(shù)全部NET_DVR_GetSDKVersion獲取SDK的版本信息全部NET_DVR_GetSDKBuildVersion獲取SDK的版本號和build信息全部NET_DVR_GetSDKState獲取當前SDK的狀態(tài)信息全部NET_DVR_GetSDKAbility獲取當前SDK的功能信息全部NET_DVR_SetLogToFile啟用SDK寫日志文件全部NET_DV
8、R_GetLastError返回最后操作的錯誤碼全部NET_DVR_GetErrorMsg返回最后操作的錯誤碼信息全部NET_DVR_Login_V30注冊全部NET_DVR_Logout_V30注銷全部編程引導SDK主動注冊模式SDK接口調(diào)用的主要流程其中虛線框的流程是可選部分,不會影響其他流程和模塊的功能使用。按實現(xiàn)功能的不同可以分成十個模塊,實現(xiàn)每個模塊的功能時初始化SDK、用戶注冊設備、注銷設備和釋放SDK資源這4個流程是必不可少的。1) 初始化SDK(NET_DVR_Init):對整個網(wǎng)絡SDK系統(tǒng)的初始化,內(nèi)存預分配等操作。2) 設置連接超時時間(NET_DVR_SetConnec
9、tTime):這部分為可選,用于設置SDK中的網(wǎng)絡連接超時時間,用戶可以根據(jù)自己的需要設置該值。在不調(diào)用此接口設置超時時間的情況下,將采用SDK中的默認值。 3) 設置接收異常消息的回調(diào)函數(shù)(NET_DVR_SetDVRMessage或NET_DVR_SetExceptionCallBack_V30):由于SDK中大部分模塊的功能都是由異步模式實現(xiàn),所以我們提供此接口用于接收預覽、報警、回放、透明通道和語音對講等模塊發(fā)生異常信息。用戶可以在初始化SDK后就設置該回調(diào)函數(shù),在應用層對各個模塊異常消息的接收和處理。 4) 從解析服務器獲得設備的IP地址(NET_DVR_GetDVRIPByReso
10、lveSvr):該接口提供一種在僅知道設備名稱和序列號的情況下,從解析服務器獲得設備IP地址的方法。如:當前設備是通過撥號上網(wǎng)方式獲取到動態(tài)IP地址,而運行了我公司IPServer軟件的服務器即為解析服務器,我們可以通過此接口輸入解析服務器的地址、設備的名稱和序列號等信息查詢該設備的IP地址。IPServer是我公司提供的一款域名解析服務器軟件。 5) 用戶注冊設備(NET_DVR_Login_V30):實現(xiàn)用戶的注冊功能,注冊成功后,返回的用戶ID作為其他功能操作的唯一標識,SDK允許最大注冊用戶數(shù)為512個。就設備而言,V3.0以上版本支持的設備允許有32個注冊用戶名,而且同時最多允許12
11、8個用戶注冊;V3.0以下版本支持的設備允許有16個注冊用戶名,而且同時最多允許128個用戶注冊。6) 預覽模塊:從前端服務器取實時碼流,解碼顯示以及播放控制等功能,同時支持軟解碼和解碼卡解碼。具體流程詳見預覽模塊流程。7) 回放和下載模塊:可以通過按時間和按文件名的方式遠程回放或者下載前端服務器的錄像文件,后續(xù)可以進行解碼或者存儲。同時還支持斷點續(xù)傳功能。具體流程詳見回放和下載模塊流程。8) 參數(shù)配置模塊:設置和獲取前端服務器的參數(shù),主要包括設備參數(shù)、網(wǎng)絡參數(shù)、通道壓縮參數(shù)、串口參數(shù)、報警參數(shù)、異常參數(shù)、交易信息和用戶配置等參數(shù)信息。具體流程詳見參數(shù)配置模塊流程。9) 遠程設備維護模塊:實現(xiàn)
12、關(guān)閉設備、重啟設備、恢復默認值、遠程硬盤格式化、遠程升級和配置文件導入/導出等維護工作。具體流程詳見遠程設備維護模塊流程。10) 語音對講轉(zhuǎn)發(fā)模塊:實現(xiàn)和前端服務器的語音數(shù)據(jù)對講和語音數(shù)據(jù)獲取,音頻編碼格式可以指定。具體流程詳見語音對講轉(zhuǎn)發(fā)模塊流程。11) 報警模塊:處理前端服務器上傳的各種報警信號。報警分為“布防”和“監(jiān)聽”兩種方式,在采用監(jiān)聽方式并且不需要獲取用戶ID的情況下,報警模塊可以無需進行“用戶注冊”操作步驟。具體流程詳見報警模塊流程。12) 透明通道模塊:透明通道是將IP數(shù)據(jù)報文解析后直接發(fā)送到串行口的一種技術(shù)。實際上起到了延伸串行設備控制距離的作用??衫肐P網(wǎng)絡控制多種串行設
13、備,如控制解碼器、矩陣、報警主機、門禁、儀器儀表等串行設備,對用戶來說,只看到點對點傳輸,無須關(guān)心網(wǎng)絡傳輸過程,所以稱為串口透明通道。 SDK提供485和232串口作為透明通道功能,其中要將232串口作為透明通道使用,首先必須在232串口的配置信息(NET_DVR_RS232CFG)中將工作模式選為透明通道,這樣232串口才可作為透明通道使用。具體流程詳見透明通道模塊流程。 13) 云臺控制模塊:實現(xiàn)對云臺的基本操作、預置點、巡航、軌跡和透明云臺的控制。SDK將云臺控制分為兩種模式:一種是通過圖像預覽返回的句柄進行控制;另一種是無預覽限制,通過用戶注冊ID號進行云臺控制。 14) 解碼器功能模
14、塊:實現(xiàn)解碼器設備的配置、解碼控制等功能。SDK支持單路解碼器和多路解碼器,但目前以多路解碼器為主流產(chǎn)品。具體流程詳見多路解碼器功能模塊流程。 15) 智能行為分析功能模塊:實現(xiàn)對智能產(chǎn)品的參數(shù)配置、報警上傳和能力集獲取等功能。具體流程詳見智能行為分析功能模塊流程。 注:本手冊下文提供的代碼都是在VC環(huán)境下編譯的。預覽模塊流程l 實時預覽支持TCP、UDP、RTP、MULTICAST網(wǎng)絡傳輸模式。 l 實時預覽時,DS-80xx、DS-70xx、DS-71xx、DS-72xx、 DS-60xx、DS-61xx系列設備每個通道最多支持6路同時連接,每臺設備最多支持24路同時連接;DS-81xx、
15、DS-71xxHV、72xxHV等系列設備每個通道最多支持6路同時連接,每臺設備最多支持18路同時連接;DS-90xx混合型硬盤錄像機每個通道最多支持6路同時連接,每臺設備最多支持64路同時連接;DS-91xx系列設備每個通道最多支持6路同時連接,每臺設備最多支持64路同時連接;IP設備每個通道最多支持6路同時連接;DS-91xx-ST系列通道連接數(shù)沒有限制,每臺設備最多支持128路同時連接。 預覽和與預覽相關(guān)的模塊流程圖圖中虛線框部分的模塊是與預覽模塊相關(guān),必須在啟動預覽后才能調(diào)用,這些模塊之間是并列的關(guān)系,各自完成相應的功能。l 聲音控制功能主要實現(xiàn)獨占、共享聲音的打開和關(guān)閉;音量的控制。
16、相關(guān)接口有:NET_DVR_OpenSound、NET_DVR_CloseSound、NET_DVR_OpenSoundShare、NET_DVR_CloseSoundShare、NET_DVR_Volume等。l 實時流數(shù)據(jù)捕獲和錄像模塊主要實現(xiàn)數(shù)據(jù)回調(diào)和本地錄像的功能,可以供用戶后續(xù)處理。相關(guān)接口有:NET_DVR_SetRealDataCallBack、NET_DVR_SetStandardDataCallBack、NET_DVR_SaveRealData等。l 抓圖功能主要實現(xiàn)對當前解碼圖像的捕獲,保存格式為BMP。相關(guān)接口有:NET_DVR_CapturePicture。l 云臺控制
17、模塊主要是在開啟預覽的前提下實現(xiàn)對云臺控制的操作功能,包括云臺預置點、巡航、軌跡和透明云臺等。相關(guān)接口有:NET_DVR_PTZControl、NET_DVR_PTZControl_EX、NET_DVR_PTZPreset、NET_DVR_PTZPreset_EX、NET_DVR_PTZCruise、NET_DVR_PTZCruise_EX、NET_DVR_PTZTrack、NET_DVR_PTZTrack_EX、NET_DVR_TransPTZ、NET_DVR_TransPTZ_EX。實時流解碼方式l 方式一:在預覽接口NET_DVR_RealPlay_V30中預覽參數(shù)的播放窗口句柄賦成有效
18、句柄,則由SDK實現(xiàn)解碼功能。在初始化SDK和注冊設備兩步驟后,直接調(diào)用啟動預覽和停止預覽接口。l 方式二:用戶可以通過設置預覽接口NET_DVR_RealPlay_V30中預覽參數(shù)的播放窗口句柄為空值,并通過調(diào)用捕獲數(shù)據(jù)的接口(即設置NET_DVR_RealPlay_V30接口中的回調(diào)函數(shù)或調(diào)用NET_DVR_SetRealDataCallBack、NET_DVR_SetStandardDataCallBack接口),獲取碼流數(shù)據(jù)進行后續(xù)解碼播放處理。下面示例代碼以設置NET_DVR_RealPlay_V30()接口中的回調(diào)為例進行說明。 示例代碼方式一(由SDK實現(xiàn)解碼顯示) #inclu
19、de <stdio.h>#include <iostream>#include "Windows.h"#include "HCNetSDK.h"#include <time.h>using namespace std;void CALLBACK g_ExceptionCallBack(DWORD dwType, LONG lUserID, LONG lHandle, void *pUser) char tempbuf256 = 0; switch(dwType) case EXCEPTION_RECONNECT: /預
20、覽時重連 printf("-reconnect-%dn", time(NULL); break;default: break; void main() /- / 初始化 NET_DVR_Init(); /設置連接時間與重連時間 NET_DVR_SetConnectTime(2000, 1); NET_DVR_SetReconnect(10000, true); /- / 注冊設備 LONG lUserID; NET_DVR_DEVICEINFO_V30 struDeviceInfo; lUserID = NET_DVR_Login_V30("192.0.0.64&
21、quot;, 8000, "admin", "12345", &struDeviceInfo); if (lUserID < 0) printf("Login error, %dn", NET_DVR_GetLastError(); NET_DVR_Cleanup(); return; /- /設置異常消息回調(diào)函數(shù) NET_DVR_SetExceptionCallBack_V30(0, NULL,g_ExceptionCallBack, NULL); /- /啟動預覽并設置回調(diào)數(shù)據(jù)流 LONG lRealPlayHand
22、le; HWND hWnd = GetConsoleWindow(); /獲取窗口句柄 NET_DVR_CLIENTINFO ClientInfo = 0; ClientInfo.hPlayWnd = hWnd; /需要SDK解碼時句柄設為有效值,僅取流不解碼時可設為空 ClientInfo.lChannel = 1; /預覽通道號 ClientInfo.lLinkMode = 0; /最高位(31)為0表示主碼流,為1表示子碼流030位表示連接方式:0TCP方式;1UDP方式;2多播方式;3RTP方式; ClientInfo.sMultiCastIP = NULL; /多播地址,需要多播預覽
23、時配置 BOOL bPreviewBlock = false; /請求碼流過程是否阻塞,0:否,1:是 lRealPlayHandle = NET_DVR_RealPlay_V30(lUserID, &ClientInfo, NULL, NULL, 0); if (lRealPlayHandle < 0) printf("NET_DVR_RealPlay_V30 errorn"); NET_DVR_Logout(lUserID); NET_DVR_Cleanup(); return; /- /關(guān)閉預覽 NET_DVR_StopRealPlay(lRealPla
24、yHandle); /注銷用戶 NET_DVR_Logout(lUserID); /釋放SDK資源 NET_DVR_Cleanup(); return;方式二(由用戶自行處理回調(diào)得到的碼流數(shù)據(jù),此處以軟解顯示為例,代碼中帶有PlayM4_的函數(shù)參見軟解碼庫說明文檔播放器SDK編程指南)#include <stdio.h>#include <iostream>#include "Windows.h"#include "HCNetSDK.h"#include "plaympeg4.h"#include <ti
25、me.h>using namespace std;LONG lPort; /全局的播放庫port號void CALLBACK g_RealDataCallBack_V30(LONG lRealHandle, DWORD dwDataType, BYTE *pBuffer,DWORD dwBufSize,void* dwUser) HWND hWnd=GetConsoleWindow();switch (dwDataType)case NET_DVR_SYSHEAD: /系統(tǒng)頭if (!PlayM4_GetPort(&lPort) /獲取播放庫未使用的通道號break;/m_iPo
26、rt = lPort; /第一次回調(diào)的是系統(tǒng)頭,將獲取的播放庫port號賦值給全局port,下次回調(diào)數(shù)據(jù)時即使用此port號播放if (dwBufSize > 0)if (!PlayM4_SetStreamOpenMode(lPort, STREAME_REALTIME) /設置實時流播放模式break;if (!PlayM4_OpenStream(lPort, pBuffer, dwBufSize, 1024*1024) /打開流接口break;if (!PlayM4_Play(lPort, hWnd) /播放開始break;case NET_DVR_STREAMDATA: /碼流數(shù)據(jù)
27、if (dwBufSize > 0 && lPort != -1)if (!PlayM4_InputData(lPort, pBuffer, dwBufSize)break; void CALLBACK g_ExceptionCallBack(DWORD dwType, LONG lUserID, LONG lHandle, void *pUser) char tempbuf256 = 0; switch(dwType) case EXCEPTION_RECONNECT: /預覽時重連 printf("-reconnect-%dn", time(NUL
28、L); break;default: break; void main() /- / 初始化 NET_DVR_Init(); /設置連接時間與重連時間 NET_DVR_SetConnectTime(2000, 1); NET_DVR_SetReconnect(10000, true); /- / 注冊設備 LONG lUserID; NET_DVR_DEVICEINFO_V30 struDeviceInfo; lUserID = NET_DVR_Login_V30("172.0.0.100", 8000, "admin", "12345&quo
29、t;, &struDeviceInfo); if (lUserID < 0) printf("Login error, %dn", NET_DVR_GetLastError(); NET_DVR_Cleanup(); return; /- /設置異常消息回調(diào)函數(shù) NET_DVR_SetExceptionCallBack_V30(0, NULL,g_ExceptionCallBack, NULL); /- /啟動預覽并設置回調(diào)數(shù)據(jù)流 LONG lRealPlayHandle; NET_DVR_CLIENTINFO ClientInfo = 0; ClientIn
30、fo.hPlayWnd = NULL; /需要SDK解碼時句柄設為有效值,僅取流不解碼時可設為空 ClientInfo.lChannel = 1; /預覽通道號 ClientInfo.lLinkMode = 0; /最高位(31)為0表示主碼流,為1表示子碼流030位表示連接方式:0TCP方式;1UDP方式;2多播方式;3RTP方式; ClientInfo.sMultiCastIP = NULL; /多播地址,需要多播預覽時配置 BOOL bPreviewBlock = false; /請求碼流過程是否阻塞,0:否,1:是 lRealPlayHandle = NET_DVR_RealPlay_
31、V30(lUserID, &ClientInfo, g_RealDataCallBack_V30, NULL, 0); if (lRealPlayHandle < 0) printf("NET_DVR_RealPlay_V30 errorn"); NET_DVR_Logout(lUserID); NET_DVR_Cleanup(); return; /- /關(guān)閉預覽 NET_DVR_StopRealPlay(lRealPlayHandle); /注銷用戶 NET_DVR_Logout_V30(lUserID); NET_DVR_Cleanup(); retur
32、n;回放和下載模塊流程l 按文件回放或下載需要通過查找錄像文件功能先獲取文件信息(相關(guān)接口NET_DVR_FindFile_V30、NET_DVR_FindNextFile_V30),然后根據(jù)獲取到的文件名開始回放或下載(相關(guān)接口NET_DVR_PlayBackByName、NET_DVR_GetFileByName),特別提醒在調(diào)用了回放或下載的接口后,還必須調(diào)用控制接口(NET_DVR_PlayBackControl)的開始播放命令(NET_DVR_PLAYSTART)。l 按時間回放或下載文件時,用戶可以無需調(diào)用查找錄像文件的相關(guān)接口,只要在接口中指定開始和結(jié)束時間,調(diào)用回放或下載接口(
33、相關(guān)接口NET_DVR_PlayBackByTime、NET_DVR_GetFileByTime)后,還必須調(diào)用控制接口(NET_DVR_PlayBackControl)的開始播放命令(NET_DVR_PLAYSTART)。此時,將按照指定時間范圍內(nèi)最近的有錄像的時間段開始回放或下載。用戶也可以通過調(diào)用查找錄像文件的相關(guān)接口,獲取文件的開始和結(jié)束時間后,按這個時間范圍指定回放或下載接口中的時間參數(shù),最后還必須調(diào)用控制接口(NET_DVR_PlayBackControl)的開始播放命令(NET_DVR_PLAYSTART)。l Linux下,按文件回放和按時間回放時,若回放的窗口句柄不為NULL
34、(即需要SDK解碼顯示),需要調(diào)用初始化窗口接口(NET_DVR_DrawAreaInit)進行SDL窗口的初始化才能正常的解碼顯示,在停止回放時,需要調(diào)用釋放窗口資源接口(NET_DVR_DrawAreaRelease)釋放窗口資源。 示例代碼示例一:查找錄像文件并下載#include <stdio.h>#include <iostream>#include "Windows.h"#include "HCNetSDK.h"using namespace std;int saveRecordFile(int userId,char
35、 * srcfile,char * destfile) int bRes = 1; int hPlayback = 0; if( (hPlayback = NET_DVR_GetFileByName(userId, srcfile, destfile) < 0 ) printf( "GetFileByName failed. error%dn", NET_DVR_GetLastError(); bRes= -1; return bRes; if(!NET_DVR_PlayBackControl(hPlayback, NET_DVR_PLAYSTART, 0, NULL
36、) printf("play back control failed %dn",NET_DVR_GetLastError(); bRes=-1; return bRes; int nPos = 0; for(nPos = 0; nPos < 100&&nPos>=0; nPos = NET_DVR_GetDownloadPos(hPlayback) Sleep(5000); /millisecond printf("have got %dn", nPos); if(!NET_DVR_StopGetFile(hPlayback)
37、 printf("failed to stop get file %dn",NET_DVR_GetLastError(); bRes = -1; return bRes; printf("%sn",srcfile); if(nPos100) printf("download err %dn",NET_DVR_GetLastError(); bRes=-1; return bRes; else return 0; void main() /- / 初始化 NET_DVR_Init(); /設置連接時間與重連時間 NET_DVR_SetC
38、onnectTime(2000, 1); NET_DVR_SetReconnect(10000, true); /- / 注冊設備 LONG lUserID; NET_DVR_DEVICEINFO_V30 struDeviceInfo; lUserID = NET_DVR_Login_V30("192.0.0.64", 8000, "admin", "12345", &struDeviceInfo); if (lUserID < 0) printf("Login error, %dn", NET_DV
39、R_GetLastError(); NET_DVR_Cleanup(); return; NET_DVR_FILECOND struFileCond; struFileCond.dwFileType = 0xFF; struFileCond.lChannel = 1; struFileCond.dwIsLocked = 0xFF; struFileCond.dwUseCardNo = 0; struFileCond.struStartTime.dwYear = 2011; struFileCond.struStartTime.dwMonth = 3; struFileCond.struStar
40、tTime.dwDay = 1; struFileCond.struStartTime.dwHour = 10; struFileCond.struStartTime.dwMinute = 6; struFileCond.struStartTime.dwSecond =50; struFileCond.struStopTime.dwYear = 2011; struFileCond.struStopTime.dwMonth = 3; struFileCond.struStopTime.dwDay = 1; struFileCond.struStopTime.dwHour = 11; struF
41、ileCond.struStopTime.dwMinute = 7; struFileCond.struStopTime.dwSecond = 0; /- /查找錄像文件 int lFindHandle = NET_DVR_FindFile_V30(lUserID, &struFileCond); if(lFindHandle < 0) printf("find file fail,last error %dn",NET_DVR_GetLastError(); return; NET_DVR_FINDDATA_V30 struFileData; while(t
42、rue) int result = NET_DVR_FindNextFile_V30(lFindHandle, &struFileData); if(result = NET_DVR_ISFINDING) continue; else if(result = NET_DVR_FILE_SUCCESS) char strFileName256 = 0; sprintf(strFileName, "./%s", struFileData.sFileName); saveRecordFile(lUserID, struFileData.sFileName, strFile
43、Name); break; else if(result = NET_DVR_FILE_NOFIND | result = NET_DVR_NOMOREFILE) break; else printf("find file fail for illegal get file state"); break; /停止查找 if(lFindHandle > 0) NET_DVR_FindClose_V30(lFindHandle); /注銷用戶 NET_DVR_Logout(lUserID); /釋放SDK資源 NET_DVR_Cleanup(); return;示例二:按
44、時間播放錄像文件#include <stdio.h>#include <iostream>#include "Windows.h"#include "HCNetSDK.h"using namespace std;void main() /- / 初始化 NET_DVR_Init(); /設置連接時間與重連時間 NET_DVR_SetConnectTime(2000, 1); NET_DVR_SetReconnect(10000, true); /- / 注冊設備 LONG lUserID; NET_DVR_DEVICEINFO_V
45、30 struDeviceInfo; lUserID = NET_DVR_Login_V30("192.0.0.64", 8000, "admin", "12345", &struDeviceInfo); if (lUserID < 0) printf("Login error, %dn", NET_DVR_GetLastError(); NET_DVR_Cleanup(); return; NET_DVR_TIME struStartTime, struStopTime; struStartTime
46、.dwYear = 2011; struStartTime.dwMonth = 3; struStartTime.dwDay = 1; struStartTime.dwHour = 9; struStartTime.dwMinute = 0; struStartTime.dwSecond =0; struStopTime.dwYear = 2011; struStopTime.dwMonth = 3; struStopTime.dwDay = 1; struStopTime.dwHour = 10; struStopTime.dwMinute = 7; struStopTime.dwSecon
47、d = 0; HWND hWnd = GetConsoleWindow(); /獲取窗口句柄 /- /按時間回放 int hPlayback; hPlayback = NET_DVR_PlayBackByTime(lUserID, 1, &struStartTime, &struStopTime, hWnd); if(hPlayback < 0) printf("NET_DVR_GetFileByTime fail,last error %dn",NET_DVR_GetLastError(); NET_DVR_Logout(lUserID); NET_
48、DVR_Cleanup(); return; /- /開始 if(!NET_DVR_PlayBackControl(hPlayback, NET_DVR_PLAYSTART, 0, NULL) printf("play back control failed %dn",NET_DVR_GetLastError(); NET_DVR_Logout(lUserID); NET_DVR_Cleanup(); return; Sleep(15000); /millisecond if(!NET_DVR_StopPlayBack(hPlayback) printf("fai
49、led to stop file %dn",NET_DVR_GetLastError(); NET_DVR_Logout(lUserID); NET_DVR_Cleanup(); return; /注銷用戶 NET_DVR_Logout(lUserID); /釋放SDK資源 NET_DVR_Cleanup(); return;示例三:按時間下載錄像文件#include <stdio.h>#include <iostream>#include "Windows.h"#include "HCNetSDK.h"using na
50、mespace std;void main() /- / 初始化 NET_DVR_Init(); /設置連接時間與重連時間 NET_DVR_SetConnectTime(2000, 1); NET_DVR_SetReconnect(10000, true); /- / 注冊設備 LONG lUserID; NET_DVR_DEVICEINFO_V30 struDeviceInfo; lUserID = NET_DVR_Login_V30("192.0.0.64", 8000, "admin", "12345", &struDeviceInfo); if (lUserID < 0) printf("Login error, %dn", NET_DVR_GetLastError(); NET_DVR_Cleanup(); retur
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 變更發(fā)電機 環(huán)評報告表
- 冰箱產(chǎn)品購買合同范本
- 2023-2029年中國藥劑輔料行業(yè)競爭格局及市場發(fā)展?jié)摿︻A測報告
- 110KV變電站安裝工程三級自檢報告
- 合同能源管理EMC項目可行性研究報告
- 中國易撲欣項目投資可行性研究報告
- 針紡織棉項目可行性研究報告
- 藝人出道合同范本
- 中國純電動專用車市場調(diào)查研究及行業(yè)投資潛力預測報告
- 2021-2026年中國折疊式扳手套件行業(yè)市場全景調(diào)研及投資規(guī)劃建議報告
- 七年級歷史第5課--安史之亂與唐朝衰亡ppt課件
- 戶外LED顯示屏設計施工方案.docx
- 上崗證WORD模板
- 凈土資糧——信愿行(05)第三講安住在彌陀大愿之海
- 化工車間開停車風險分析
- 鈑金k因子和折彎扣除參照表
- 市政小三線施工方案(共22頁)
- 靜壓樁機、鉆孔灌注樁、沉槽機CAD圖形
- 易經(jīng)(拼音版)
- 紅旗優(yōu)質(zhì)服務窗口先進事跡材料
- 總監(jiān)辦標準化管理規(guī)定
評論
0/150
提交評論