Browse Source

临时提交

panlinlin 1 year ago
parent
commit
e531e497c8

+ 3 - 0
src/main/java/com/genersoft/iot/vmp/streamProxy/dao/StreamProxyMapper.java

@@ -92,4 +92,7 @@ public interface StreamProxyMapper {
      * 查询设置了自动移除并且没有国标编号的代理
      */
     List<StreamProxy> selectWithAutoRemoveAndWithoutGbDeviceIdByMediaServerId(String mediaServerId);
+
+    int delete(int id);
+
 }

+ 27 - 20
src/main/java/com/genersoft/iot/vmp/streamProxy/service/impl/StreamProxyServiceImpl.java

@@ -191,8 +191,6 @@ public class StreamProxyServiceImpl implements IStreamProxyService {
         return null;
     }
 
-
-
     /**
      * 新增代理流
      */
@@ -233,24 +231,22 @@ public class StreamProxyServiceImpl implements IStreamProxyService {
     }
 
     @Override
+    @Transactional
     public void del(String app, String stream) {
-        StreamProxy streamProxyItem = streamProxyMapper.selectOne(app, stream);
-        if (streamProxyItem != null) {
-            gbStreamService.sendCatalogMsg(streamProxyItem, CatalogEvent.DEL);
-
-            // 如果关联了国标那么移除关联
-            platformGbStreamMapper.delByAppAndStream(app, stream);
-            gbStreamMapper.del(app, stream);
-            streamProxyMapper.del(app, stream);
-            redisCatchStorage.removeStream(streamProxyItem.getMediaServerId(), "PULL", app, stream);
-            redisCatchStorage.removeStream(streamProxyItem.getMediaServerId(), "PUSH", app, stream);
-            Boolean result = removeStreamProxyFromZlm(streamProxyItem);
-            if (result != null && result) {
-                log.info("[移除代理]: 代理: {}/{}, 从zlm移除成功", app, stream);
-            }else {
-                log.info("[移除代理]: 代理: {}/{}, 从zlm移除失败", app, stream);
+        StreamProxy streamProxy = streamProxyMapper.selectOne(app, stream);
+        if (streamProxy == null) {
+            return;
+        }
+        if (streamProxy.getStreamKey() != null) {
+            MediaServer mediaServer = mediaServerService.getOne(streamProxy.getMediaServerId());
+            if (mediaServer != null) {
+                mediaServerService.stopProxy(mediaServer, streamProxy.getStreamKey());
             }
         }
+        if (streamProxy.getGbId() > 0) {
+            gbChannelService.delete(streamProxy.getGbId());
+        }
+        streamProxyMapper.delete(streamProxy.getId());
     }
 
     @Override
@@ -306,9 +302,20 @@ public class StreamProxyServiceImpl implements IStreamProxyService {
 
     @Override
     public void zlmServerOnline(String mediaServerId) {
+        MediaServer mediaServer = mediaServerService.getOne(mediaServerId);
+        if (mediaServer == null) {
+            return;
+        }
+        // 这里主要是控制数据库/redis缓存/以及zlm中存在的代理流 三者状态一致。以数据库中数据为根本
+        List<StreamProxy> streamProxies = streamProxyMapper.selectForEnableInMediaServer(mediaServerId, true);
+        if (streamProxies.isEmpty()){
+            return;
+        }
+
+
         // 移除开启了无人观看自动移除的流
-        List<StreamProxy> streamProxyItemList = streamProxyMapper.selectWithAutoRemoveAndWithoutGbDeviceIdByMediaServerId(mediaServerId);
-        streamProxyMapper.deleteAutoRemoveItemByMediaServerId(mediaServerId);
+//        List<StreamProxy> streamProxyItemList = streamProxyMapper.selectWithAutoRemoveAndWithoutGbDeviceIdByMediaServerId(mediaServerId);
+        streamProxyMapper.deleteWithAutoRemoveAndWithoutGbDeviceIdByMediaServerId(mediaServerId);
 
         // 移除拉流代理生成的流信息
         syncPullStream(mediaServerId);
@@ -318,7 +325,7 @@ public class StreamProxyServiceImpl implements IStreamProxyService {
                 mediaServerId, true);
         for (StreamProxy streamProxyDto : streamProxyListForEnable) {
             log.info("恢复流代理," + streamProxyDto.getApp() + "/" + streamProxyDto.getStream());
-            mediaServerService.startProxy(me)
+            StreamInfo streamInfo = mediaServerService.startProxy(mediaServer, streamProxy);
             WVPResult<String> wvpResult = addStreamProxyToZlm(streamProxyDto);
             if (wvpResult == null) {
                 // 设置为离线