mirror of
https://gitee.com/pan648540858/wvp-GB28181-pro.git
synced 2026-05-25 22:47:49 +08:00
优化ABL结果封装完成
This commit is contained in:
parent
c1672728d3
commit
403e7648f9
@ -1,7 +1,6 @@
|
|||||||
package com.genersoft.iot.vmp.media.abl;
|
package com.genersoft.iot.vmp.media.abl;
|
||||||
|
|
||||||
import com.alibaba.fastjson2.JSONArray;
|
import com.alibaba.fastjson2.JSONArray;
|
||||||
import com.alibaba.fastjson2.JSONObject;
|
|
||||||
import com.genersoft.iot.vmp.common.CommonCallback;
|
import com.genersoft.iot.vmp.common.CommonCallback;
|
||||||
import com.genersoft.iot.vmp.common.InviteInfo;
|
import com.genersoft.iot.vmp.common.InviteInfo;
|
||||||
import com.genersoft.iot.vmp.common.InviteSessionType;
|
import com.genersoft.iot.vmp.common.InviteSessionType;
|
||||||
@ -11,8 +10,9 @@ import com.genersoft.iot.vmp.conf.UserSetting;
|
|||||||
import com.genersoft.iot.vmp.conf.exception.ControllerException;
|
import com.genersoft.iot.vmp.conf.exception.ControllerException;
|
||||||
import com.genersoft.iot.vmp.gb28181.bean.SendRtpInfo;
|
import com.genersoft.iot.vmp.gb28181.bean.SendRtpInfo;
|
||||||
import com.genersoft.iot.vmp.gb28181.service.IInviteStreamService;
|
import com.genersoft.iot.vmp.gb28181.service.IInviteStreamService;
|
||||||
|
import com.genersoft.iot.vmp.media.abl.bean.ABLMedia;
|
||||||
|
import com.genersoft.iot.vmp.media.abl.bean.ABLResult;
|
||||||
import com.genersoft.iot.vmp.media.abl.bean.AblServerConfig;
|
import com.genersoft.iot.vmp.media.abl.bean.AblServerConfig;
|
||||||
import com.genersoft.iot.vmp.media.abl.bean.hook.OnStreamArriveABLHookParam;
|
|
||||||
import com.genersoft.iot.vmp.media.bean.MediaInfo;
|
import com.genersoft.iot.vmp.media.bean.MediaInfo;
|
||||||
import com.genersoft.iot.vmp.media.bean.MediaServer;
|
import com.genersoft.iot.vmp.media.bean.MediaServer;
|
||||||
import com.genersoft.iot.vmp.media.event.media.MediaRecordMp4Event;
|
import com.genersoft.iot.vmp.media.event.media.MediaRecordMp4Event;
|
||||||
@ -32,7 +32,10 @@ import org.springframework.context.event.EventListener;
|
|||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.util.ObjectUtils;
|
import org.springframework.util.ObjectUtils;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
@Service("abl")
|
@Service("abl")
|
||||||
public class ABLMediaNodeServerService implements IMediaNodeServerService {
|
public class ABLMediaNodeServerService implements IMediaNodeServerService {
|
||||||
@ -70,18 +73,10 @@ public class ABLMediaNodeServerService implements IMediaNodeServerService {
|
|||||||
if (mediaServer == null) {
|
if (mediaServer == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Map<String, Object> param = new HashMap<>();
|
ABLResult result = ablresTfulUtils.closeStreams(mediaServer, "rtp", streamId);
|
||||||
param.put("stream_id", streamId);
|
logger.info("关闭RTP Server " + result);
|
||||||
param.put("force", 1);
|
if (result.getCode() != 0) {
|
||||||
JSONObject jsonObject = ablresTfulUtils.closeStreams(mediaServer, "rtp", streamId);
|
logger.error("[closeRtpServer] 失败: {}", result.getMemo());
|
||||||
logger.info("关闭RTP Server " + jsonObject);
|
|
||||||
if (jsonObject != null ) {
|
|
||||||
if (jsonObject.getInteger("code") != 0) {
|
|
||||||
logger.error("[closeRtpServer] 失败: " + jsonObject.getString("memo"));
|
|
||||||
}
|
|
||||||
}else {
|
|
||||||
// 检查ZLM状态
|
|
||||||
logger.error("[closeRtpServer] 失败: 请检查ZLM服务");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -96,31 +91,18 @@ public class ABLMediaNodeServerService implements IMediaNodeServerService {
|
|||||||
if (mediaServer == null) {
|
if (mediaServer == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
JSONObject jsonObject = ablresTfulUtils.closeStreams(mediaServer, "1078", streamId);
|
ABLResult result = ablresTfulUtils.closeStreams(mediaServer, "1078", streamId);
|
||||||
logger.info("关闭RTP Server " + jsonObject);
|
logger.info("关闭JT-RTP Server " + result);
|
||||||
if (jsonObject != null ) {
|
if (result.getCode() != 0) {
|
||||||
if (jsonObject.getInteger("code") != 0) {
|
logger.error("[JT-closeRtpServer] 失败: {}", result.getMemo());
|
||||||
logger.error("[closeRtpServer] 失败: " + jsonObject.getString("memo"));
|
|
||||||
}
|
|
||||||
}else {
|
|
||||||
// 检查ZLM状态
|
|
||||||
logger.error("[closeRtpServer] 失败: 请检查ZLM服务");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void closeStreams(MediaServer mediaServer, String app, String streamId) {
|
public void closeStreams(MediaServer mediaServer, String app, String streamId) {
|
||||||
Map<String, Object> param = new HashMap<>();
|
ABLResult result = ablresTfulUtils.closeStreams(mediaServer, app, streamId);
|
||||||
param.put("stream_id", streamId);
|
if (result.getCode() != 0) {
|
||||||
param.put("force", 1);
|
logger.error("[closeStreams] 失败: {}", result.getMemo());
|
||||||
JSONObject jsonObject = ablresTfulUtils.closeStreams(mediaServer, app, streamId);
|
|
||||||
if (jsonObject != null ) {
|
|
||||||
if (jsonObject.getInteger("code") != 0) {
|
|
||||||
logger.error("[closeStreams] 失败: " + jsonObject.getString("memo"));
|
|
||||||
}
|
|
||||||
}else {
|
|
||||||
// 检查ZLM状态
|
|
||||||
logger.error("[closeStreams] 失败: 请检查ZLM服务");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -146,8 +128,8 @@ public class ABLMediaNodeServerService implements IMediaNodeServerService {
|
|||||||
mediaServer.setIp(ip);
|
mediaServer.setIp(ip);
|
||||||
mediaServer.setHttpPort(port);
|
mediaServer.setHttpPort(port);
|
||||||
mediaServer.setSecret(secret);
|
mediaServer.setSecret(secret);
|
||||||
JSONObject responseJSON = ablresTfulUtils.getServerConfig(mediaServer);
|
ABLResult result = ablresTfulUtils.getServerConfig(mediaServer);
|
||||||
JSONArray data = responseJSON.getJSONArray("params");
|
JSONArray data = result.getParams();
|
||||||
if (data != null && !data.isEmpty()) {
|
if (data != null && !data.isEmpty()) {
|
||||||
AblServerConfig config = AblServerConfig.getInstance(data);
|
AblServerConfig config = AblServerConfig.getInstance(data);
|
||||||
config.setServerIp(ip);
|
config.setServerIp(ip);
|
||||||
@ -173,19 +155,17 @@ public class ABLMediaNodeServerService implements IMediaNodeServerService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<StreamInfo> getMediaList(MediaServer mediaServer, String app, String stream, String callId) {
|
public List<StreamInfo> getMediaList(MediaServer mediaServer, String app, String stream, String callId) {
|
||||||
JSONObject jsonObject = ablresTfulUtils.getMediaList(mediaServer, app, stream);
|
ABLResult result = ablresTfulUtils.getMediaList(mediaServer, app, stream);
|
||||||
if (jsonObject == null || jsonObject.getInteger("code") != 0) {
|
if (result.getCode() != 0) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
JSONArray mediaList = jsonObject.getJSONArray("mediaList");
|
if (result.getMediaList() == null || result.getMediaList().isEmpty()) {
|
||||||
if (mediaList == null || mediaList.isEmpty()) {
|
|
||||||
return new ArrayList<>();
|
return new ArrayList<>();
|
||||||
}
|
}
|
||||||
List<StreamInfo> streamInfoList = new ArrayList<>();
|
List<StreamInfo> streamInfoList = new ArrayList<>();
|
||||||
for (int i = 0; i < mediaList.size(); i++) {
|
for (int i = 0; i < result.getMediaList().size(); i++) {
|
||||||
JSONObject mediaJSON = mediaList.getJSONObject(i);
|
ABLMedia ablMedia = result.getMediaList().get(i);
|
||||||
OnStreamArriveABLHookParam onStreamArriveABLHookParam = mediaJSON.to(OnStreamArriveABLHookParam.class);
|
MediaInfo mediaInfo = MediaInfo.getInstance(ablMedia, mediaServer);
|
||||||
MediaInfo mediaInfo = MediaInfo.getInstance(onStreamArriveABLHookParam, mediaServer);
|
|
||||||
StreamInfo streamInfo = getStreamInfoByAppAndStream(mediaServer, app, stream, mediaInfo, callId, true);
|
StreamInfo streamInfo = getStreamInfoByAppAndStream(mediaServer, app, stream, mediaInfo, callId, true);
|
||||||
if (streamInfo != null) {
|
if (streamInfo != null) {
|
||||||
streamInfoList.add(streamInfo);
|
streamInfoList.add(streamInfo);
|
||||||
@ -230,37 +210,26 @@ public class ABLMediaNodeServerService implements IMediaNodeServerService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public MediaInfo getMediaInfo(MediaServer mediaServer, String app, String stream) {
|
public MediaInfo getMediaInfo(MediaServer mediaServer, String app, String stream) {
|
||||||
JSONObject jsonObject = ablresTfulUtils.getMediaList(mediaServer, app, stream);
|
ABLResult ablResult = ablresTfulUtils.getMediaList(mediaServer, app, stream);
|
||||||
if (jsonObject == null || jsonObject.getInteger("code") != 0) {
|
if (ablResult.getCode() != 0) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
JSONArray mediaList = jsonObject.getJSONArray("mediaList");
|
if (ablResult.getMediaList() == null || ablResult.getMediaList().isEmpty()) {
|
||||||
if (mediaList == null || mediaList.isEmpty()) {
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
MediaInfo mediaInfo = null;
|
return MediaInfo.getInstance(ablResult.getMediaList().get(0), mediaServer);
|
||||||
for (int i = 0; i < mediaList.size(); i++) {
|
|
||||||
JSONObject mediaJSON = mediaList.getJSONObject(i);
|
|
||||||
OnStreamArriveABLHookParam onStreamArriveABLHookParam = mediaJSON.to(OnStreamArriveABLHookParam.class);
|
|
||||||
if (onStreamArriveABLHookParam == null) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
mediaInfo = MediaInfo.getInstance(onStreamArriveABLHookParam, mediaServer);
|
|
||||||
|
|
||||||
}
|
|
||||||
return mediaInfo;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Boolean pauseRtpCheck(MediaServer mediaServer, String streamKey) {
|
public Boolean pauseRtpCheck(MediaServer mediaServer, String streamKey) {
|
||||||
logger.warn("[abl-pauseRtpCheck] 未实现");
|
ABLResult ablResult = ablresTfulUtils.pauseRtpServer(mediaServer, streamKey);
|
||||||
return null;
|
return ablResult.getCode() == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Boolean resumeRtpCheck(MediaServer mediaServer, String streamKey) {
|
public Boolean resumeRtpCheck(MediaServer mediaServer, String streamKey) {
|
||||||
logger.warn("[abl-resumeRtpCheck] 未实现");
|
ABLResult ablResult = ablresTfulUtils.resumeRtpServer(mediaServer, streamKey);
|
||||||
return null;
|
return ablResult.getCode() == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -270,14 +239,14 @@ public class ABLMediaNodeServerService implements IMediaNodeServerService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Boolean delFFmpegSource(MediaServer mediaServer, String streamKey) {
|
public Boolean delFFmpegSource(MediaServer mediaServer, String streamKey) {
|
||||||
JSONObject jsonObject = ablresTfulUtils.delFFmpegProxy(mediaServer, streamKey);
|
ABLResult ablResult = ablresTfulUtils.delFFmpegProxy(mediaServer, streamKey);
|
||||||
return jsonObject.getInteger("code") == 0;
|
return ablResult.getCode() == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Boolean delStreamProxy(MediaServer mediaServer, String streamKey) {
|
public Boolean delStreamProxy(MediaServer mediaServer, String streamKey) {
|
||||||
JSONObject jsonObject = ablresTfulUtils.delStreamProxy(mediaServer, streamKey);
|
ABLResult ablResult = ablresTfulUtils.delStreamProxy(mediaServer, streamKey);
|
||||||
return jsonObject.getInteger("code") == 0;
|
return ablResult.getCode() == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -311,17 +280,15 @@ public class ABLMediaNodeServerService implements IMediaNodeServerService {
|
|||||||
}
|
}
|
||||||
long startTime = cloudRecordItemList.get(cloudRecordItemList.size() - 1).getStartTime();
|
long startTime = cloudRecordItemList.get(cloudRecordItemList.size() - 1).getStartTime();
|
||||||
long endTime = cloudRecordItemList.get(0).getEndTime();
|
long endTime = cloudRecordItemList.get(0).getEndTime();
|
||||||
JSONObject jsonObject = ablresTfulUtils.queryRecordList(event.getMediaServer(), event.getApp(), event.getStream(), DateUtil.timestampMsToUrlToyyyy_MM_dd_HH_mm_ss(startTime),
|
ABLResult ablResult = ablresTfulUtils.queryRecordList(event.getMediaServer(), event.getApp(), event.getStream(), DateUtil.timestampMsToUrlToyyyy_MM_dd_HH_mm_ss(startTime),
|
||||||
DateUtil.timestampMsToUrlToyyyy_MM_dd_HH_mm_ss(endTime));
|
DateUtil.timestampMsToUrlToyyyy_MM_dd_HH_mm_ss(endTime));
|
||||||
System.err.println(jsonObject);
|
if (ablResult.getCode() != 0) {
|
||||||
if (jsonObject == null || jsonObject.getInteger("code") != 0) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
JSONObject urlJson = jsonObject.getJSONObject("url");
|
if (ablResult.getUrl() == null) {
|
||||||
if (urlJson == null) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
String download = urlJson.getString("http-mp4") + "?download_speed=6";
|
String download = ablResult.getUrl().getDownload();
|
||||||
DownloadFileInfo downloadFileInfo = new DownloadFileInfo();
|
DownloadFileInfo downloadFileInfo = new DownloadFileInfo();
|
||||||
downloadFileInfo.setHttpPath(download);
|
downloadFileInfo.setHttpPath(download);
|
||||||
downloadFileInfo.setHttpsPath(download);
|
downloadFileInfo.setHttpsPath(download);
|
||||||
@ -346,11 +313,11 @@ public class ABLMediaNodeServerService implements IMediaNodeServerService {
|
|||||||
@Override
|
@Override
|
||||||
public WVPResult<String> addStreamProxy(MediaServer mediaServer, String app, String stream, String url, boolean enableAudio, boolean enableMp4, String rtpType, Integer timeout) {
|
public WVPResult<String> addStreamProxy(MediaServer mediaServer, String app, String stream, String url, boolean enableAudio, boolean enableMp4, String rtpType, Integer timeout) {
|
||||||
|
|
||||||
JSONObject jsonObject = ablresTfulUtils.addStreamProxy(mediaServer, app, stream, url, !enableAudio, enableMp4, rtpType, timeout);
|
ABLResult result = ablresTfulUtils.addStreamProxy(mediaServer, app, stream, url, !enableAudio, enableMp4, rtpType, timeout);
|
||||||
if (jsonObject.getInteger("code") != 0) {
|
if (result.getCode() != 0) {
|
||||||
return WVPResult.fail(ErrorCode.ERROR100.getCode(), jsonObject.getString("memo"));
|
return WVPResult.fail(ErrorCode.ERROR100.getCode(), result.getMemo());
|
||||||
}else {
|
}else {
|
||||||
return WVPResult.success(jsonObject.getString("key"));
|
return WVPResult.success(result.getKey());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -380,25 +347,23 @@ public class ABLMediaNodeServerService implements IMediaNodeServerService {
|
|||||||
closeStreams(mediaServer, streamProxy.getApp(), streamProxy.getStream());
|
closeStreams(mediaServer, streamProxy.getApp(), streamProxy.getStream());
|
||||||
}
|
}
|
||||||
|
|
||||||
JSONObject jsonObject = null;
|
ABLResult ablResult = null;
|
||||||
if ("ffmpeg".equalsIgnoreCase(streamProxy.getType())){
|
if ("ffmpeg".equalsIgnoreCase(streamProxy.getType())){
|
||||||
if (streamProxy.getTimeout() == 0) {
|
if (streamProxy.getTimeout() == 0) {
|
||||||
streamProxy.setTimeout(15);
|
streamProxy.setTimeout(15);
|
||||||
}
|
}
|
||||||
jsonObject = ablresTfulUtils.addFFmpegProxy(mediaServer, streamProxy.getApp(), streamProxy.getStream(), streamProxy.getSrcUrl().trim(),
|
ablResult = ablresTfulUtils.addFFmpegProxy(mediaServer, streamProxy.getApp(), streamProxy.getStream(), streamProxy.getSrcUrl().trim(),
|
||||||
!streamProxy.isEnableAudio(), streamProxy.isEnableMp4(), streamProxy.getRtspType(), streamProxy.getTimeout());
|
!streamProxy.isEnableAudio(), streamProxy.isEnableMp4(), streamProxy.getRtspType(), streamProxy.getTimeout());
|
||||||
}else {
|
}else {
|
||||||
jsonObject = ablresTfulUtils.addStreamProxy(mediaServer, streamProxy.getApp(), streamProxy.getStream(), streamProxy.getSrcUrl().trim(),
|
ablResult = ablresTfulUtils.addStreamProxy(mediaServer, streamProxy.getApp(), streamProxy.getStream(), streamProxy.getSrcUrl().trim(),
|
||||||
streamProxy.isEnableAudio(), streamProxy.isEnableMp4(), streamProxy.getRtspType(), streamProxy.getTimeout());
|
streamProxy.isEnableAudio(), streamProxy.isEnableMp4(), streamProxy.getRtspType(), streamProxy.getTimeout());
|
||||||
}
|
}
|
||||||
if (jsonObject == null) {
|
if (ablResult.getCode() != 0) {
|
||||||
throw new ControllerException(ErrorCode.ERROR100.getCode(), "请求失败");
|
throw new ControllerException(ablResult.getCode(), ablResult.getMemo());
|
||||||
}else if (jsonObject.getInteger("code") != 0) {
|
|
||||||
throw new ControllerException(jsonObject.getInteger("code"), jsonObject.getString("memo"));
|
|
||||||
}else {
|
}else {
|
||||||
String key = jsonObject.getString("key");
|
String key = ablResult.getKey();
|
||||||
if (key == null) {
|
if (key == null) {
|
||||||
throw new ControllerException(jsonObject.getInteger("code"), "代理结果异常: " + jsonObject);
|
throw new ControllerException(ablResult.getCode(), "代理结果异常: " + ablResult);
|
||||||
}else {
|
}else {
|
||||||
return key;
|
return key;
|
||||||
}
|
}
|
||||||
@ -407,33 +372,30 @@ public class ABLMediaNodeServerService implements IMediaNodeServerService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void stopProxy(MediaServer mediaServer, String streamKey, String type) {
|
public void stopProxy(MediaServer mediaServer, String streamKey, String type) {
|
||||||
JSONObject jsonObject = null;
|
ABLResult ablResult = null;
|
||||||
if ("ffmpeg".equalsIgnoreCase(type)){
|
if ("ffmpeg".equalsIgnoreCase(type)){
|
||||||
jsonObject = ablresTfulUtils.delFFmpegProxy(mediaServer, streamKey);
|
ablResult = ablresTfulUtils.delFFmpegProxy(mediaServer, streamKey);
|
||||||
}else {
|
}else {
|
||||||
jsonObject = ablresTfulUtils.delStreamProxy(mediaServer, streamKey);
|
ablResult = ablresTfulUtils.delStreamProxy(mediaServer, streamKey);
|
||||||
}
|
}
|
||||||
if (jsonObject == null) {
|
if (ablResult.getCode() != 0) {
|
||||||
throw new ControllerException(ErrorCode.ERROR100.getCode(), "请求失败");
|
throw new ControllerException(ablResult.getCode(), ablResult.getMemo());
|
||||||
}else if (jsonObject.getInteger("code") != 0) {
|
|
||||||
throw new ControllerException(jsonObject.getInteger("code"), jsonObject.getString("memo"));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<String> listRtpServer(MediaServer mediaServer) {
|
public List<String> listRtpServer(MediaServer mediaServer) {
|
||||||
JSONObject jsonObject = ablresTfulUtils.getMediaList(mediaServer, "rtp", null);
|
ABLResult ablResult = ablresTfulUtils.getMediaList(mediaServer, "rtp", null);
|
||||||
if (jsonObject == null || jsonObject.getInteger("code") != 0) {
|
if (ablResult.getCode() != 0) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
JSONArray mediaList = jsonObject.getJSONArray("mediaList");
|
if (ablResult.getMediaList() == null || ablResult.getMediaList().isEmpty()) {
|
||||||
if (mediaList == null || mediaList.isEmpty()) {
|
|
||||||
return new ArrayList<>();
|
return new ArrayList<>();
|
||||||
}
|
}
|
||||||
List<String> result = new ArrayList<>();
|
List<String> result = new ArrayList<>();
|
||||||
for (int i = 0; i < mediaList.size(); i++) {
|
for (int i = 0; i < ablResult.getMediaList().size(); i++) {
|
||||||
JSONObject mediaJSON = mediaList.getJSONObject(i);
|
ABLMedia ablMedia = ablResult.getMediaList().get(i);
|
||||||
result.add(mediaJSON.getString("stream"));
|
result.add(ablMedia.getStream());
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,17 +1,17 @@
|
|||||||
package com.genersoft.iot.vmp.media.abl;
|
package com.genersoft.iot.vmp.media.abl;
|
||||||
|
|
||||||
import com.alibaba.fastjson2.JSONArray;
|
import com.alibaba.fastjson2.JSONArray;
|
||||||
import com.alibaba.fastjson2.JSONObject;
|
|
||||||
import com.genersoft.iot.vmp.conf.DynamicTask;
|
import com.genersoft.iot.vmp.conf.DynamicTask;
|
||||||
import com.genersoft.iot.vmp.conf.UserSetting;
|
import com.genersoft.iot.vmp.conf.UserSetting;
|
||||||
|
import com.genersoft.iot.vmp.media.abl.bean.ABLResult;
|
||||||
import com.genersoft.iot.vmp.media.abl.bean.AblServerConfig;
|
import com.genersoft.iot.vmp.media.abl.bean.AblServerConfig;
|
||||||
import com.genersoft.iot.vmp.media.abl.bean.ConfigKeyId;
|
import com.genersoft.iot.vmp.media.abl.bean.ConfigKeyId;
|
||||||
import com.genersoft.iot.vmp.media.abl.event.HookAblServerKeepaliveEvent;
|
import com.genersoft.iot.vmp.media.abl.event.HookAblServerKeepaliveEvent;
|
||||||
import com.genersoft.iot.vmp.media.abl.event.HookAblServerStartEvent;
|
import com.genersoft.iot.vmp.media.abl.event.HookAblServerStartEvent;
|
||||||
|
import com.genersoft.iot.vmp.media.bean.MediaServer;
|
||||||
import com.genersoft.iot.vmp.media.event.mediaServer.MediaServerChangeEvent;
|
import com.genersoft.iot.vmp.media.event.mediaServer.MediaServerChangeEvent;
|
||||||
import com.genersoft.iot.vmp.media.event.mediaServer.MediaServerDeleteEvent;
|
import com.genersoft.iot.vmp.media.event.mediaServer.MediaServerDeleteEvent;
|
||||||
import com.genersoft.iot.vmp.media.service.IMediaServerService;
|
import com.genersoft.iot.vmp.media.service.IMediaServerService;
|
||||||
import com.genersoft.iot.vmp.media.bean.MediaServer;
|
|
||||||
import org.slf4j.Logger;
|
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;
|
||||||
@ -131,17 +131,18 @@ public class ABLMediaServerStatusManger {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
logger.info("[ABL-尝试连接] ID:{}, 地址: {}:{}", mediaServerItem.getId(), mediaServerItem.getIp(), mediaServerItem.getHttpPort());
|
logger.info("[ABL-尝试连接] ID:{}, 地址: {}:{}", mediaServerItem.getId(), mediaServerItem.getIp(), mediaServerItem.getHttpPort());
|
||||||
JSONObject responseJson = ablResTfulUtils.getServerConfig(mediaServerItem);
|
ABLResult ablResult = ablResTfulUtils.getServerConfig(mediaServerItem);
|
||||||
AblServerConfig ablServerConfig = null;
|
AblServerConfig ablServerConfig = null;
|
||||||
if (responseJson == null) {
|
if (ablResult.getCode() != 0) {
|
||||||
logger.info("[ABL-尝试连接]失败, ID:{}, 地址: {}:{}", mediaServerItem.getId(), mediaServerItem.getIp(), mediaServerItem.getHttpPort());
|
logger.info("[ABL-尝试连接]失败, ID:{}, 地址: {}:{}", mediaServerItem.getId(), mediaServerItem.getIp(), mediaServerItem.getHttpPort());
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
JSONArray data = responseJson.getJSONArray("params");
|
JSONArray params = ablResult.getParams();
|
||||||
if (data == null || data.isEmpty()) {
|
|
||||||
|
if (params == null || params.isEmpty()) {
|
||||||
logger.info("[ABL-尝试连接]失败, ID:{}, 地址: {}:{}", mediaServerItem.getId(), mediaServerItem.getIp(), mediaServerItem.getHttpPort());
|
logger.info("[ABL-尝试连接]失败, ID:{}, 地址: {}:{}", mediaServerItem.getId(), mediaServerItem.getIp(), mediaServerItem.getHttpPort());
|
||||||
}else {
|
}else {
|
||||||
ablServerConfig = AblServerConfig.getInstance(data);
|
ablServerConfig = AblServerConfig.getInstance(params);
|
||||||
initPort(mediaServerItem, ablServerConfig);
|
initPort(mediaServerItem, ablServerConfig);
|
||||||
online(mediaServerItem, ablServerConfig);
|
online(mediaServerItem, ablServerConfig);
|
||||||
}
|
}
|
||||||
@ -153,19 +154,19 @@ public class ABLMediaServerStatusManger {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
logger.info("[ABL-尝试连接] ID:{}, 地址: {}:{}", mediaServerItem.getId(), mediaServerItem.getIp(), mediaServerItem.getHttpPort());
|
logger.info("[ABL-尝试连接] ID:{}, 地址: {}:{}", mediaServerItem.getId(), mediaServerItem.getIp(), mediaServerItem.getHttpPort());
|
||||||
JSONObject responseJson = ablResTfulUtils.getServerConfig(mediaServerItem);
|
ABLResult ablResult = ablResTfulUtils.getServerConfig(mediaServerItem);
|
||||||
AblServerConfig ablServerConfig = null;
|
AblServerConfig ablServerConfig = null;
|
||||||
if (responseJson == null) {
|
if (ablResult.getCode() != 0) {
|
||||||
logger.info("[ABL-尝试连接]失败, ID:{}, 地址: {}:{}", mediaServerItem.getId(), mediaServerItem.getIp(), mediaServerItem.getHttpPort());
|
logger.info("[ABL-尝试连接]失败, ID:{}, 地址: {}:{}", mediaServerItem.getId(), mediaServerItem.getIp(), mediaServerItem.getHttpPort());
|
||||||
offlineAblTimeMap.put(mediaServerItem.getId(), System.currentTimeMillis());
|
offlineAblTimeMap.put(mediaServerItem.getId(), System.currentTimeMillis());
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
JSONArray data = responseJson.getJSONArray("params");
|
JSONArray params = ablResult.getParams();
|
||||||
if (data == null || data.isEmpty()) {
|
if (params == null || params.isEmpty()) {
|
||||||
logger.info("[ABL-尝试连接]失败, ID:{}, 地址: {}:{}", mediaServerItem.getId(), mediaServerItem.getIp(), mediaServerItem.getHttpPort());
|
logger.info("[ABL-尝试连接]失败, ID:{}, 地址: {}:{}", mediaServerItem.getId(), mediaServerItem.getIp(), mediaServerItem.getHttpPort());
|
||||||
offlineAblTimeMap.put(mediaServerItem.getId(), System.currentTimeMillis());
|
offlineAblTimeMap.put(mediaServerItem.getId(), System.currentTimeMillis());
|
||||||
}else {
|
}else {
|
||||||
ablServerConfig = AblServerConfig.getInstance(data);
|
ablServerConfig = AblServerConfig.getInstance(params);
|
||||||
initPort(mediaServerItem, ablServerConfig);
|
initPort(mediaServerItem, ablServerConfig);
|
||||||
online(mediaServerItem, ablServerConfig);
|
online(mediaServerItem, ablServerConfig);
|
||||||
}
|
}
|
||||||
@ -184,8 +185,8 @@ public class ABLMediaServerStatusManger {
|
|||||||
mediaServerService.update(mediaServerItem);
|
mediaServerService.update(mediaServerItem);
|
||||||
if(mediaServerItem.isAutoConfig()) {
|
if(mediaServerItem.isAutoConfig()) {
|
||||||
if (config == null) {
|
if (config == null) {
|
||||||
JSONObject responseJSON = ablResTfulUtils.getServerConfig(mediaServerItem);
|
ABLResult ablResult = ablResTfulUtils.getServerConfig(mediaServerItem);
|
||||||
JSONArray data = responseJSON.getJSONArray("params");
|
JSONArray data = ablResult.getParams();
|
||||||
if (data != null && !data.isEmpty()) {
|
if (data != null && !data.isEmpty()) {
|
||||||
config = AblServerConfig.getInstance(data);
|
config = AblServerConfig.getInstance(data);
|
||||||
}
|
}
|
||||||
@ -247,11 +248,11 @@ public class ABLMediaServerStatusManger {
|
|||||||
try {
|
try {
|
||||||
if (config.getHookEnable() == 0) {
|
if (config.getHookEnable() == 0) {
|
||||||
logger.info("[媒体服务节点-ABL] 开启HOOK功能 :{}", mediaServerItem.getId());
|
logger.info("[媒体服务节点-ABL] 开启HOOK功能 :{}", mediaServerItem.getId());
|
||||||
JSONObject responseJSON = ablResTfulUtils.setConfigParamValue(mediaServerItem, "hook_enable", "1");
|
ABLResult ablResult = ablResTfulUtils.setConfigParamValue(mediaServerItem, "hook_enable", "1");
|
||||||
if (responseJSON.getInteger("code") == 0) {
|
if (ablResult.getCode() == 0) {
|
||||||
logger.info("[媒体服务节点-ABL] 开启HOOK功能成功 :{}", mediaServerItem.getId());
|
logger.info("[媒体服务节点-ABL] 开启HOOK功能成功 :{}", mediaServerItem.getId());
|
||||||
}else {
|
}else {
|
||||||
logger.info("[媒体服务节点-ABL] 开启HOOK功能失败 :{}->{}", mediaServerItem.getId(), responseJSON.getString("memo"));
|
logger.info("[媒体服务节点-ABL] 开启HOOK功能失败 :{}->{}", mediaServerItem.getId(), ablResult.getMemo());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}catch (Exception e) {
|
}catch (Exception e) {
|
||||||
@ -286,11 +287,11 @@ public class ABLMediaServerStatusManger {
|
|||||||
field.setAccessible(true);
|
field.setAccessible(true);
|
||||||
// 利用反射获取值后对比是否与配置中相同,不同则进行设置
|
// 利用反射获取值后对比是否与配置中相同,不同则进行设置
|
||||||
if (!hookUrl.equals(field.get(config))) {
|
if (!hookUrl.equals(field.get(config))) {
|
||||||
JSONObject responseJSON = ablResTfulUtils.setConfigParamValue(mediaServerItem, hook, hookUrl);
|
ABLResult ablResult = ablResTfulUtils.setConfigParamValue(mediaServerItem, hook, hookUrl);
|
||||||
if (responseJSON.getInteger("code") == 0) {
|
if (ablResult.getCode() == 0) {
|
||||||
logger.info("[媒体服务节点-ABL] 设置HOOK {} 成功 :{}", hook, mediaServerItem.getId());
|
logger.info("[媒体服务节点-ABL] 设置HOOK {} 成功 :{}", hook, mediaServerItem.getId());
|
||||||
}else {
|
}else {
|
||||||
logger.info("[媒体服务节点-ABL] 设置HOOK {} 失败 :{}->{}", hook, mediaServerItem.getId(), responseJSON.getString("memo"));
|
logger.info("[媒体服务节点-ABL] 设置HOOK {} 失败 :{}->{}", hook, mediaServerItem.getId(), ablResult.getMemo());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
package com.genersoft.iot.vmp.media.abl;
|
package com.genersoft.iot.vmp.media.abl;
|
||||||
|
|
||||||
import com.alibaba.fastjson2.JSON;
|
import com.alibaba.fastjson2.JSON;
|
||||||
import com.alibaba.fastjson2.JSONObject;
|
import com.genersoft.iot.vmp.media.abl.bean.ABLResult;
|
||||||
import com.genersoft.iot.vmp.media.bean.MediaServer;
|
import com.genersoft.iot.vmp.media.bean.MediaServer;
|
||||||
import okhttp3.*;
|
import okhttp3.*;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
@ -27,7 +27,10 @@ public class ABLRESTfulUtils {
|
|||||||
private OkHttpClient client;
|
private OkHttpClient client;
|
||||||
|
|
||||||
public interface RequestCallback{
|
public interface RequestCallback{
|
||||||
void run(JSONObject response);
|
void run(String response);
|
||||||
|
}
|
||||||
|
public interface ResultCallback{
|
||||||
|
void run(ABLResult response);
|
||||||
}
|
}
|
||||||
|
|
||||||
private OkHttpClient getClient(){
|
private OkHttpClient getClient(){
|
||||||
@ -53,26 +56,23 @@ public class ABLRESTfulUtils {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public JSONObject sendPost(MediaServer mediaServerItem, String api, Map<String, Object> param, RequestCallback callback) {
|
public String sendPost(MediaServer mediaServerItem, String api, Map<String, Object> param, RequestCallback callback) {
|
||||||
return sendPost(mediaServerItem, api, param, callback, null);
|
return sendPost(mediaServerItem, api, param, callback, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public JSONObject sendPost(MediaServer mediaServerItem, String api, Map<String, Object> param, RequestCallback callback, Integer readTimeOut) {
|
public String sendPost(MediaServer mediaServerItem, String api, Map<String, Object> param, RequestCallback callback, Integer readTimeOut) {
|
||||||
OkHttpClient client = getClient(readTimeOut);
|
OkHttpClient client = getClient(readTimeOut);
|
||||||
|
|
||||||
if (mediaServerItem == null) {
|
if (mediaServerItem == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
String url = String.format("http://%s:%s/index/api/%s", mediaServerItem.getIp(), mediaServerItem.getHttpPort(), api);
|
String url = String.format("http://%s:%s/index/api/%s", mediaServerItem.getIp(), mediaServerItem.getHttpPort(), api);
|
||||||
JSONObject responseJSON = new JSONObject();
|
String result = null;
|
||||||
//-2自定义流媒体 调用错误码
|
|
||||||
responseJSON.put("code",-2);
|
|
||||||
responseJSON.put("msg","流媒体调用失败");
|
|
||||||
|
|
||||||
FormBody.Builder builder = new FormBody.Builder();
|
FormBody.Builder builder = new FormBody.Builder();
|
||||||
builder.add("secret",mediaServerItem.getSecret());
|
builder.add("secret",mediaServerItem.getSecret());
|
||||||
if (param != null && param.keySet().size() > 0) {
|
if (param != null && !param.isEmpty()) {
|
||||||
for (String key : param.keySet()){
|
for (String key : param.keySet()){
|
||||||
if (param.get(key) != null) {
|
if (param.get(key) != null) {
|
||||||
builder.add(key, param.get(key).toString());
|
builder.add(key, param.get(key).toString());
|
||||||
@ -93,8 +93,7 @@ public class ABLRESTfulUtils {
|
|||||||
if (response.isSuccessful()) {
|
if (response.isSuccessful()) {
|
||||||
ResponseBody responseBody = response.body();
|
ResponseBody responseBody = response.body();
|
||||||
if (responseBody != null) {
|
if (responseBody != null) {
|
||||||
String responseStr = responseBody.string();
|
result = responseBody.string();
|
||||||
responseJSON = JSON.parseObject(responseStr);
|
|
||||||
}
|
}
|
||||||
}else {
|
}else {
|
||||||
response.close();
|
response.close();
|
||||||
@ -123,7 +122,7 @@ public class ABLRESTfulUtils {
|
|||||||
if (response.isSuccessful()) {
|
if (response.isSuccessful()) {
|
||||||
try {
|
try {
|
||||||
String responseStr = Objects.requireNonNull(response.body()).string();
|
String responseStr = Objects.requireNonNull(response.body()).string();
|
||||||
callback.run(JSON.parseObject(responseStr));
|
callback.run(responseStr);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
logger.error(String.format("[ %s ]请求失败: %s", url, e.getMessage()));
|
logger.error(String.format("[ %s ]请求失败: %s", url, e.getMessage()));
|
||||||
}
|
}
|
||||||
@ -149,19 +148,16 @@ public class ABLRESTfulUtils {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
return result;
|
||||||
|
|
||||||
|
|
||||||
return responseJSON;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public JSONObject sendGet(MediaServer mediaServerItem, String api, Map<String, Object> param) {
|
public String sendGet(MediaServer mediaServerItem, String api, Map<String, Object> param) {
|
||||||
OkHttpClient client = getClient();
|
OkHttpClient client = getClient();
|
||||||
|
|
||||||
if (mediaServerItem == null) {
|
if (mediaServerItem == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
JSONObject responseJSON = null;
|
String result = null;
|
||||||
StringBuilder stringBuffer = new StringBuilder();
|
StringBuilder stringBuffer = new StringBuilder();
|
||||||
stringBuffer.append(String.format("http://%s:%s/index/api/%s", mediaServerItem.getIp(), mediaServerItem.getHttpPort(), api));
|
stringBuffer.append(String.format("http://%s:%s/index/api/%s", mediaServerItem.getIp(), mediaServerItem.getHttpPort(), api));
|
||||||
if (param != null && !param.keySet().isEmpty()) {
|
if (param != null && !param.keySet().isEmpty()) {
|
||||||
@ -188,8 +184,7 @@ public class ABLRESTfulUtils {
|
|||||||
if (response.isSuccessful()) {
|
if (response.isSuccessful()) {
|
||||||
ResponseBody responseBody = response.body();
|
ResponseBody responseBody = response.body();
|
||||||
if (responseBody != null) {
|
if (responseBody != null) {
|
||||||
String responseStr = responseBody.string();
|
result = responseBody.string();
|
||||||
responseJSON = JSON.parseObject(responseStr);
|
|
||||||
}
|
}
|
||||||
}else {
|
}else {
|
||||||
response.close();
|
response.close();
|
||||||
@ -201,10 +196,7 @@ public class ABLRESTfulUtils {
|
|||||||
}catch (IOException e) {
|
}catch (IOException e) {
|
||||||
logger.error(String.format("[ %s ]请求失败: %s", url, e.getMessage()));
|
logger.error(String.format("[ %s ]请求失败: %s", url, e.getMessage()));
|
||||||
}
|
}
|
||||||
|
return result;
|
||||||
|
|
||||||
|
|
||||||
return responseJSON;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void sendGetForImg(MediaServer mediaServerItem, String api, Map<String, Object> params, String targetPath, String fileName) {
|
public void sendGetForImg(MediaServer mediaServerItem, String api, Map<String, Object> params, String targetPath, String fileName) {
|
||||||
@ -330,32 +322,55 @@ public class ABLRESTfulUtils {
|
|||||||
param.put("enable_mp4", 1);
|
param.put("enable_mp4", 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
JSONObject jsonObject = sendPost(mediaServer, "openRtpServer", param, null);
|
String response = sendPost(mediaServer, "openRtpServer", param, null);
|
||||||
if (jsonObject.getInteger("code") == 0) {
|
if (response == null) {
|
||||||
return jsonObject.getInteger("port");
|
|
||||||
}else {
|
|
||||||
return 0;
|
return 0;
|
||||||
|
}else {
|
||||||
|
ABLResult ablResult = JSON.parseObject(response, ABLResult.class);
|
||||||
|
if (ablResult.getCode() == 0) {
|
||||||
|
return ablResult.getPort();
|
||||||
|
}else {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public JSONObject closeStreams(MediaServer mediaServerItem, String app, String stream) {
|
public ABLResult closeStreams(MediaServer mediaServerItem, String app, String stream) {
|
||||||
Map<String, Object> param = new HashMap<>();
|
Map<String, Object> param = new HashMap<>();
|
||||||
param.put("vhost", "__defaultVhost__");
|
param.put("vhost", "__defaultVhost__");
|
||||||
param.put("app", app);
|
param.put("app", app);
|
||||||
param.put("stream", stream);
|
param.put("stream", stream);
|
||||||
param.put("force", 1);
|
param.put("force", 1);
|
||||||
return sendPost(mediaServerItem, "close_streams",param, null);
|
String response = sendPost(mediaServerItem, "close_streams", param, null);
|
||||||
|
ABLResult ablResult = JSON.parseObject(response, ABLResult.class);
|
||||||
|
if (ablResult == null) {
|
||||||
|
return ABLResult.getFailForMediaServer();
|
||||||
|
}else {
|
||||||
|
return ablResult;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public JSONObject getServerConfig(MediaServer mediaServerItem){
|
public ABLResult getServerConfig(MediaServer mediaServerItem){
|
||||||
return sendPost(mediaServerItem, "getServerConfig",null, null);
|
String response = sendPost(mediaServerItem, "getServerConfig", null, null);
|
||||||
|
ABLResult ablResult = JSON.parseObject(response, ABLResult.class);
|
||||||
|
if (ablResult == null) {
|
||||||
|
return ABLResult.getFailForMediaServer();
|
||||||
|
}else {
|
||||||
|
return ablResult;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public JSONObject setConfigParamValue(MediaServer mediaServerItem, String key, Object value){
|
public ABLResult setConfigParamValue(MediaServer mediaServerItem, String key, Object value){
|
||||||
Map<String, Object> param = new HashMap<>();
|
Map<String, Object> param = new HashMap<>();
|
||||||
param.put("key", key);
|
param.put("key", key);
|
||||||
param.put("value", value);
|
param.put("value", value);
|
||||||
return sendGet(mediaServerItem,"setConfigParamValue", param);
|
String response = sendGet(mediaServerItem, "setConfigParamValue", param);
|
||||||
|
ABLResult ablResult = JSON.parseObject(response, ABLResult.class);
|
||||||
|
if (ablResult == null) {
|
||||||
|
return ABLResult.getFailForMediaServer();
|
||||||
|
}else {
|
||||||
|
return ablResult;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void stopSendRtp(MediaServer mediaServer,String key) {
|
public void stopSendRtp(MediaServer mediaServer,String key) {
|
||||||
@ -364,22 +379,35 @@ public class ABLRESTfulUtils {
|
|||||||
sendPost(mediaServer,"stopSendRtp", param, null);
|
sendPost(mediaServer,"stopSendRtp", param, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public JSONObject getMediaList(MediaServer mediaServer, String app, String stream) {
|
public ABLResult getMediaList(MediaServer mediaServer, String app, String stream) {
|
||||||
Map<String, Object> param = new HashMap<>();
|
Map<String, Object> param = new HashMap<>();
|
||||||
param.put("app", app);
|
param.put("app", app);
|
||||||
if (stream != null) {
|
if (stream != null) {
|
||||||
param.put("stream", stream);
|
param.put("stream", stream);
|
||||||
}
|
}
|
||||||
return sendPost(mediaServer,"getMediaList", param, null);
|
|
||||||
|
String response = sendGet(mediaServer, "getMediaList", param);
|
||||||
|
ABLResult ablResult = JSON.parseObject(response, ABLResult.class);
|
||||||
|
if (ablResult == null) {
|
||||||
|
return ABLResult.getFailForMediaServer();
|
||||||
|
}else {
|
||||||
|
return ablResult;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public JSONObject queryRecordList(MediaServer mediaServer, String app, String stream, String startTime, String endTime) {
|
public ABLResult queryRecordList(MediaServer mediaServer, String app, String stream, String startTime, String endTime) {
|
||||||
Map<String, Object> param = new HashMap<>();
|
Map<String, Object> param = new HashMap<>();
|
||||||
param.put("app", app);
|
param.put("app", app);
|
||||||
param.put("stream", stream);
|
param.put("stream", stream);
|
||||||
param.put("starttime", startTime);
|
param.put("starttime", startTime);
|
||||||
param.put("endtime", endTime);
|
param.put("endtime", endTime);
|
||||||
return sendPost(mediaServer,"queryRecordList", param, null);
|
String response = sendGet(mediaServer, "queryRecordList", param);
|
||||||
|
ABLResult ablResult = JSON.parseObject(response, ABLResult.class);
|
||||||
|
if (ablResult == null) {
|
||||||
|
return ABLResult.getFailForMediaServer();
|
||||||
|
}else {
|
||||||
|
return ablResult;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void getSnap(MediaServer mediaServer, String app, String stream, int timeoutSec, String path, String fileName) {
|
public void getSnap(MediaServer mediaServer, String app, String stream, int timeoutSec, String path, String fileName) {
|
||||||
@ -397,7 +425,7 @@ public class ABLRESTfulUtils {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public JSONObject addStreamProxy(MediaServer mediaServer, String app, String stream, String url, boolean disableAudio, boolean enableMp4, String rtpType, Integer timeout) {
|
public ABLResult addStreamProxy(MediaServer mediaServer, String app, String stream, String url, boolean disableAudio, boolean enableMp4, String rtpType, Integer timeout) {
|
||||||
Map<String, Object> param = new HashMap<>();
|
Map<String, Object> param = new HashMap<>();
|
||||||
param.put("app", app);
|
param.put("app", app);
|
||||||
param.put("stream", stream);
|
param.put("stream", stream);
|
||||||
@ -405,10 +433,16 @@ public class ABLRESTfulUtils {
|
|||||||
param.put("disableAudio", disableAudio? "1" : "0");
|
param.put("disableAudio", disableAudio? "1" : "0");
|
||||||
param.put("enable_mp4", enableMp4 ? "1" : "0");
|
param.put("enable_mp4", enableMp4 ? "1" : "0");
|
||||||
// TODO rtpType timeout 尚不支持
|
// TODO rtpType timeout 尚不支持
|
||||||
return sendPost(mediaServer,"addStreamProxy", param, null);
|
String response = sendGet(mediaServer, "addStreamProxy", param);
|
||||||
|
ABLResult ablResult = JSON.parseObject(response, ABLResult.class);
|
||||||
|
if (ablResult == null) {
|
||||||
|
return ABLResult.getFailForMediaServer();
|
||||||
|
}else {
|
||||||
|
return ablResult;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public JSONObject addFFmpegProxy(MediaServer mediaServer, String app, String stream, String url, boolean disableAudio, boolean enableMp4, String rtpType, Integer timeout) {
|
public ABLResult addFFmpegProxy(MediaServer mediaServer, String app, String stream, String url, boolean disableAudio, boolean enableMp4, String rtpType, Integer timeout) {
|
||||||
Map<String, Object> param = new HashMap<>();
|
Map<String, Object> param = new HashMap<>();
|
||||||
param.put("app", app);
|
param.put("app", app);
|
||||||
param.put("stream", stream);
|
param.put("stream", stream);
|
||||||
@ -416,19 +450,61 @@ public class ABLRESTfulUtils {
|
|||||||
param.put("disableAudio", disableAudio);
|
param.put("disableAudio", disableAudio);
|
||||||
param.put("enable_mp4", enableMp4);
|
param.put("enable_mp4", enableMp4);
|
||||||
// TODO rtpType timeout 尚不支持
|
// TODO rtpType timeout 尚不支持
|
||||||
return sendPost(mediaServer,"addFFmpegProxy", param, null);
|
String response = sendGet(mediaServer, "addFFmpegProxy", param);
|
||||||
|
ABLResult ablResult = JSON.parseObject(response, ABLResult.class);
|
||||||
|
if (ablResult == null) {
|
||||||
|
return ABLResult.getFailForMediaServer();
|
||||||
|
}else {
|
||||||
|
return ablResult;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public JSONObject delStreamProxy(MediaServer mediaServer, String streamKey) {
|
public ABLResult delStreamProxy(MediaServer mediaServer, String streamKey) {
|
||||||
Map<String, Object> param = new HashMap<>();
|
Map<String, Object> param = new HashMap<>();
|
||||||
param.put("key", streamKey);
|
param.put("key", streamKey);
|
||||||
return sendPost(mediaServer,"delStreamProxy", param, null);
|
String response = sendGet(mediaServer, "delStreamProxy", param);
|
||||||
|
ABLResult ablResult = JSON.parseObject(response, ABLResult.class);
|
||||||
|
if (ablResult == null) {
|
||||||
|
return ABLResult.getFailForMediaServer();
|
||||||
|
}else {
|
||||||
|
return ablResult;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public JSONObject delFFmpegProxy(MediaServer mediaServer, String streamKey) {
|
public ABLResult delFFmpegProxy(MediaServer mediaServer, String streamKey) {
|
||||||
Map<String, Object> param = new HashMap<>();
|
Map<String, Object> param = new HashMap<>();
|
||||||
param.put("key", streamKey);
|
param.put("key", streamKey);
|
||||||
return sendPost(mediaServer,"delFFmpegProxy", param, null);
|
String response = sendGet(mediaServer, "delFFmpegProxy", param);
|
||||||
|
ABLResult ablResult = JSON.parseObject(response, ABLResult.class);
|
||||||
|
if (ablResult == null) {
|
||||||
|
return ABLResult.getFailForMediaServer();
|
||||||
|
}else {
|
||||||
|
return ablResult;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public ABLResult pauseRtpServer(MediaServer mediaServer, String streamKey) {
|
||||||
|
Map<String, Object> param = new HashMap<>();
|
||||||
|
param.put("key", streamKey);
|
||||||
|
String response = sendGet(mediaServer, "pauseRtpServer", param);
|
||||||
|
ABLResult ablResult = JSON.parseObject(response, ABLResult.class);
|
||||||
|
if (ablResult == null) {
|
||||||
|
return ABLResult.getFailForMediaServer();
|
||||||
|
}else {
|
||||||
|
return ablResult;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public ABLResult resumeRtpServer(MediaServer mediaServer, String streamKey) {
|
||||||
|
Map<String, Object> param = new HashMap<>();
|
||||||
|
param.put("key", streamKey);
|
||||||
|
String response = sendGet(mediaServer, "resumeRtpServer", param);
|
||||||
|
ABLResult ablResult = JSON.parseObject(response, ABLResult.class);
|
||||||
|
if (ablResult == null) {
|
||||||
|
return ABLResult.getFailForMediaServer();
|
||||||
|
}else {
|
||||||
|
return ablResult;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,25 @@
|
|||||||
|
package com.genersoft.iot.vmp.media.abl.bean;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class ABLMedia {
|
||||||
|
private String key;
|
||||||
|
private String app;
|
||||||
|
private String stream;
|
||||||
|
private Integer sourceType;
|
||||||
|
private Long duration;
|
||||||
|
private String sim;
|
||||||
|
private Boolean status;
|
||||||
|
private Boolean enable_hls;
|
||||||
|
private Boolean transcodingStatus;
|
||||||
|
private String sourceURL;
|
||||||
|
private Integer networkType;
|
||||||
|
private Integer readerCount;
|
||||||
|
private String videoCodec;
|
||||||
|
private Integer width;
|
||||||
|
private Integer height;
|
||||||
|
private String audioCodec;
|
||||||
|
private Integer audioChannels;
|
||||||
|
private Integer audioSampleRate;
|
||||||
|
}
|
||||||
@ -0,0 +1,10 @@
|
|||||||
|
package com.genersoft.iot.vmp.media.abl.bean;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class ABLRecordFile {
|
||||||
|
private String file;
|
||||||
|
private Long duration;
|
||||||
|
private ABLUrls url;
|
||||||
|
}
|
||||||
@ -0,0 +1,48 @@
|
|||||||
|
package com.genersoft.iot.vmp.media.abl.bean;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson2.JSONArray;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class ABLResult {
|
||||||
|
private int code;
|
||||||
|
private String memo;
|
||||||
|
|
||||||
|
|
||||||
|
private String key;
|
||||||
|
private Integer port;
|
||||||
|
private JSONArray params;
|
||||||
|
private List<ABLMedia> mediaList;
|
||||||
|
|
||||||
|
private String app;
|
||||||
|
private String stream;
|
||||||
|
private String starttime;
|
||||||
|
private String endtime;
|
||||||
|
private ABLUrls url;
|
||||||
|
private ABLRecordFile recordFileList;
|
||||||
|
|
||||||
|
public static ABLResult getFailForMediaServer() {
|
||||||
|
ABLResult zlmResult = new ABLResult();
|
||||||
|
zlmResult.setCode(-2);
|
||||||
|
zlmResult.setMemo("流媒体调用失败");
|
||||||
|
return zlmResult;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ABLResult getMediaServer(int code, String msg) {
|
||||||
|
ABLResult zlmResult = new ABLResult();
|
||||||
|
zlmResult.setCode(code);
|
||||||
|
zlmResult.setMemo(msg);
|
||||||
|
return zlmResult;
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "ZLMResult{" +
|
||||||
|
"code=" + code +
|
||||||
|
", memo='" + memo + '\'' +
|
||||||
|
(key != null ? (", key=" + key) : "") +
|
||||||
|
(port != null ? (", port=" + port) : "") +
|
||||||
|
'}';
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,21 @@
|
|||||||
|
package com.genersoft.iot.vmp.media.abl.bean;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson2.annotation.JSONField;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class ABLUrls {
|
||||||
|
private String rtsp;
|
||||||
|
private String rtmp;
|
||||||
|
|
||||||
|
@JSONField(name = "http-flv")
|
||||||
|
private String httpFlv;
|
||||||
|
|
||||||
|
@JSONField(name = "ws-flv")
|
||||||
|
private String wsFlv;
|
||||||
|
|
||||||
|
@JSONField(name = "http-mp4")
|
||||||
|
private String httpMp4;
|
||||||
|
|
||||||
|
private String download;
|
||||||
|
}
|
||||||
@ -1,10 +1,14 @@
|
|||||||
package com.genersoft.iot.vmp.media.abl.bean.hook;
|
package com.genersoft.iot.vmp.media.abl.bean.hook;
|
||||||
|
|
||||||
import com.genersoft.iot.vmp.media.abl.bean.AblUrls;
|
import com.genersoft.iot.vmp.media.abl.bean.AblUrls;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 流到来的事件
|
* 流到来的事件
|
||||||
*/
|
*/
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
public class OnStreamArriveABLHookParam extends ABLHookParam{
|
public class OnStreamArriveABLHookParam extends ABLHookParam{
|
||||||
|
|
||||||
|
|
||||||
@ -105,141 +109,4 @@ public class OnStreamArriveABLHookParam extends ABLHookParam{
|
|||||||
|
|
||||||
|
|
||||||
private AblUrls url;
|
private AblUrls url;
|
||||||
|
|
||||||
|
|
||||||
public String getCallId() {
|
|
||||||
return callId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setCallId(String callId) {
|
|
||||||
this.callId = callId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Boolean getStatus() {
|
|
||||||
return status;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setStatus(Boolean status) {
|
|
||||||
this.status = status;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Boolean getEnableHls() {
|
|
||||||
return enableHls;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setEnableHls(Boolean enableHls) {
|
|
||||||
this.enableHls = enableHls;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Boolean getTranscodingStatus() {
|
|
||||||
return transcodingStatus;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setTranscodingStatus(Boolean transcodingStatus) {
|
|
||||||
this.transcodingStatus = transcodingStatus;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getSourceURL() {
|
|
||||||
return sourceURL;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSourceURL(String sourceURL) {
|
|
||||||
this.sourceURL = sourceURL;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Integer getReaderCount() {
|
|
||||||
return readerCount;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setReaderCount(Integer readerCount) {
|
|
||||||
this.readerCount = readerCount;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Integer getNoneReaderDuration() {
|
|
||||||
return noneReaderDuration;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setNoneReaderDuration(Integer noneReaderDuration) {
|
|
||||||
this.noneReaderDuration = noneReaderDuration;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getVideoCodec() {
|
|
||||||
return videoCodec;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setVideoCodec(String videoCodec) {
|
|
||||||
this.videoCodec = videoCodec;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Integer getVideoFrameSpeed() {
|
|
||||||
return videoFrameSpeed;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setVideoFrameSpeed(Integer videoFrameSpeed) {
|
|
||||||
this.videoFrameSpeed = videoFrameSpeed;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Integer getWidth() {
|
|
||||||
return width;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setWidth(Integer width) {
|
|
||||||
this.width = width;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Integer getHeight() {
|
|
||||||
return height;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setHeight(Integer height) {
|
|
||||||
this.height = height;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Integer getVideoBitrate() {
|
|
||||||
return videoBitrate;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setVideoBitrate(Integer videoBitrate) {
|
|
||||||
this.videoBitrate = videoBitrate;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getAudioCodec() {
|
|
||||||
return audioCodec;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setAudioCodec(String audioCodec) {
|
|
||||||
this.audioCodec = audioCodec;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Integer getAudioChannels() {
|
|
||||||
return audioChannels;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setAudioChannels(Integer audioChannels) {
|
|
||||||
this.audioChannels = audioChannels;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Integer getAudioSampleRate() {
|
|
||||||
return audioSampleRate;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setAudioSampleRate(Integer audioSampleRate) {
|
|
||||||
this.audioSampleRate = audioSampleRate;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Integer getAudioBitrate() {
|
|
||||||
return audioBitrate;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setAudioBitrate(Integer audioBitrate) {
|
|
||||||
this.audioBitrate = audioBitrate;
|
|
||||||
}
|
|
||||||
|
|
||||||
public AblUrls getUrl() {
|
|
||||||
return url;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setUrl(AblUrls url) {
|
|
||||||
this.url = url;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,6 +2,7 @@ package com.genersoft.iot.vmp.media.bean;
|
|||||||
|
|
||||||
import com.alibaba.fastjson2.JSONArray;
|
import com.alibaba.fastjson2.JSONArray;
|
||||||
import com.alibaba.fastjson2.JSONObject;
|
import com.alibaba.fastjson2.JSONObject;
|
||||||
|
import com.genersoft.iot.vmp.media.abl.bean.ABLMedia;
|
||||||
import com.genersoft.iot.vmp.media.abl.bean.hook.OnStreamArriveABLHookParam;
|
import com.genersoft.iot.vmp.media.abl.bean.hook.OnStreamArriveABLHookParam;
|
||||||
import com.genersoft.iot.vmp.media.zlm.dto.hook.OnStreamChangedHookParam;
|
import com.genersoft.iot.vmp.media.zlm.dto.hook.OnStreamChangedHookParam;
|
||||||
import com.genersoft.iot.vmp.media.zlm.dto.hook.OriginType;
|
import com.genersoft.iot.vmp.media.zlm.dto.hook.OriginType;
|
||||||
@ -270,7 +271,38 @@ public class MediaInfo {
|
|||||||
return mediaInfo;
|
return mediaInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static MediaInfo getInstanceForAblJson(JSONObject mediaJSON, MediaServer mediaServer) {
|
public static MediaInfo getInstance(ABLMedia ablMedia, MediaServer mediaServer) {
|
||||||
return null;
|
MediaInfo mediaInfo = new MediaInfo();
|
||||||
|
mediaInfo.setApp(ablMedia.getApp());
|
||||||
|
mediaInfo.setStream(ablMedia.getStream());
|
||||||
|
mediaInfo.setMediaServer(mediaServer);
|
||||||
|
mediaInfo.setReaderCount(ablMedia.getReaderCount());
|
||||||
|
mediaInfo.setOnline(true);
|
||||||
|
mediaInfo.setVideoCodec(ablMedia.getVideoCodec());
|
||||||
|
switch (ablMedia.getNetworkType()) {
|
||||||
|
case 21:
|
||||||
|
mediaInfo.setOriginType(OriginType.RTMP_PUSH.ordinal());
|
||||||
|
break;
|
||||||
|
case 23:
|
||||||
|
mediaInfo.setOriginType(OriginType.RTSP_PUSH.ordinal());
|
||||||
|
break;
|
||||||
|
case 30:
|
||||||
|
case 31:
|
||||||
|
case 32:
|
||||||
|
case 33:
|
||||||
|
mediaInfo.setOriginType(OriginType.PULL.ordinal());
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
mediaInfo.setOriginType(OriginType.UNKNOWN.ordinal());
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
mediaInfo.setWidth(ablMedia.getWidth());
|
||||||
|
mediaInfo.setHeight(ablMedia.getHeight());
|
||||||
|
mediaInfo.setAudioCodec(ablMedia.getAudioCodec());
|
||||||
|
mediaInfo.setAudioChannels(ablMedia.getAudioChannels());
|
||||||
|
mediaInfo.setAudioSampleRate(ablMedia.getAudioSampleRate());
|
||||||
|
|
||||||
|
return mediaInfo;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -7,13 +7,10 @@ import com.genersoft.iot.vmp.common.VideoManagerConstants;
|
|||||||
import com.genersoft.iot.vmp.conf.UserSetting;
|
import com.genersoft.iot.vmp.conf.UserSetting;
|
||||||
import com.genersoft.iot.vmp.conf.exception.ControllerException;
|
import com.genersoft.iot.vmp.conf.exception.ControllerException;
|
||||||
import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel;
|
import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel;
|
||||||
import com.genersoft.iot.vmp.gb28181.bean.SendRtpInfo;
|
|
||||||
import com.genersoft.iot.vmp.gb28181.bean.SsrcTransaction;
|
import com.genersoft.iot.vmp.gb28181.bean.SsrcTransaction;
|
||||||
import com.genersoft.iot.vmp.gb28181.service.IDeviceChannelService;
|
import com.genersoft.iot.vmp.gb28181.service.IDeviceChannelService;
|
||||||
import com.genersoft.iot.vmp.gb28181.service.IInviteStreamService;
|
import com.genersoft.iot.vmp.gb28181.service.IInviteStreamService;
|
||||||
import com.genersoft.iot.vmp.gb28181.session.SipInviteSessionManager;
|
import com.genersoft.iot.vmp.gb28181.session.SipInviteSessionManager;
|
||||||
import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommander;
|
|
||||||
import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommanderForPlatform;
|
|
||||||
import com.genersoft.iot.vmp.jt1078.bean.JTMediaStreamType;
|
import com.genersoft.iot.vmp.jt1078.bean.JTMediaStreamType;
|
||||||
import com.genersoft.iot.vmp.jt1078.service.Ijt1078PlayService;
|
import com.genersoft.iot.vmp.jt1078.service.Ijt1078PlayService;
|
||||||
import com.genersoft.iot.vmp.jt1078.service.Ijt1078Service;
|
import com.genersoft.iot.vmp.jt1078.service.Ijt1078Service;
|
||||||
@ -21,8 +18,8 @@ import com.genersoft.iot.vmp.media.bean.MediaServer;
|
|||||||
import com.genersoft.iot.vmp.media.bean.ResultForOnPublish;
|
import com.genersoft.iot.vmp.media.bean.ResultForOnPublish;
|
||||||
import com.genersoft.iot.vmp.media.zlm.dto.StreamAuthorityInfo;
|
import com.genersoft.iot.vmp.media.zlm.dto.StreamAuthorityInfo;
|
||||||
import com.genersoft.iot.vmp.service.IMediaService;
|
import com.genersoft.iot.vmp.service.IMediaService;
|
||||||
import com.genersoft.iot.vmp.service.ISendRtpServerService;
|
|
||||||
import com.genersoft.iot.vmp.service.IRecordPlanService;
|
import com.genersoft.iot.vmp.service.IRecordPlanService;
|
||||||
|
import com.genersoft.iot.vmp.service.ISendRtpServerService;
|
||||||
import com.genersoft.iot.vmp.service.IUserService;
|
import com.genersoft.iot.vmp.service.IUserService;
|
||||||
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
|
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
|
||||||
import com.genersoft.iot.vmp.streamProxy.bean.StreamProxy;
|
import com.genersoft.iot.vmp.streamProxy.bean.StreamProxy;
|
||||||
@ -37,7 +34,6 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||||||
import org.springframework.data.redis.core.RedisTemplate;
|
import org.springframework.data.redis.core.RedisTemplate;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@ -170,7 +166,7 @@ public class MediaServiceImpl implements IMediaService {
|
|||||||
inviteInfo = inviteStreamService.getInviteInfoBySSRC(ssrc);
|
inviteInfo = inviteStreamService.getInviteInfoBySSRC(ssrc);
|
||||||
if (inviteInfo != null) {
|
if (inviteInfo != null) {
|
||||||
result.setStream_replace(inviteInfo.getStream());
|
result.setStream_replace(inviteInfo.getStream());
|
||||||
log.info("[ZLM HOOK]推流鉴权 stream: {} 替换为 {}", stream, inviteInfo.getStream());
|
log.info("[HOOK]推流鉴权 stream: {} 替换为 {}", stream, inviteInfo.getStream());
|
||||||
stream = inviteInfo.getStream();
|
stream = inviteInfo.getStream();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user