From 7dc8fd4a1e8c5afb6fad53454935419c239838c0 Mon Sep 17 00:00:00 2001
From: panlinlin <648540858@qq.com>
Date: 星期四, 01 四月 2021 18:06:21 +0800
Subject: [PATCH] 添加拉流代理与国标关联, 支持代理rtsp/rtmp/...,转发到国标
---
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java | 61 +++++++++++++++++++++++-------
1 files changed, 46 insertions(+), 15 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 90b5369..b2c1597 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
@@ -1,5 +1,6 @@
package com.genersoft.iot.vmp.media.zlm;
+import java.util.List;
import java.util.UUID;
import com.alibaba.fastjson.JSON;
@@ -51,8 +52,8 @@
@Autowired
private IRedisCatchStorage redisCatchStorage;
- // @Autowired
- // private ZLMRESTfulUtils zlmresTfulUtils;
+ @Autowired
+ private ZLMMediaListManager zlmMediaListManager;
@Autowired
private ZLMHttpHookSubscribe subscribe;
@@ -237,6 +238,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 ) {
@@ -246,6 +248,10 @@
}else{
streamInfo = redisCatchStorage.queryPlaybackByStreamId(streamId);
redisCatchStorage.stopPlayback(streamInfo);
+ }
+ }else {
+ if (!"rtp".equals(app) && "rtsp".equals(schema)){
+ zlmMediaListManager.updateMediaList();
}
}
JSONObject ret = new JSONObject();
@@ -267,21 +273,35 @@
}
String streamId = json.getString("stream");
-
- cmder.streamByeCmd(streamId);
+ String app = json.getString("app");
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);
+
+
+ if ("rtp".equals(app)){
+ 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);
+ }else {
+ JSONObject ret = new JSONObject();
+ ret.put("code", 0);
+ ret.put("close", false);
+ return new ResponseEntity<String>(ret.toString(),HttpStatus.OK);
}
-
- JSONObject ret = new JSONObject();
- ret.put("code", 0);
- ret.put("close", true);
- return new ResponseEntity<String>(ret.toString(),HttpStatus.OK);
+
}
/**
@@ -340,10 +360,21 @@
// String data = json.getString("data");
// List<MediaServerConfig> mediaServerConfigs = JSON.parseArray(JSON.toJSONString(json), MediaServerConfig.class);
// MediaServerConfig mediaServerConfig = mediaServerConfigs.get(0);
+
+ List<ZLMHttpHookSubscribe.Event> subscribes = this.subscribe.getSubscribes(ZLMHttpHookSubscribe.HookType.on_server_started);
+ if (subscribes != null && subscribes.size() > 0) {
+ for (ZLMHttpHookSubscribe.Event subscribe : subscribes) {
+ subscribe.response(json);
+ }
+ }
+
MediaServerConfig mediaServerConfig = JSON.toJavaObject(json, MediaServerConfig.class);
mediaServerConfig.setWanIp(StringUtils.isEmpty(mediaWanIp)? mediaIp: mediaWanIp);
mediaServerConfig.setLocalIP(mediaIp);
redisCatchStorage.updateMediaInfo(mediaServerConfig);
+
+ // 閲嶆柊鍙戣捣浠g悊
+
JSONObject ret = new JSONObject();
ret.put("code", 0);
ret.put("msg", "success");
--
Gitblit v1.8.0