EasyCVR视频融合平台能够兼容RTSP、GB28181、SDK、Ehome等协议前端设备的接入,也正因如此,很多设备数量多且复杂的项目团队会找到我们,希望通过EasyCVR来解决问题。
很多项目团队由于项目庞大,视频通道高达百路或者千路,急需一款高性能的视频集中管理平台来集中管理。一般此类项目通道数量大,需要更加便捷的操作到导入如此多的通道,在分享时,如果手动复制粘贴分享链接到自己的业务平台也是不现实的。
针对该问题,我们也对EasyCVR的功能做了新增,EasyCVR1.0.40版本内提供了一键导出分享链接到csv表格中的功能,现实如下:
客户可以根据导出的分享csv表格,编写脚本文件直接将csv中的信息导入数据库中,实现一键添加,极大方便了管理者的运维。
我们实现的代码如下,大家可以参考:
func (h *APIHandler)GetShareAddr(c *gin.Context){
columns := [][]string{{"CameraName", "BranchName", "Iframes", "ShareConnection"}}
devs,err:=cvrdao.GetDeviceDao().GetAll()
if err == nil{
for _,v:=range *devs{
chns,e:=cvrdao.GetChannelDao().GetAllByDeviceID(v.DeviceID)
if e == nil{
for _,value:=range *chns{
m := []string{value.Name, v.DeviceName,
fmt.Sprintf("<iframe src="http://127.0.0.1:18000/#/players/%d/%d/1?autoplay=true" allowfullscreen allow="autoplay" ></iframe>",v.DeviceID,value.ChannelID),
fmt.Sprintf("http://127.0.0.1:18000/#/players/%d/%d/1?autoplay=true",v.DeviceID,value.ChannelID),}
columns = append(columns, m)
}
}
}
}
ExportCsv("share.csv",columns)
}
func ExportCsv(filePath string, data [][]string) {
fp, err := os.OpenFile(filePath,os.O_RDWR|os.O_CREATE|os.O_TRUNC,0664)
if err != nil {
log.Printf("创建文件["+filePath+"]句柄失败,%v", err)
return
}
defer fp.Close()
fp.WriteString("xEFxBBxBF") // 写入UTF-8 BOM
w := csv.NewWriter(fp) //创建一个新的写入文件流
w.WriteAll(data)
w.Flush()
}