优化ABL结果封装完成
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
package com.genersoft.iot.vmp.media.abl;
|
||||
|
||||
import com.alibaba.fastjson2.JSONArray;
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.genersoft.iot.vmp.common.CommonCallback;
|
||||
import com.genersoft.iot.vmp.common.InviteInfo;
|
||||
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.gb28181.bean.SendRtpInfo;
|
||||
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.hook.OnStreamArriveABLHookParam;
|
||||
import com.genersoft.iot.vmp.media.bean.MediaInfo;
|
||||
import com.genersoft.iot.vmp.media.bean.MediaServer;
|
||||
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.util.ObjectUtils;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Service("abl")
|
||||
public class ABLMediaNodeServerService implements IMediaNodeServerService {
|
||||
@@ -70,18 +73,10 @@ public class ABLMediaNodeServerService implements IMediaNodeServerService {
|
||||
if (mediaServer == null) {
|
||||
return;
|
||||
}
|
||||
Map<String, Object> param = new HashMap<>();
|
||||
param.put("stream_id", streamId);
|
||||
param.put("force", 1);
|
||||
JSONObject jsonObject = ablresTfulUtils.closeStreams(mediaServer, "rtp", streamId);
|
||||
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服务");
|
||||
ABLResult result = ablresTfulUtils.closeStreams(mediaServer, "rtp", streamId);
|
||||
logger.info("关闭RTP Server " + result);
|
||||
if (result.getCode() != 0) {
|
||||
logger.error("[closeRtpServer] 失败: {}", result.getMemo());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -96,31 +91,18 @@ public class ABLMediaNodeServerService implements IMediaNodeServerService {
|
||||
if (mediaServer == null) {
|
||||
return;
|
||||
}
|
||||
JSONObject jsonObject = ablresTfulUtils.closeStreams(mediaServer, "1078", streamId);
|
||||
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服务");
|
||||
ABLResult result = ablresTfulUtils.closeStreams(mediaServer, "1078", streamId);
|
||||
logger.info("关闭JT-RTP Server " + result);
|
||||
if (result.getCode() != 0) {
|
||||
logger.error("[JT-closeRtpServer] 失败: {}", result.getMemo());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void closeStreams(MediaServer mediaServer, String app, String streamId) {
|
||||
Map<String, Object> param = new HashMap<>();
|
||||
param.put("stream_id", streamId);
|
||||
param.put("force", 1);
|
||||
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服务");
|
||||
ABLResult result = ablresTfulUtils.closeStreams(mediaServer, app, streamId);
|
||||
if (result.getCode() != 0) {
|
||||
logger.error("[closeStreams] 失败: {}", result.getMemo());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -146,8 +128,8 @@ public class ABLMediaNodeServerService implements IMediaNodeServerService {
|
||||
mediaServer.setIp(ip);
|
||||
mediaServer.setHttpPort(port);
|
||||
mediaServer.setSecret(secret);
|
||||
JSONObject responseJSON = ablresTfulUtils.getServerConfig(mediaServer);
|
||||
JSONArray data = responseJSON.getJSONArray("params");
|
||||
ABLResult result = ablresTfulUtils.getServerConfig(mediaServer);
|
||||
JSONArray data = result.getParams();
|
||||
if (data != null && !data.isEmpty()) {
|
||||
AblServerConfig config = AblServerConfig.getInstance(data);
|
||||
config.setServerIp(ip);
|
||||
@@ -173,19 +155,17 @@ public class ABLMediaNodeServerService implements IMediaNodeServerService {
|
||||
|
||||
@Override
|
||||
public List<StreamInfo> getMediaList(MediaServer mediaServer, String app, String stream, String callId) {
|
||||
JSONObject jsonObject = ablresTfulUtils.getMediaList(mediaServer, app, stream);
|
||||
if (jsonObject == null || jsonObject.getInteger("code") != 0) {
|
||||
ABLResult result = ablresTfulUtils.getMediaList(mediaServer, app, stream);
|
||||
if (result.getCode() != 0) {
|
||||
return null;
|
||||
}
|
||||
JSONArray mediaList = jsonObject.getJSONArray("mediaList");
|
||||
if (mediaList == null || mediaList.isEmpty()) {
|
||||
if (result.getMediaList() == null || result.getMediaList().isEmpty()) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
List<StreamInfo> streamInfoList = new ArrayList<>();
|
||||
for (int i = 0; i < mediaList.size(); i++) {
|
||||
JSONObject mediaJSON = mediaList.getJSONObject(i);
|
||||
OnStreamArriveABLHookParam onStreamArriveABLHookParam = mediaJSON.to(OnStreamArriveABLHookParam.class);
|
||||
MediaInfo mediaInfo = MediaInfo.getInstance(onStreamArriveABLHookParam, mediaServer);
|
||||
for (int i = 0; i < result.getMediaList().size(); i++) {
|
||||
ABLMedia ablMedia = result.getMediaList().get(i);
|
||||
MediaInfo mediaInfo = MediaInfo.getInstance(ablMedia, mediaServer);
|
||||
StreamInfo streamInfo = getStreamInfoByAppAndStream(mediaServer, app, stream, mediaInfo, callId, true);
|
||||
if (streamInfo != null) {
|
||||
streamInfoList.add(streamInfo);
|
||||
@@ -230,37 +210,26 @@ public class ABLMediaNodeServerService implements IMediaNodeServerService {
|
||||
|
||||
@Override
|
||||
public MediaInfo getMediaInfo(MediaServer mediaServer, String app, String stream) {
|
||||
JSONObject jsonObject = ablresTfulUtils.getMediaList(mediaServer, app, stream);
|
||||
if (jsonObject == null || jsonObject.getInteger("code") != 0) {
|
||||
ABLResult ablResult = ablresTfulUtils.getMediaList(mediaServer, app, stream);
|
||||
if (ablResult.getCode() != 0) {
|
||||
return null;
|
||||
}
|
||||
JSONArray mediaList = jsonObject.getJSONArray("mediaList");
|
||||
if (mediaList == null || mediaList.isEmpty()) {
|
||||
if (ablResult.getMediaList() == null || ablResult.getMediaList().isEmpty()) {
|
||||
return null;
|
||||
}
|
||||
MediaInfo mediaInfo = null;
|
||||
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;
|
||||
return MediaInfo.getInstance(ablResult.getMediaList().get(0), mediaServer);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean pauseRtpCheck(MediaServer mediaServer, String streamKey) {
|
||||
logger.warn("[abl-pauseRtpCheck] 未实现");
|
||||
return null;
|
||||
ABLResult ablResult = ablresTfulUtils.pauseRtpServer(mediaServer, streamKey);
|
||||
return ablResult.getCode() == 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean resumeRtpCheck(MediaServer mediaServer, String streamKey) {
|
||||
logger.warn("[abl-resumeRtpCheck] 未实现");
|
||||
return null;
|
||||
ABLResult ablResult = ablresTfulUtils.resumeRtpServer(mediaServer, streamKey);
|
||||
return ablResult.getCode() == 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -270,14 +239,14 @@ public class ABLMediaNodeServerService implements IMediaNodeServerService {
|
||||
|
||||
@Override
|
||||
public Boolean delFFmpegSource(MediaServer mediaServer, String streamKey) {
|
||||
JSONObject jsonObject = ablresTfulUtils.delFFmpegProxy(mediaServer, streamKey);
|
||||
return jsonObject.getInteger("code") == 0;
|
||||
ABLResult ablResult = ablresTfulUtils.delFFmpegProxy(mediaServer, streamKey);
|
||||
return ablResult.getCode() == 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean delStreamProxy(MediaServer mediaServer, String streamKey) {
|
||||
JSONObject jsonObject = ablresTfulUtils.delStreamProxy(mediaServer, streamKey);
|
||||
return jsonObject.getInteger("code") == 0;
|
||||
ABLResult ablResult = ablresTfulUtils.delStreamProxy(mediaServer, streamKey);
|
||||
return ablResult.getCode() == 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -311,17 +280,15 @@ public class ABLMediaNodeServerService implements IMediaNodeServerService {
|
||||
}
|
||||
long startTime = cloudRecordItemList.get(cloudRecordItemList.size() - 1).getStartTime();
|
||||
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));
|
||||
System.err.println(jsonObject);
|
||||
if (jsonObject == null || jsonObject.getInteger("code") != 0) {
|
||||
if (ablResult.getCode() != 0) {
|
||||
return;
|
||||
}
|
||||
JSONObject urlJson = jsonObject.getJSONObject("url");
|
||||
if (urlJson == null) {
|
||||
if (ablResult.getUrl() == null) {
|
||||
return;
|
||||
}
|
||||
String download = urlJson.getString("http-mp4") + "?download_speed=6";
|
||||
String download = ablResult.getUrl().getDownload();
|
||||
DownloadFileInfo downloadFileInfo = new DownloadFileInfo();
|
||||
downloadFileInfo.setHttpPath(download);
|
||||
downloadFileInfo.setHttpsPath(download);
|
||||
@@ -346,11 +313,11 @@ public class ABLMediaNodeServerService implements IMediaNodeServerService {
|
||||
@Override
|
||||
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);
|
||||
if (jsonObject.getInteger("code") != 0) {
|
||||
return WVPResult.fail(ErrorCode.ERROR100.getCode(), jsonObject.getString("memo"));
|
||||
ABLResult result = ablresTfulUtils.addStreamProxy(mediaServer, app, stream, url, !enableAudio, enableMp4, rtpType, timeout);
|
||||
if (result.getCode() != 0) {
|
||||
return WVPResult.fail(ErrorCode.ERROR100.getCode(), result.getMemo());
|
||||
}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());
|
||||
}
|
||||
|
||||
JSONObject jsonObject = null;
|
||||
ABLResult ablResult = null;
|
||||
if ("ffmpeg".equalsIgnoreCase(streamProxy.getType())){
|
||||
if (streamProxy.getTimeout() == 0) {
|
||||
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());
|
||||
}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());
|
||||
}
|
||||
if (jsonObject == null) {
|
||||
throw new ControllerException(ErrorCode.ERROR100.getCode(), "请求失败");
|
||||
}else if (jsonObject.getInteger("code") != 0) {
|
||||
throw new ControllerException(jsonObject.getInteger("code"), jsonObject.getString("memo"));
|
||||
if (ablResult.getCode() != 0) {
|
||||
throw new ControllerException(ablResult.getCode(), ablResult.getMemo());
|
||||
}else {
|
||||
String key = jsonObject.getString("key");
|
||||
String key = ablResult.getKey();
|
||||
if (key == null) {
|
||||
throw new ControllerException(jsonObject.getInteger("code"), "代理结果异常: " + jsonObject);
|
||||
throw new ControllerException(ablResult.getCode(), "代理结果异常: " + ablResult);
|
||||
}else {
|
||||
return key;
|
||||
}
|
||||
@@ -407,33 +372,30 @@ public class ABLMediaNodeServerService implements IMediaNodeServerService {
|
||||
|
||||
@Override
|
||||
public void stopProxy(MediaServer mediaServer, String streamKey, String type) {
|
||||
JSONObject jsonObject = null;
|
||||
ABLResult ablResult = null;
|
||||
if ("ffmpeg".equalsIgnoreCase(type)){
|
||||
jsonObject = ablresTfulUtils.delFFmpegProxy(mediaServer, streamKey);
|
||||
ablResult = ablresTfulUtils.delFFmpegProxy(mediaServer, streamKey);
|
||||
}else {
|
||||
jsonObject = ablresTfulUtils.delStreamProxy(mediaServer, streamKey);
|
||||
ablResult = ablresTfulUtils.delStreamProxy(mediaServer, streamKey);
|
||||
}
|
||||
if (jsonObject == null) {
|
||||
throw new ControllerException(ErrorCode.ERROR100.getCode(), "请求失败");
|
||||
}else if (jsonObject.getInteger("code") != 0) {
|
||||
throw new ControllerException(jsonObject.getInteger("code"), jsonObject.getString("memo"));
|
||||
if (ablResult.getCode() != 0) {
|
||||
throw new ControllerException(ablResult.getCode(), ablResult.getMemo());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> listRtpServer(MediaServer mediaServer) {
|
||||
JSONObject jsonObject = ablresTfulUtils.getMediaList(mediaServer, "rtp", null);
|
||||
if (jsonObject == null || jsonObject.getInteger("code") != 0) {
|
||||
ABLResult ablResult = ablresTfulUtils.getMediaList(mediaServer, "rtp", null);
|
||||
if (ablResult.getCode() != 0) {
|
||||
return null;
|
||||
}
|
||||
JSONArray mediaList = jsonObject.getJSONArray("mediaList");
|
||||
if (mediaList == null || mediaList.isEmpty()) {
|
||||
if (ablResult.getMediaList() == null || ablResult.getMediaList().isEmpty()) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
List<String> result = new ArrayList<>();
|
||||
for (int i = 0; i < mediaList.size(); i++) {
|
||||
JSONObject mediaJSON = mediaList.getJSONObject(i);
|
||||
result.add(mediaJSON.getString("stream"));
|
||||
for (int i = 0; i < ablResult.getMediaList().size(); i++) {
|
||||
ABLMedia ablMedia = ablResult.getMediaList().get(i);
|
||||
result.add(ablMedia.getStream());
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
package com.genersoft.iot.vmp.media.abl;
|
||||
|
||||
import com.alibaba.fastjson2.JSONArray;
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.genersoft.iot.vmp.conf.DynamicTask;
|
||||
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.ConfigKeyId;
|
||||
import com.genersoft.iot.vmp.media.abl.event.HookAblServerKeepaliveEvent;
|
||||
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.MediaServerDeleteEvent;
|
||||
import com.genersoft.iot.vmp.media.service.IMediaServerService;
|
||||
import com.genersoft.iot.vmp.media.bean.MediaServer;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -131,17 +131,18 @@ public class ABLMediaServerStatusManger {
|
||||
continue;
|
||||
}
|
||||
logger.info("[ABL-尝试连接] ID:{}, 地址: {}:{}", mediaServerItem.getId(), mediaServerItem.getIp(), mediaServerItem.getHttpPort());
|
||||
JSONObject responseJson = ablResTfulUtils.getServerConfig(mediaServerItem);
|
||||
ABLResult ablResult = ablResTfulUtils.getServerConfig(mediaServerItem);
|
||||
AblServerConfig ablServerConfig = null;
|
||||
if (responseJson == null) {
|
||||
if (ablResult.getCode() != 0) {
|
||||
logger.info("[ABL-尝试连接]失败, ID:{}, 地址: {}:{}", mediaServerItem.getId(), mediaServerItem.getIp(), mediaServerItem.getHttpPort());
|
||||
continue;
|
||||
}
|
||||
JSONArray data = responseJson.getJSONArray("params");
|
||||
if (data == null || data.isEmpty()) {
|
||||
JSONArray params = ablResult.getParams();
|
||||
|
||||
if (params == null || params.isEmpty()) {
|
||||
logger.info("[ABL-尝试连接]失败, ID:{}, 地址: {}:{}", mediaServerItem.getId(), mediaServerItem.getIp(), mediaServerItem.getHttpPort());
|
||||
}else {
|
||||
ablServerConfig = AblServerConfig.getInstance(data);
|
||||
ablServerConfig = AblServerConfig.getInstance(params);
|
||||
initPort(mediaServerItem, ablServerConfig);
|
||||
online(mediaServerItem, ablServerConfig);
|
||||
}
|
||||
@@ -153,19 +154,19 @@ public class ABLMediaServerStatusManger {
|
||||
continue;
|
||||
}
|
||||
logger.info("[ABL-尝试连接] ID:{}, 地址: {}:{}", mediaServerItem.getId(), mediaServerItem.getIp(), mediaServerItem.getHttpPort());
|
||||
JSONObject responseJson = ablResTfulUtils.getServerConfig(mediaServerItem);
|
||||
ABLResult ablResult = ablResTfulUtils.getServerConfig(mediaServerItem);
|
||||
AblServerConfig ablServerConfig = null;
|
||||
if (responseJson == null) {
|
||||
if (ablResult.getCode() != 0) {
|
||||
logger.info("[ABL-尝试连接]失败, ID:{}, 地址: {}:{}", mediaServerItem.getId(), mediaServerItem.getIp(), mediaServerItem.getHttpPort());
|
||||
offlineAblTimeMap.put(mediaServerItem.getId(), System.currentTimeMillis());
|
||||
continue;
|
||||
}
|
||||
JSONArray data = responseJson.getJSONArray("params");
|
||||
if (data == null || data.isEmpty()) {
|
||||
JSONArray params = ablResult.getParams();
|
||||
if (params == null || params.isEmpty()) {
|
||||
logger.info("[ABL-尝试连接]失败, ID:{}, 地址: {}:{}", mediaServerItem.getId(), mediaServerItem.getIp(), mediaServerItem.getHttpPort());
|
||||
offlineAblTimeMap.put(mediaServerItem.getId(), System.currentTimeMillis());
|
||||
}else {
|
||||
ablServerConfig = AblServerConfig.getInstance(data);
|
||||
ablServerConfig = AblServerConfig.getInstance(params);
|
||||
initPort(mediaServerItem, ablServerConfig);
|
||||
online(mediaServerItem, ablServerConfig);
|
||||
}
|
||||
@@ -184,8 +185,8 @@ public class ABLMediaServerStatusManger {
|
||||
mediaServerService.update(mediaServerItem);
|
||||
if(mediaServerItem.isAutoConfig()) {
|
||||
if (config == null) {
|
||||
JSONObject responseJSON = ablResTfulUtils.getServerConfig(mediaServerItem);
|
||||
JSONArray data = responseJSON.getJSONArray("params");
|
||||
ABLResult ablResult = ablResTfulUtils.getServerConfig(mediaServerItem);
|
||||
JSONArray data = ablResult.getParams();
|
||||
if (data != null && !data.isEmpty()) {
|
||||
config = AblServerConfig.getInstance(data);
|
||||
}
|
||||
@@ -247,11 +248,11 @@ public class ABLMediaServerStatusManger {
|
||||
try {
|
||||
if (config.getHookEnable() == 0) {
|
||||
logger.info("[媒体服务节点-ABL] 开启HOOK功能 :{}", mediaServerItem.getId());
|
||||
JSONObject responseJSON = ablResTfulUtils.setConfigParamValue(mediaServerItem, "hook_enable", "1");
|
||||
if (responseJSON.getInteger("code") == 0) {
|
||||
ABLResult ablResult = ablResTfulUtils.setConfigParamValue(mediaServerItem, "hook_enable", "1");
|
||||
if (ablResult.getCode() == 0) {
|
||||
logger.info("[媒体服务节点-ABL] 开启HOOK功能成功 :{}", mediaServerItem.getId());
|
||||
}else {
|
||||
logger.info("[媒体服务节点-ABL] 开启HOOK功能失败 :{}->{}", mediaServerItem.getId(), responseJSON.getString("memo"));
|
||||
logger.info("[媒体服务节点-ABL] 开启HOOK功能失败 :{}->{}", mediaServerItem.getId(), ablResult.getMemo());
|
||||
}
|
||||
}
|
||||
}catch (Exception e) {
|
||||
@@ -286,11 +287,11 @@ public class ABLMediaServerStatusManger {
|
||||
field.setAccessible(true);
|
||||
// 利用反射获取值后对比是否与配置中相同,不同则进行设置
|
||||
if (!hookUrl.equals(field.get(config))) {
|
||||
JSONObject responseJSON = ablResTfulUtils.setConfigParamValue(mediaServerItem, hook, hookUrl);
|
||||
if (responseJSON.getInteger("code") == 0) {
|
||||
ABLResult ablResult = ablResTfulUtils.setConfigParamValue(mediaServerItem, hook, hookUrl);
|
||||
if (ablResult.getCode() == 0) {
|
||||
logger.info("[媒体服务节点-ABL] 设置HOOK {} 成功 :{}", hook, mediaServerItem.getId());
|
||||
}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;
|
||||
|
||||
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 okhttp3.*;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -27,7 +27,10 @@ public class ABLRESTfulUtils {
|
||||
private OkHttpClient client;
|
||||
|
||||
public interface RequestCallback{
|
||||
void run(JSONObject response);
|
||||
void run(String response);
|
||||
}
|
||||
public interface ResultCallback{
|
||||
void run(ABLResult response);
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
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);
|
||||
|
||||
if (mediaServerItem == null) {
|
||||
return null;
|
||||
}
|
||||
String url = String.format("http://%s:%s/index/api/%s", mediaServerItem.getIp(), mediaServerItem.getHttpPort(), api);
|
||||
JSONObject responseJSON = new JSONObject();
|
||||
//-2自定义流媒体 调用错误码
|
||||
responseJSON.put("code",-2);
|
||||
responseJSON.put("msg","流媒体调用失败");
|
||||
String result = null;
|
||||
|
||||
FormBody.Builder builder = new FormBody.Builder();
|
||||
builder.add("secret",mediaServerItem.getSecret());
|
||||
if (param != null && param.keySet().size() > 0) {
|
||||
if (param != null && !param.isEmpty()) {
|
||||
for (String key : param.keySet()){
|
||||
if (param.get(key) != null) {
|
||||
builder.add(key, param.get(key).toString());
|
||||
@@ -93,8 +93,7 @@ public class ABLRESTfulUtils {
|
||||
if (response.isSuccessful()) {
|
||||
ResponseBody responseBody = response.body();
|
||||
if (responseBody != null) {
|
||||
String responseStr = responseBody.string();
|
||||
responseJSON = JSON.parseObject(responseStr);
|
||||
result = responseBody.string();
|
||||
}
|
||||
}else {
|
||||
response.close();
|
||||
@@ -123,7 +122,7 @@ public class ABLRESTfulUtils {
|
||||
if (response.isSuccessful()) {
|
||||
try {
|
||||
String responseStr = Objects.requireNonNull(response.body()).string();
|
||||
callback.run(JSON.parseObject(responseStr));
|
||||
callback.run(responseStr);
|
||||
} catch (IOException e) {
|
||||
logger.error(String.format("[ %s ]请求失败: %s", url, e.getMessage()));
|
||||
}
|
||||
@@ -149,19 +148,16 @@ public class ABLRESTfulUtils {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
return responseJSON;
|
||||
return result;
|
||||
}
|
||||
|
||||
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();
|
||||
|
||||
if (mediaServerItem == null) {
|
||||
return null;
|
||||
}
|
||||
JSONObject responseJSON = null;
|
||||
String result = null;
|
||||
StringBuilder stringBuffer = new StringBuilder();
|
||||
stringBuffer.append(String.format("http://%s:%s/index/api/%s", mediaServerItem.getIp(), mediaServerItem.getHttpPort(), api));
|
||||
if (param != null && !param.keySet().isEmpty()) {
|
||||
@@ -188,8 +184,7 @@ public class ABLRESTfulUtils {
|
||||
if (response.isSuccessful()) {
|
||||
ResponseBody responseBody = response.body();
|
||||
if (responseBody != null) {
|
||||
String responseStr = responseBody.string();
|
||||
responseJSON = JSON.parseObject(responseStr);
|
||||
result = responseBody.string();
|
||||
}
|
||||
}else {
|
||||
response.close();
|
||||
@@ -201,10 +196,7 @@ public class ABLRESTfulUtils {
|
||||
}catch (IOException e) {
|
||||
logger.error(String.format("[ %s ]请求失败: %s", url, e.getMessage()));
|
||||
}
|
||||
|
||||
|
||||
|
||||
return responseJSON;
|
||||
return result;
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
JSONObject jsonObject = sendPost(mediaServer, "openRtpServer", param, null);
|
||||
if (jsonObject.getInteger("code") == 0) {
|
||||
return jsonObject.getInteger("port");
|
||||
}else {
|
||||
String response = sendPost(mediaServer, "openRtpServer", param, null);
|
||||
if (response == null) {
|
||||
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<>();
|
||||
param.put("vhost", "__defaultVhost__");
|
||||
param.put("app", app);
|
||||
param.put("stream", stream);
|
||||
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){
|
||||
return sendPost(mediaServerItem, "getServerConfig",null, null);
|
||||
public ABLResult getServerConfig(MediaServer mediaServerItem){
|
||||
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<>();
|
||||
param.put("key", key);
|
||||
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) {
|
||||
@@ -364,22 +379,35 @@ public class ABLRESTfulUtils {
|
||||
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<>();
|
||||
param.put("app", app);
|
||||
if (stream != null) {
|
||||
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<>();
|
||||
param.put("app", app);
|
||||
param.put("stream", stream);
|
||||
param.put("starttime", startTime);
|
||||
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) {
|
||||
@@ -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<>();
|
||||
param.put("app", app);
|
||||
param.put("stream", stream);
|
||||
@@ -405,10 +433,16 @@ public class ABLRESTfulUtils {
|
||||
param.put("disableAudio", disableAudio? "1" : "0");
|
||||
param.put("enable_mp4", enableMp4 ? "1" : "0");
|
||||
// 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<>();
|
||||
param.put("app", app);
|
||||
param.put("stream", stream);
|
||||
@@ -416,19 +450,61 @@ public class ABLRESTfulUtils {
|
||||
param.put("disableAudio", disableAudio);
|
||||
param.put("enable_mp4", enableMp4);
|
||||
// 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<>();
|
||||
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<>();
|
||||
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;
|
||||
|
||||
import com.genersoft.iot.vmp.media.abl.bean.AblUrls;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
/**
|
||||
* 流到来的事件
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
public class OnStreamArriveABLHookParam extends ABLHookParam{
|
||||
|
||||
|
||||
@@ -105,141 +109,4 @@ public class OnStreamArriveABLHookParam extends ABLHookParam{
|
||||
|
||||
|
||||
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.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.zlm.dto.hook.OnStreamChangedHookParam;
|
||||
import com.genersoft.iot.vmp.media.zlm.dto.hook.OriginType;
|
||||
@@ -270,7 +271,38 @@ public class MediaInfo {
|
||||
return mediaInfo;
|
||||
}
|
||||
|
||||
public static MediaInfo getInstanceForAblJson(JSONObject mediaJSON, MediaServer mediaServer) {
|
||||
return null;
|
||||
public static MediaInfo getInstance(ABLMedia ablMedia, MediaServer mediaServer) {
|
||||
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.exception.ControllerException;
|
||||
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.service.IDeviceChannelService;
|
||||
import com.genersoft.iot.vmp.gb28181.service.IInviteStreamService;
|
||||
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.service.Ijt1078PlayService;
|
||||
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.zlm.dto.StreamAuthorityInfo;
|
||||
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.ISendRtpServerService;
|
||||
import com.genersoft.iot.vmp.service.IUserService;
|
||||
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
|
||||
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.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Slf4j
|
||||
@@ -170,7 +166,7 @@ public class MediaServiceImpl implements IMediaService {
|
||||
inviteInfo = inviteStreamService.getInviteInfoBySSRC(ssrc);
|
||||
if (inviteInfo != null) {
|
||||
result.setStream_replace(inviteInfo.getStream());
|
||||
log.info("[ZLM HOOK]推流鉴权 stream: {} 替换为 {}", stream, inviteInfo.getStream());
|
||||
log.info("[HOOK]推流鉴权 stream: {} 替换为 {}", stream, inviteInfo.getStream());
|
||||
stream = inviteInfo.getStream();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user