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

国标GB28181协议国标视频平台国标流媒体服务器EasyGBS向上级联多个平台设备及通道选择错位问题解析

程序员文章站 2022-07-04 22:38:25
...

在EasyGBS的平台级联功能测试中,我们发现一个问题,就是当EasyGBS向多个上级平台级联的时候,会出现选择前后一个平台的通道,影响到前一个平台的设备选择的情况。

国标GB28181协议国标视频平台国标流媒体服务器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向上级联多个平台设备及通道选择错位问题解析

TSINGSEE青犀视频团队曾经介绍过不少平台对接EasyGBS的方法,比如:EasyGBS客户端作为上级平台如何跟下级海康8700平台对接EasyGBS如何对接英飞拓视频服务平台国标流媒体服务器对接中兴力维平台。大家可以了解一下。

目前我们也已经推出国标GB28181视频平台EasyGBS推流软件EasyGBD,在使用手机等移动设备进行执法或者户外监控的时候,能够实现户外移动监控的网页无插件直播(EasyGBD在移动执法中的应用)。

国标GB28181协议国标视频平台国标流媒体服务器EasyGBS向上级联多个平台设备及通道选择错位问题解析