使用分离方式,修改视频流返回方式
This commit is contained in:
parent
48d509eea7
commit
529d6b9282
4
main.go
4
main.go
|
|
@ -77,7 +77,7 @@ func init() {
|
||||||
//service.DeviceIsGettingFrame[device.ID] = false
|
//service.DeviceIsGettingFrame[device.ID] = false
|
||||||
service.DeviceRWMap.Store(device.ID, &sync.RWMutex{})
|
service.DeviceRWMap.Store(device.ID, &sync.RWMutex{})
|
||||||
service.DeviceCurrentFrameMap.Store(device.ID, gocv.NewMat())
|
service.DeviceCurrentFrameMap.Store(device.ID, gocv.NewMat())
|
||||||
service.DeviceFrameCount.Store(device.ID, 0)
|
service.DeviceFrameCount[device.ID] = 0
|
||||||
service.DeviceIsGettingFrame.Store(device.ID, false)
|
service.DeviceIsGettingFrame.Store(device.ID, false)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -100,7 +100,7 @@ func ReadConfigAndSetSystem() {
|
||||||
//说明没有这个设备,需初始化添加
|
//说明没有这个设备,需初始化添加
|
||||||
service.DeviceRWMap.Store(device.ID, &sync.RWMutex{})
|
service.DeviceRWMap.Store(device.ID, &sync.RWMutex{})
|
||||||
service.DeviceCurrentFrameMap.Store(device.ID, gocv.NewMat())
|
service.DeviceCurrentFrameMap.Store(device.ID, gocv.NewMat())
|
||||||
service.DeviceFrameCount.Store(device.ID, 0)
|
service.DeviceFrameCount[device.ID] = 0
|
||||||
service.DeviceIsGettingFrame.Store(device.ID, false)
|
service.DeviceIsGettingFrame.Store(device.ID, false)
|
||||||
}
|
}
|
||||||
if is_get == false && device.NextStop == false { //如果设备流已经停止且不暂停,则开启
|
if is_get == false && device.NextStop == false { //如果设备流已经停止且不暂停,则开启
|
||||||
|
|
|
||||||
|
|
@ -180,6 +180,7 @@ func getVideoFrame(device proto.DeviceInfo) {
|
||||||
fontColor := color.RGBA{G: 255}
|
fontColor := color.RGBA{G: 255}
|
||||||
lineType := 2
|
lineType := 2
|
||||||
z := 0
|
z := 0
|
||||||
|
var frame gocv.Mat
|
||||||
for {
|
for {
|
||||||
if device.LogFrame > 0 && z%device.LogFrame == 0 {
|
if device.LogFrame > 0 && z%device.LogFrame == 0 {
|
||||||
log.Printf("设备:%d 当前帧: %d\n", device.ID, z)
|
log.Printf("设备:%d 当前帧: %d\n", device.ID, z)
|
||||||
|
|
@ -187,7 +188,7 @@ func getVideoFrame(device proto.DeviceInfo) {
|
||||||
if device.NextStop {
|
if device.NextStop {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
frame := gocv.NewMat()
|
frame = gocv.NewMat()
|
||||||
ok := webcam.Read(&frame)
|
ok := webcam.Read(&frame)
|
||||||
if !ok {
|
if !ok {
|
||||||
log.Printf("设备:%v 错误: 无法从视频流中读取帧\n", device)
|
log.Printf("设备:%v 错误: 无法从视频流中读取帧\n", device)
|
||||||
|
|
@ -214,6 +215,10 @@ func getVideoFrame(device proto.DeviceInfo) {
|
||||||
}
|
}
|
||||||
z++
|
z++
|
||||||
}
|
}
|
||||||
|
err2 := frame.Close()
|
||||||
|
if err2 != nil {
|
||||||
|
log.Printf("设备:%d 错误: 无法释放帧资源,err:%s \n", device.ID, err.Error())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 发起get请求,返回响应状态码
|
// 发起get请求,返回响应状态码
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue