From edb033ccd7df53e2444f38c9657946ce15856153 Mon Sep 17 00:00:00 2001 From: panlinlin <648540858@qq.com> Date: 星期五, 26 三月 2021 18:32:36 +0800 Subject: [PATCH] 添加获取直播流的api --- src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java | 43 +++++++++++++++++++++++++++++-------------- 1 files changed, 29 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java index ba1a6f1..51c6e1b 100644 --- a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java +++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java @@ -51,8 +51,8 @@ @Autowired private IRedisCatchStorage redisCatchStorage; - // @Autowired - // private ZLMRESTfulUtils zlmresTfulUtils; + @Autowired + private ZLMMediaListManager zlmMediaListManager; @Autowired private ZLMHttpHookSubscribe subscribe; @@ -133,8 +133,6 @@ if (logger.isDebugEnabled()) { logger.debug("ZLM HOOK on_publish API璋冪敤锛屽弬鏁帮細" + json.toString()); } - // String app = json.getString("app"); - // String streamId = json.getString("id"); ZLMHttpHookSubscribe.Event subscribe = this.subscribe.getSubscribe(ZLMHttpHookSubscribe.HookType.on_publish, json); if (subscribe != null) subscribe.response(json); @@ -212,6 +210,13 @@ if (logger.isDebugEnabled()) { logger.debug("ZLM HOOK on_shell_login API璋冪敤锛屽弬鏁帮細" + json.toString()); } + // TODO 濡傛灉鏄甫鏈塺tpstream鍒欏紑鍚寜闇�鎷夋祦 + // String app = json.getString("app"); + // String stream = json.getString("stream"); + + ZLMHttpHookSubscribe.Event subscribe = this.subscribe.getSubscribe(ZLMHttpHookSubscribe.HookType.on_publish, json); + if (subscribe != null) subscribe.response(json); + JSONObject ret = new JSONObject(); ret.put("code", 0); ret.put("msg", "success"); @@ -232,6 +237,7 @@ // 娴佹秷澶辩Щ闄edis play String app = json.getString("app"); String streamId = json.getString("stream"); + String schema = json.getString("schema"); boolean regist = json.getBoolean("regist"); StreamInfo streamInfo = redisCatchStorage.queryPlayByStreamId(streamId); if ("rtp".equals(app) && !regist ) { @@ -241,6 +247,10 @@ }else{ streamInfo = redisCatchStorage.queryPlaybackByStreamId(streamId); redisCatchStorage.stopPlayback(streamInfo); + } + }else { + if (!"rtp".equals(app) && "rtsp".equals(schema)){ + zlmMediaListManager.updateMediaList(); } } JSONObject ret = new JSONObject(); @@ -262,20 +272,25 @@ } String streamId = json.getString("stream"); - - cmder.streamByeCmd(streamId); StreamInfo streamInfo = redisCatchStorage.queryPlayByStreamId(streamId); - if (streamInfo!=null){ - redisCatchStorage.stopPlay(streamInfo); - storager.stopPlay(streamInfo.getDeviceID(), streamInfo.getChannelId()); - }else{ - streamInfo = redisCatchStorage.queryPlaybackByStreamId(streamId); - redisCatchStorage.stopPlayback(streamInfo); - } - + JSONObject ret = new JSONObject(); ret.put("code", 0); ret.put("close", true); + + if (streamInfo != null) { + if (redisCatchStorage.isChannelSendingRTP(streamInfo.getChannelId())) { + ret.put("close", false); + } else { + cmder.streamByeCmd(streamId); + redisCatchStorage.stopPlay(streamInfo); + storager.stopPlay(streamInfo.getDeviceID(), streamInfo.getChannelId()); + } + }else{ + cmder.streamByeCmd(streamId); + streamInfo = redisCatchStorage.queryPlaybackByStreamId(streamId); + redisCatchStorage.stopPlayback(streamInfo); + } return new ResponseEntity<String>(ret.toString(),HttpStatus.OK); } -- Gitblit v1.8.0