您当前的位置: 首页 >  unity

十幺卜入

暂无认证

  • 4浏览

    0关注

    119博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

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

十幺卜入 发布时间:2021-06-17 10:57:36 ,浏览量:4

前言

需求如题,我们通过官方提供的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组件并监听OnPointerDown 和OnPointerUp事件。

登出
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()方法获取错误码,参照错误码表即可查找出问题:

在这里插入图片描述

关注
打赏
1663314737
查看更多评论
立即登录/注册

微信扫码登录

0.0909s