From ab81136765f1b641223b982b2baef13e06307fe4 Mon Sep 17 00:00:00 2001 From: 648540858 <648540858@qq.com> Date: 星期三, 08 十二月 2021 16:45:50 +0800 Subject: [PATCH] 优化适配zlm的hook保活 --- src/main/java/com/genersoft/iot/vmp/service/impl/StreamProxyServiceImpl.java | 42 +++++++++++++++++++++++++++++++++++------- 1 files changed, 35 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/StreamProxyServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/StreamProxyServiceImpl.java index 907893d..19bf13a 100644 --- a/src/main/java/com/genersoft/iot/vmp/service/impl/StreamProxyServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/service/impl/StreamProxyServiceImpl.java @@ -2,6 +2,7 @@ import com.alibaba.fastjson.JSONObject; import com.genersoft.iot.vmp.common.StreamInfo; +import com.genersoft.iot.vmp.conf.UserSetup; import com.genersoft.iot.vmp.gb28181.bean.GbStream; import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform; import com.genersoft.iot.vmp.media.zlm.ZLMRESTfulUtils; @@ -28,8 +29,7 @@ import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; -import java.util.ArrayList; -import java.util.List; +import java.util.*; /** * 瑙嗛浠g悊涓氬姟 @@ -53,6 +53,9 @@ @Autowired private IRedisCatchStorage redisCatchStorage; + + @Autowired + private UserSetup userSetup; @Autowired private GbStreamMapper gbStreamMapper; @@ -160,6 +163,9 @@ }else { mediaServerItem = mediaServerService.getOne(param.getMediaServerId()); } + if (mediaServerItem == null) { + return null; + } if ("default".equals(param.getType())){ result = zlmresTfulUtils.addStreamProxy(mediaServerItem, param.getApp(), param.getStream(), param.getUrl(), param.isEnable_hls(), param.isEnable_mp4(), param.getRtp_type()); @@ -244,7 +250,6 @@ } } } - return result; } @@ -255,18 +260,41 @@ } @Override - public void zlmServerOnline(ZLMServerConfig zlmServerConfig) { - + public void zlmServerOnline(String mediaServerId) { + zlmServerOffline(mediaServerId); } @Override public void zlmServerOffline(String mediaServerId) { // 绉婚櫎寮�鍚簡鏃犱汉瑙傜湅鑷姩绉婚櫎鐨勬祦 + List<StreamProxyItem> streamProxyItemList = streamProxyMapper.selecAutoRemoveItemByMediaServerId(mediaServerId); + if (streamProxyItemList.size() > 0) { + gbStreamMapper.batchDel(streamProxyItemList); + } streamProxyMapper.deleteAutoRemoveItemByMediaServerId(mediaServerId); // 鍏朵粬鐨勬祦璁剧疆鏈惎鐢� streamProxyMapper.updateStatus(false, mediaServerId); - // 绉婚櫎redis鍐呮祦鐨勪俊鎭� - redisCatchStorage.removeStream(mediaServerId, "PULL"); + String type = "PULL"; + + // 鍙戦�乺edis娑堟伅 + List<StreamInfo> streamInfoList = redisCatchStorage.getStreams(mediaServerId, type); + if (streamInfoList.size() > 0) { + for (StreamInfo streamInfo : streamInfoList) { + JSONObject jsonObject = new JSONObject(); + jsonObject.put("serverId", userSetup.getServerId()); + jsonObject.put("app", streamInfo.getApp()); + jsonObject.put("stream", streamInfo.getStreamId()); + jsonObject.put("register", false); + jsonObject.put("mediaServerId", mediaServerId); + redisCatchStorage.sendStreamChangeMsg(type, jsonObject); + // 绉婚櫎redis鍐呮祦鐨勪俊鎭� + redisCatchStorage.removeStream(mediaServerId, type, streamInfo.getApp(), streamInfo.getStreamId()); + } + } + } + + @Override + public void clean() { } } -- Gitblit v1.8.0