添加第三方服务参与的推流直接转发到国标功能

This commit is contained in:
648540858
2021-12-04 17:27:23 +08:00
parent 52656bb893
commit 5b0b17d741
23 changed files with 324 additions and 77 deletions

View File

@@ -37,4 +37,13 @@ public interface IStreamPushService {
StreamPushItem transform(MediaItem item);
StreamPushItem getPush(String app, String streamId);
/**
* 停止一路推流
* @param app 应用名
* @param streamId 流ID
* @return
*/
boolean stop(String app, String streamId);
}

View File

@@ -0,0 +1,23 @@
package com.genersoft.iot.vmp.service.bean;
public class ThirdPartyGB {
private String name;
private String nationalStandardNo;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getNationalStandardNo() {
return nationalStandardNo;
}
public void setNationalStandardNo(String nationalStandardNo) {
this.nationalStandardNo = nationalStandardNo;
}
}

View File

@@ -79,44 +79,38 @@ public class StreamProxyServiceImpl implements IStreamProxyService {
StringBuffer result = new StringBuffer();
boolean streamLive = false;
param.setMediaServerId(mediaInfo.getId());
boolean saveResult;
// 更新
if (videoManagerStorager.queryStreamProxy(param.getApp(), param.getStream()) != null) {
if (videoManagerStorager.updateStreamProxy(param)) {
result.append("保存成功");
if (param.isEnable()){
JSONObject jsonObject = addStreamProxyToZlm(param);
if (jsonObject == null) {
result.append(", 但是启用失败,请检查流地址是否可用");
param.setEnable(false);
videoManagerStorager.updateStreamProxy(param);
}else {
StreamInfo streamInfo = mediaService.getStreamInfoByAppAndStream(
mediaInfo, param.getApp(), param.getStream(), null);
wvpResult.setData(streamInfo);
}
}
}
saveResult = videoManagerStorager.updateStreamProxy(param);
}else { // 新增
if (videoManagerStorager.addStreamProxy(param)){
result.append("保存成功");
streamLive = true;
if (param.isEnable()) {
JSONObject jsonObject = addStreamProxyToZlm(param);
if (jsonObject == null) {
streamLive = false;
result.append(", 但是启用失败,请检查流地址是否可用");
param.setEnable(false);
videoManagerStorager.updateStreamProxy(param);
}else {
saveResult = videoManagerStorager.addStreamProxy(param);
}
if (saveResult) {
result.append("保存成功");
if (param.isEnable()) {
JSONObject jsonObject = addStreamProxyToZlm(param);
if (jsonObject == null) {
streamLive = false;
result.append(", 但是启用失败,请检查流地址是否可用");
param.setEnable(false);
videoManagerStorager.updateStreamProxy(param);
}else {
Integer code = jsonObject.getInteger("code");
if (code == 0) {
StreamInfo streamInfo = mediaService.getStreamInfoByAppAndStream(
mediaInfo, param.getApp(), param.getStream(), null);
wvpResult.setData(streamInfo);
}else {
result.append(", 但是启用失败,请检查流地址是否可用");
param.setEnable(false);
videoManagerStorager.updateStreamProxy(param);
}
}
}else {
result.append("保存失败");
}
}
}
}else {
result.append("保存失败");
}
if (param.getPlatformGbId() != null && streamLive) {
List<GbStream> gbStreams = new ArrayList<>();

View File

@@ -12,6 +12,7 @@ import com.genersoft.iot.vmp.service.IMediaServerService;
import com.genersoft.iot.vmp.service.IStreamPushService;
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
import com.genersoft.iot.vmp.storager.dao.GbStreamMapper;
import com.genersoft.iot.vmp.storager.dao.PlatformGbStreamMapper;
import com.genersoft.iot.vmp.storager.dao.StreamPushMapper;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
@@ -32,6 +33,9 @@ public class StreamPushServiceImpl implements IStreamPushService {
@Autowired
private StreamPushMapper streamPushMapper;
@Autowired
private PlatformGbStreamMapper platformGbStreamMapper;
@Autowired
private ZLMRESTfulUtils zlmresTfulUtils;
@@ -116,4 +120,18 @@ public class StreamPushServiceImpl implements IStreamPushService {
return streamPushMapper.selectOne(app, streamId);
}
@Override
public boolean stop(String app, String streamId) {
StreamPushItem streamPushItem = streamPushMapper.selectOne(app, streamId);
int delStream = streamPushMapper.del(app, streamId);
gbStreamMapper.del(app, streamId);
platformGbStreamMapper.delByAppAndStream(app, streamId);
if (delStream > 0) {
MediaServerItem mediaServerItem = mediaServerService.getOne(streamPushItem.getMediaServerId());
zlmresTfulUtils.closeStreams(mediaServerItem,app, streamId);
}
return true;
}
}