|
|
@@ -9,6 +9,7 @@ import com.genersoft.iot.vmp.service.IMediaServerService;
|
|
|
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,98 @@ public class PlaybackController {
|
|
|
return new ResponseEntity<String>(HttpStatus.INTERNAL_SERVER_ERROR);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ @ApiOperation("回放暂停")
|
|
|
+ @ApiImplicitParams({
|
|
|
+ @ApiImplicitParam(name = "streamId", value = "回放流ID", 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 = "回放流ID", 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 = "回放流ID", 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 = "回放流ID", dataTypeClass = String.class),
|
|
|
+ @ApiImplicitParam(name = "speed", value = "倍速 1、2、4", dataTypeClass = String.class),
|
|
|
+ })
|
|
|
+ @GetMapping("/speed/{streamId}/{speed}")
|
|
|
+ public ResponseEntity<String> playSpeed(@PathVariable String streamId, @PathVariable String 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);
|
|
|
+ }
|
|
|
+ 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);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|