EasyCVR平台支持多类型设备、多协议方式接入,包括市场主流标准协议国标GB/T28181、RTMP、RTSP/Onvif协议等,以及厂家私有协议如海康SDK、大华SDK、海康Ehome等。平台可将接入的流媒体进行处理及分发,分发的视频格式包括RTSP、RTMP、FLV、HLS、WebRTC等。
我们在测试时发现,通过大华SDK将设备接入出现异常问题。在设备的后台程序中,显示有1台设备在线,但是使用SDK登录大华设备,在线数为0,与实际在线数量不符。
于是我们针对该情况进行了排查。查看文档得知,CLIENT_QueryDevInfo是指获取设备是否在线情况。
大华SDK的文档说明信息如下:
在实际中使用此函数,输出的NET_OUT_GET_CAMERA_STATEINFO结构体如下,emConnectionState字段值为0,并没有输出设备的在线和离线状态。
文档中说明,emConnectionState为2才是连接状态,所以此函数无法获取到设备的在线离线情况。
从文档中发现,获取设备的在线状态不仅仅只有这一处。CLIENT_QueryNewSystemInfo函数也可获取设备在线、离线状态。
解决方法如下:
在登录设备时,调用CLIENT_QueryNewSystemInfo函数获取设备的在线离线情况,如下:
STATUS.devStatus内存地址为(json数据):
按上述方法修改后,此时已经可以正常获取设备的在离线状态了。
EasyCVR平台基于云边端一体化架构,具有强大的数据接入、处理及分发能力。平台可在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,可实现的视频功能包括:视频实时直播、云端录像、云存储、回放与检索、智能告警、视频快照、视频转码与分发、平台级联等。感兴趣的用户可以前往演示平台进行体验或部署测试。