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视频播放:
转载:https://blog.csdn.net/TsingSee/article/details/111615076
查看评论