天天看点

EasyCVR通过大华SDK接入设备,通道名称过长显示不全如何解决?

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

EasyCVR通过大华SDK接入设备,通道名称过长显示不全如何解决?

在用户现场接入时,前端设备通过大华SDK接入EasyCVR平台,接入成功后,发现通道名称未能显示全,如图所示:

EasyCVR通过大华SDK接入设备,通道名称过长显示不全如何解决?
EasyCVR通过大华SDK接入设备,通道名称过长显示不全如何解决?

进入设备后台,正确显示的名称如下:

EasyCVR通过大华SDK接入设备,通道名称过长显示不全如何解决?

针对该情况,我们对代码进行了分析和排查。今天和大家分享一下排查和解决方法。

单独使用c++调试,获取到的名称也为显示不全的名称。因为我们使用的大华sdk函数为CLIENT_QueryChannelName,查看文档后得知:

EasyCVR通过大华SDK接入设备,通道名称过长显示不全如何解决?

第二个参数pChannelName是获取通道名称。在分配字符串长度大于32字节时,获取到的通道名称还是32个字节,所以当通道名称过长时,会导致通道名称显示不全。

EasyCVR通过大华SDK接入设备,通道名称过长显示不全如何解决?

所以,函数CLIENT_QueryChannelName在此处不可用。继续查找大华sdk文档,查看是否有获取通道名称的相关信息。

我们发现,文档中有个CLIENT_GetNewDevConfig函数,也可以获取通道名称。第二个参数是CFG_CMD_CHANNELTITLE,文档说明如下:

EasyCVR通过大华SDK接入设备,通道名称过长显示不全如何解决?

需要注意:CLIENT_GetNewDevConfig第三个参数填写-1,这样才能获取所有的通道名称。

修改上述模块中的c++代码,参考如下:

EasyCVR通过大华SDK接入设备,通道名称过长显示不全如何解决?

最终前端展示效果如下,此时通道名称已经可以完全显示了:

EasyCVR通过大华SDK接入设备,通道名称过长显示不全如何解决?

EasyCVR平台基于云边端一体化架构,具有强大的数据接入、处理及分发能力。平台可在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,可实现的视频功能包括:视频实时直播、云端录像、云存储、回放与检索、智能告警、视频快照、视频转码与分发、平台级联等。感兴趣的用户可以前往演示平台进行体验或部署测试。