648540858
2022-01-13 cf23816c80771c9e22bb50d0d89feb34d2edca79
src/main/java/com/genersoft/iot/vmp/service/impl/StreamProxyServiceImpl.java
@@ -105,23 +105,22 @@
            result.append("保存成功");
            if (param.isEnable()) {
                JSONObject jsonObject = addStreamProxyToZlm(param);
                if (jsonObject == null) {
                if (jsonObject == null || jsonObject.getInteger("code") != 0) {
                    streamLive = false;
                    result.append(", 但是启用失败,请检查流地址是否可用");
                    param.setEnable(false);
                    videoManagerStorager.updateStreamProxy(param);
                }else {
                    Integer code = jsonObject.getInteger("code");
                    if (code == 0) {
                        streamLive = true;
                        StreamInfo streamInfo = mediaService.getStreamInfoByAppAndStream(
                                mediaInfo, param.getApp(), param.getStream(), null);
                        wvpResult.setData(streamInfo);
                    // 直接移除
                    if (param.isEnable_remove_none_reader()) {
                        del(param.getApp(), param.getStream());
                    }else {
                        result.append(", 但是启用失败,请检查流地址是否可用");
                        param.setEnable(false);
                        videoManagerStorager.updateStreamProxy(param);
                    }
                }else {
                    streamLive = true;
                    StreamInfo streamInfo = mediaService.getStreamInfoByAppAndStream(
                            mediaInfo, param.getApp(), param.getStream(), null);
                    wvpResult.setData(streamInfo);
                }
            }
@@ -131,7 +130,7 @@
        if ( !StringUtils.isEmpty(param.getPlatformGbId()) && streamLive) {
            List<GbStream> gbStreams = new ArrayList<>();
            gbStreams.add(param);
            if (gbStreamService.addPlatformInfo(gbStreams, param.getPlatformGbId())){
            if (gbStreamService.addPlatformInfo(gbStreams, param.getPlatformGbId(), param.getCatalogId())){
                result.append(",  关联国标平台[ " + param.getPlatformGbId() + " ]成功");
            }else {
                result.append(",  关联国标平台[ " + param.getPlatformGbId() + " ]失败");
@@ -142,6 +141,7 @@
        if (parentPlatforms.size() > 0) {
            for (ParentPlatform parentPlatform : parentPlatforms) {
                param.setPlatformId(parentPlatform.getServerGBId());
                param.setCatalogId(parentPlatform.getCatalogId());
                String stream = param.getStream();
                StreamProxyItem streamProxyItems = platformGbStreamMapper.selectOne(param.getApp(), stream, parentPlatform.getServerGBId());
                if (streamProxyItems == null) {
@@ -202,7 +202,9 @@
                platformGbStreamMapper.delByAppAndStream(app, stream);
                // TODO 如果关联的推流, 那么状态设置为离线
            }
            redisCatchStorage.removeStream(streamProxyItem.getMediaServerId(), "PULL", app, stream);
        }
    }
@@ -277,18 +279,18 @@
        String type = "PULL";
        // 发送redis消息
        List<StreamInfo> streamInfoList = redisCatchStorage.getStreams(mediaServerId, type);
        if (streamInfoList.size() > 0) {
            for (StreamInfo streamInfo : streamInfoList) {
        List<MediaItem> mediaItems = redisCatchStorage.getStreams(mediaServerId, type);
        if (mediaItems.size() > 0) {
            for (MediaItem mediaItem : mediaItems) {
                JSONObject jsonObject = new JSONObject();
                jsonObject.put("serverId", userSetup.getServerId());
                jsonObject.put("app", streamInfo.getApp());
                jsonObject.put("stream", streamInfo.getStreamId());
                jsonObject.put("app", mediaItem.getApp());
                jsonObject.put("stream", mediaItem.getStream());
                jsonObject.put("register", false);
                jsonObject.put("mediaServerId", mediaServerId);
                redisCatchStorage.sendStreamChangeMsg(type, jsonObject);
                // 移除redis内流的信息
                redisCatchStorage.removeStream(mediaServerId, type, streamInfo.getApp(), streamInfo.getStreamId());
                redisCatchStorage.removeStream(mediaServerId, type, mediaItem.getApp(), mediaItem.getStream());
            }
        }
    }