From 9362523c39b66359a2ead7018ff59362a1df84c7 Mon Sep 17 00:00:00 2001 From: lijun Date: Wed, 22 Jan 2025 15:09:15 +0800 Subject: [PATCH] =?UTF-8?q?=E5=86=85=E5=AD=98=E6=B3=84=E6=BC=8F=E8=A7=A3?= =?UTF-8?q?=E5=86=B3=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- handler/tool.go | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/handler/tool.go b/handler/tool.go index b5306ea..5639bce 100644 --- a/handler/tool.go +++ b/handler/tool.go @@ -113,24 +113,25 @@ func GetVideoStream(c *gin.Context) { //设备流 c.Stream(func(w io.Writer) bool { var count int - frame := gocv.NewMat() - defer func() { - //关闭帧 - err4 := frame.Close() - if err4 != nil { - log.Printf("device:%d frame close err:%v", deviceID, err4) - } - }() + var frame gocv.Mat errCount := 0 for { if errCount > 10 { log.Printf("stream device:%d errCount > 10", deviceID) return false } + frame = gocv.NewMat() cnt := service.GetDeviceCurrentFrameV2(&frame, deviceID) + defer func() { + //关闭帧 + err4 := frame.Close() + if err4 != nil { + log.Printf("device:%d frame close err:%v", deviceID, err4) + } + }() if cnt == count || cnt == -1 { time.Sleep(50 * time.Millisecond) - log.Printf("stream device:%d ,cnt =%d,count=%d,errCount=%d", deviceID, cnt, count, errCount) + log.Printf("stream device:%d,cnt =%d,count=%d,errCount=%d", deviceID, cnt, count, errCount) errCount++ continue } @@ -146,6 +147,7 @@ func GetVideoStream(c *gin.Context) { log.Printf("stream img encode err:%v", err2) return false } + defer img.Close() frame_ := img.GetBytes() _, err = w.Write([]byte("--frame\r\nContent-Type: image/jpeg\r\n\r\n")) @@ -251,7 +253,7 @@ func subscribeAndHandleMessagesV3(ws *websocket.Conn, deviceId int) { buf.Close() t++ if t%50 == 0 { - log.Printf("device:%d send frame count:%d,img is closed", deviceId, c) + log.Printf("device:%d send frame count:%d,img and buf had been closed", deviceId, c) } } } else {