From 3c8507daeedc535eef622e43b450d497a767f187 Mon Sep 17 00:00:00 2001 From: 648540858 <648540858@qq.com> Date: 星期三, 02 十二月 2020 15:33:19 +0800 Subject: [PATCH] 增加hookip设置, 是否开启自动配置设置 --- src/main/java/com/genersoft/iot/vmp/vmanager/play/PlayController.java | 75 ++++++++++++++++++++++++++++++++++++- 1 files changed, 72 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 c9b2d34..3594aff 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 @@ -3,6 +3,7 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.genersoft.iot.vmp.common.StreamInfo; +import com.genersoft.iot.vmp.conf.MediaServerConfig; import com.genersoft.iot.vmp.media.zlm.ZLMRESTfulUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -46,7 +47,7 @@ Integer getEncoding) { if (getEncoding == null) getEncoding = 0; - getEncoding = closeWaitRTPInfo ? 0: getEncoding; + getEncoding = closeWaitRTPInfo ? 0 : getEncoding; Device device = storager.queryVideoDevice(deviceId); StreamInfo streamInfo = storager.queryPlayByDevice(deviceId, channelId); @@ -61,7 +62,6 @@ storager.stopPlay(streamInfo); streamInfo = cmder.playStreamCmd(device, channelId); } - } String streamId = String.format("%08x", Integer.parseInt(streamInfo.getSsrc())).toUpperCase(); // 绛夊緟鎺ㄦ祦, TODO 榛樿瓒呮椂30s @@ -93,6 +93,7 @@ lockFlag = false; logger.info("娴佺紪鐮佷俊鎭凡鑾峰彇"); JSONArray tracks = mediaInfo.getJSONArray("tracks"); + logger.info(tracks.toJSONString()); streamInfo.setTracks(tracks); storager.startPlay(streamInfo); } else { @@ -135,7 +136,7 @@ cmder.streamByeCmd(ssrc); StreamInfo streamInfo = storager.queryPlayBySSRC(ssrc); if (streamInfo == null) - return new ResponseEntity<String>(HttpStatus.PAYMENT_REQUIRED); + return new ResponseEntity<String>("ssrc not found", HttpStatus.OK); storager.stopPlay(streamInfo); if (logger.isDebugEnabled()) { logger.debug(String.format("璁惧棰勮鍋滄API璋冪敤锛宻src锛�%s", ssrc)); @@ -150,5 +151,73 @@ return new ResponseEntity<String>(HttpStatus.INTERNAL_SERVER_ERROR); } } + + /** + * 灏嗕笉鏄痟264鐨勮棰戦�氳繃ffmpeg 杞爜涓篽264 + aac + * @param ssrc + * @return + */ + @PostMapping("/play/{ssrc}/convert") + public ResponseEntity<String> playConvert(@PathVariable String ssrc) { + StreamInfo streamInfo = storager.queryPlayBySSRC(ssrc); + if (streamInfo == null) { + logger.warn("瑙嗛杞爜API璋冪敤澶辫触锛�, 瑙嗛娴佸凡缁忓仠姝�!"); + return new ResponseEntity<String>("鏈壘鍒拌棰戞祦淇℃伅, 瑙嗛娴佸彲鑳藉凡缁忓仠姝�", HttpStatus.OK); + } + String streamId = String.format("%08x", Integer.parseInt(ssrc)).toUpperCase(); + JSONObject rtpInfo = zlmresTfulUtils.getRtpInfo(streamId); + if (!rtpInfo.getBoolean("exist")) { + logger.warn("瑙嗛杞爜API璋冪敤澶辫触锛�, 瑙嗛娴佸凡鍋滄鎺ㄦ祦!"); + return new ResponseEntity<String>("鎺ㄦ祦淇℃伅鍦ㄦ祦濯掍綋涓笉瀛樺湪, 瑙嗛娴佸彲鑳藉凡鍋滄鎺ㄦ祦", HttpStatus.OK); + } else { + MediaServerConfig mediaInfo = storager.getMediaInfo(); + String dstUrl = String.format("rtmp://%s:%s/convert/%s", "127.0.0.1", mediaInfo.getRtmpPort(), + streamId ); + JSONObject jsonObject = zlmresTfulUtils.addFFmpegSource(streamInfo.getRtsp(), dstUrl, "1000000"); + System.out.println(jsonObject); + JSONObject result = new JSONObject(); + if (jsonObject != null && jsonObject.getInteger("code") == 0) { + result.put("code", 0); + JSONObject data = jsonObject.getJSONObject("data"); + if (data != null) { + result.put("key", data.getString("key")); + result.put("rtmp", dstUrl); + result.put("flv", String.format("http://%s:%s/convert/%s.flv", mediaInfo.getWanIp(), mediaInfo.getHttpPort(), streamId)); + result.put("ws_flv", String.format("ws://%s:%s/convert/%s.flv", mediaInfo.getWanIp(), mediaInfo.getHttpPort(), streamId)); + } + }else { + result.put("code", 1); + result.put("msg", "cover fail"); + } + return new ResponseEntity<String>( result.toJSONString(), HttpStatus.OK); + } + } + + /** + * 缁撴潫杞爜 + * @param key + * @return + */ + @PostMapping("/play/convert/stop/{key}") + public ResponseEntity<String> playConvertStop(@PathVariable String key) { + + JSONObject jsonObject = zlmresTfulUtils.delFFmpegSource(key); + System.out.println(jsonObject); + JSONObject result = new JSONObject(); + if (jsonObject != null && jsonObject.getInteger("code") == 0) { + result.put("code", 0); + JSONObject data = jsonObject.getJSONObject("data"); + if (data != null && data.getBoolean("flag")) { + result.put("code", "0"); + result.put("msg", "success"); + }else { + + } + }else { + result.put("code", 1); + result.put("msg", "delFFmpegSource fail"); + } + return new ResponseEntity<String>( result.toJSONString(), HttpStatus.OK); + } } -- Gitblit v1.8.0