国标GB28181协议客户端EasyGBS视频平台如何优化告警功能接收数据的频率?

目前国标视频平台EasyGBS的告警功能已经研发了,我们也进入了内测阶段,测试无误后将会给最新版的EasyGBS添加这个模块,让使用体验更好。

测试的时候,我们发现一个问题,就是当摄像头设置报警事件后,触发过于敏感,发生一次告警事件,摄像头会向EasyGBS平台发送大概6条数据。

国标GB28181协议客户端EasyGBS视频平台如何优化告警功能接收数据的频率?_第1张图片

国标GB28181协议客户端EasyGBS视频平台如何优化告警功能接收数据的频率?_第2张图片

因为摄像头告警的时候,需要平台去进行拉流,然后截取快照,比较消耗性能。当告警数据传输过多的时候,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就可以进行选择性接收了,从而降低平台的性能消耗。

国标GB28181协议客户端EasyGBS视频平台如何优化告警功能接收数据的频率?_第3张图片

以上是我们对EasyGBS告警功能做出的优化,如果大家对平台的优化还有建议的话,我们也会在考虑可行性的情况下进行升级改版。

更多关于EasyGBS:

  • 可视化页面:提供用户管理及Web可视化页面管理,及录像检索、回放;
  • 设备状态管理:提供设备状态管理,可实时查看设备是否掉线等信息;
  • 实时流处理:实时流媒体处理,PS(TS)转ES,提供音视频转码能力;
  • API接口:对外提供服务器获取状态、信息,控制HTTP API接口;
  • 云台控制:基于动态组网服务创建智能网络,按需选择需要组网的网络成员实现点点互联。

 

你可能感兴趣的:(EasyGBS)