Unity3d C# 接入海康威视摄像头SDK实现接口控制功能(如:控制云台)

前言

需求如题,我们通过官方提供的SDK的接口,实现这些功能,只要参照提供的demo和说明文档实现的过程还是比较方便简单的。

准备

硬件搭建

摄像头的搭建这个自行完成,如果没有摄像头,可能后续的就没法功能验证了,这一步需要获取IP、端口、用户名和密码等。

SDK下载

下载地址如下:
https://open.hikvision.com/download/5cda567cf47ae80dd41a54b3?type=10

请自行前往下载

查看Demo

示例在“\Demo示例\3- C# 开发示例”目录下,虽然不是Unity3d工程(应该是Visual Studio),但是可以打开参考一下他的接入。它将所有的接口整理在了CHCNetSDK类里,只需要通过这个类调用这些接口即可。

工程准备

Unity3d的工程下添加dll
CHCNetSDK.cs添加至工程;
/库文件/HCNetSDKCom文件夹必须加载到工程,放置Plugins文件夹下;
将库文件夹下的所有dll文件添加到Plugins文件夹下(如果知道用途可以自行删减)。

开发

流程图如下:
在这里插入图片描述

初始化

bool m_SDKInited = CHCNetSDK.NET_DVR_Init();
if (m_SDKInited)
{
    
    
CHCNetSDK.NET_DVR_SetLogToFile(3, "C:/SdkLogUnity/", true);
    CHCNetSDK.NET_DVR_SetConnectTime(2000, 1); //连接时间与重连时间
    CHCNetSDK.NET_DVR_SetReconnect(10000, 1);
    Debug.Log("初始化成功!");
}

直接调用了CHCNetSDK.NET_DVR_Init(),成功后进行了一些设置。

登录

CHCNetSDK.NET_DVR_DEVICEINFO_V30 DeviceInfo = new CHCNetSDK.NET_DVR_DEVICEINFO_V30();
Int m_userId = CHCNetSDK.NET_DVR_Login_V30(ip, port, account, password, ref DeviceInfo);
if (m_userId > -1)
{
    
    
    Debug.Log("登录成功" + m_userId); 
}
else
{
    
    
    Debug.LogError("登录失败!错误代码:" + CHCNetSDK.NET_DVR_GetLastError()); 
}

登录的参数就是硬件搭建的相关参数。

云台控制

我们选用如下接口:

public static extern bool NET_DVR_PTZControlWithSpeed_Other(int lUserID, int lChannel, uint dwPTZCommand, uint dwStop, uint dwSpeed);

这里的参数:
lUserID 是登录返回的用户ID;
lChannel 给默认1
dwPTZCommand 是云台命令,在说明文档中有详细说明:

在这里插入图片描述

这里参考上图对应值和操作传参即可。
dwStop 云台停止动作或开始动作:0-开始;1-停止 ;
dwSpeed 云台控制的速度,用户按不同解码器的速度控制值设置。取值范围[1,7]。

这里特别注意的是dwStop,我们的按钮在按下后传0,抬起后传1才能是正常功能,而按钮的组件不能使用button了,使用EventTrigger组件并监听OnPointerDownOnPointerUp事件。

登出

if (CHCNetSDK.NET_DVR_Logout(m_userId))
{
    
    
     m_userId = -1;
     Debug.Log("监控退出成功");
}
else
{
    
     //退出失败
}

释放

if (CHCNetSDK.NET_DVR_Cleanup()) 
     Debug.Log("摄像头SDK释放成功!");
else
     Debug.Log("摄像头SDK释放失败:" + CHCNetSDK.NET_DVR_GetLastError());

结语

按如上的流程进行功能接入还是比较简单的,可能部分功能在部分设备上不支持,最好多打log,异常时通过 CHCNetSDK.NET_DVR_GetLastError()方法获取错误码,参照错误码表即可查找出问题:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_33789001/article/details/117985359#comments_21974164