小言_互联网的博客

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

343人阅读  评论(0)

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

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

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

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

以下是返回通道的代码:


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

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

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

修改后的代码如下:

修改后查询如下:

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

EasyCVR视频播放:


转载:https://blog.csdn.net/TsingSee/article/details/111615076
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场