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

国标GB28181协议客户端EasyGBS视频平台,接入设备超出授权设备数量有什么影响?

程序员文章站 2022-07-05 23:47:00
...

GB28181国标EasyGBS视频平台是一套支持国标GB28181协议摄像头接入的视频平台,TSINGSEE青犀视频做了多个不同路数的版本,方便用户根据自己需求进行选择。

国标GB28181协议客户端EasyGBS视频平台,接入设备超出授权设备数量有什么影响?

正常来说EasyGBS接入的设备不能超过我们授权的通道数,如果接入的设备数超过了授权的通道数,则所有的设备都可能会报错,无法播放。

下图我们举个例子,当接入设备过多时,EasyGBS所有通道的播放界面就会报“License Channel Count Overload”错误。

国标GB28181协议客户端EasyGBS视频平台,接入设备超出授权设备数量有什么影响?

经过排查代码发现,系统在播放的时候增加了判断机制:如果接入通道数量超过了授权通道数,直接报错返回。

total := 0
		
			//db.SQLite.Model(models.Channel{}).Count(&total)
			db.SQLite.Model(models.Channel{}).Where("sub_count=0 and status='ON'").Count(&total)
			if total > license.ChannelCount {
				c.AbortWithStatusJSON(http.StatusForbidden, "License Channel Count Overload")
				return
			}
			c.Next()

而我们要达到的效果是即使接入设备的数量超过了授权通道数,在播放时,那些在授权范围内的通道视频流仍然要正常播放。基于这一需求,我们需要在代码上做如下更改:

channels := make([]models.Channel, 0)
			db.SQLite.Table(models.Channel{}.TableName()).Where("sub_count=0 and status='ON'").Order("created_at asc").Limit(license.ChannelCount).Scan(&channels)
			var is_play = false
			for _, v := range channels {
				if v.DeviceID == deviceID && v.ID == channelID {
					is_play = true
				}
			}
			//if total > license.ChannelCount {
			if !is_play {
				c.AbortWithStatusJSON(http.StatusForbidden, "已使用通道数超过授权通道数目!")
				//License Channel Count Overload
				return
			}
			c.Next()

修改之后,已授权的通道数能够正常播放,而未授权的通道数则无法播放视频。

国标GB28181协议客户端EasyGBS视频平台,接入设备超出授权设备数量有什么影响?

如果大家有兴趣,也可以查看我们往期常见问题的解决方案:

EasyGBS平台如何开启“演示”模式
H.265编码如何降低CPU来增加视频传输效率

视频相关解决方案均可访问TSINGSEE青犀视频,可以联系我们获取演示方案,直观感受,也可随意进行下载及测试,如有疑问,欢迎随时咨询我们。

上一篇: 23中设计模式

下一篇: dpkg相关