欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-07-06 09:39:10
...

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

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

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

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

因为摄像头告警的时候,需要平台去进行拉流,然后截取快照,比较消耗性能。当告警数据传输过多的时候,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视频平台如何优化告警功能接收数据的频率?

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

更多关于EasyGBS:

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

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

 

相关标签: EasyGBS