diff --git a/main.go b/main.go index 60146be..7c5c143 100644 --- a/main.go +++ b/main.go @@ -77,7 +77,7 @@ func init() { //service.DeviceIsGettingFrame[device.ID] = false service.DeviceRWMap.Store(device.ID, &sync.RWMutex{}) service.DeviceCurrentFrameMap.Store(device.ID, gocv.NewMat()) - service.DeviceFrameCount.Store(device.ID, 0) + service.DeviceFrameCount[device.ID] = 0 service.DeviceIsGettingFrame.Store(device.ID, false) } } @@ -100,7 +100,7 @@ func ReadConfigAndSetSystem() { //说明没有这个设备,需初始化添加 service.DeviceRWMap.Store(device.ID, &sync.RWMutex{}) service.DeviceCurrentFrameMap.Store(device.ID, gocv.NewMat()) - service.DeviceFrameCount.Store(device.ID, 0) + service.DeviceFrameCount[device.ID] = 0 service.DeviceIsGettingFrame.Store(device.ID, false) } if is_get == false && device.NextStop == false { //如果设备流已经停止且不暂停,则开启 diff --git a/service/tool.go b/service/tool.go index 88e1018..c3922e2 100644 --- a/service/tool.go +++ b/service/tool.go @@ -180,6 +180,7 @@ func getVideoFrame(device proto.DeviceInfo) { fontColor := color.RGBA{G: 255} lineType := 2 z := 0 + var frame gocv.Mat for { if device.LogFrame > 0 && z%device.LogFrame == 0 { log.Printf("设备:%d 当前帧: %d\n", device.ID, z) @@ -187,7 +188,7 @@ func getVideoFrame(device proto.DeviceInfo) { if device.NextStop { break } - frame := gocv.NewMat() + frame = gocv.NewMat() ok := webcam.Read(&frame) if !ok { log.Printf("设备:%v 错误: 无法从视频流中读取帧\n", device) @@ -214,6 +215,10 @@ func getVideoFrame(device proto.DeviceInfo) { } z++ } + err2 := frame.Close() + if err2 != nil { + log.Printf("设备:%d 错误: 无法释放帧资源,err:%s \n", device.ID, err.Error()) + } } // 发起get请求,返回响应状态码