EasyCVR具备较强的视频能力,可支持海量设备接入、汇聚与管理、视频监控、视频录像、云存储、回放与检索、智能告警、平台级联等功能。平台可支持多协议接入,包括:国标GB/T28181、RTMP、RTSP/Onvif协议,以及厂家的私有协议,如:海康Ehome、海康/大华/华为/宇视/萤石/乐橙SDK等,可覆盖市面上大多数的视频源设备。
有用户反馈,在EasyCVR平台中集成设备宇视sdk时,刚开始运行播放流就出现以下报错:“fatal error: sync: RUnlock of unlocked RWMutex”。
收到反馈后,技术人员立即开展排查与解决:
1、从图中的报错信息得知: 在source_unv_export.go的第13行代码有错误,详细如下:
2、查看“UNVStreamMapLocker和UNVStreamMap”的定义,如下图:
3、从图中可以看出,写法是没有问题的,于是只能修改代码:
4、修改代码后,运行程序是正常的,于是根据以下操作即可解决问题:
从排查得出,原来的代码为:
UNVStreamMapLocker.RLocker()
,修改的代码为:UNVStreamMapLocker.RLock()
。而其中函数多出来“er”,在读锁的时候没有进行锁,所以在释放锁的时候出现了报错。
EasyCVR平台可对前端接入的设备进行统一管理,并能支持采用设备树对设备进行分组、分级、用户与角色权限管理,可支持设备状态监测、云端运维等功能,实现对海量接入资源的集中控制与权限分配。平台应用场景广泛,目前已经在大量的线下项目中落地应用,包括智慧工地、智慧安防、智慧工厂、智慧园区等。感兴趣的用户可以前往演示平台进行体验或部署测试。
标签:视频流,UNVStreamMapLocker,代码,平台,EasyCVR,报错,设备 From: https://blog.51cto.com/tsingsee/5805173