国标GB28181协议客户端EasyGBS视频平台,接入设备超出授权设备数量有什么影响?
程序员文章站
2022-07-05 23:47:00
...
GB28181国标EasyGBS视频平台是一套支持国标GB28181协议摄像头接入的视频平台,TSINGSEE青犀视频做了多个不同路数的版本,方便用户根据自己需求进行选择。
正常来说EasyGBS接入的设备不能超过我们授权的通道数,如果接入的设备数超过了授权的通道数,则所有的设备都可能会报错,无法播放。
下图我们举个例子,当接入设备过多时,EasyGBS所有通道的播放界面就会报“License Channel Count Overload”错误。
经过排查代码发现,系统在播放的时候增加了判断机制:如果接入通道数量超过了授权通道数,直接报错返回。
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()
修改之后,已授权的通道数能够正常播放,而未授权的通道数则无法播放视频。
如果大家有兴趣,也可以查看我们往期常见问题的解决方案:
EasyGBS平台如何开启“演示”模式
H.265编码如何降低CPU来增加视频传输效率
视频相关解决方案均可访问TSINGSEE青犀视频,可以联系我们获取演示方案,直观感受,也可随意进行下载及测试,如有疑问,欢迎随时咨询我们。