海康sdk 出现问题摄像头中断问题

背景:有三个摄像头  一个没有用  但是登陆的时候检测是否在线,还有一个监控摄像头用于录制视频,还有一个拍照摄像头。每个摄像头对应的democapture 存储于map 对象中,理想情况下 只需登陆一次,后续调用直接拿map中存储的对象。除非拍照失败等原因会,initsdk   login camera 

现场情况:偶现 拍照摄像头 掉线,同时监控摄像头也掉线  只能重启容器才能解决,网络良好   测试环境没有复现

解决过程:

1.原本demoCapture  中日志不完全,现在给每个sdk接口调用后 都打印  

hCNetSDK.NET_DVR_GetLastError()

2.现场返回的日志显示:拍照摄像头usrID 有23  然后拍照时报 错误码11  参数错误,问了海康的技术  userid 0-2047

海康sdk 出现问题摄像头中断问题

 

 但是还是怀疑这个userid  导致的错误码11 ,因为只有这个参数的变化引起了这个问题。

3.仔细分析日之后得出结论:

监控摄像头运行一段时间报 5  设备总的连接数超过最大。例如网络摄像机只支持6路预览,预览第7路即会返回失败,错误码返回5。不同设备性能不一样,支持路数也不同。

导致sdk 重新初始化  所有摄像头重新登录  userid持续增加  拍照摄像头userid 增到20左右开始报错误码11 

4.两个思路解决

4.1 userid 为什么会init后还叠加 :问了海康技术,

海康sdk 出现问题摄像头中断问题

 

 发现我的cleanup  和init不在一个线程导致,遂更改代码,cleanup 后直接调用init  j解决此问题

4.2 解决 监控摄像头报5 的问题,因为摄像头版本的问题  还没解决 所以把这个接口调用分到了另外一个容器,不要影响拍照摄像头

4.3 其余问题:

NET_DVR_StopSaveRealData(lRealHandle);

这个接口之前没有判断参数,-1  或者null的时候也会报11错误码,后面判断了一下

hCNetSDK.NET_DVR_Logout_V30(this.userId)

这个接口一定要在前面接口执行完后执行 不然会报错误码12  但是返回是true  应该退出成功了。

 

 



 

上一篇:权限管理系统——角色管理模块的问题(2)


下一篇:两个操作者之间的通信二