拉流代理支持国标级联之间共享
This commit is contained in:
parent
86cd03ce70
commit
2753e1acf3
@ -346,7 +346,7 @@ public class ZLMHttpHookListener {
|
|||||||
if (item.getOriginType() == OriginType.RTSP_PUSH.ordinal()
|
if (item.getOriginType() == OriginType.RTSP_PUSH.ordinal()
|
||||||
|| item.getOriginType() == OriginType.RTMP_PUSH.ordinal()
|
|| item.getOriginType() == OriginType.RTMP_PUSH.ordinal()
|
||||||
|| item.getOriginType() == OriginType.RTC_PUSH.ordinal() ) {
|
|| item.getOriginType() == OriginType.RTC_PUSH.ordinal() ) {
|
||||||
zlmMediaListManager.addMedia(item);
|
zlmMediaListManager.addPush(item);
|
||||||
}
|
}
|
||||||
}else {
|
}else {
|
||||||
// 兼容流注销时类型错误的问题,等zlm更新后删除
|
// 兼容流注销时类型错误的问题,等zlm更新后删除
|
||||||
|
@ -7,6 +7,7 @@ import com.genersoft.iot.vmp.media.zlm.dto.MediaItem;
|
|||||||
import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem;
|
import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem;
|
||||||
import com.genersoft.iot.vmp.media.zlm.dto.StreamProxyItem;
|
import com.genersoft.iot.vmp.media.zlm.dto.StreamProxyItem;
|
||||||
import com.genersoft.iot.vmp.media.zlm.dto.StreamPushItem;
|
import com.genersoft.iot.vmp.media.zlm.dto.StreamPushItem;
|
||||||
|
import com.genersoft.iot.vmp.service.IStreamProxyService;
|
||||||
import com.genersoft.iot.vmp.service.IStreamPushService;
|
import com.genersoft.iot.vmp.service.IStreamPushService;
|
||||||
import com.genersoft.iot.vmp.service.bean.ThirdPartyGB;
|
import com.genersoft.iot.vmp.service.bean.ThirdPartyGB;
|
||||||
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
|
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
|
||||||
@ -47,6 +48,9 @@ public class ZLMMediaListManager {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private IStreamPushService streamPushService;
|
private IStreamPushService streamPushService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private IStreamProxyService streamProxyService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private StreamPushMapper streamPushMapper;
|
private StreamPushMapper streamPushMapper;
|
||||||
|
|
||||||
@ -101,7 +105,7 @@ public class ZLMMediaListManager {
|
|||||||
updateMedia(mediaServerItem, app, streamId);
|
updateMedia(mediaServerItem, app, streamId);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addMedia(MediaItem mediaItem) {
|
public void addPush(MediaItem mediaItem) {
|
||||||
// 查找此直播流是否存在redis预设gbId
|
// 查找此直播流是否存在redis预设gbId
|
||||||
StreamPushItem transform = streamPushService.transform(mediaItem);
|
StreamPushItem transform = streamPushService.transform(mediaItem);
|
||||||
// 从streamId取出查询关键值
|
// 从streamId取出查询关键值
|
||||||
@ -179,6 +183,8 @@ public class ZLMMediaListManager {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// public void clearAllSessions() {
|
// public void clearAllSessions() {
|
||||||
// logger.info("清空所有国标相关的session");
|
// logger.info("清空所有国标相关的session");
|
||||||
// JSONObject allSessionJSON = zlmresTfulUtils.getAllSession();
|
// JSONObject allSessionJSON = zlmresTfulUtils.getAllSession();
|
||||||
|
@ -2,8 +2,10 @@ package com.genersoft.iot.vmp.service;
|
|||||||
|
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.genersoft.iot.vmp.common.StreamInfo;
|
import com.genersoft.iot.vmp.common.StreamInfo;
|
||||||
|
import com.genersoft.iot.vmp.media.zlm.dto.MediaItem;
|
||||||
import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem;
|
import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem;
|
||||||
import com.genersoft.iot.vmp.media.zlm.dto.StreamProxyItem;
|
import com.genersoft.iot.vmp.media.zlm.dto.StreamProxyItem;
|
||||||
|
import com.genersoft.iot.vmp.media.zlm.dto.StreamPushItem;
|
||||||
import com.genersoft.iot.vmp.vmanager.bean.WVPResult;
|
import com.genersoft.iot.vmp.vmanager.bean.WVPResult;
|
||||||
import com.github.pagehelper.PageInfo;
|
import com.github.pagehelper.PageInfo;
|
||||||
|
|
||||||
|
@ -3,15 +3,19 @@ package com.genersoft.iot.vmp.service.impl;
|
|||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.genersoft.iot.vmp.common.StreamInfo;
|
import com.genersoft.iot.vmp.common.StreamInfo;
|
||||||
import com.genersoft.iot.vmp.gb28181.bean.GbStream;
|
import com.genersoft.iot.vmp.gb28181.bean.GbStream;
|
||||||
|
import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform;
|
||||||
import com.genersoft.iot.vmp.media.zlm.ZLMRESTfulUtils;
|
import com.genersoft.iot.vmp.media.zlm.ZLMRESTfulUtils;
|
||||||
|
import com.genersoft.iot.vmp.media.zlm.dto.MediaItem;
|
||||||
import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem;
|
import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem;
|
||||||
import com.genersoft.iot.vmp.media.zlm.dto.StreamProxyItem;
|
import com.genersoft.iot.vmp.media.zlm.dto.StreamProxyItem;
|
||||||
|
import com.genersoft.iot.vmp.media.zlm.dto.StreamPushItem;
|
||||||
import com.genersoft.iot.vmp.service.IGbStreamService;
|
import com.genersoft.iot.vmp.service.IGbStreamService;
|
||||||
import com.genersoft.iot.vmp.service.IMediaServerService;
|
import com.genersoft.iot.vmp.service.IMediaServerService;
|
||||||
import com.genersoft.iot.vmp.service.IMediaService;
|
import com.genersoft.iot.vmp.service.IMediaService;
|
||||||
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
|
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
|
||||||
import com.genersoft.iot.vmp.storager.IVideoManagerStorager;
|
import com.genersoft.iot.vmp.storager.IVideoManagerStorager;
|
||||||
import com.genersoft.iot.vmp.storager.dao.GbStreamMapper;
|
import com.genersoft.iot.vmp.storager.dao.GbStreamMapper;
|
||||||
|
import com.genersoft.iot.vmp.storager.dao.ParentPlatformMapper;
|
||||||
import com.genersoft.iot.vmp.storager.dao.PlatformGbStreamMapper;
|
import com.genersoft.iot.vmp.storager.dao.PlatformGbStreamMapper;
|
||||||
import com.genersoft.iot.vmp.storager.dao.StreamProxyMapper;
|
import com.genersoft.iot.vmp.storager.dao.StreamProxyMapper;
|
||||||
import com.genersoft.iot.vmp.service.IStreamProxyService;
|
import com.genersoft.iot.vmp.service.IStreamProxyService;
|
||||||
@ -21,6 +25,7 @@ import org.slf4j.Logger;
|
|||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -51,6 +56,9 @@ public class StreamProxyServiceImpl implements IStreamProxyService {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private PlatformGbStreamMapper platformGbStreamMapper;
|
private PlatformGbStreamMapper platformGbStreamMapper;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ParentPlatformMapper parentPlatformMapper;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private IGbStreamService gbStreamService;
|
private IGbStreamService gbStreamService;
|
||||||
|
|
||||||
@ -112,7 +120,7 @@ public class StreamProxyServiceImpl implements IStreamProxyService {
|
|||||||
}else {
|
}else {
|
||||||
result.append("保存失败");
|
result.append("保存失败");
|
||||||
}
|
}
|
||||||
if (param.getPlatformGbId() != null && streamLive) {
|
if ( !StringUtils.isEmpty(param.getPlatformGbId()) && streamLive) {
|
||||||
List<GbStream> gbStreams = new ArrayList<>();
|
List<GbStream> gbStreams = new ArrayList<>();
|
||||||
gbStreams.add(param);
|
gbStreams.add(param);
|
||||||
if (gbStreamService.addPlatformInfo(gbStreams, param.getPlatformGbId())){
|
if (gbStreamService.addPlatformInfo(gbStreams, param.getPlatformGbId())){
|
||||||
@ -121,6 +129,18 @@ public class StreamProxyServiceImpl implements IStreamProxyService {
|
|||||||
result.append(", 关联国标平台[ " + param.getPlatformGbId() + " ]失败");
|
result.append(", 关联国标平台[ " + param.getPlatformGbId() + " ]失败");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// 查找开启了全部直播流共享的上级平台
|
||||||
|
List<ParentPlatform> parentPlatforms = parentPlatformMapper.selectAllAhareAllLiveStream();
|
||||||
|
if (parentPlatforms.size() > 0) {
|
||||||
|
for (ParentPlatform parentPlatform : parentPlatforms) {
|
||||||
|
param.setPlatformId(parentPlatform.getServerGBId());
|
||||||
|
String stream = param.getStream();
|
||||||
|
StreamProxyItem streamProxyItems = platformGbStreamMapper.selectOne(param.getApp(), stream, parentPlatform.getServerGBId());
|
||||||
|
if (streamProxyItems == null) {
|
||||||
|
platformGbStreamMapper.add(param);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
wvpResult.setMsg(result.toString());
|
wvpResult.setMsg(result.toString());
|
||||||
return wvpResult;
|
return wvpResult;
|
||||||
}
|
}
|
||||||
|
@ -514,6 +514,8 @@ public class VideoManagerStoragerImpl implements IVideoManagerStorager {
|
|||||||
logger.error("向数据库添加流代理失败:", e);
|
logger.error("向数据库添加流代理失败:", e);
|
||||||
dataSourceTransactionManager.rollback(transactionStatus);
|
dataSourceTransactionManager.rollback(transactionStatus);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user