From be7082f5e21aaab0ef541d9a78ced7eaebcfb1f7 Mon Sep 17 00:00:00 2001 From: 648540858 <648540858@qq.com> Date: 星期四, 25 十一月 2021 15:33:25 +0800 Subject: [PATCH] 优化多线程参数 --- src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/playback/PlaybackController.java | 100 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 100 insertions(+), 0 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/playback/PlaybackController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/playback/PlaybackController.java index 98df8dd..a029073 100644 --- a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/playback/PlaybackController.java +++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/playback/PlaybackController.java @@ -9,6 +9,7 @@ import com.genersoft.iot.vmp.service.bean.SSRCInfo; import com.genersoft.iot.vmp.storager.IRedisCatchStorage; import com.genersoft.iot.vmp.service.IPlayService; +import com.genersoft.iot.vmp.vmanager.gb28181.session.InfoCseqCache; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; @@ -152,4 +153,103 @@ return new ResponseEntity<String>(HttpStatus.INTERNAL_SERVER_ERROR); } } + + @ApiOperation("鍥炴斁鏆傚仠") + @ApiImplicitParams({ + @ApiImplicitParam(name = "streamId", value = "鍥炴斁娴両D", dataTypeClass = String.class), + }) + @GetMapping("/pause/{streamId}") + public ResponseEntity<String> playPause(@PathVariable String streamId) { + logger.info("playPause: "+streamId); + JSONObject json = new JSONObject(); + StreamInfo streamInfo = redisCatchStorage.queryPlaybackByStreamId(streamId); + if (null == streamInfo) { + json.put("msg", "streamId涓嶅瓨鍦�"); + logger.warn("streamId涓嶅瓨鍦�!"); + return new ResponseEntity<String>(json.toString(), HttpStatus.BAD_REQUEST); + } + setCseq(streamId); + Device device = storager.queryVideoDevice(streamInfo.getDeviceID()); + cmder.playPauseCmd(device, streamInfo); + json.put("msg", "ok"); + return new ResponseEntity<String>(json.toString(), HttpStatus.OK); + } + + @ApiOperation("鍥炴斁鎭㈠") + @ApiImplicitParams({ + @ApiImplicitParam(name = "streamId", value = "鍥炴斁娴両D", dataTypeClass = String.class), + }) + @GetMapping("/resume/{streamId}") + public ResponseEntity<String> playResume(@PathVariable String streamId) { + logger.info("playResume: "+streamId); + JSONObject json = new JSONObject(); + StreamInfo streamInfo = redisCatchStorage.queryPlaybackByStreamId(streamId); + if (null == streamInfo) { + json.put("msg", "streamId涓嶅瓨鍦�"); + logger.warn("streamId涓嶅瓨鍦�!"); + return new ResponseEntity<String>(json.toString(), HttpStatus.BAD_REQUEST); + } + setCseq(streamId); + Device device = storager.queryVideoDevice(streamInfo.getDeviceID()); + cmder.playResumeCmd(device, streamInfo); + json.put("msg", "ok"); + return new ResponseEntity<String>(json.toString(), HttpStatus.OK); + } + + @ApiOperation("鍥炴斁鎷栧姩鎾斁") + @ApiImplicitParams({ + @ApiImplicitParam(name = "streamId", value = "鍥炴斁娴両D", dataTypeClass = String.class), + @ApiImplicitParam(name = "seekTime", value = "鎷栧姩鍋忕Щ閲忥紝鍗曚綅s", dataTypeClass = Long.class), + }) + @GetMapping("/seek/{streamId}/{seekTime}") + public ResponseEntity<String> playSeek(@PathVariable String streamId, @PathVariable long seekTime) { + logger.info("playSeek: "+streamId+", "+seekTime); + JSONObject json = new JSONObject(); + StreamInfo streamInfo = redisCatchStorage.queryPlaybackByStreamId(streamId); + if (null == streamInfo) { + json.put("msg", "streamId涓嶅瓨鍦�"); + logger.warn("streamId涓嶅瓨鍦�!"); + return new ResponseEntity<String>(json.toString(), HttpStatus.BAD_REQUEST); + } + setCseq(streamId); + Device device = storager.queryVideoDevice(streamInfo.getDeviceID()); + cmder.playSeekCmd(device, streamInfo, seekTime); + json.put("msg", "ok"); + return new ResponseEntity<String>(json.toString(), HttpStatus.OK); + } + + @ApiOperation("鍥炴斁鍊嶉�熸挱鏀�") + @ApiImplicitParams({ + @ApiImplicitParam(name = "streamId", value = "鍥炴斁娴両D", dataTypeClass = String.class), + @ApiImplicitParam(name = "speed", value = "鍊嶉��0.25 0.5 1銆�2銆�4", dataTypeClass = Double.class), + }) + @GetMapping("/speed/{streamId}/{speed}") + public ResponseEntity<String> playSpeed(@PathVariable String streamId, @PathVariable Double speed) { + logger.info("playSpeed: "+streamId+", "+speed); + JSONObject json = new JSONObject(); + StreamInfo streamInfo = redisCatchStorage.queryPlaybackByStreamId(streamId); + if (null == streamInfo) { + json.put("msg", "streamId涓嶅瓨鍦�"); + logger.warn("streamId涓嶅瓨鍦�!"); + return new ResponseEntity<String>(json.toString(), HttpStatus.BAD_REQUEST); + } + if(speed != 0.25 && speed != 0.5 && speed != 1 && speed != 2.0 && speed != 4.0) { + json.put("msg", "涓嶆敮鎸佺殑speed锛�0.25 0.5 1銆�2銆�4锛�"); + logger.warn("涓嶆敮鎸佺殑speed锛� " + speed); + return new ResponseEntity<String>(json.toString(), HttpStatus.BAD_REQUEST); + } + setCseq(streamId); + Device device = storager.queryVideoDevice(streamInfo.getDeviceID()); + cmder.playSpeedCmd(device, streamInfo, speed); + json.put("msg", "ok"); + return new ResponseEntity<String>(json.toString(), HttpStatus.OK); + } + + public void setCseq(String streamId) { + if (InfoCseqCache.CSEQCACHE.containsKey(streamId)) { + InfoCseqCache.CSEQCACHE.put(streamId, InfoCseqCache.CSEQCACHE.get(streamId) + 1); + } else { + InfoCseqCache.CSEQCACHE.put(streamId, 2L); + } + } } -- Gitblit v1.8.0