海康威视SDK控制台程序consoleDemo

您所在的位置:网站首页 云台控制台 海康威视SDK控制台程序consoleDemo

海康威视SDK控制台程序consoleDemo

2024-07-13 03:18| 来源: 网络整理| 查看: 265

陈拓 2021/08/10-2020/08/10

1. 下载海康威视SDK

见《海康威视SDK实例QtDemo显示NVR视频窗口(Linux+Qt)》

https://zhuanlan.zhihu.com/p/395178052

https://blog.csdn.net/chentuo2000/article/details/119299045

2. 开发环境

我的开发环境:PC机(Win10)+工控机(Ubuntu)+海康NVR+海康摄像头

lsb_release -a

Win10操作Linux见《Win10命令窗口的SSH和SFTP操作》

https://zhuanlan.zhihu.com/p/403558589

https://blog.csdn.net/chentuo2000/article/details/119918637

和《Ubuntu18.04和Win10共享文件夹》

https://zhuanlan.zhihu.com/p/397913390

https://blog.csdn.net/chentuo2000/article/details/119539502

3. 复制consoleDemo到Ubuntu。

如果所有者和组不是当前登录用户,要改变所有者和组:

sudo chown -R ccdc:ccdc consoleDemo/

查看consoleDemo目录

4. 复制库文件 查看readme.txt

在构建源代码之前:

请将SDK/lib目录下所有的库文件(.so)拷贝到consoleDemo/Linux64/lib进入目录consoleDemo/Linux64/proj,执行make命令。 复制库文件

安装tree命令

查看目录结构

tree linux64/

5. 编译Demo

进入目录consoleDemo/Linux64/proj

编译

执行make命令

在lib目录下生成了可执行文件sdkTest:

为方便测试我们修改一下Makefile文件。

将EXE = ../lib/sdkTest改为:EXE = ./hkConsole

再编译make

这样生成的可执行文件就在本地了:

6. 连接NVR

见《Ubuntu18.04网络配置》

https://zhuanlan.zhihu.com/p/398167001

https://blog.csdn.net/chentuo2000/article/details/119564109

设备可以是NVR或者DVR,我用NVR。

我的NVR参数

我的摄像头参数

海康威视DS-IPC-B12-I(4mm)

7. 修改程序代码

将连接参数设置成我们自己的。

C++程序

编辑consolemain.cpp

修改网络连接参数:

nano src/consoleMain.cpp

如图将下面3句:

改为

找到其他要修改的地方:

grep -r "10.8.98.80" src

如同修改consolemain.cpp一样,一一修改。

nano src/Voice.cpp

nano src/GetStream.cpp

nano src/Alarm.cpp

nano src/ConfigParams.cpp

nano src/CapPicture.cpp

nano src/playback.cpp

nano src/playback.cpp

再编译make。

8. 运行Demo 运行

./hkConsole

程序可以运行了。

登录设备:Login dev 192.168.137.2:8000.

界面上有太多的调试日志信息,可以改变信息显示等级,我的修改如下:

修改consoleMain.cpp

将NET_DVR_SetLogToFile(3, "./sdkLog");中的3改为0,保存。

日志的等级(默认为0):0-表示关闭日志,1-表示只输出ERROR错误日志,2-输出ERROR错误信息和DEBUG调试信息,3-输出ERROR错误信息、DEBUG调试信息和INFO普通信息等所有信息。你可以根据自己的需要设置日志等级。

编译

警告,在"./sdkLog"前面加上类型。

再编译就没有警告了。

运行

画面干净。

程序虽然可以运行了,但是所列出的功能基本上都不能用,需要根据设备的具体情况修改。

9. 修改连接

例子程序中多个功能程序单独初始化连接设备,下面我们把初始化放在主程序中,以后只要将用户ID作为参数传递到各个功能模块程序就可以了。

修改consoleMain.cpp #include #include #include "GetStream.h" #include "public.h" #include "ConfigParams.h" #include "Alarm.h" #include "CapPicture.h" #include "playback.h" #include "Voice.h" #include "tool.h" #include using namespace std; void Demo_SDK_Version(); void Demo_SDK_Ability(); char * iIP = (char *)"192.168.137.2"; WORD wPort = 8000; char * iUserName = (char *)"admin"; char * iPassword = (char *)"xxxxxxxx"; int lUserID = -1; // 初始化 int init() { NET_DVR_Init(); Demo_SDK_Version(); // 显示SDK版本 NET_DVR_SetLogToFile(0, (char*)"./sdkLog"); printf("\nIP %s\n", iIP); printf("Port %d\n", wPort); printf("UserName %s\n", iUserName); printf("Password %s\n", iPassword); //Login device NET_DVR_USER_LOGIN_INFO struLoginInfo = {0}; NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = {0}; struLoginInfo.bUseAsynLogin = false; // false=0,同步登录 struLoginInfo.wPort = wPort; memcpy(struLoginInfo.sDeviceAddress, iIP, NET_DVR_DEV_ADDRESS_MAX_LEN); memcpy(struLoginInfo.sUserName, iUserName, NAME_LEN); memcpy(struLoginInfo.sPassword, iPassword, NAME_LEN); lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40); //接口返回-1表示登录失败,其他值表示返回的用户ID值。用户ID具有唯一性,后续对设备的操作都需要通过此ID实现。 if (lUserID < 0) { printf("pyd---Login error, %d\n", NET_DVR_GetLastError()); if(NET_DVR_GetLastError() == 7) { printf("连接设备失败。设备不在线或网络原因引起的连接超时等。\n"); } NET_DVR_Cleanup(); return HPR_ERROR; } cout


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3