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

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

GBS产品架构3平面 定.png

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

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

1293.png

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

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()

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

GBS4.png

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

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

扫描二维码关注公众号,回复: 11604219 查看本文章

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

猜你喜欢

转载自blog.csdn.net/EasyGBS/article/details/108141491