国标视频云服务EasyGBS支持设备/平台通过国标GB28181协议注册接入,并能实现视频的实时监控直播、录像、检索与回看、语音对讲、云存储、告警、平台级联等功能。其中,级联功能可以实现平台与平台之间的数据互联互通,降低数据共享难度,在很多安防场景中均有应用,如明厨亮灶、平安乡村等。
我们在测试平台功能时发现,当EasyGBS向多个上级平台级联,选择通道时,会出现选中其他级联平台的通道,影响到前一个平台的设备选择。
于是我们对该情况进行了排查。经过分析发现,在级联选择通道时,没有指定级联信息的ID,所以出现了上述情况,如图所示:
else if opt == "del" {
for i, v := range ids {
ids := strings.Split(v, ",")
if len(ids) != 2 {
break
}
if i == 0 {
sql = fmt.Sprintf(`(channel_id = '%s' and device_id = '%s' )`, ids[0], ids[1])
} else {
sql = fmt.Sprintf(` %s or (channel_id = '%s' and device_id = '%s')`, sql, ids[0], ids[1])
}
}
if len(ids) > 0 {
if err := db.SQLite.Delete(models.CascadeChannel{}, sql).Error; err != nil {
c.AbortWithStatusJSON(400, err.Error())
return
}
}
}
可添加如下代码:
for i, v := range ids {
ids := strings.Split(v, ",")
if len(ids) != 2 {
break
}
if i == 0 {
sql = fmt.Sprintf(`(channel_id = '%s' and device_id = '%s' and cascade_id = '%d')`, ids[0], ids[1], cascade_id)
} else {
sql = fmt.Sprintf(` %s or (channel_id = '%s' and device_id = '%s' and cascade_id = '%d')`, sql, ids[0], ids[1], cascade_id)
}
}
if len(ids) > 0 {
if err := db.SQLite.Delete(models.CascadeChannel{}, sql).Error; err != nil {
c.AbortWithStatusJSON(400, err.Error())
return
}
}
按照上述修改后,平台的级联功能一切正常了,也不会影响到别的级联信息。
国标GB28181协议视频平台EasyGBS既可以作为业务平台,也能作为视频能力平台进行调用,是安防市场主流的视频监控平台。平台部署简单、可拓展性强,支持将接入的视频流进行全终端、全平台分发,分发的视频流包括RTSP、RTMP、FLV、HLS、WebRTC等格式。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有