|
|
@ -1,5 +1,6 @@ |
|
|
|
package com.genersoft.iot.vmp.service.impl; |
|
|
|
|
|
|
|
import com.alibaba.fastjson.JSONArray; |
|
|
|
import com.alibaba.fastjson.JSONObject; |
|
|
|
import com.genersoft.iot.vmp.common.StreamInfo; |
|
|
|
import com.genersoft.iot.vmp.conf.SipConfig; |
|
|
@ -285,9 +286,12 @@ public class StreamProxyServiceImpl implements IStreamProxyService { |
|
|
|
} |
|
|
|
streamProxyMapper.deleteAutoRemoveItemByMediaServerId(mediaServerId); |
|
|
|
|
|
|
|
// 移除拉流代理生成的流信息
|
|
|
|
// syncPullStream(mediaServerId);
|
|
|
|
|
|
|
|
// 恢复流代理, 只查找这个这个流媒体
|
|
|
|
List<StreamProxyItem> streamProxyListForEnable = storager.getStreamProxyListForEnableInMediaServer( |
|
|
|
mediaServerId, true, false); |
|
|
|
mediaServerId, true); |
|
|
|
for (StreamProxyItem streamProxyDto : streamProxyListForEnable) { |
|
|
|
logger.info("恢复流代理," + streamProxyDto.getApp() + "/" + streamProxyDto.getStream()); |
|
|
|
JSONObject jsonObject = addStreamProxyToZlm(streamProxyDto); |
|
|
@ -339,4 +343,45 @@ public class StreamProxyServiceImpl implements IStreamProxyService { |
|
|
|
public int updateStatus(boolean status, String app, String stream) { |
|
|
|
return streamProxyMapper.updateStatus(status, app, stream); |
|
|
|
} |
|
|
|
|
|
|
|
private void syncPullStream(String mediaServerId){ |
|
|
|
MediaServerItem mediaServer = mediaServerService.getOne(mediaServerId); |
|
|
|
if (mediaServer != null) { |
|
|
|
List<MediaItem> allPullStream = redisCatchStorage.getStreams(mediaServerId, "PULL"); |
|
|
|
if (allPullStream.size() > 0) { |
|
|
|
zlmresTfulUtils.getMediaList(mediaServer, jsonObject->{ |
|
|
|
Map<String, StreamInfo> stringStreamInfoMap = new HashMap<>(); |
|
|
|
if (jsonObject.getInteger("code") == 0) { |
|
|
|
JSONArray data = jsonObject.getJSONArray("data"); |
|
|
|
if(data != null && data.size() > 0) { |
|
|
|
for (int i = 0; i < data.size(); i++) { |
|
|
|
JSONObject streamJSONObj = data.getJSONObject(i); |
|
|
|
if ("rtmp".equals(streamJSONObj.getString("schema"))) { |
|
|
|
StreamInfo streamInfo = new StreamInfo(); |
|
|
|
String app = streamJSONObj.getString("app"); |
|
|
|
String stream = streamJSONObj.getString("stream"); |
|
|
|
streamInfo.setApp(app); |
|
|
|
streamInfo.setStream(stream); |
|
|
|
stringStreamInfoMap.put(app+stream, streamInfo); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
if (stringStreamInfoMap.size() == 0) { |
|
|
|
redisCatchStorage.removeStream(mediaServerId, "PULL"); |
|
|
|
}else { |
|
|
|
for (String key : stringStreamInfoMap.keySet()) { |
|
|
|
StreamInfo streamInfo = stringStreamInfoMap.get(key); |
|
|
|
if (stringStreamInfoMap.get(streamInfo.getApp() + streamInfo.getStream()) == null) { |
|
|
|
redisCatchStorage.removeStream(mediaServerId, "PULL", streamInfo.getApp(), |
|
|
|
streamInfo.getStream()); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|