Compare commits
3 Commits
1e6a0996a0
...
7d55d68c90
| Author | SHA1 | Date |
|---|---|---|
|
|
7d55d68c90 | |
|
|
b00537b5ec | |
|
|
2b3724a00a |
|
|
@ -102,6 +102,14 @@ func GetVideoStream(c *gin.Context) {
|
|||
c.JSON(400, gin.H{"error": "key error"})
|
||||
return
|
||||
}
|
||||
|
||||
//查看设备是否在获取
|
||||
isGetting := worker.GetRedis(fmt.Sprintf("device_%d_is_getting", deviceID))
|
||||
if isGetting != "true" {
|
||||
c.JSON(400, gin.H{"error": "device is not getting or not exist"})
|
||||
log.Printf("stream device_id:%d is not getting or not exist", deviceID)
|
||||
return
|
||||
}
|
||||
//设备流
|
||||
c.Stream(func(w io.Writer) bool {
|
||||
var count int
|
||||
|
|
@ -120,8 +128,9 @@ func GetVideoStream(c *gin.Context) {
|
|||
return false
|
||||
}
|
||||
cnt := service.GetDeviceCurrentFrameV2(&frame, deviceID)
|
||||
if cnt == count {
|
||||
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)
|
||||
errCount++
|
||||
continue
|
||||
}
|
||||
|
|
@ -185,6 +194,12 @@ func GetRealTimeImage(c *gin.Context) {
|
|||
}
|
||||
worker.SetRedisWithExpire(strconv.Itoa(int(device.ID))+"_is_play", "1", time.Minute*5)
|
||||
log.Printf("device_id:%d has set is_play to 1", deviceIdInt)
|
||||
isGetting = worker.GetRedis(fmt.Sprintf("device_%d_is_getting", device.ID))
|
||||
if isGetting != "true" {
|
||||
c.JSON(http.StatusOK, gin.H{"code": 5, "message": "device is not getting or not exist"})
|
||||
log.Printf("device_id:%d is not getting or not exist", deviceIdInt)
|
||||
return
|
||||
}
|
||||
go subscribeAndHandleMessagesV3(ws, deviceIdInt)
|
||||
}
|
||||
|
||||
|
|
@ -203,6 +218,11 @@ func subscribeAndHandleMessagesV3(ws *websocket.Conn, device_id int) {
|
|||
//从service获取当前帧
|
||||
c := service.GetDeviceCurrentFrameV2(&img, device_id)
|
||||
if c != count {
|
||||
if c == -1 {
|
||||
log.Printf("device:%d get frame err!", device_id)
|
||||
worker.SetRedisSetRemove(online_conn_key, con_id)
|
||||
break
|
||||
}
|
||||
//将img转[]byte
|
||||
if img.Empty() {
|
||||
log.Printf("device:%d img is empty! count = %d \n", device_id, c)
|
||||
|
|
|
|||
17
main.go
17
main.go
|
|
@ -183,13 +183,16 @@ func JWTAuthMiddleware() gin.HandlerFunc {
|
|||
if worker.IsContainSet("super_permission_tokens", tokenString) {
|
||||
s_id := c.Request.Header.Get("super_id")
|
||||
if s_id == "" {
|
||||
c.AbortWithStatus(200)
|
||||
c.JSON(200, gin.H{
|
||||
"message": "NOT_LOGIN",
|
||||
"error": "super_id is empty",
|
||||
"code": 3,
|
||||
})
|
||||
return
|
||||
s_id = c.Query("super_id")
|
||||
if s_id == "" {
|
||||
c.AbortWithStatus(200)
|
||||
c.JSON(200, gin.H{
|
||||
"message": "NOT_LOGIN",
|
||||
"error": "super_id is empty",
|
||||
"code": 3,
|
||||
})
|
||||
return
|
||||
}
|
||||
}
|
||||
id, _ := strconv.Atoi(s_id)
|
||||
//查看s_id类型
|
||||
|
|
|
|||
|
|
@ -115,16 +115,25 @@ func GetDeviceCurrentFrameV2(frame *gocv.Mat, deviceId int) int {
|
|||
if (*frame).Empty() {
|
||||
*frame = gocv.NewMatWithSize(Device1CurrentFrame.Rows(), Device1CurrentFrame.Cols(), Device1CurrentFrame.Type())
|
||||
}
|
||||
if Device1CurrentFrame.Empty() {
|
||||
return -1
|
||||
}
|
||||
Device1CurrentFrame.CopyTo(frame)
|
||||
case 50:
|
||||
if (*frame).Empty() {
|
||||
*frame = gocv.NewMatWithSize(Device50CurrentFrame.Rows(), Device50CurrentFrame.Cols(), Device50CurrentFrame.Type())
|
||||
}
|
||||
if Device50CurrentFrame.Empty() {
|
||||
return -1
|
||||
}
|
||||
Device50CurrentFrame.CopyTo(frame)
|
||||
case 73:
|
||||
if (*frame).Empty() {
|
||||
*frame = gocv.NewMatWithSize(Device73CurrentFrame.Rows(), Device73CurrentFrame.Cols(), Device73CurrentFrame.Type())
|
||||
}
|
||||
if Device73CurrentFrame.Empty() {
|
||||
return -1
|
||||
}
|
||||
Device73CurrentFrame.CopyTo(frame)
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue