zoukankan      html  css  js  c++  java
  • 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视频播放:

  • 相关阅读:
    脚本——1-100的和
    脚本——删除文件为0大小的文件
    脚本——ping网址
    脚本——大于5k的文件有
    脚本——九九乘法表
    第十天:小数与随机数
    第九天:单元测试
    第八天:错误异常处理
    第七天(1):包与模块管理
    第七天(2):面向对象编程
  • 原文地址:https://www.cnblogs.com/TSINGSEE/p/14189631.html
Copyright © 2011-2022 走看看