海康摄像头SDK在Linux、windows下的兼容问题
2020-12-22 13:29
标签:pointer splay triggers error limits row 命令执行 通道数 lex 最近一直在做人脸识别相关的应用。 主要就是使用海康的摄像头抓拍、录制视频,使用虹软的sdk进行人脸识别,使用jna调用这些sdk。 海康的sdk在使用时遭遇了很多问题,主要问题就是window下开发,Linux下部署,但是海康在Linux、win下的sdk并不一致,导致出现在win上开发运行好好的,Linux下部署时却不行了。 解决了这些问题后,迷惑的又出现了一个问题: 同样配置(cpu都一样)、同样系统(centos 7.8)的机器,只是厂家不一样,但是其中一个机器可以布防海康摄像头,另一个就不行,懵逼了。 写此文章一方面是解决一些后来的兄弟们可能会碰到的问题,一方面是看看有没有兄弟们碰到过这个问题,怎么解决的。 使用海康sdk最重要的是sdk路径问题。 但是有个需要注意的点: 海康sdk在win、Linux下的sdk名称不一致 配置文件: windows下比较简单,代码加载时添加路径就行了。 String sdkHome = "F:\home\dll\hk-win\"; String sdkName = CacheUtil.get("hksdk.name.win"); Linux代码加上路径则没有用,需要将官网下载的.so文件放入Linux的配置文件中。 上传dll文件至 写了个脚本,也可以单独拿出来执行 为什么要创建这么一个接口,因为海康这个SDK在win、Linux下继承的类不是同一个。 可以看到上面这个接口继承了一个 而win下的sdk类则不只需要继承 但是Linux则不能继承 注册布防后需要有个回调函数进行操作,可以在这里得到摄像头抓拍的图片后进行业务操作。 不再另外说明了,需要说的都在注释里。 流程就是初始化SDK、注册登录、获取摄像头句柄、布防监控、注册回调函数。 人脸识别我就写在回调函数中。 如果摄像头掉线了,就退出登录 这里好像有点问题,如果网络中断后又重连怎么办?这里还没测试,回头应该要优化下。 还是开头那个问题 同样配置(cpu都一样)、同样系统(centos 7.8)的机器,只是厂家不一样,但是其中一个机器可以布防海康摄像头,另一个就不行,懵逼了。 写此文章一方面是解决一些后来的兄弟们可能会碰到的问题,一方面是看看有没有兄弟们碰到过这个问题,怎么解决的。 错误如下 唉! 海康摄像头SDK在Linux、windows下的兼容问题 标签:pointer splay triggers error limits row 命令执行 通道数 lex 原文地址:https://www.cnblogs.com/yaomaomao/p/13640541.html零、前言
一、环境依赖
# 海康windows的SDK name
hksdk.name.win=HCNetSDK
# 海康Linux的SDK name
hksdk.name.linux=hcnetsdk
1.1 win
HCNetSDKI INSTANCE = (HCNetSDKI) Native.loadLibrary(sdkHome + "HCNetSDK",
HCNetSDKI.class);
1.2 linux
HkSdkLinux INSTANCE = (HkSdkLinux) Native.loadLibrary("hcnetsdk",
HkSdkLinux.class);
/home/deploy/dll/hk-linux
下。vim loadDll.sh
#!/bin/bash
echo ‘export LD_LIBRAY_PATH=$LD_LIBRAY_PATH:/home/deploy/dll/hk-linux:/home/deploy/dll/hk-linux/HCNetSDKCom‘ >> /etc/profile
source /etc/profile
cat /etc/profile
echo ‘/home/deploy/dll/hk-linux‘ >> /etc/ld.so.conf
echo ‘/home/deploy/dll/hk-linux/HCNetSDKCom‘ >> /etc/ld.so.conf
ldconfig
cat /etc/ld.so.conf
chmod +x *.sh
./loadDll.sh
1.3 jna依赖
二、创建海康Linux、win下的sdk调用方法
2.1 创建sdk接口
import com.sun.jna.Library;
/**
* 为了海康win、Linux的整合写的接口类
*/
public interface IHkSdkInterface extends Library {
// 初始化sdk
boolean NET_DVR_Init();
// 设置连接时间与重连时间
boolean NET_DVR_SetConnectTime(int i, int i1);
boolean NET_DVR_SetReconnect(int i, boolean b);
// 登录接口
int NET_DVR_Login_V40(HCNetSDKI.NET_DVR_USER_LOGIN_INFO m_strLoginInfo, HCNetSDKI.NET_DVR_DEVICEINFO_V40 m_strDeviceInfo);
// 获取错误号
int NET_DVR_GetLastError();
// 回调服务
void NET_DVR_SetDVRMessageCallBack_V31(IMSGCallBackInterface msgCallBack, Object o);
// 布防监控
int NET_DVR_SetupAlarmChan_V41(int lUserID, ISetupAlarmInterface struAlarmParam);
// 布防撤销
boolean NET_DVR_CloseAlarmChan_V30(int handle);
// 退出
boolean NET_DVR_Logout(int userId);
// 释放sdk
boolean NET_DVR_Cleanup();
}
Library
接口。Library
,还要继承StdCallLibrary
,如下public interface HCNetSDKI extends IHkSdkInterface, StdCallLibrary {
……
}
StdCallLibrary
,否则会报错。2.2 创建抓拍回调接口
mport com.sun.jna.Callback;
import com.sun.jna.Pointer;
/**
* 为海康win、Linux的sdk布防回调所使用
* date:2020-08-25
* author:yaowei
*/
public interface IMSGCallBackInterface extends Callback {
public boolean invoke(int lCommand,IDvrAlarmer pAlarmer, Pointer pAlarmInfo, int dwBufLen, Pointer pUser);
}
2.3 创建布防接口
/**
* 为了海康win、linux sdk布防使用
*/
public class ISetupAlarmInterface extends Structure {
public int dwSize;
public byte byLevel; //布防优先级,0-一等级(高),1-二等级(中),2-三等级(低)
public byte byAlarmInfoType; //上传报警信息类型(抓拍机支持),0-老报警信息(NET_DVR_PLATE_RESULT),1-新报警信息(NET_ITS_PLATE_RESULT)2012-9-28
public byte byRetAlarmTypeV40; //0--返回NET_DVR_ALARMINFO_V30或NET_DVR_ALARMINFO, 1--设备支持NET_DVR_ALARMINFO_V40则返回NET_DVR_ALARMINFO_V40,不支持则返回NET_DVR_ALARMINFO_V30或NET_DVR_ALARMINFO
public byte byRetDevInfoVersion; //CVR上传报警信息回调结构体版本号 0-COMM_ALARM_DEVICE, 1-COMM_ALARM_DEVICE_V40
public byte byRetVQDAlarmType; //VQD报警上传类型,0-上传报报警NET_DVR_VQD_DIAGNOSE_INFO,1-上传报警NET_DVR_VQD_ALARM
public byte byFaceAlarmDetection;
public byte bySupport;
public byte byBrokenNetHttp;
public short wTaskNo; //任务处理号 和 (上传数据NET_DVR_VEHICLE_RECOG_RESULT中的字段dwTaskNo对应 同时 下发任务结构 NET_DVR_VEHICLE_RECOG_COND中的字段dwTaskNo对应)
public byte byDeployType; //布防类型:0-客户端布防,1-实时布防
public byte[] byRes1 = new byte[3];
public byte byAlarmTypeURL;//bit0-表示人脸抓拍报警上传(INTER_FACESNAP_RESULT);0-表示二进制传输,1-表示URL传输(设备支持的情况下,设备支持能力根据具体报警能力集判断,同时设备需要支持URL的相关服务,当前是”云存储“)
public byte byCustomCtrl;//Bit0- 表示支持副驾驶人脸子图上传: 0-不上传,1-上传,(注:只在公司内部8600/8200等平台开放)
}
2.4 win SDK
//SDK接口说明,HCNetSDK.dll
public interface HCNetSDKI extends IHkSdkInterface, StdCallLibrary {
// String DLL_DIR = "F:\\home\\dll\\hk-win" + File.separator;
String DLL_DIR = CacheUtil.getHkSdkHome() ;
// sdk加载路径
String sdk = DLL_DIR + CacheUtil.getHkSdkName();
HCNetSDKI INSTANCE = (HCNetSDKI) Native.loadLibrary(sdk,
HCNetSDKI.class);
……
代码太长,复制海康sdk就行了
}
2.5 Linux SDK
//SDK接口说明,HCNetSDK.so
public interface HkSdkLinux extends IHkSdkInterface {
HkSdkLinux INSTANCE = (HkSdkLinux) Native.loadLibrary("hcnetsdk",
HkSdkLinux.class);
……
}
2.6 回调函数
@Service
public class MSGCallBack implements IMSGCallBackInterface {
@Override
public boolean invoke(int lCommand, IDvrAlarmer pAlarmer, Pointer pAlarmInfo, int dwBufLen, Pointer pUser)
{
AlarmDataHandle(lCommand, pAlarmer, pAlarmInfo, dwBufLen, pUser);
return true;
}
public void AlarmDataHandle(int lCommand, IDvrAlarmer pAlarmer, Pointer pAlarmInfo, int dwBufLen, Pointer pUser)
{
//lCommand是传的报警类型
switch (lCommand)
{
case HCNetSDKI.COMM_UPLOAD_FACESNAP_RESULT:
//实时人脸抓拍上传
HCNetSDKI.NET_VCA_FACESNAP_RESULT strFaceSnapInfo = new HCNetSDKI.NET_VCA_FACESNAP_RESULT();
strFaceSnapInfo.write();
Pointer pFaceSnapInfo = strFaceSnapInfo.getPointer();
pFaceSnapInfo.write(0, pAlarmInfo.getByteArray(0, strFaceSnapInfo.size()), 0, strFaceSnapInfo.size());
strFaceSnapInfo.read();
sAlarmType = sAlarmType + ":人脸抓拍上传,人脸评分:" + strFaceSnapInfo.dwFaceScore + ",年龄段:" + strFaceSnapInfo.struFeature.byAgeGroup + ",性别:" + strFaceSnapInfo.struFeature.bySex;
newRow[0] = imgName;
//报警类型
newRow[1] = sAlarmType;
//报警设备IP地址
sIP = new String(strFaceSnapInfo.struDevInfo.struDevIP.sIpV4).split("\0", 2);
newRow[2] = sIP[0];
System.out.println( "today: " + newRow[0] + ",报警类型:" + newRow[1] + ",sIP:" + sIP);
……
break;
default:
newRow[0] = dateFormat.format(today);
//报警类型
newRow[1] = sAlarmType;
//报警设备IP地址
sIP = new String(pAlarmer.sDeviceIP).split("\0", 2);
newRow[2] = sIP[0];
break;
}
// 没有拍到照片
if (StringUtil.isNullOrNone(smallImgPath)) {
return;
}
// 比对人脸,开门
……
}
}
三、注册、登录、布防
3.1 创建海康sdk的服务类
@Service
public class HkFaceSdk {
private static final org.slf4j.Logger Logger = LoggerFactory.getLogger(HkFaceSdk.class);
private IHkSdkInterface hCNetSDK;// 海康sdk
// private IMSGCallBackInterface msgCallBack;// 布防监控回调函数
@Autowired
public MSGCallBack msgCallBack;//报警回调函数实现
@Value("${client.heart.timeout}")
int heartTime;
// 心跳文件夹
@Value("${tcp.heart.folder}")
String heartFolder;
// 心跳文件后缀
@Value("${tcp.heart.fix}")
String heartFix;
@Autowired
RedisService redisService;
public static void main(String[] args) {
HkFaceSdk faceDemo = new HkFaceSdk();
faceDemo.faceMain("192.168.1.203","admin","fskj123456");
}
……
注册、布防、监听、撤销、退出
}
3.2 sdk初始化
public void initSdk() {
if (OSinfo.isWindows()) {
// windows 注册登录、布防撤防
hCNetSDK = HCNetSDKI.INSTANCE;
} else {
// Linux 版本 海康sdk布防
hCNetSDK = HkSdkLinux.INSTANCE;
}
boolean initBool = hCNetSDK.NET_DVR_Init();
if (!initBool) {
Logger.error("初始化海康SDK失败");
}
//设置连接时间与重连时间
hCNetSDK.NET_DVR_SetConnectTime(2000, 1);
hCNetSDK.NET_DVR_SetReconnect(10000, true);
Logger.info("初始化海康SDK成功");
}
3.3 注册
/**
* 注册海康sdk
* @param m_sDeviceIP ip地址
* @param m_sUsername 用户名
* @param m_sPassword 密码
*/
private void register(String m_sDeviceIP,String m_sUsername,String m_sPassword) {
HCNetSDKI.NET_DVR_USER_LOGIN_INFO m_strLoginInfo = new HCNetSDKI.NET_DVR_USER_LOGIN_INFO();//设备登录信息
HCNetSDKI.NET_DVR_DEVICEINFO_V40 m_strDeviceInfo = new HCNetSDKI.NET_DVR_DEVICEINFO_V40();//设备信息
//---------------------------------------
//登录参数,包括设备地址、登录用户、密码等
//注册之前先注销已注册的用户,预览情况下不可注销
int userId = -1;
// int userId = redisService.getInt(EasyConstants.HK_SDK.USER + m_sDeviceIP);
// if (userId > -1) {
// //先注销
// loginOut(userId);
// redisService.remove(EasyConstants.HK_SDK.USER + m_sDeviceIP);
// }
//注册
m_strLoginInfo.sDeviceAddress = new byte[HCNetSDKI.NET_DVR_DEV_ADDRESS_MAX_LEN];
System.arraycopy(m_sDeviceIP.getBytes(), 0, m_strLoginInfo.sDeviceAddress, 0, m_sDeviceIP.length());
m_strLoginInfo.sUserName = new byte[HCNetSDKI.NET_DVR_LOGIN_USERNAME_MAX_LEN];
System.arraycopy(m_sUsername.getBytes(), 0, m_strLoginInfo.sUserName, 0, m_sUsername.length());
m_strLoginInfo.sPassword = new byte[HCNetSDKI.NET_DVR_LOGIN_PASSWD_MAX_LEN];
System.arraycopy(m_sPassword.getBytes(), 0, m_strLoginInfo.sPassword, 0, m_sPassword.length());
m_strLoginInfo.wPort = (short)8000;// 设备端口,默认8000
m_strLoginInfo.bUseAsynLogin = false; //是否异步登录:0- 否,1- 是
m_strLoginInfo.write();
userId = hCNetSDK.NET_DVR_Login_V40(m_strLoginInfo, m_strDeviceInfo);
// userId存入缓存
redisService.put(EasyConstants.HK_SDK.USER + m_sDeviceIP,userId);
if (userId
3.4 布防
/**
* 布防
*/
public void setupAlarmChan(String ip) {
if (msgCallBack == null) {
msgCallBack = new MSGCallBack();
// if (OSinfo.isWindows()) {
// msgCallBack = new MSGCallBack();
// } else {
// msgCallBack = new MSGCallBackLinux();
// }
}
//设置报警回调函数
hCNetSDK.NET_DVR_SetDVRMessageCallBack_V31(msgCallBack, null);
//启用布防
// HCNetSDKI.NET_DVR_SETUPALARM_PARAM struAlarmParam = new HCNetSDKI.NET_DVR_SETUPALARM_PARAM();
// if (OSinfo.isWindows()) {
// struAlarmParam = new HCNetSDKI.NET_DVR_SETUPALARM_PARAM();
// }
//启用布防
ISetupAlarmInterface struAlarmParam = new HkSdkLinux.NET_DVR_SETUPALARM_PARAM();
if (OSinfo.isWindows()) {
struAlarmParam = new HCNetSDKI.NET_DVR_SETUPALARM_PARAM();
}
struAlarmParam.dwSize = struAlarmParam.size();
struAlarmParam.byFaceAlarmDetection = 1; //人脸侦测报警,设备支持人脸侦测功能的前提下,上传COMM_ALARM_FACE_DETECTION类型报警信息
// struAlarmParam.byLevel=1;//智能交通布防优先级:0- 一等级(高),1- 二等级(中),2- 三等级(低)
// struAlarmParam.byAlarmInfoType=1;//智能交通报警信息上传类型:0- 老报警信息(NET_DVR_PLATE_RESULT),1- 新报警信息(NET_ITS_PLATE_RESULT)
// struAlarmParam.byDeployType =1; //布防类型(仅针对门禁主机、人证设备):0-客户端布防(会断网续传),1-实时布防(只上传实时数据)
// struAlarmParam.write();
int lUserID = redisService.getInt(EasyConstants.HK_SDK.USER + ip);//用户id
// 布防接口 V41
int lHandle = hCNetSDK.NET_DVR_SetupAlarmChan_V41(lUserID,struAlarmParam);// 用户句柄
if (lHandle {
listenHandle(ip,lHandle);
}).start();
}
3.5 监听
/**
* 每30秒检测一次
* @param ip 摄像头ip
* @param lHandle 摄像头SDK句柄
*/
// @Scheduled(fixedRate = 1000 * 30 )
public void listenHandle(String ip ,int lHandle) {
while (lHandle > -1) {
if (lHandle
3.6 撤销布防
/**
* 撤销布防
*/
public void closeAlarmChan(String ip) {
int handle = (int) redisService.getInt(EasyConstants.HK_SDK.HANDLE + ip);
//撤销布防上传通道
if (!hCNetSDK.NET_DVR_CloseAlarmChan_V30(handle))
{
Logger.error("撤防失败,NET_DVR_CloseAlarmChan_V30 error:{}", hCNetSDK.NET_DVR_GetLastError());
loginOutByIp(ip);
return;
}
Logger.info("撤防成功,ip:{}",ip);
}
3.7 注销
/**
* 注销
*/
public void loginOut(int userId) {
//注销用户
hCNetSDK.NET_DVR_Logout(userId);
//释放SDK资源
hCNetSDK.NET_DVR_Cleanup();
Logger.info("loginOut 已注销,退出,userId:{}",userId);
}
public void loginOutByIp(String ip) {
int userId = redisService.getInt(EasyConstants.HK_SDK.USER + ip);//用户句柄
loginOut(userId);
redisService.put(EasyConstants.HK_SDK.USER + ip,-1);
Logger.info("loginOutByIp 已注销,退出 ip:{}",ip);
}
四、后记
海康SDK注册失败,ip:192.168.1.203,userId:-1,错误号:29
15:06:44.218 [main] INFO com.fsiot.face.hksdk.HkFaceSdk - 海康SDK注册失败,ip:192.168.1.12,userId:-1,错误号:29
五、附录 海康错误号
网络通讯库错误码
错误类型 错误值 错误信息
NET_DVR_NOERROR 0 没有错误。
NET_DVR_PASSWORD_ERROR 1 用户名密码错误。注册时输入的用户名或者密码错误。
NET_DVR_NOENOUGHPRI 2 权限不足。一般和通道相关,例如有预览通道1权限,无预览通道2权限,即有预览权限但不完全,预览通道2返回此错误。
NET_DVR_NOINIT 3 SDK未初始化。必须先调用NET_DVR_Init,该接口是调用其他SDK函数的前提且一个程序进程只需要调用一次。
NET_DVR_CHANNEL_ERROR 4 通道号错误。设备通道分模拟通道和数字通道(IP通道),NET_DVR_Login_V40登录设备成功之后会返回设备支持的通道个数和起始通道号取值,详见“通道和通道号号相关说明”。
NET_DVR_OVER_MAXLINK 5 设备总的连接数超过最大。例如网络摄像机只支持6路预览,预览第7路即会返回失败,错误码返回5。不同设备性能不一样,支持路数也不同。
NET_DVR_VERSIONNOMATCH 6 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT 7 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR 8 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR 9 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT 10 从设备接收数据超时。
NET_DVR_NETWORK_ERRORDATA 11 传送的数据有误。发送给设备或者从设备接收到的数据错误,如远程参数配置时输入设备不支持的值。
NET_DVR_ORDER_ERROR 12 调用次序错误。
NET_DVR_OPERNOPERMIT 13 无此权限。用户对某个功能模块的权限,例如无预览权限用户预览返回此错误。
NET_DVR_COMMANDTIMEOUT 14 设备命令执行超时。
NET_DVR_ERRORSERIALPORT 15 串口号错误。指定的设备串口号不存在。
NET_DVR_ERRORALARMPORT 16 报警端口错误。指定的设备报警输入或者输出端口不存在。
NET_DVR_PARAMETER_ERROR 17 参数错误。SDK接口中给入的输入或输出参数为空,或者参数格式或值不符合要求。
NET_DVR_CHAN_EXCEPTION 18 设备通道处于错误状态
NET_DVR_NODISK 19 设备无硬盘。当设备无硬盘时,对设备的录像文件、硬盘配置等操作失败。
NET_DVR_ERRORDISKNUM 20 硬盘号错误。当对设备进行硬盘管理操作时,指定的硬盘号不存在时返回该错误。
NET_DVR_DISK_FULL 21 设备硬盘满。
NET_DVR_DISK_ERROR 22 设备硬盘出错
NET_DVR_NOSUPPORT 23 设备不支持。
NET_DVR_BUSY 24 设备忙。
NET_DVR_MODIFY_FAIL 25 设备修改不成功。
NET_DVR_PASSWORD_FORMAT_ERROR 26 密码输入格式不正确
NET_DVR_DISK_FORMATING 27 硬盘正在格式化,不能启动操作。
NET_DVR_DVRNORESOURCE 28 设备资源不足。
NET_DVR_DVROPRATEFAILED 29 设备操作失败。
NET_DVR_OPENHOSTSOUND_FAIL 30 语音对讲、语音广播操作中采集本地音频或打开音频输出失败。
NET_DVR_DVRVOICEOPENED 31 设备语音对讲被占用。
NET_DVR_TIMEINPUTERROR 32 时间输入不正确。
NET_DVR_NOSPECFILE 33 回放时设备没有指定的文件。
NET_DVR_CREATEFILE_ERROR 34 创建文件出错。本地录像、保存图片、获取配置文件和远程下载录像时创建文件失败。
NET_DVR_FILEOPENFAIL 35 打开文件出错。可能因为文件不存在或者路径错误。
NET_DVR_OPERNOTFINISH 36 上次的操作还没有完成。
NET_DVR_GETPLAYTIMEFAIL 37 获取当前播放的时间出错。
NET_DVR_PLAYFAIL 38 播放出错。
NET_DVR_FILEFORMAT_ERROR 39 文件格式不正确。
NET_DVR_DIR_ERROR 40 路径错误
NET_DVR_ALLOC_RESOURCE_ERROR 41 SDK资源分配错误。
NET_DVR_AUDIO_MODE_ERROR 42 声卡模式错误。当前打开声音播放模式与实际设置的模式不符出错。
NET_DVR_NOENOUGH_BUF 43 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR 44 创建SOCKET出错。
NET_DVR_SETSOCKET_ERROR 45 设置SOCKET出错。
NET_DVR_MAX_NUM 46 个数达到最大。分配的注册连接数、预览连接数超过SDK支持的最大数。
NET_DVR_USERNOTEXIST 47 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_WRITEFLASHERROR 48 写FLASH出错。设备升级时写FLASH失败。
NET_DVR_UPGRADEFAIL 49 设备升级失败。网络或升级文件语言不匹配等原因升级失败。
NET_DVR_CARDHAVEINIT 50 解码卡已经初始化过。
NET_DVR_PLAYERFAILED 51 调用播放库中某个函数失败。
NET_DVR_MAX_USERNUM 52 登录设备的用户数达到最大。
NET_DVR_GETLOCALIPANDMACFAIL 53 获得本地PC的IP地址或物理地址失败。
NET_DVR_NOENCODEING 54 设备该通道没有启动编码。
NET_DVR_IPMISMATCH 55 IP地址不匹配。
NET_DVR_MACMISMATCH 56 MAC地址不匹配。
NET_DVR_UPGRADELANGMISMATCH 57 升级文件语言不匹配。
NET_DVR_MAX_PLAYERPORT 58 播放器路数达到最大。
NET_DVR_NOSPACEBACKUP 59 备份设备中没有足够空间进行备份。
NET_DVR_NODEVICEBACKUP 60 没有找到指定的备份设备。
NET_DVR_PICTURE_BITS_ERROR 61 图像素位数不符,限24色。
NET_DVR_PICTURE_DIMENSION_ERROR 62 图片高*宽超限,限128*256。
NET_DVR_PICTURE_SIZ_ERROR 63 图片大小超限,限100K。
NET_DVR_LOADPLAYERSDKFAILED 64 载入当前目录下播放库(PlayCtrl.dll、SuperRender.dll、AudioRender.dll)出错。
NET_DVR_LOADPLAYERSDKPROC_ERROR 65 找不到Player Sdk中某个函数入口。
NET_DVR_LOADDSSDKFAILED 66 载入当前目录下DSsdk出错。
NET_DVR_LOADDSSDKPROC_ERROR 67 找不到DsSdk中某个函数入口。
NET_DVR_DSSDK_ERROR 68 调用硬解码库DsSdk中某个函数失败。
NET_DVR_VOICEMONOPOLIZE 69 声卡被独占。
NET_DVR_JOINMULTICASTFAILED 70 加入多播组失败。
NET_DVR_CREATEDIR_ERROR 71 建立日志文件目录失败。
NET_DVR_BINDSOCKET_ERROR 72 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR 73 socket连接中断,此错误通常是由于连接中断或目的地不可达。
NET_DVR_USERID_ISUSING 74 注销时用户ID正在进行某操作。
NET_DVR_SOCKETLISTEN_ERROR 75 监听失败。
NET_DVR_PROGRAM_EXCEPTION 76 程序异常。
NET_DVR_WRITEFILE_FAILED 77 写文件失败。本地录像、远程下载录像、下载图片等操作时写文件失败。
NET_DVR_FORMAT_READONLY 78 禁止格式化只读硬盘。
NET_DVR_WITHSAMEUSERNAME 79 远程用户配置结构中存在相同的用户名。
NET_DVR_DEVICETYPE_ERROR 80 导入参数时设备型号不匹配。
NET_DVR_LANGUAGE_ERROR 81 导入参数时语言不匹配。
NET_DVR_PARAVERSION_ERROR 82 导入参数时软件版本不匹配。
NET_DVR_IPCHAN_NOTALIVE 83 预览时外接IP通道不在线。
NET_DVR_RTSP_SDK_ERROR 84 加载标准协议通讯库(StreamTransClient.dll)失败。
NET_DVR_CONVERT_SDK_ERROR 85 加载转封装库(SystemTransform.dll)失败。
NET_DVR_IPC_COUNT_OVERFLOW 86 超出最大的IP接入通道数。
NET_DVR_MAX_ADD_NUM 87 添加录像标签或者其他操作超出最多支持的个数。
NET_DVR_PARAMMODE_ERROR 88 图像增强仪,参数模式错误(用于硬件设置时,客户端进行软件设置时错误值)。
NET_DVR_CODESPITTER_OFFLINE 89 码分器不在线。
NET_DVR_BACKUP_COPYING 90 设备正在备份。
NET_DVR_CHAN_NOTSUPPORT 91 通道不支持该操作。
NET_DVR_CALLINEINVALID 92 高度线位置太集中或长度线不够倾斜。
NET_DVR_CALCANCELCONFLICT 93 取消标定冲突,如果设置了规则及全局的实际大小尺寸过滤。
NET_DVR_CALPOINTOUTRANGE 94 标定点超出范围。
NET_DVR_FILTERRECTINVALID 95 尺寸过滤器不符合要求。
NET_DVR_DDNS_DEVOFFLINE 96 设备没有注册到ddns上。
NET_DVR_DDNS_INTER_ERROR 97 DDNS 服务器内部错误。
NET_DVR_FUNCTION_NOT_SUPPORT_OS 98 此功能不支持该操作系统。
NET_DVR_DEC_CHAN_REBIND 99 解码通道绑定显示输出次数受限。
NET_DVR_INTERCOM_SDK_ERROR 100 加载当前目录下的语音对讲库失败。
NET_DVR_NO_CURRENT_UPDATEFILE 101 没有正确的升级包。
NET_DVR_USER_NOT_SUCC_LOGIN 102 用户还没登录成功。
NET_DVR_USE_LOG_SWITCH_FILE 103 正在使用日志开关文件。
NET_DVR_POOL_PORT_EXHAUST 104 端口池中用于绑定的端口已耗尽。
NET_DVR_PACKET_TYPE_NOT_SUPPORT 105 码流封装格式错误。
NET_DVR_IPPARA_IPID_ERROR 106 IP接入配置时IPID有误。
NET_DVR_LOAD_HCPREVIEW_SDK_ERROR 107 预览组件加载失败。
NET_DVR_LOAD_HCVOICETALK_SDK_ERROR 108 语音组件加载失败。
NET_DVR_LOAD_HCALARM_SDK_ERROR 109 报警组件加载失败。
NET_DVR_LOAD_HCPLAYBACK_SDK_ERROR 110 回放组件加载失败。
NET_DVR_LOAD_HCDISPLAY_SDK_ERROR 111 显示组件加载失败。
NET_DVR_LOAD_HCINDUSTRY_SDK_ERROR 112 行业应用组件加载失败。
NET_DVR_LOAD_HCGENERALCFGMGR_SDK_ERROR 113 通用配置管理组件加载失败。
NET_DVR_LOAD_HCCOREDEVCFG_SDK_ERROR 114 设备配置核心组件加载失败。
NET_DVR_CORE_VER_MISMATCH 121 单独加载组件时,组件与core版本不匹配。
NET_DVR_CORE_VER_MISMATCH_HCPREVIEW 122 预览组件与core版本不匹配。
NET_DVR_CORE_VER_MISMATCH_HCVOICETALK 123 语音组件与core版本不匹配。
NET_DVR_CORE_VER_MISMATCH_HCALARM 124 报警组件与core版本不匹配。
NET_DVR_CORE_VER_MISMATCH_HCPLAYBACK 125 回放组件与core版本不匹配。
NET_DVR_CORE_VER_MISMATCH_HCDISPLAY 126 显示组件与core版本不匹配。
NET_DVR_CORE_VER_MISMATCH_HCINDUSTRY 127 行业应用组件与core版本不匹配。
NET_DVR_CORE_VER_MISMATCH_HCGENERALCFGMGR 128 通用配置管理组件与core版本不匹配。
NET_DVR_COM_VER_MISMATCH_HCPREVIEW 136 预览组件与HCNetSDK版本不匹配。
NET_DVR_COM_VER_MISMATCH_HCVOICETALK 137 语音组件与HCNetSDK版本不匹配。
NET_DVR_COM_VER_MISMATCH_HCALARM 138 报警组件与HCNetSDK版本不匹配。
NET_DVR_COM_VER_MISMATCH_HCPLAYBACK 139 回放组件与HCNetSDK版本不匹配。
NET_DVR_COM_VER_MISMATCH_HCDISPLAY 140 显示组件与HCNetSDK版本不匹配。
NET_DVR_COM_VER_MISMATCH_HCINDUSTRY 141 行业应用组件与HCNetSDK版本不匹配。
NET_DVR_COM_VER_MISMATCH_HCGENERALCFGMGR 142 通用配置管理组件与HCNetSDK版本不匹配。
NET_DVR_ALIAS_DUPLICATE 150 别名重复(HiDDNS的配置)。
NET_DVR_USERNAME_NOT_EXIST 152 用户名不存在(V5.1.7~V5.3.1版本的IPC、IPD的错误码)。
NET_ERR_USERNAME_LOCKED 153 用户名被锁定。
NET_DVR_INVALID_USERID 154 无效用户ID。
NET_DVR_LOW_LOGIN_VERSION 155 登录版本低。
NET_DVR_LOAD_LIBEAY32_DLL_ERROR 156 加载libeay32.dll库失败。
NET_DVR_LOAD_SSLEAY32_DLL_ERROR 157 加载ssleay32.dll库失败。
NET_ERR_LOAD_LIBICONV 158 加载libiconv.dll库失败。
NET_DVR_TEST_SERVER_FAIL_CONNECT 165 连接测试服务器失败。
NET_DVR_NAS_SERVER_INVALID_DIR 166 NAS服务器挂载目录失败,目录无效或者用户名密码错误。
NET_DVR_NAS_SERVER_NOENOUGH_PRI 167 NAS服务器挂载目录失败,没有权限。
NET_DVR_EMAIL_SERVER_NOT_CONFIG_DNS 168 服务器使用域名,但是没有配置DNS,可能造成域名无效。
NET_DVR_EMAIL_SERVER_NOT_CONFIG_GATEWAY 169 没有配置网关,可能造成发送邮件失败。
NET_DVR_TEST_SERVER_PASSWORD_ERROR 170 用户名密码不正确,测试服务器的用户名或密码错误。
NET_DVR_EMAIL_SERVER_CONNECT_EXCEPTION_WITH_SMTP 171 设备和smtp服务器交互异常。
NET_DVR_FTP_SERVER_FAIL_CREATE_DIR 172 FTP服务器创建目录失败。
NET_DVR_FTP_SERVER_NO_WRITE_PIR 173 FTP服务器没有写入权限。
NET_DVR_IP_CONFLICT 174 IP冲突。
NET_DVR_INSUFFICIENT_STORAGEPOOL_SPACE 175 存储池空间已满。
NET_DVR_STORAGEPOOL_INVALID 176 云服务器存储池无效,没有配置存储池或者存储池ID错误。
NET_DVR_EFFECTIVENESS_REBOOT 177 生效需要重启。
NET_ERR_ANR_ARMING_EXIST 178 断网续传布防连接已经存在(私有SDK协议布防连接已经建立的情况下,重复布防且选择断网续传功能时返回该错误)。
NET_ERR_UPLOADLINK_EXIST 179 断网续传上传连接已经存在(EHOME协议和私有SDK协议不能同时支持断网续传,其中一种协议已经建议连接,另外一个连接建立时返回该错误)。
NET_ERR_INCORRECT_FILE_FORMAT 180 导入文件格式不正确。
NET_ERR_INCORRECT_FILE_CONTENT 181 导入文件内容不正确。
NET_ERR_MAX_HRUDP_LINK 182 HRUDP连接数超过设备限制。
NET_SDK_ERR_MAX_PORT_MULTIPLEX 183 已达到端口复用最大数目。
NET_SDK_ERR_CREATE_PORT_MULTIPLEX 184 创建端口复用失败。
阵列错误码
NET_DVR_NAME_NOT_ONLY 200 名称已存在。
NET_DVR_OVER_MAX_ARRAY 201 阵列达到上限。
NET_DVR_OVER_MAX_VD 202 虚拟磁盘达到上限。
NET_DVR_VD_SLOT_EXCEED 203 虚拟磁盘槽位已满。
NET_DVR_PD_STATUS_INVALID 204 重建阵列所需物理磁盘状态错误。
NET_DVR_PD_BE_DEDICATE_SPARE 205 重建阵列所需物理磁盘为指定热备。
NET_DVR_PD_NOT_FREE 206 重建阵列所需物理磁盘非空闲。
NET_DVR_CANNOT_MIG2NEWMODE 207 不能从当前的阵列类型迁移到新的阵列类型。
NET_DVR_MIG_PAUSE 208 迁移操作已暂停。
NET_DVR_MIG_CANCEL 209 正在执行的迁移操作已取消。
NET_DVR_EXIST_VD 210 阵列上存在虚拟磁盘,无法删除阵列。
NET_DVR_TARGET_IN_LD_FUNCTIONAL 211 对象物理磁盘为虚拟磁盘组成部分且工作正常。
NET_DVR_HD_IS_ASSIGNED_ALREADY 212 指定的物理磁盘被分配为虚拟磁盘。
NET_DVR_INVALID_HD_COUNT 213 物理磁盘数量与指定的RAID等级不匹配。
NET_DVR_LD_IS_FUNCTIONAL 214 阵列正常,无法重建。
NET_DVR_BGA_RUNNING 215 存在正在执行的后台任务。
NET_DVR_LD_NO_ATAPI 216 无法用ATAPI盘创建虚拟磁盘。
NET_DVR_MIGRATION_NOT_NEED 217 阵列无需迁移。
NET_DVR_HD_TYPE_MISMATCH 218 物理磁盘不属于同意类型。
NET_DVR_NO_LD_IN_DG 219 无虚拟磁盘,无法进行此项操作。
NET_DVR_NO_ROOM_FOR_SPARE 220 磁盘空间过小,无法被指定为热备盘。
NET_DVR_SPARE_IS_IN_MULTI_DG 221 磁盘已被分配为某阵列热备盘。
NET_DVR_DG_HAS_MISSING_PD 222 阵列缺少盘。
NET_DVR_NAME_EMPTY 223 名称为空。
NET_DVR_INPUT_PARAM 224 输入参数有误。
NET_DVR_PD_NOT_AVAILABLE 225 物理磁盘不可用。
NET_DVR_ARRAY_NOT_AVAILABLE 226 阵列不可用。
NET_DVR_PD_COUNT 227 物理磁盘数不正确。
NET_DVR_VD_SMALL 228 虚拟磁盘太小。
NET_DVR_NO_EXIST 229 不存在。
NET_DVR_NOT_SUPPORT 230 不支持该操作。
NET_DVR_NOT_FUNCTIONAL 231 阵列状态不是正常状态。
NET_DVR_DEV_NODE_NOT_FOUND 232 虚拟磁盘设备节点不存在。
NET_DVR_SLOT_EXCEED 233 槽位达到上限。
NET_DVR_NO_VD_IN_ARRAY 234 阵列上不存在虚拟磁盘。
NET_DVR_VD_SLOT_INVALID 235 虚拟磁盘槽位无效。
NET_DVR_PD_NO_ENOUGH_SPACE 236 所需物理磁盘空间不足。
NET_DVR_ARRAY_NONFUNCTION 237 只有处于正常状态的阵列才能进行迁移。
NET_DVR_ARRAY_NO_ENOUGH_SPACE 238 阵列空间不足。
NET_DVR_STOPPING_SCANNING_ARRAY 239 正在执行安全拔盘或重新扫描。
NET_DVR_NOT_SUPPORT_16T 240 不支持创建大于16T的阵列。
安全激活相关错误码
NET_DVR_ERROR_DEVICE_NOT_ACTIVATED 250 设备未激活(设备未激活时,登录失败,返回错误码)
NET_DVR_ERROR_RISK_PASSWORD 251 有风险的密码(设置用户密码或者激活的时候为风险密码)
NET_DVR_ERROR_DEVICE_HAS_ACTIVATED 252 设备已激活(已激活的设备,再次激活时返回错误)
智能设备错误码
NET_DVR_ID_ERROR 300 配置ID不合理。
NET_DVR_POLYGON_ERROR 301 多边形不符合要求。
NET_DVR_RULE_PARAM_ERROR 302 规则参数不合理。
NET_DVR_RULE_CFG_CONFLICT 303 配置信息冲突。
NET_DVR_CALIBRATE_NOT_READY 304 当前没有标定信息。
NET_DVR_CAMERA_DATA_ERROR 305 摄像机参数不合理。
NET_DVR_CALIBRATE_DATA_UNFIT 306 长度不够倾斜,不利于标定。
NET_DVR_CALIBRATE_DATA_CONFILICT 307 标定出错,以为所有点共线或者位置太集中。
NET_DVR_CALIBRATE_CALC_FAIL 308 摄像机标定参数值计算失败。
NET_DVR_CALIBRATE_LINE_OUT_RECT 309 输入的样本标定线超出了样本外接矩形框。
NET_DVR_ENTER_RULE_NOT_READY 310 没有设置进入区域
NET_DVR_AID_RULE_NO_INCLUDE_LANE 311 交通事件规则中没有包括车道(特值拥堵和逆行)
NET_DVR_LANE_NOT_READY 312 当前没有设置车道
NET_DVR_RULE_INCLUDE_TWO_WAY 313 事件规则中包含2种不同方向
NET_DVR_LANE_TPS_RULE_CONFLICT 314 车道和数据规则冲突
NET_DVR_NOT_SUPPORT_EVENT_TYPE 315 不支持的事件类型
NET_DVR_LANE_NO_WAY 316 车道没有方向
NET_DVR_SIZE_FILTER_ERROR 317 尺寸过滤框不合理
NET_DVR_LIB_FFL_NO_FACE 318 特征点定位时输入的图像没有人脸
NET_DVR_LIB_FFL_IMG_TOO_SMALL 319 特征点定位时输入的图像太小
NET_DVR_LIB_FD_IMG_NO_FACE 320 单张图像人脸检测时输入的图像没有人脸
NET_DVR_LIB_FACE_TOO_SMALL 321 建模时人脸太小
NET_DVR_LIB_FACE_QUALITY_TOO_BAD 322 建模时人脸图像质量太差
NET_DVR_KEY_PARAM_ERR 323 高级参数设置错误
NET_DVR_CALIBRATE_DATA_ERR 324 标定样本数目错误,或数据值错误,或样本点超出地平线
NET_DVR_CALIBRATE_DISABLE_FAIL 325 所配置规则不允许取消标定
NET_DVR_VCA_LIB_FD_SCALE_OUTRANGE 326 最大过滤框的宽高最小值超过最小过滤框的宽高最大值两倍以上
NET_DVR_LIB_FD_REGION_TOO_LARGE 327 当前检测区域范围过大。检测区最大为图像的2/3
NET_DVR_TRIAL_OVERDUE 328 试用版评估期已结束
NET_DVR_CONFIG_FILE_CONFLICT 329 设备类型与配置文件冲突(加密狗类型与现有分析仪配置不符错误码提示)
NET_DVR_FR_FPL_FAIL 330 人脸特征点定位失败
NET_DVR_FR_IQA_FAIL 331 人脸评分失败
NET_DVR_FR_FEM_FAIL 332 人脸特征提取失败
NET_DVR_FPL_DT_CONF_TOO_LOW 333 特征点定位时人脸检测置信度过低
NET_DVR_FPL_CONF_TOO_LOW 334 特征点定位置信度过低
NET_DVR_E_DATA_SIZE 335 数据长度不匹配
NET_DVR_FR_MODEL_VERSION_ERR 336 人脸模型数据中的模型版本错误
NET_DVR_FR_FD_FAIL 337 识别库中人脸检测失败
NET_DVR_FA_NORMALIZE_ERR 338 人脸归一化出错
NET_DVR_DOG_PUSTREAM_NOT_MATCH 339 加密狗与前端取流设备类型不匹配
NET_DVR_DEV_PUSTREAM_NOT_MATCH 340 前端取流设备版本不匹配
NET_DVR_PUSTREAM_ALREADY_EXISTS 341 设备的其他通道已经添加过该前端设备
NET_DVR_SEARCH_CONNECT_FAILED 342 连接检索服务器失败
NET_DVR_INSUFFICIENT_DISK_SPACE 343 可存储的硬盘空间不足
NET_DVR_DATABASE_CONNECTION_FAILED 344 数据库连接失败
NET_DVR_DATABASE_ADM_PW_ERROR 345 数据库用户名、密码错误
NET_DVR_DECODE_YUV 346 解码失败
NET_DVR_IMAGE_RESOLUTION_ERROR 347 图片分辨率不合理
NET_DVR_CHAN_WORKMODE_ERROR 348 通道工作模式错误
RTSP通讯库错误码 400~446 详见:RTSP通讯库错误码
软解码库错误码 500~528 详见:软解码库错误码
转封装库错误码 581 详见:转封装库错误码
语音对讲库错误码 600~619 详见:语音对讲库错误码
Qos流控库错误码 678~700 详见:Qos流控库错误码
其他错误码
NET_ERROR_SCENE_USING 717 场景正在使用。
NET_ERR_TERMINAL_BUSY 780 终端忙,终端处于会议中。
NET_DVR_FUNCTION_RESOURCE_USAGE_ERROR 791 设备其它功能占用资源,导致该功能无法开启。
NET_DVR_DEV_NET_OVERFLOW 800 网络流量超过设备能力上限
NET_DVR_STATUS_RECORDFILE_WRITING_NOT_LOCK 801 录像文件在录像,无法被锁定
NET_DVR_STATUS_CANT_FORMAT_LITTLE_DISK 802 由于硬盘太小无法格式化
N+1功能错误码
NET_SDK_ERR_REMOTE_DISCONNEC 803 远端无法连接
NET_SDK_ERR_RD_ADD_RD 804 备机不能添加备机
NET_SDK_ERR_BACKUP_DISK_EXCEPT 805 备份盘异常
NET_SDK_ERR_RD_LIMIT 806 备机数已达上限
NET_SDK_ERR_ADDED_RD_IS_WD 807 添加的备机是工作机
NET_SDK_ERR_ADD_ORDER_WRONG 808 添加顺序出错,比如没有被工作机添加为备机,就添加工作机
NET_SDK_ERR_WD_ADD_WD 809 工作机不能添加工作机
NET_SDK_ERR_WD_SERVICE_EXCETP 810 CVR服务异常(N+1模式下表示CVR工作机服务异常)
NET_SDK_ERR_RD_SERVICE_EXCETP 811 备机CVR服务异常
NET_SDK_ERR_ADDED_WD_IS_RD 812 添加的工作机是备机
NET_SDK_ERR_PERFORMANCE_LIMIT 813 性能达到上限
NET_SDK_ERR_ADDED_DEVICE_EXIST 814 添加的设备已经存在
审讯机错误码
NET_SDK_ERR_INQUEST_RESUMING 815 审讯恢复中。
NET_SDK_ERR_RECORD_BACKUPING 816 审讯备份中。
NET_SDK_ERR_DISK_PLAYING 817 光盘回放中。
NET_SDK_ERR_INQUEST_STARTED 818 审讯已开启。
NET_SDK_ERR_LOCAL_OPERATING 819 本地操作进行中。
NET_SDK_ERR_INQUEST_NOT_START 820 审讯未开启。
其他错误码
NET_SDK_ERR_CHAN_AUDIO_BIND 821 通道未绑定或绑定语音对讲失败。
NET_DVR_N_PLUS_ONE_MODE 822 设备当前处于N+1模式,不支持设置云存储。
NET_DVR_CLOUD_STORAGE_OPENED 823 云存储模式已开启
NET_DVR_ERR_OPER_NOT_ALLOWED 824 设备处于N+0被接管状态,不允许该操作。
NET_DVR_ERR_NEED_RELOCATE 825 设备处于N+0被接管状态,需要获取重定向信息,再重新操作。
庭审主机错误码
NET_SDK_ERR_IR_PORT_ERROR 830 红外输出口错误。
NET_SDK_ERR_IR_CMD_ERROR 831 红外输出口的命令号错误。
NET_SDK_ERR_NOT_INQUESTING 832 设备处于非审讯状态。
NET_SDK_ERR_INQUEST_NOT_PAUSED 833 设备处于非暂停状态。
其他错误码
NET_DVR_CHECK_PASSWORD_MISTAKE_ERROR 834 校验密码错误。
NET_DVR_CHECK_PASSWORD_NULL_ERROR 835 校验密码不能为空。
NET_DVR_UNABLE_CALIB_ERROR 836 当前无法标定。
NET_DVR_PLEASE_CALIB_ERROR 837 请先完成标定。
NET_DVR_ERR_PANORAMIC_CAL_EMPTY 838 Flash中全景标定为空。
NET_DVR_ERR_CALIB_FAIL_PLEASEAGAIN 839 标定失败,请重新标定。
NET_DVR_ERR_DETECTION_LINE 840 规则线配置错误,请重新配置规则线,确保规则线位于红色区域内。
NET_DVR_EXCEED_FACE_IMAGES_ERROR 843 超过人脸图片最大张数。
NET_DVR_ANALYSIS_FACE_IMAGES_ERROR 844 图片数据识别失败。
NET_ERR_ALARM_INPUT_OCCUPIED 845 A
文章标题:海康摄像头SDK在Linux、windows下的兼容问题
文章链接:http://soscw.com/index.php/essay/37584.html