|
|
@@ -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) {
|
|
|
// 设置为离线
|