GB28181/RTSP/Ehome协议视频智能分析平台EasyCVR分组后调用接口没有返回对应的通道排查

EasyCVR视频平台是TSINGSEE青犀视频今年开发的新平台,经过不断测试后才上线,不过目前EasyCVR的功能也在更新中,我们最近就在测试EasyCVR的分组功能,测试完毕后会将该功能更新至最新版本中。

在我们测试EasyCVR分组功能时,给分组添加GB28181和Ehome协议的设备后,调用接口却没有返回对应的通道,但是数据库国标设备和Ehome设备却已经显示添加成功了。

数据库数据如下表,其中label_id是分组id;channel_id是通道id;channel_device_id是设备id,从表中可以看出分组12是拥有4,5,6三个设备的。

但是在调用接口返回数据只显示了一个。

以下是返回通道的代码:

func Getchannel(data interface{}) ([]map[string]interface{}, error) {
       channels, ok := data.(*[]result)
       rows := make([]map[string]interface{}, 0)
       if !ok {
              return rows, errors.New("数据格式错误")
       }
       fmt.Println(channels)
       for _, value := range *channels {
              if value.ChannelType == "GB" {
                     gbschannels := make([]*models.Channel, 0)
                     q := db.SQLite.Model(models.Channel{}).Where("index = ?", value.DeviceId)
                     q.Find(&gbschannels)
                     if len(gbschannels) != 1 {
                            continue
                     }
                     //设备下通道[名称][启用][在线][录像][音频][按需]字段转换
                     //[在线]
                     if gbschannels[0].Online() {
                            value.ChannelOnline = 1
                     } else {
                            value.ChannelOnline = 0
                     }

将打印出来的sql语句在数据库中执行,发现也是报错的:
SELECT * FROM “t_channels” WHERE (index = ‘6’)

经过查阅资料,我们了解到,index是数据库中的关键字,不能够当做列名直接查询,数据库关键字引用需要携带反引号。

修改后的代码如下:

修改后查询如下:

调用接口后通道返回成功。目前的EasyCVR版本中暂时没有该功能,不过在不久将会上线,如果大家需要测试EasyCVR,欢迎联系我们获取测试账号进行测试,更多视频相关解决方案,也可以联系我们了解。

EasyCVR视频播放:

posted on 2020-12-25 16:37  TSINGSEE  阅读(65)  评论(0编辑  收藏  举报