[abl] 合并主线
This commit is contained in:
@@ -684,17 +684,11 @@ public class PlayServiceImpl implements IPlayService {
|
|||||||
* @param stream ssrc
|
* @param stream ssrc
|
||||||
*/
|
*/
|
||||||
private void snapOnPlay(MediaServer mediaServerItemInuse, String deviceId, String channelId, String stream) {
|
private void snapOnPlay(MediaServer mediaServerItemInuse, String deviceId, String channelId, String stream) {
|
||||||
String streamUrl;
|
|
||||||
if (mediaServerItemInuse.getRtspPort() != 0) {
|
|
||||||
streamUrl = String.format("rtsp://127.0.0.1:%s/%s/%s", mediaServerItemInuse.getRtspPort(), "rtp", stream);
|
|
||||||
} else {
|
|
||||||
streamUrl = String.format("http://127.0.0.1:%s/%s/%s.live.mp4", mediaServerItemInuse.getHttpPort(), "rtp", stream);
|
|
||||||
}
|
|
||||||
String path = "snap";
|
String path = "snap";
|
||||||
String fileName = deviceId + "_" + channelId + ".jpg";
|
String fileName = deviceId + "_" + channelId + ".jpg";
|
||||||
// 请求截图
|
// 请求截图
|
||||||
log.info("[请求截图]: " + fileName);
|
log.info("[请求截图]: " + fileName);
|
||||||
mediaServerService.getSnap(mediaServerItemInuse, streamUrl, 15, 1, path, fileName);
|
mediaServerService.getSnap(mediaServerItemInuse, "rtp", stream, 15, 1, path, fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
public StreamInfo onPublishHandlerForPlay(MediaServer mediaServerItem, MediaInfo mediaInfo, Device device, DeviceChannel channel) {
|
public StreamInfo onPublishHandlerForPlay(MediaServer mediaServerItem, MediaInfo mediaInfo, Device device, DeviceChannel channel) {
|
||||||
@@ -1617,17 +1611,11 @@ public class PlayServiceImpl implements IPlayService {
|
|||||||
if (inviteInfo != null) {
|
if (inviteInfo != null) {
|
||||||
if (inviteInfo.getStreamInfo() != null) {
|
if (inviteInfo.getStreamInfo() != null) {
|
||||||
// 已存在线直接截图
|
// 已存在线直接截图
|
||||||
MediaServer mediaServerItemInuse = inviteInfo.getStreamInfo().getMediaServer();
|
MediaServer mediaServer = inviteInfo.getStreamInfo().getMediaServer();
|
||||||
String streamUrl;
|
|
||||||
if (mediaServerItemInuse.getRtspPort() != 0) {
|
|
||||||
streamUrl = String.format("rtsp://127.0.0.1:%s/%s/%s", mediaServerItemInuse.getRtspPort(), "rtp", inviteInfo.getStreamInfo().getStream());
|
|
||||||
}else {
|
|
||||||
streamUrl = String.format("http://127.0.0.1:%s/%s/%s.live.mp4", mediaServerItemInuse.getHttpPort(), "rtp", inviteInfo.getStreamInfo().getStream());
|
|
||||||
}
|
|
||||||
String path = "snap";
|
String path = "snap";
|
||||||
// 请求截图
|
// 请求截图
|
||||||
log.info("[请求截图]: " + fileName);
|
log.info("[请求截图]: " + fileName);
|
||||||
mediaServerService.getSnap(mediaServerItemInuse, streamUrl, 15, 1, path, fileName);
|
mediaServerService.getSnap(mediaServer, "rtp", inviteInfo.getStreamInfo().getStream(), 15, 1, path, fileName);
|
||||||
File snapFile = new File(path + File.separator + fileName);
|
File snapFile = new File(path + File.separator + fileName);
|
||||||
if (snapFile.exists()) {
|
if (snapFile.exists()) {
|
||||||
errorCallback.run(InviteErrorCode.SUCCESS.getCode(), InviteErrorCode.SUCCESS.getMsg(), snapFile.getAbsoluteFile());
|
errorCallback.run(InviteErrorCode.SUCCESS.getCode(), InviteErrorCode.SUCCESS.getMsg(), snapFile.getAbsoluteFile());
|
||||||
|
|||||||
@@ -3,9 +3,11 @@ package com.genersoft.iot.vmp.media.abl;
|
|||||||
import com.alibaba.fastjson2.JSONObject;
|
import com.alibaba.fastjson2.JSONObject;
|
||||||
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.service.IDeviceService;
|
||||||
|
import com.genersoft.iot.vmp.gb28181.service.IInviteStreamService;
|
||||||
|
import com.genersoft.iot.vmp.gb28181.service.IPlayService;
|
||||||
import com.genersoft.iot.vmp.gb28181.session.AudioBroadcastManager;
|
import com.genersoft.iot.vmp.gb28181.session.AudioBroadcastManager;
|
||||||
import com.genersoft.iot.vmp.gb28181.session.SSRCFactory;
|
import com.genersoft.iot.vmp.gb28181.session.SSRCFactory;
|
||||||
import com.genersoft.iot.vmp.gb28181.session.VideoStreamSessionManager;
|
|
||||||
import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommanderForPlatform;
|
import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommanderForPlatform;
|
||||||
import com.genersoft.iot.vmp.media.abl.bean.hook.*;
|
import com.genersoft.iot.vmp.media.abl.bean.hook.*;
|
||||||
import com.genersoft.iot.vmp.media.abl.event.HookAblServerKeepaliveEvent;
|
import com.genersoft.iot.vmp.media.abl.event.HookAblServerKeepaliveEvent;
|
||||||
@@ -18,7 +20,6 @@ import com.genersoft.iot.vmp.media.zlm.dto.hook.HookResult;
|
|||||||
import com.genersoft.iot.vmp.media.zlm.dto.hook.HookResultForOnPublish;
|
import com.genersoft.iot.vmp.media.zlm.dto.hook.HookResultForOnPublish;
|
||||||
import com.genersoft.iot.vmp.service.*;
|
import com.genersoft.iot.vmp.service.*;
|
||||||
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
|
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
|
||||||
import com.genersoft.iot.vmp.storager.IVideoManagerStorage;
|
|
||||||
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;
|
||||||
@@ -54,9 +55,6 @@ public class ABLHttpHookListener {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private IPlayService playService;
|
private IPlayService playService;
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private IVideoManagerStorage storager;
|
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private IRedisCatchStorage redisCatchStorage;
|
private IRedisCatchStorage redisCatchStorage;
|
||||||
|
|
||||||
@@ -77,9 +75,6 @@ public class ABLHttpHookListener {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private UserSetting userSetting;
|
private UserSetting userSetting;
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private VideoStreamSessionManager sessionManager;
|
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private SSRCFactory ssrcFactory;
|
private SSRCFactory ssrcFactory;
|
||||||
|
|
||||||
@@ -272,7 +267,7 @@ public class ABLHttpHookListener {
|
|||||||
|
|
||||||
logger.info("[ABL HOOK] 流未找到:{}->{}/{}", param.getMediaServerId(), param.getApp(), param.getStream());
|
logger.info("[ABL HOOK] 流未找到:{}->{}/{}", param.getMediaServerId(), param.getApp(), param.getStream());
|
||||||
MediaServer mediaServer = mediaServerService.getOne(param.getMediaServerId());
|
MediaServer mediaServer = mediaServerService.getOne(param.getMediaServerId());
|
||||||
if (!userSetting.isAutoApplyPlay() || mediaServer == null) {
|
if (!userSetting.getAutoApplyPlay() || mediaServer == null) {
|
||||||
return HookResult.SUCCESS();
|
return HookResult.SUCCESS();
|
||||||
}
|
}
|
||||||
MediaNotFoundEvent mediaNotFoundEvent = MediaNotFoundEvent.getInstance(this, param, mediaServer);
|
MediaNotFoundEvent mediaNotFoundEvent = MediaNotFoundEvent.getInstance(this, param, mediaServer);
|
||||||
|
|||||||
@@ -8,7 +8,8 @@ import com.genersoft.iot.vmp.common.InviteSessionType;
|
|||||||
import com.genersoft.iot.vmp.common.StreamInfo;
|
import com.genersoft.iot.vmp.common.StreamInfo;
|
||||||
import com.genersoft.iot.vmp.conf.SipConfig;
|
import com.genersoft.iot.vmp.conf.SipConfig;
|
||||||
import com.genersoft.iot.vmp.conf.UserSetting;
|
import com.genersoft.iot.vmp.conf.UserSetting;
|
||||||
import com.genersoft.iot.vmp.gb28181.bean.SendRtpItem;
|
import com.genersoft.iot.vmp.gb28181.bean.SendRtpInfo;
|
||||||
|
import com.genersoft.iot.vmp.gb28181.service.IInviteStreamService;
|
||||||
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.abl.bean.hook.OnStreamArriveABLHookParam;
|
||||||
import com.genersoft.iot.vmp.media.bean.MediaInfo;
|
import com.genersoft.iot.vmp.media.bean.MediaInfo;
|
||||||
@@ -17,10 +18,10 @@ import com.genersoft.iot.vmp.media.event.media.MediaDepartureEvent;
|
|||||||
import com.genersoft.iot.vmp.media.event.media.MediaRecordMp4Event;
|
import com.genersoft.iot.vmp.media.event.media.MediaRecordMp4Event;
|
||||||
import com.genersoft.iot.vmp.media.event.media.MediaRecordProcessEvent;
|
import com.genersoft.iot.vmp.media.event.media.MediaRecordProcessEvent;
|
||||||
import com.genersoft.iot.vmp.media.service.IMediaNodeServerService;
|
import com.genersoft.iot.vmp.media.service.IMediaNodeServerService;
|
||||||
import com.genersoft.iot.vmp.service.IInviteStreamService;
|
|
||||||
import com.genersoft.iot.vmp.service.bean.CloudRecordItem;
|
import com.genersoft.iot.vmp.service.bean.CloudRecordItem;
|
||||||
import com.genersoft.iot.vmp.service.bean.DownloadFileInfo;
|
import com.genersoft.iot.vmp.service.bean.DownloadFileInfo;
|
||||||
import com.genersoft.iot.vmp.storager.dao.CloudRecordServiceMapper;
|
import com.genersoft.iot.vmp.storager.dao.CloudRecordServiceMapper;
|
||||||
|
import com.genersoft.iot.vmp.streamProxy.bean.StreamProxy;
|
||||||
import com.genersoft.iot.vmp.utils.DateUtil;
|
import com.genersoft.iot.vmp.utils.DateUtil;
|
||||||
import com.genersoft.iot.vmp.vmanager.bean.WVPResult;
|
import com.genersoft.iot.vmp.vmanager.bean.WVPResult;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
@@ -30,10 +31,7 @@ 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.ArrayList;
|
import java.util.*;
|
||||||
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 {
|
||||||
@@ -183,7 +181,7 @@ public class ABLMediaNodeServerService implements IMediaNodeServerService {
|
|||||||
streamInfoResult.setApp(app);
|
streamInfoResult.setApp(app);
|
||||||
String addr = mediaServer.getStreamIp();
|
String addr = mediaServer.getStreamIp();
|
||||||
streamInfoResult.setIp(addr);
|
streamInfoResult.setIp(addr);
|
||||||
streamInfoResult.setMediaServerId(mediaServer.getId());
|
streamInfoResult.setMediaServer(mediaServer);
|
||||||
String callIdParam = ObjectUtils.isEmpty(callId)?"":"?callId=" + callId;
|
String callIdParam = ObjectUtils.isEmpty(callId)?"":"?callId=" + callId;
|
||||||
streamInfoResult.setRtmp(addr, mediaServer.getRtmpPort(),mediaServer.getRtmpSSlPort(), app, stream, callIdParam);
|
streamInfoResult.setRtmp(addr, mediaServer.getRtmpPort(),mediaServer.getRtmpSSlPort(), app, stream, callIdParam);
|
||||||
streamInfoResult.setRtsp(addr, mediaServer.getRtspPort(),mediaServer.getRtspSSLPort(), app, stream, callIdParam);
|
streamInfoResult.setRtsp(addr, mediaServer.getRtspPort(),mediaServer.getRtspSSLPort(), app, stream, callIdParam);
|
||||||
@@ -207,8 +205,8 @@ public class ABLMediaNodeServerService implements IMediaNodeServerService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void getSnap(MediaServer mediaServerItem, String app, String stream, int timeoutSec, int expireSec, String path, String fileName) {
|
public void getSnap(MediaServer mediaServer, String app, String stream, int timeoutSec, int expireSec, String path, String fileName) {
|
||||||
ablresTfulUtils.getSnap(mediaServerItem, app, stream, timeoutSec, path, fileName);
|
ablresTfulUtils.getSnap(mediaServer, app, stream, timeoutSec, path, fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -258,12 +256,6 @@ public class ABLMediaNodeServerService implements IMediaNodeServerService {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public WVPResult<String> addStreamProxy(MediaServer mediaServer, String app, String stream, String url, boolean enableAudio, boolean enableMp4, String rtpType) {
|
|
||||||
logger.warn("[abl-addStreamProxy] 未实现");
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Boolean delFFmpegSource(MediaServer mediaServer, String streamKey) {
|
public Boolean delFFmpegSource(MediaServer mediaServer, String streamKey) {
|
||||||
logger.warn("[abl-delFFmpegSource] 未实现");
|
logger.warn("[abl-delFFmpegSource] 未实现");
|
||||||
@@ -282,16 +274,6 @@ public class ABLMediaNodeServerService implements IMediaNodeServerService {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void startSendRtpPassive(MediaServer mediaServer, SendRtpItem sendRtpItem, Integer timeout) {
|
|
||||||
logger.warn("[abl-startSendRtpPassive] 未实现");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void startSendRtpStream(MediaServer mediaServer, SendRtpItem sendRtpItem) {
|
|
||||||
logger.warn("[abl-startSendRtpStream] 未实现");
|
|
||||||
}
|
|
||||||
|
|
||||||
// 接受进度通知
|
// 接受进度通知
|
||||||
@EventListener
|
@EventListener
|
||||||
public void onApplicationEvent(MediaRecordProcessEvent event) {
|
public void onApplicationEvent(MediaRecordProcessEvent event) {
|
||||||
@@ -307,11 +289,12 @@ public class ABLMediaNodeServerService implements IMediaNodeServerService {
|
|||||||
}
|
}
|
||||||
@EventListener
|
@EventListener
|
||||||
public void onApplicationEvent(MediaRecordMp4Event event) {
|
public void onApplicationEvent(MediaRecordMp4Event event) {
|
||||||
InviteInfo inviteInfo = inviteStreamService.getInviteInfo(InviteSessionType.DOWNLOAD, null, null, event.getStream());
|
InviteInfo inviteInfo = inviteStreamService.getInviteInfo(InviteSessionType.DOWNLOAD, null, event.getStream());
|
||||||
if (inviteInfo == null || inviteInfo.getStreamInfo() == null) {
|
if (inviteInfo == null || inviteInfo.getStreamInfo() == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
List<CloudRecordItem> cloudRecordItemList = cloudRecordServiceMapper.getList(null, event.getApp(), event.getStream(), null, null, null, null, null);
|
List<CloudRecordItem> cloudRecordItemList = cloudRecordServiceMapper.getList(null, event.getApp(), event.getStream(),
|
||||||
|
null, null, null, null, null, null);
|
||||||
if (cloudRecordItemList.isEmpty()) {
|
if (cloudRecordItemList.isEmpty()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -337,14 +320,62 @@ public class ABLMediaNodeServerService implements IMediaNodeServerService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Long updateDownloadProcess(MediaServer mediaServer, String app, String stream) {
|
public Long updateDownloadProcess(MediaServer mediaServer, String app, String stream) {
|
||||||
List<CloudRecordItem> list = cloudRecordServiceMapper.getList(null, app, stream, null, null, null, null, null);
|
List<CloudRecordItem> list = cloudRecordServiceMapper.getList(null, app, stream, null,
|
||||||
|
null, null, null, null, null);
|
||||||
if (list.isEmpty()) {
|
if (list.isEmpty()) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
Long downloadProcess = 0L;
|
long downloadProcess = 0L;
|
||||||
for (CloudRecordItem cloudRecordItem : list) {
|
for (CloudRecordItem cloudRecordItem : list) {
|
||||||
downloadProcess += cloudRecordItem.getTimeLen();
|
downloadProcess += (long) cloudRecordItem.getTimeLen();
|
||||||
}
|
}
|
||||||
return downloadProcess;
|
return downloadProcess;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public WVPResult<String> addStreamProxy(MediaServer mediaServer, String app, String stream, String url, boolean enableAudio, boolean enableMp4, String rtpType, Integer timeout) {
|
||||||
|
logger.warn("[abl-addStreamProxy] 未实现");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Integer startSendRtpPassive(MediaServer mediaServer, SendRtpInfo sendRtpItem, Integer timeout) {
|
||||||
|
logger.warn("[abl-startSendRtpPassive] 未实现");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void startSendRtpStream(MediaServer mediaServer, SendRtpInfo sendRtpItem) {
|
||||||
|
logger.warn("[abl-startSendRtpStream] 未实现");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void startProxy(MediaServer mediaServer, StreamProxy streamProxy) {
|
||||||
|
logger.warn("[abl-startProxy] 未实现");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void stopProxy(MediaServer mediaServer, String streamKey) {
|
||||||
|
logger.warn("[abl-stopProxy] 未实现");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<String> listRtpServer(MediaServer mediaServer) {
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void loadMP4File(MediaServer mediaServer, String app, String stream, String datePath) {
|
||||||
|
logger.warn("[abl-loadMP4File] 未实现");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void seekRecordStamp(MediaServer mediaServer, String app, String stream, Double stamp, String schema) {
|
||||||
|
logger.warn("[abl-seekRecordStamp] 未实现");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setRecordSpeed(MediaServer mediaServer, String app, String stream, Integer speed, String schema) {
|
||||||
|
logger.warn("[abl-setRecordSpeed] 未实现");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -64,13 +64,13 @@ public class ABLMediaServerStatusManger {
|
|||||||
|| event.getMediaServerItemList().isEmpty()) {
|
|| event.getMediaServerItemList().isEmpty()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
for (MediaServer mediaServerItem : event.getMediaServerItemList()) {
|
for (MediaServer mediaServer : event.getMediaServerItemList()) {
|
||||||
if (!type.equals(mediaServerItem.getType())) {
|
if (!type.equals(mediaServer.getType())) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
logger.info("[ABL-添加待上线节点] ID:" + mediaServerItem.getId());
|
logger.info("[ABL-添加待上线节点] ID:" + mediaServer.getId());
|
||||||
offlineABLPrimaryMap.put(mediaServerItem.getId(), mediaServerItem);
|
offlineABLPrimaryMap.put(mediaServer.getId(), mediaServer);
|
||||||
offlineAblTimeMap.put(mediaServerItem.getId(), System.currentTimeMillis());
|
offlineAblTimeMap.put(mediaServer.getId(), System.currentTimeMillis());
|
||||||
}
|
}
|
||||||
execute();
|
execute();
|
||||||
}
|
}
|
||||||
@@ -108,13 +108,13 @@ public class ABLMediaServerStatusManger {
|
|||||||
@Async("taskExecutor")
|
@Async("taskExecutor")
|
||||||
@EventListener
|
@EventListener
|
||||||
public void onApplicationEvent(MediaServerDeleteEvent event) {
|
public void onApplicationEvent(MediaServerDeleteEvent event) {
|
||||||
if (event.getMediaServerId() == null) {
|
if (event.getMediaServer() == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
logger.info("[ABL-节点被移除] ID:" + event.getMediaServerId());
|
logger.info("[ABL-节点被移除] ID:" + event.getMediaServer().getServerId());
|
||||||
offlineABLPrimaryMap.remove(event.getMediaServerId());
|
offlineABLPrimaryMap.remove(event.getMediaServer().getServerId());
|
||||||
offlineAblsecondaryMap.remove(event.getMediaServerId());
|
offlineAblsecondaryMap.remove(event.getMediaServer().getServerId());
|
||||||
offlineAblTimeMap.remove(event.getMediaServerId());
|
offlineAblTimeMap.remove(event.getMediaServer().getServerId());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Scheduled(fixedDelay = 10*1000) //每隔10秒检查一次
|
@Scheduled(fixedDelay = 10*1000) //每隔10秒检查一次
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ public interface IMediaServerService {
|
|||||||
|
|
||||||
Boolean connectRtpServer(MediaServer mediaServerItem, String address, int port, String stream);
|
Boolean connectRtpServer(MediaServer mediaServerItem, String address, int port, String stream);
|
||||||
|
|
||||||
void getSnap(MediaServer mediaServerItemInuse, String app, String stream, int timeoutSec, int expireSec, String path, String fileName);
|
void getSnap(MediaServer mediaServer, String app, String stream, int timeoutSec, int expireSec, String path, String fileName);
|
||||||
|
|
||||||
MediaInfo getMediaInfo(MediaServer mediaServerItem, String app, String stream);
|
MediaInfo getMediaInfo(MediaServer mediaServerItem, String app, String stream);
|
||||||
|
|
||||||
|
|||||||
@@ -253,9 +253,9 @@ public class ZLMMediaNodeServerService implements IMediaNodeServerService {
|
|||||||
public void getSnap(MediaServer mediaServer, String app, String stream, int timeoutSec, int expireSec, String path, String fileName) {
|
public void getSnap(MediaServer mediaServer, String app, String stream, int timeoutSec, int expireSec, String path, String fileName) {
|
||||||
String streamUrl;
|
String streamUrl;
|
||||||
if (mediaServer.getRtspPort() != 0) {
|
if (mediaServer.getRtspPort() != 0) {
|
||||||
streamUrl = String.format("rtsp://127.0.0.1:%s/%s/%s", mediaServer.getRtspPort(), app, stream);
|
streamUrl = String.format("rtsp://127.0.0.1:%s/%s/%s", mediaServer.getRtspPort(), "rtp", stream);
|
||||||
}else {
|
} else {
|
||||||
streamUrl = String.format("http://127.0.0.1:%s/%s/%s.live.mp4", mediaServer.getHttpPort(), app, stream);
|
streamUrl = String.format("http://127.0.0.1:%s/%s/%s.live.mp4", mediaServer.getHttpPort(), "rtp", stream);
|
||||||
}
|
}
|
||||||
zlmresTfulUtils.getSnap(mediaServer, streamUrl, timeoutSec, expireSec, path, fileName);
|
zlmresTfulUtils.getSnap(mediaServer, streamUrl, timeoutSec, expireSec, path, fileName);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,4 +2,4 @@ spring:
|
|||||||
application:
|
application:
|
||||||
name: wvp
|
name: wvp
|
||||||
profiles:
|
profiles:
|
||||||
active: 274-dev
|
active: 274-plus
|
||||||
|
|||||||
Reference in New Issue
Block a user