国标GB28181协议客户端EasyGBS视频平台如何优化告警功能接收数据的频率?
目前国标视频平台EasyGBS的告警功能已经研发了,我们也进入了内测阶段,测试无误后将会给最新版的EasyGBS添加这个模块,让使用体验更好。
测试的时候,我们发现一个问题,就是当摄像头设置报警事件后,触发过于敏感,发生一次告警事件,摄像头会向EasyGBS平台发送大概6条数据。
因为摄像头告警的时候,需要平台去进行拉流,然后截取快照,比较消耗性能。当告警数据传输过多的时候,EasyGBS平台的运行负荷将会加重,所以需要我们继续优化。
经过商讨和测试,我们决定当设备触发告警事件并向EasyGBS平台发送数据的时候,对EasyGBS平台对接收到的数据进行限制频率操作。
var RequestLimit = &RequestLimitService{} type RequestLimitService struct { Interval time.Duration MaxCount int Lock sync.Mutex ReqCount int Stop bool }
func NewRequestLimitService(interval time.Duration, maxCnt int) { RequestLimit = &RequestLimitService{ Interval: interval, MaxCount: maxCnt, } go func() { ticker := time.NewTicker(interval) for { //if !reqLimit.Stop { <-ticker.C RequestLimit.Lock.Lock() fmt.Println("Reset Count...") RequestLimit.ReqCount = 0 RequestLimit.Lock.Unlock() //} else { // log.Printf("") // return //} } }() return }
EasyGBS调用以下代码进行频率限制
if RequestLimit.IsAvailable() { RequestLimit.Increase() fmt.Println(RequestLimit.ReqCount) } else { fmt.Println("Reach request limiting!") return }
优化过后当摄像头再向设备发送多条数据后,EasyGBS就可以进行选择性接收了,从而降低平台的性能消耗。
以上是我们对EasyGBS告警功能做出的优化,如果大家对平台的优化还有建议的话,我们也会在考虑可行性的情况下进行升级改版。
更多关于EasyGBS:
- 可视化页面:提供用户管理及Web可视化页面管理,及录像检索、回放;
- 设备状态管理:提供设备状态管理,可实时查看设备是否掉线等信息;
- 实时流处理:实时流媒体处理,PS(TS)转ES,提供音视频转码能力;
- API接口:对外提供服务器获取状态、信息,控制HTTP API接口;
- 云台控制:基于动态组网服务创建智能网络,按需选择需要组网的网络成员实现点点互联。