天天看点

EasyCVR平台通过大华SDK接入设备,设备在离线状态不一致该如何解决?

EasyCVR平台支持多类型设备、多协议方式接入,包括市场主流标准协议国标GB/T28181、RTMP、RTSP/Onvif协议等,以及厂家私有协议如海康SDK、大华SDK、海康Ehome等。平台可将接入的流媒体进行处理及分发,分发的视频格式包括RTSP、RTMP、FLV、HLS、WebRTC等。

EasyCVR平台通过大华SDK接入设备,设备在离线状态不一致该如何解决?

我们在测试时发现,通过大华SDK将设备接入出现异常问题。在设备的后台程序中,显示有1台设备在线,但是使用SDK登录大华设备,在线数为0,与实际在线数量不符。

EasyCVR平台通过大华SDK接入设备,设备在离线状态不一致该如何解决?

于是我们针对该情况进行了排查。查看文档得知,CLIENT_QueryDevInfo是指获取设备是否在线情况。

EasyCVR平台通过大华SDK接入设备,设备在离线状态不一致该如何解决?

大华SDK的文档说明信息如下:

EasyCVR平台通过大华SDK接入设备,设备在离线状态不一致该如何解决?

在实际中使用此函数,输出的NET_OUT_GET_CAMERA_STATEINFO结构体如下,emConnectionState字段值为0,并没有输出设备的在线和离线状态。

EasyCVR平台通过大华SDK接入设备,设备在离线状态不一致该如何解决?

文档中说明,emConnectionState为2才是连接状态,所以此函数无法获取到设备的在线离线情况。

EasyCVR平台通过大华SDK接入设备,设备在离线状态不一致该如何解决?

从文档中发现,获取设备的在线状态不仅仅只有这一处。CLIENT_QueryNewSystemInfo函数也可获取设备在线、离线状态。

EasyCVR平台通过大华SDK接入设备,设备在离线状态不一致该如何解决?
EasyCVR平台通过大华SDK接入设备,设备在离线状态不一致该如何解决?

解决方法如下:

在登录设备时,调用CLIENT_QueryNewSystemInfo函数获取设备的在线离线情况,如下:

EasyCVR平台通过大华SDK接入设备,设备在离线状态不一致该如何解决?

STATUS.devStatus内存地址为(json数据):

EasyCVR平台通过大华SDK接入设备,设备在离线状态不一致该如何解决?

继续阅读