From 805fa42a2c010d92b1c8fc29a60d32fd99fb4ea3 Mon Sep 17 00:00:00 2001 From: songww <songww@inspur.com> Date: 星期四, 14 五月 2020 14:19:42 +0800 Subject: [PATCH] 修复回放、停止预览bug,增加ZLM hook监听,长时间无人观看,停止摄像头推流。需开启ZLM的hook并配置url --- src/main/java/com/genersoft/iot/vmp/vmanager/play/PlayController.java | 35 ++++++++++++++++++++++++++++++++--- 1 files changed, 32 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/play/PlayController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/play/PlayController.java index d8b7305..51e5074 100644 --- a/src/main/java/com/genersoft/iot/vmp/vmanager/play/PlayController.java +++ b/src/main/java/com/genersoft/iot/vmp/vmanager/play/PlayController.java @@ -7,10 +7,14 @@ import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import com.alibaba.fastjson.JSONObject; +import com.genersoft.iot.vmp.gb28181.bean.Device; import com.genersoft.iot.vmp.gb28181.transmit.cmd.impl.SIPCommander; +import com.genersoft.iot.vmp.storager.IVideoManagerStorager; @RestController @RequestMapping("/api") @@ -21,10 +25,14 @@ @Autowired private SIPCommander cmder; - @GetMapping("/play/{deviceId}_{channelId}") + @Autowired + private IVideoManagerStorager storager; + + @GetMapping("/play/{deviceId}/{channelId}") public ResponseEntity<String> play(@PathVariable String deviceId,@PathVariable String channelId){ - String ssrc = cmder.playStreamCmd(deviceId, channelId); + Device device = storager.queryVideoDevice(deviceId); + String ssrc = cmder.playStreamCmd(device, channelId); if (logger.isDebugEnabled()) { logger.debug(String.format("璁惧棰勮 API璋冪敤锛宒eviceId锛�%s 锛宑hannelId锛�%s",deviceId, channelId)); @@ -32,10 +40,31 @@ } if(ssrc!=null) { - return new ResponseEntity<String>(ssrc,HttpStatus.OK); + JSONObject json = new JSONObject(); + json.put("ssrc", ssrc); + return new ResponseEntity<String>(json.toString(),HttpStatus.OK); } else { logger.warn("璁惧棰勮API璋冪敤澶辫触锛�"); return new ResponseEntity<String>(HttpStatus.INTERNAL_SERVER_ERROR); } } + + @PostMapping("/play/{ssrc}/stop") + public ResponseEntity<String> playStop(@PathVariable String ssrc){ + + cmder.streamByeCmd(ssrc); + + if (logger.isDebugEnabled()) { + logger.debug(String.format("璁惧棰勮鍋滄API璋冪敤锛宻src锛�%s", ssrc)); + } + + if(ssrc!=null) { + JSONObject json = new JSONObject(); + json.put("ssrc", ssrc); + return new ResponseEntity<String>(json.toString(),HttpStatus.OK); + } else { + logger.warn("璁惧棰勮鍋滄API璋冪敤澶辫触锛�"); + return new ResponseEntity<String>(HttpStatus.INTERNAL_SERVER_ERROR); + } + } } -- Gitblit v1.8.0