From b1d9ea8082cbd8871ef9b3d2f505a5ab85bac6f3 Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期一, 17 六月 2024 10:06:51 +0800
Subject: [PATCH] Merge pull request #1492 from iwanlebron/master
---
src/main/java/com/genersoft/iot/vmp/service/impl/MediaServiceImpl.java | 117 +++++-----------------------------------------------------
1 files changed, 10 insertions(+), 107 deletions(-)
diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/MediaServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/MediaServiceImpl.java
index 3fcb9d0..144fb59 100755
--- a/src/main/java/com/genersoft/iot/vmp/service/impl/MediaServiceImpl.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/impl/MediaServiceImpl.java
@@ -2,9 +2,7 @@
import com.genersoft.iot.vmp.common.InviteInfo;
import com.genersoft.iot.vmp.common.InviteSessionType;
-import com.genersoft.iot.vmp.common.StreamInfo;
import com.genersoft.iot.vmp.common.VideoManagerConstants;
-import com.genersoft.iot.vmp.conf.MediaConfig;
import com.genersoft.iot.vmp.conf.UserSetting;
import com.genersoft.iot.vmp.conf.exception.ControllerException;
import com.genersoft.iot.vmp.conf.exception.SsrcTransactionNotFoundException;
@@ -12,18 +10,15 @@
import com.genersoft.iot.vmp.gb28181.session.VideoStreamSessionManager;
import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommander;
import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommanderForPlatform;
-import com.genersoft.iot.vmp.media.bean.MediaInfo;
+import com.genersoft.iot.vmp.media.bean.MediaServer;
import com.genersoft.iot.vmp.media.bean.ResultForOnPublish;
-import com.genersoft.iot.vmp.media.service.IMediaServerService;
-import com.genersoft.iot.vmp.media.zlm.ZLMMediaListManager;
-import com.genersoft.iot.vmp.media.zlm.dto.MediaServer;
import com.genersoft.iot.vmp.media.zlm.dto.StreamAuthorityInfo;
import com.genersoft.iot.vmp.media.zlm.dto.StreamProxyItem;
import com.genersoft.iot.vmp.service.*;
-import com.genersoft.iot.vmp.service.bean.MessageForPushChannel;
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
import com.genersoft.iot.vmp.storager.IVideoManagerStorage;
import com.genersoft.iot.vmp.utils.DateUtil;
+import com.genersoft.iot.vmp.utils.MediaServerUtils;
import com.genersoft.iot.vmp.vmanager.bean.ErrorCode;
import com.genersoft.iot.vmp.vmanager.bean.OtherPsSendInfo;
import com.genersoft.iot.vmp.vmanager.bean.OtherRtpSendInfo;
@@ -32,12 +27,10 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
-import org.springframework.util.ObjectUtils;
import javax.sip.InvalidArgumentException;
import javax.sip.SipException;
import java.text.ParseException;
-import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -48,12 +41,6 @@
@Autowired
private IRedisCatchStorage redisCatchStorage;
-
- @Autowired
- private IMediaServerService mediaServerService;
-
- @Autowired
- private MediaConfig mediaConfig;
@Autowired
private IStreamProxyService streamProxyService;
@@ -77,9 +64,6 @@
private IVideoManagerStorage storager;
@Autowired
- private ZLMMediaListManager zlmMediaListManager;
-
- @Autowired
private IDeviceService deviceService;
@Autowired
@@ -87,67 +71,6 @@
@Autowired
private ISIPCommander commander;
-
-
-
- @Override
- public StreamInfo getStreamInfoByAppAndStream(MediaServer mediaServerItem, String app, String stream, MediaInfo mediaInfo, String callId) {
- return getStreamInfoByAppAndStream(mediaServerItem, app, stream, mediaInfo, null, callId, true);
- }
-
- @Override
- public StreamInfo getStreamInfoByAppAndStreamWithCheck(String app, String stream, String mediaServerId, String addr, boolean authority) {
- StreamInfo streamInfo = null;
- if (mediaServerId == null) {
- mediaServerId = mediaConfig.getId();
- }
- MediaServer mediaInfo = mediaServerService.getOne(mediaServerId);
- if (mediaInfo == null) {
- return null;
- }
- String calld = null;
- StreamAuthorityInfo streamAuthorityInfo = redisCatchStorage.getStreamAuthorityInfo(app, stream);
- if (streamAuthorityInfo != null) {
- calld = streamAuthorityInfo.getCallId();
- }
- List<StreamInfo> streamInfoList = mediaServerService.getMediaList(mediaInfo, app, stream, calld);
- if (streamInfoList.isEmpty()) {
- return null;
- }else {
- return streamInfoList.get(0);
- }
- }
-
-
-
- @Override
- public StreamInfo getStreamInfoByAppAndStreamWithCheck(String app, String stream, String mediaServerId, boolean authority) {
- return getStreamInfoByAppAndStreamWithCheck(app, stream, mediaServerId, null, authority);
- }
-
- @Override
- public StreamInfo getStreamInfoByAppAndStream(MediaServer mediaServer, String app, String stream, MediaInfo mediaInfo, String addr, String callId, boolean isPlay) {
- StreamInfo streamInfoResult = new StreamInfo();
- streamInfoResult.setStream(stream);
- streamInfoResult.setApp(app);
- if (addr == null) {
- addr = mediaServer.getStreamIp();
- }
-
- streamInfoResult.setIp(addr);
- streamInfoResult.setMediaServerId(mediaServer.getId());
- String callIdParam = ObjectUtils.isEmpty(callId)?"":"?callId=" + callId;
- streamInfoResult.setRtmp(addr, mediaServer.getRtmpPort(),mediaServer.getRtmpSSlPort(), app, stream, callIdParam);
- streamInfoResult.setRtsp(addr, mediaServer.getRtspPort(),mediaServer.getRtspSSLPort(), app, stream, callIdParam);
- streamInfoResult.setFlv(addr, mediaServer.getHttpPort(),mediaServer.getHttpSSlPort(), app, stream, callIdParam);
- streamInfoResult.setFmp4(addr, mediaServer.getHttpPort(),mediaServer.getHttpSSlPort(), app, stream, callIdParam);
- streamInfoResult.setHls(addr, mediaServer.getHttpPort(),mediaServer.getHttpSSlPort(), app, stream, callIdParam);
- streamInfoResult.setTs(addr, mediaServer.getHttpPort(),mediaServer.getHttpSSlPort(), app, stream, callIdParam);
- streamInfoResult.setRtc(addr, mediaServer.getHttpPort(),mediaServer.getHttpSSlPort(), app, stream, callIdParam, isPlay);
-
- streamInfoResult.setMediaInfo(mediaInfo);
- return streamInfoResult;
- }
@Override
public boolean authenticatePlay(String app, String stream, String callId) {
@@ -158,7 +81,10 @@
return true;
}
StreamAuthorityInfo streamAuthorityInfo = redisCatchStorage.getStreamAuthorityInfo(app, stream);
- return (streamAuthorityInfo != null && streamAuthorityInfo.getCallId() != null && !streamAuthorityInfo.getCallId().equals(callId));
+ if (streamAuthorityInfo == null || streamAuthorityInfo.getCallId() == null) {
+ return true;
+ }
+ return streamAuthorityInfo.getCallId().equals(callId);
}
@Override
@@ -174,7 +100,7 @@
}
if (userSetting.getPushAuthority()) {
// 瀵逛簬鎺ㄦ祦杩涜閴存潈
- Map<String, String> paramMap = urlParamToMap(params);
+ Map<String, String> paramMap = MediaServerUtils.urlParamToMap(params);
// 鎺ㄦ祦閴存潈
if (params == null) {
logger.info("鎺ㄦ祦閴存潈澶辫触锛� 缂哄皯蹇呰鍙傛暟锛歴ign=md5(user琛ㄧ殑pushKey)");
@@ -200,8 +126,6 @@
// 閴存潈閫氳繃
redisCatchStorage.updateStreamAuthorityInfo(app, stream, streamAuthorityInfo);
}
- } else {
- zlmMediaListManager.sendStreamEvent(app, stream, mediaServer.getId());
}
@@ -226,6 +150,7 @@
if (inviteInfo != null) {
result.setStream_replace(inviteInfo.getStream());
logger.info("[ZLM HOOK]鎺ㄦ祦閴存潈 stream: {} 鏇挎崲涓� {}", stream, inviteInfo.getStream());
+ stream = inviteInfo.getStream();
}
}
@@ -245,7 +170,7 @@
String channelId = ssrcTransactionForAll.get(0).getChannelId();
DeviceChannel deviceChannel = storager.queryChannel(deviceId, channelId);
if (deviceChannel != null) {
- result.setEnable_audio(deviceChannel.isHasAudio());
+ result.setEnable_audio(deviceChannel.getHasAudio());
}
// 濡傛灉鏄綍鍍忎笅杞藉氨璁剧疆瑙嗛闂撮殧鍗佺
if (ssrcTransactionForAll.get(0).getType() == InviteSessionType.DOWNLOAD) {
@@ -284,24 +209,6 @@
return result;
}
- private Map<String, String> urlParamToMap(String params) {
- HashMap<String, String> map = new HashMap<>();
- if (ObjectUtils.isEmpty(params)) {
- return map;
- }
- String[] paramsArray = params.split("&");
- if (paramsArray.length == 0) {
- return map;
- }
- for (String param : paramsArray) {
- String[] paramArray = param.split("=");
- if (paramArray.length == 2) {
- map.put(paramArray[0], paramArray[1]);
- }
- }
- return map;
- }
-
@Override
public boolean closeStreamOnNoneReader(String mediaServerId, String app, String stream, String schema) {
boolean result = false;
@@ -331,11 +238,7 @@
redisCatchStorage.deleteSendRTPServer(parentPlatform.getServerGBId(), sendRtpItem.getChannelId(),
sendRtpItem.getCallId(), sendRtpItem.getStream());
if (InviteStreamType.PUSH == sendRtpItem.getPlayType()) {
- MessageForPushChannel messageForPushChannel = MessageForPushChannel.getInstance(0,
- sendRtpItem.getApp(), sendRtpItem.getStream(), sendRtpItem.getChannelId(),
- sendRtpItem.getPlatformId(), parentPlatform.getName(), userSetting.getServerId(), sendRtpItem.getMediaServerId());
- messageForPushChannel.setPlatFormIndex(parentPlatform.getId());
- redisCatchStorage.sendPlatformStopPlayMsg(messageForPushChannel);
+ redisCatchStorage.sendPlatformStopPlayMsg(sendRtpItem,parentPlatform);
}
}
}
--
Gitblit v1.8.0