From 3d68b56bb5ecbc3d34b2901c671dc7f1f0f82f74 Mon Sep 17 00:00:00 2001 From: pedoc <pedoc@qq.com> Date: 星期一, 29 一月 2024 18:05:17 +0800 Subject: [PATCH] 修复未配置sipdomain时出现异常 --- src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java | 40 +++++++++++++++------------------------- 1 files changed, 15 insertions(+), 25 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java index 20f4522..6d405ec 100755 --- a/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java @@ -1,8 +1,8 @@ package com.genersoft.iot.vmp.service.impl; -import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; +import com.baomidou.dynamic.datasource.annotation.DS; import com.genersoft.iot.vmp.common.InviteInfo; import com.genersoft.iot.vmp.common.InviteSessionStatus; import com.genersoft.iot.vmp.common.InviteSessionType; @@ -15,11 +15,9 @@ import com.genersoft.iot.vmp.gb28181.bean.*; import com.genersoft.iot.vmp.gb28181.event.SipSubscribe; import com.genersoft.iot.vmp.gb28181.session.VideoStreamSessionManager; -import com.genersoft.iot.vmp.gb28181.transmit.callback.DeferredResultHolder; import com.genersoft.iot.vmp.gb28181.transmit.cmd.impl.SIPCommander; import com.genersoft.iot.vmp.gb28181.transmit.cmd.impl.SIPCommanderFroPlatform; import com.genersoft.iot.vmp.gb28181.utils.SipUtils; -import com.genersoft.iot.vmp.media.zlm.AssistRESTfulUtils; import com.genersoft.iot.vmp.media.zlm.ZLMRESTfulUtils; import com.genersoft.iot.vmp.media.zlm.ZLMServerFactory; import com.genersoft.iot.vmp.media.zlm.ZlmHttpHookSubscribe; @@ -50,14 +48,13 @@ import java.math.BigDecimal; import java.math.RoundingMode; import java.text.ParseException; -import java.time.Instant; import java.util.List; import java.util.UUID; import java.util.Vector; -import java.util.concurrent.TimeUnit; @SuppressWarnings(value = {"rawtypes", "unchecked"}) @Service +@DS("master") public class PlayServiceImpl implements IPlayService { private final static Logger logger = LoggerFactory.getLogger(PlayServiceImpl.class); @@ -440,23 +437,6 @@ } @Override - public MediaServerItem getNewMediaServerItemHasAssist(Device device) { - if (device == null) { - return null; - } - MediaServerItem mediaServerItem; - if (ObjectUtils.isEmpty(device.getMediaServerId()) || "auto".equals(device.getMediaServerId())) { - mediaServerItem = mediaServerService.getMediaServerForMinimumLoad(true); - } else { - mediaServerItem = mediaServerService.getOne(device.getMediaServerId()); - } - if (mediaServerItem == null) { - logger.warn("[鑾峰彇鍙敤鐨刏LM鑺傜偣]鏈壘鍒板彲浣跨敤鐨刏LM..."); - } - return mediaServerItem; - } - - @Override public void playBack(String deviceId, String channelId, String startTime, String endTime, ErrorCallback<Object> callback) { Device device = storager.queryVideoDevice(deviceId); @@ -662,7 +642,7 @@ if (device == null) { return; } - MediaServerItem newMediaServerItem = getNewMediaServerItemHasAssist(device); + MediaServerItem newMediaServerItem = this.getNewMediaServerItem(device); if (newMediaServerItem == null) { callback.run(InviteErrorCode.ERROR_FOR_ASSIST_NOT_READY.getCode(), InviteErrorCode.ERROR_FOR_ASSIST_NOT_READY.getMsg(), @@ -976,7 +956,12 @@ throw new ServiceException("mediaServer涓嶅瓨鍦�"); } // zlm 鏆傚仠RTP瓒呮椂妫�鏌� - JSONObject jsonObject = zlmresTfulUtils.pauseRtpCheck(mediaServerItem, streamId); + // 浣跨敤zlm涓殑娴両D + String streamKey = inviteInfo.getStream(); + if (!mediaServerItem.isRtpEnable()) { + streamKey = Long.toHexString(Long.parseLong(inviteInfo.getSsrcInfo().getSsrc())).toUpperCase(); + } + JSONObject jsonObject = zlmresTfulUtils.pauseRtpCheck(mediaServerItem, streamKey); if (jsonObject == null || jsonObject.getInteger("code") != 0) { throw new ServiceException("鏆傚仠RTP鎺ユ敹澶辫触"); } @@ -999,7 +984,12 @@ throw new ServiceException("mediaServer涓嶅瓨鍦�"); } // zlm 鏆傚仠RTP瓒呮椂妫�鏌� - JSONObject jsonObject = zlmresTfulUtils.resumeRtpCheck(mediaServerItem, streamId); + // 浣跨敤zlm涓殑娴両D + String streamKey = inviteInfo.getStream(); + if (!mediaServerItem.isRtpEnable()) { + streamKey = Long.toHexString(Long.parseLong(inviteInfo.getSsrcInfo().getSsrc())).toUpperCase(); + } + JSONObject jsonObject = zlmresTfulUtils.resumeRtpCheck(mediaServerItem, streamKey); if (jsonObject == null || jsonObject.getInteger("code") != 0) { throw new ServiceException("缁х画RTP鎺ユ敹澶辫触"); } -- Gitblit v1.8.0