示例:新建一个QT 控制台项目在pro 右键导入库->外部库 HCNetSDK.lib ,HCCore.lib,
右键在添加头文件HCNetSDK.h如下
hiksdk.pro
QT -= gui
CONFIG += c++17 console
CONFIG -= app_bundle
SOURCES +=
main.cpp
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
win32: LIBS += -L$$PWD/./ -lHCNetSDK
INCLUDEPATH += $$PWD/.
DEPENDPATH += $$PWD/.
HEADERS +=
HCNetSDK.h
win32: LIBS += -L$$PWD/./ -lHCCore
INCLUDEPATH += $$PWD/.
DEPENDPATH += $$PWD/.
main.CPP //注意在GetModuleHandle(L"kernel32");kernel32windows 10前加上L #include#include "Windows.h" #include "HCNetSDK.h" #include #include #include #include typedef HWND(WINAPI* PROCGETCONSOLEWINDOW)();//声明HWND PROCGETCONSOLEWINDOW GetConsoleWindowAPI; using namespace std; void CALLBACK g_ExceptionCallBack(DWORD dwType, LONG lUserID, LONG lHandle, void *pUser) { char tempbuf[256] = {0}; switch(dwType) { case EXCEPTION_RECONNECT: //预览时重连 printf("----------reconnect--------%dn", time(NULL)); break; default: break; } } int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); NET_DVR_Init();//sdk 初始化 NET_DVR_SetConnectTime(2000, 1); NET_DVR_SetReconnect(10000, true); //--------------------------------------- //设置异常消息回调函数 NET_DVR_SetExceptionCallBack_V30(0, NULL,g_ExceptionCallBack, NULL); //--------------------------------------- // 获取控制台窗口句柄 HMODULE hKernel32 = GetModuleHandle(L"kernel32"); GetConsoleWindowAPI = (PROCGETCONSOLEWINDOW)GetProcAddress(hKernel32,"GetConsoleWindow"); //--------------------------------------- // 注册设备 LONG lUserID; //登录参数,包括设备地址、登录用户、密码等 NET_DVR_USER_LOGIN_INFO struLoginInfo = {0}; struLoginInfo.bUseAsynLogin = 0; //同步登录方式 strcpy(struLoginInfo.sDeviceAddress, "10.13.35.229"); //设备IP地址 struLoginInfo.wPort = 8000; //设备服务端口 strcpy(struLoginInfo.sUserName, "admin"); //设备登录用户名 strcpy(struLoginInfo.sPassword, "admin1234"); //设备登录密码 //设备信息, 输出参数 NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = {0}; lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40); if (lUserID < 0) { printf("Login failed, error code: %dn", NET_DVR_GetLastError()); NET_DVR_Cleanup(); return 0; } //--------------------------------------- //启动预览并设置回调数据流 LONG lRealPlayHandle; HWND hWnd = GetConsoleWindowAPI(); //获取窗口句柄 NET_DVR_PREVIEWINFO struPlayInfo = {0}; struPlayInfo.hPlayWnd = hWnd; //需要SDK解码时句柄设为有效值,仅取流不解码时可设为空 struPlayInfo.lChannel = 1; //预览通道号 struPlayInfo.dwStreamType = 0; //0-主码流,1-子码流,2-码流3,3-码流4,以此类推 struPlayInfo.dwLinkMode = 0; //0- TCP方式,1- UDP方式,2- 多播方式,3- RTP方式,4-RTP/RTSP,5-RSTP/HTTP struPlayInfo.bBlocked = 1; //0- 非阻塞取流,1- 阻塞取流 lRealPlayHandle = NET_DVR_RealPlay_V40(lUserID, &struPlayInfo, NULL, NULL); if (lRealPlayHandle < 0) { printf("NET_DVR_RealPlay_V40 errorn"); NET_DVR_Logout(lUserID); NET_DVR_Cleanup(); return 0; } Sleep(10000); //--------------------------------------- //关闭预览 NET_DVR_StopRealPlay(lRealPlayHandle); //注销用户 NET_DVR_Logout(lUserID); //释放SDK资源 NET_DVR_Cleanup(); return a.exec(); }
海康6.12022.4.12SDK示例及win10SDK官方说明文档-C++文档类资源-CSDN下载



