diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/service/impl/PlayServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/gb28181/service/impl/PlayServiceImpl.java index 7291d06b7..416e747be 100755 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/service/impl/PlayServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/service/impl/PlayServiceImpl.java @@ -156,17 +156,13 @@ public class PlayServiceImpl implements IPlayService { // 开启语音对讲通道 try { audioBroadcastCmd(device, channel, event.getMediaServer(), - event.getApp(), event.getStream(), 60, false, (msg) -> { - log.info("[语音对讲] 通道建立成功, device: {}, channel: {}", deviceId, channelId); - }); + event.getApp(), event.getStream(), 60, false, (msg) -> log.info("[语音喊话] 通道建立成功, device: {}, channel: {}", deviceId, channelId)); } catch (InvalidArgumentException | ParseException | SipException e) { log.error("[命令发送失败] 语音对讲: {}", e.getMessage()); } }else if ("talk".equals(event.getApp())) { // 开启语音对讲通道 - talkCmd(device, channel, event.getMediaServer(), event.getStream(), (msg) -> { - log.info("[语音对讲] 通道建立成功, device: {}, channel: {}", deviceId, channelId); - }); + talkCmd(device, channel, event.getMediaServer(), event.getStream(), (msg) -> log.info("[语音对讲] 通道建立成功, device: {}, channel: {}", deviceId, channelId)); } } } @@ -378,33 +374,14 @@ public class PlayServiceImpl implements IPlayService { } } - // 获取mediaServer可用的ssrc - final String finalSsrc; - if (ssrc != null) { - finalSsrc = ssrc; - }else { - finalSsrc = ssrcFactory.getPlaySsrc(mediaServer.getId()); - } - String streamId = String.format("%s_%s", device.getDeviceId(), channel.getDeviceId()); int tcpMode = device.getStreamMode().equals("TCP-ACTIVE")? 2: (device.getStreamMode().equals("TCP-PASSIVE")? 1:0); - RTPServerParam rtpServerParam = new RTPServerParam(); - rtpServerParam.setMediaServer(mediaServer); - rtpServerParam.setApp(MediaApp.GB28181); - rtpServerParam.setStreamId(streamId); - if (device.isSsrcCheck()) { - rtpServerParam.setSsrc(ssrc); - } - rtpServerParam.setPort(0); - rtpServerParam.setTcpMode(tcpMode); - rtpServerParam.setOnlyAuto(false); - rtpServerParam.setDisableAudio(!channel.isHasAudio()); - - int port = receiveRtpServerService.openRTPServer(rtpServerParam, (code, msg, result) -> { + SSRCInfo ssrcInfo = receiveRtpServerService.openGbRTPServer(mediaServer, streamId, ssrc, tcpMode, false, + device.isSsrcCheck(), false, !channel.isHasAudio(), (code, msg, result) -> { if (code == InviteErrorCode.SUCCESS.getCode() && result != null && result.getHookData() != null) { - // hook响应 + // hook 响应 StreamInfo streamInfo = onPublishHandlerForPlay(result.getHookData().getMediaServer(), result.getHookData().getMediaInfo(), device, channel); if (streamInfo == null){ if (callback != null) { @@ -476,7 +453,7 @@ public class PlayServiceImpl implements IPlayService { InviteOKHandler(eventResult, ssrcInfo, mediaServer, device, channel, callback, inviteInfo, InviteSessionType.PLAY); }, (event) -> { log.info("[点播失败]{}:{} deviceId: {}, channelId:{}",event.statusCode, event.msg, device.getDeviceId(), channel.getDeviceId()); - receiveRtpServerService.closeRTPServer(mediaServer, ssrcInfo); + receiveRtpServerService.closeRTPServer(mediaServer, ssrcInfo.getApp(), ssrcInfo.getStream()); sessionManager.removeByStream(ssrcInfo.getApp(), ssrcInfo.getStream()); if (callback != null) { @@ -489,7 +466,7 @@ public class PlayServiceImpl implements IPlayService { }, userSetting.getPlayTimeout().longValue()); } catch (InvalidArgumentException | SipException | ParseException e) { log.error("[命令发送失败] 点播消息: {}", e.getMessage()); - receiveRtpServerService.closeRTPServer(mediaServer, ssrcInfo); + receiveRtpServerService.closeRTPServer(mediaServer, ssrcInfo.getApp(), ssrcInfo.getStream()); sessionManager.removeByStream(ssrcInfo.getApp(), ssrcInfo.getStream()); if (callback != null) { callback.run(InviteErrorCode.ERROR_FOR_SIP_SENDING_FAILED.getCode(), @@ -662,7 +639,7 @@ public class PlayServiceImpl implements IPlayService { log.info("[TCP主动连接对方] 结果: {}" , result); if (!result) { // 主动连接失败,结束流程, 清理数据 - receiveRtpServerService.closeRTPServer(mediaServerItem, ssrcInfo); + receiveRtpServerService.closeRTPServer(mediaServerItem, ssrcInfo.getApp(), ssrcInfo.getStream()); sessionManager.removeByStream(ssrcInfo.getApp(), ssrcInfo.getStream()); callback.run(InviteErrorCode.ERROR_FOR_TCP_ACTIVE_CONNECTION_REFUSED_ERROR.getCode(), InviteErrorCode.ERROR_FOR_TCP_ACTIVE_CONNECTION_REFUSED_ERROR.getMsg(), null); @@ -672,7 +649,7 @@ public class PlayServiceImpl implements IPlayService { } } catch (SdpException e) { log.error("[TCP主动连接对方] deviceId: {}, channelId: {}, 解析200OK的SDP信息失败", device.getDeviceId(), channel.getDeviceId(), e); - receiveRtpServerService.closeRTPServer(mediaServerItem, ssrcInfo); + receiveRtpServerService.closeRTPServer(mediaServerItem, ssrcInfo.getApp(), ssrcInfo.getStream()); sessionManager.removeByStream(ssrcInfo.getApp(), ssrcInfo.getStream()); @@ -775,7 +752,7 @@ public class PlayServiceImpl implements IPlayService { playBack(newMediaServerItem, device, channel, startTime, endTime, callback); } - private void playBack(MediaServer mediaServerItem, + private void playBack(MediaServer mediaServer, Device device, DeviceChannel channel, String startTime, String endTime, ErrorCallback callback) { @@ -789,17 +766,8 @@ public class PlayServiceImpl implements IPlayService { String stream = device.getDeviceId() + "_" + channel.getDeviceId() + "_" + startTimeStr + "_" + endTimeTimeStr; int tcpMode = device.getStreamMode().equals("TCP-ACTIVE")? 2: (device.getStreamMode().equals("TCP-PASSIVE")? 1:0); - RTPServerParam rtpServerParam = new RTPServerParam(); - rtpServerParam.setMediaServer(mediaServerItem); - rtpServerParam.setApp(MediaApp.GB28181); - rtpServerParam.setStreamId(stream); - rtpServerParam.setSsrcCheck(device.isSsrcCheck()); - rtpServerParam.setPlayback(true); - rtpServerParam.setPort(0); - rtpServerParam.setTcpMode(tcpMode); - rtpServerParam.setOnlyAuto(false); - rtpServerParam.setDisableAudio(!channel.isHasAudio()); - SSRCInfo ssrcInfo = receiveRtpServerService.openRTPServer(rtpServerParam, (code, msg, result) -> { + SSRCInfo ssrcInfo = receiveRtpServerService.openGbRTPServer(mediaServer, stream, null, tcpMode, true, + device.isSsrcCheck(), false, !channel.isHasAudio(), (code, msg, result) -> { if (code == InviteErrorCode.SUCCESS.getCode() && result != null && result.getHookData() != null) { // hook响应 StreamInfo streamInfo = onPublishHandlerForPlayback(result.getHookData().getMediaServer(), result.getHookData().getMediaInfo(), device, channel, startTime, endTime); @@ -845,16 +813,16 @@ public class PlayServiceImpl implements IPlayService { device.getDeviceId(), channel.getGbDeviceId(), startTime, endTime, ssrcInfo.getPort(), device.getStreamMode(), ssrcInfo.getSsrc(), device.isSsrcCheck()); // 初始化redis中的invite消息状态 - InviteInfo inviteInfo = InviteInfo.getInviteInfo(device.getDeviceId(), channel.getId(), ssrcInfo.getStream(), ssrcInfo, mediaServerItem.getId(), - mediaServerItem.getSdpIp(), ssrcInfo.getPort(), device.getStreamMode(), InviteSessionType.PLAYBACK, + InviteInfo inviteInfo = InviteInfo.getInviteInfo(device.getDeviceId(), channel.getId(), ssrcInfo.getStream(), ssrcInfo, mediaServer.getId(), + mediaServer.getSdpIp(), ssrcInfo.getPort(), device.getStreamMode(), InviteSessionType.PLAYBACK, InviteSessionStatus.ready, userSetting.getRecordSip()); inviteStreamService.updateInviteInfo(inviteInfo); try { - cmder.playbackStreamCmd(mediaServerItem, ssrcInfo, device, channel, startTime, endTime, + cmder.playbackStreamCmd(mediaServer, ssrcInfo, device, channel, startTime, endTime, eventResult -> { // 处理收到200ok后的TCP主动连接以及SSRC不一致的问题 - InviteOKHandler(eventResult, ssrcInfo, mediaServerItem, device, channel, + InviteOKHandler(eventResult, ssrcInfo, mediaServer, device, channel, callback, inviteInfo, InviteSessionType.PLAYBACK); }, eventResult -> { log.info("[录像回放] 失败,{} {}", eventResult.statusCode, eventResult.msg); @@ -862,7 +830,7 @@ public class PlayServiceImpl implements IPlayService { callback.run(eventResult.statusCode, eventResult.msg, null); } - receiveRtpServerService.closeRTPServer(mediaServerItem, ssrcInfo); + receiveRtpServerService.closeRTPServer(mediaServer, ssrcInfo.getApp(), ssrcInfo.getStream()); sessionManager.removeByStream(ssrcInfo.getApp(), ssrcInfo.getStream()); inviteStreamService.removeInviteInfo(inviteInfo); }, userSetting.getPlayTimeout().longValue()); @@ -871,7 +839,7 @@ public class PlayServiceImpl implements IPlayService { if (callback != null) { callback.run(InviteErrorCode.FAIL.getCode(), e.getMessage(), null); } - receiveRtpServerService.closeRTPServer(mediaServerItem, ssrcInfo); + receiveRtpServerService.closeRTPServer(mediaServer, ssrcInfo.getApp(), ssrcInfo.getStream()); sessionManager.removeByStream(ssrcInfo.getApp(), ssrcInfo.getStream()); inviteStreamService.removeInviteInfo(inviteInfo); } @@ -1000,16 +968,9 @@ public class PlayServiceImpl implements IPlayService { } int tcpMode = device.getStreamMode().equals("TCP-ACTIVE")? 2: (device.getStreamMode().equals("TCP-PASSIVE")? 1:0); - // 录像下载不使用固定流地址,固定流地址会导致如果开始时间与结束时间一致时文件错误的叠加在一起 - RTPServerParam rtpServerParam = new RTPServerParam(); - rtpServerParam.setMediaServer(mediaServer); - rtpServerParam.setSsrcCheck(device.isSsrcCheck()); - rtpServerParam.setPlayback(true); - rtpServerParam.setPort(0); - rtpServerParam.setTcpMode(tcpMode); - rtpServerParam.setOnlyAuto(false); - rtpServerParam.setDisableAudio(!channel.isHasAudio()); - SSRCInfo ssrcInfo = receiveRtpServerService.openRTPServer(rtpServerParam, (code, msg, result) -> { + + SSRCInfo ssrcInfo = receiveRtpServerService.openGbRTPServer(mediaServer, null, null, tcpMode, false, + device.isSsrcCheck(), false, !channel.isHasAudio(), (code, msg, result) -> { if (code == InviteErrorCode.SUCCESS.getCode() && result != null && result.getHookData() != null) { // hook响应 StreamInfo streamInfo = onPublishHandlerForDownload(mediaServer, result.getHookData().getMediaInfo(), device, channel, startTime, endTime); @@ -1070,7 +1031,7 @@ public class PlayServiceImpl implements IPlayService { eventResult -> { // 对方返回错误 callback.run(InviteErrorCode.FAIL.getCode(), String.format("录像下载失败, 错误码: %s, %s", eventResult.statusCode, eventResult.msg), null); - receiveRtpServerService.closeRTPServer(mediaServer, ssrcInfo); + receiveRtpServerService.closeRTPServer(mediaServer, ssrcInfo.getApp(), ssrcInfo.getStream()); sessionManager.removeByStream(ssrcInfo.getApp(), ssrcInfo.getStream()); inviteStreamService.removeInviteInfo(inviteInfo); }, eventResult ->{ @@ -1101,7 +1062,7 @@ public class PlayServiceImpl implements IPlayService { } catch (InvalidArgumentException | SipException | ParseException e) { log.error("[命令发送失败] 录像下载: {}", e.getMessage()); callback.run(InviteErrorCode.FAIL.getCode(),e.getMessage(), null); - receiveRtpServerService.closeRTPServer(mediaServer, ssrcInfo); + receiveRtpServerService.closeRTPServer(mediaServer, ssrcInfo.getApp(), ssrcInfo.getStream()); sessionManager.removeByStream(ssrcInfo.getApp(), ssrcInfo.getStream()); inviteStreamService.removeInviteInfo(inviteInfo); } @@ -1699,7 +1660,7 @@ public class PlayServiceImpl implements IPlayService { deviceChannelService.stopPlay(channel.getId()); } if (inviteInfo.getStreamInfo() != null) { - receiveRtpServerService.closeRTPServer(inviteInfo.getStreamInfo().getMediaServer(), inviteInfo.getSsrcInfo()); + receiveRtpServerService.closeRTPServer(inviteInfo.getStreamInfo().getMediaServer(), MediaApp.GB28181, stream); } } } @@ -1731,7 +1692,7 @@ public class PlayServiceImpl implements IPlayService { deviceChannelService.stopPlay(channel.getId()); } if (inviteInfo.getStreamInfo() != null) { - receiveRtpServerService.closeRTPServer(inviteInfo.getStreamInfo().getMediaServer(), inviteInfo.getSsrcInfo()); + receiveRtpServerService.closeRTPServer(inviteInfo.getStreamInfo().getMediaServer(), MediaApp.GB28181, inviteInfo.getStream()); } } diff --git a/src/main/java/com/genersoft/iot/vmp/jt1078/service/impl/jt1078PlayServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/jt1078/service/impl/jt1078PlayServiceImpl.java index 9d14e57be..7d55d00ee 100644 --- a/src/main/java/com/genersoft/iot/vmp/jt1078/service/impl/jt1078PlayServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/jt1078/service/impl/jt1078PlayServiceImpl.java @@ -240,20 +240,18 @@ public class jt1078PlayServiceImpl implements Ijt1078PlayService { rtpServerParam.setMediaServer(mediaServer); rtpServerParam.setApp(MediaApp.JT1078); rtpServerParam.setStreamId(stream); - rtpServerParam.setSsrcCheck(false); - rtpServerParam.setPlayback(false); rtpServerParam.setPort(0); rtpServerParam.setTcpMode(1); // 1 表示tcp被动 rtpServerParam.setOnlyAuto(false); rtpServerParam.setDisableAudio(!channel.isHasAudio()); - SSRCInfo ssrcInfo = receiveRtpServerService.openRTPServer(rtpServerParam, (code, msg, result) -> { + int port = receiveRtpServerService.openRTPServer(rtpServerParam, (code, msg, hookData) -> { - if (code == InviteErrorCode.SUCCESS.getCode() && result != null && result.getHookData() != null) { + if (code == InviteErrorCode.SUCCESS.getCode() && hookData != null ) { // hook响应 log.info("[JT-点播] 点播成功, 手机号: {}, 通道: {}", phoneNumber, channelId); // TODO 发送9105 实时音视频传输状态通知, 通知丢包率 - StreamInfo info = onPublishHandler(mediaServer, result.getHookData(), phoneNumber, channelId); + StreamInfo info = onPublishHandler(mediaServer, hookData, phoneNumber, channelId); for (CommonCallback> errorCallback : errorCallbacks) { if (errorCallback == null) { @@ -280,18 +278,18 @@ public class jt1078PlayServiceImpl implements Ijt1078PlayService { stopPlay(phoneNumber, channelId); } }); - if (ssrcInfo == null) { + if (port <= 0) { stopPlay(phoneNumber, channelId); return; } - log.info("[JT-点播] phoneNumber: {}, channelId: {},IP: {}, 端口: {}", phoneNumber, channelId, mediaServer.getSdpIp(), ssrcInfo.getPort()); + log.info("[JT-点播] phoneNumber: {}, channelId: {},IP: {}, 端口: {}", phoneNumber, channelId, mediaServer.getSdpIp(), port); J9101 j9101 = new J9101(); j9101.setChannel(channelId); j9101.setIp(mediaServer.getSdpIp()); j9101.setRate(1); - j9101.setTcpPort(ssrcInfo.getPort()); - j9101.setUdpPort(ssrcInfo.getPort()); + j9101.setTcpPort(port); + j9101.setUdpPort(port); j9101.setType(type); jt1078Template.startLive(phoneNumber, j9101, 6); } @@ -327,7 +325,7 @@ public class jt1078PlayServiceImpl implements Ijt1078PlayService { // 删除缓存数据 if (streamInfo != null) { // 关闭rtpServer - receiveRtpServerService.closeRTPServer(streamInfo.getMediaServer(), new SSRCInfo(streamInfo.getApp(), streamInfo.getStream())); + receiveRtpServerService.closeRTPServer(streamInfo.getMediaServer(), streamInfo.getApp(), streamInfo.getStream()); redisTemplate.delete(playKey); } @@ -435,7 +433,7 @@ public class jt1078PlayServiceImpl implements Ijt1078PlayService { StreamInfo streamInfo = (StreamInfo) redisTemplate.opsForValue().get(playbackKey); if (streamInfo != null) { - mediaServerService.closeJTTServer(streamInfo.getMediaServer(), streamInfo.getStream()); + receiveRtpServerService.closeRTPServer(streamInfo.getMediaServer(), streamInfo.getApp(), streamInfo.getStream()); // 清理数据 redisTemplate.delete(playbackKey); } @@ -455,36 +453,41 @@ public class jt1078PlayServiceImpl implements Ijt1078PlayService { } return; } - // 设置hook监听 - Hook hookSubscribe = Hook.getInstance(HookType.on_media_arrival, app, stream, mediaServer.getId()); - subscribe.addSubscribe(hookSubscribe, (hookData) -> { - dynamicTask.stop(playbackKey); - log.info("[JT-回放] 回放成功, logInfo: {}", logInfo); - StreamInfo info = onPublishHandler(mediaServer, hookData, phoneNumber, channelId); - - for (CommonCallback> errorCallback : errorCallbacks) { - if (errorCallback == null) { - continue; - } - errorCallback.run(new WVPResult<>(InviteErrorCode.SUCCESS.getCode(), InviteErrorCode.SUCCESS.getMsg(), info)); - } - subscribe.removeSubscribe(hookSubscribe); - redisTemplate.opsForValue().set(playbackKey, info); - }); - // 设置超时监听 - dynamicTask.startDelay(playbackKey, () -> { - log.info("[JT-回放] 回放超时, logInfo: {}", logInfo); - for (CommonCallback> errorCallback : errorCallbacks) { - errorCallback.run(new WVPResult<>(InviteErrorCode.ERROR_FOR_SIGNALLING_TIMEOUT.getCode(), - InviteErrorCode.ERROR_FOR_SIGNALLING_TIMEOUT.getMsg(), null)); - } - mediaServerService.closeJTTServer(mediaServer, stream, null); - subscribe.removeSubscribe(hookSubscribe); - }, userSetting.getPlayTimeout()); // 开启收流端口 - SSRCInfo ssrcInfo = mediaServerService.openJTTServer(mediaServer, stream, null, false, !channel.isHasAudio(), 1); - log.info("[JT-回放] logInfo: {}, 端口: {}", logInfo, ssrcInfo.getPort()); + RTPServerParam rtpServerParam = new RTPServerParam(); + rtpServerParam.setMediaServer(mediaServer); + rtpServerParam.setApp(MediaApp.JT1078); + rtpServerParam.setStreamId(stream); + rtpServerParam.setPort(0); + rtpServerParam.setTcpMode(1); // 1 表示tcp被动 + rtpServerParam.setOnlyAuto(false); + rtpServerParam.setDisableAudio(!channel.isHasAudio()); + + int port = receiveRtpServerService.openRTPServer(rtpServerParam, (code, msg, hookData) -> { + + if (code == InviteErrorCode.SUCCESS.getCode() && hookData != null ) { + // hook 响应 + log.info("[JT-回放] 回放成功, logInfo: {}", logInfo); + StreamInfo info = onPublishHandler(mediaServer, hookData, phoneNumber, channelId); + + for (CommonCallback> errorCallback : errorCallbacks) { + if (errorCallback == null) { + continue; + } + errorCallback.run(new WVPResult<>(InviteErrorCode.SUCCESS.getCode(), InviteErrorCode.SUCCESS.getMsg(), info)); + } + redisTemplate.opsForValue().set(playbackKey, info); + }else { + log.info("[JT-回放] 回放超时, logInfo: {}", logInfo); + for (CommonCallback> errorCallback : errorCallbacks) { + errorCallback.run(new WVPResult<>(InviteErrorCode.ERROR_FOR_SIGNALLING_TIMEOUT.getCode(), + InviteErrorCode.ERROR_FOR_SIGNALLING_TIMEOUT.getMsg(), null)); + } + receiveRtpServerService.closeRTPServer(mediaServer, app, stream); + } + }); + log.info("[JT-回放] logInfo: {}, 端口: {}", logInfo, port); J9201 j9201 = new J9201(); j9201.setChannel(channelId); j9201.setIp(mediaServer.getSdpIp()); @@ -498,8 +501,8 @@ public class jt1078PlayServiceImpl implements Ijt1078PlayService { j9201.setPlaybackSpeed(playbackSpeed); } - j9201.setTcpPort(ssrcInfo.getPort()); - j9201.setUdpPort(ssrcInfo.getPort()); + j9201.setTcpPort(port); + j9201.setUdpPort(port); j9201.setType(type); j9201.setStartTime(DateUtil.yyyy_MM_dd_HH_mm_ssTo1078(startTime)); j9201.setEndTime(DateUtil.yyyy_MM_dd_HH_mm_ssTo1078(endTime)); @@ -519,7 +522,7 @@ public class jt1078PlayServiceImpl implements Ijt1078PlayService { // 删除缓存数据 if (streamInfo != null) { // 关闭rtpServer - mediaServerService.closeJTTServer(streamInfo.getMediaServer(), streamInfo.getStream(), null); + receiveRtpServerService.closeRTPServer(streamInfo.getMediaServer(), streamInfo.getApp(), streamInfo.getStream()); } // 清理回调 List>> generalCallbacks = inviteErrorCallbackMap.get(playKey); @@ -672,8 +675,8 @@ public class jt1078PlayServiceImpl implements Ijt1078PlayService { // 删除缓存数据 if (streamInfo != null) { redisTemplate.delete(playKey); - // 关闭rtpServer - mediaServerService.closeJTTServer(streamInfo.getMediaServer(), streamInfo.getStream(), null); + // 关闭 rtpServer + receiveRtpServerService.closeRTPServer(streamInfo.getMediaServer(), streamInfo.getApp(), streamInfo.getStream()); } // 清理回调 List>> generalCallbacks = inviteErrorCallbackMap.get(playKey); diff --git a/src/main/java/com/genersoft/iot/vmp/service/IReceiveRtpServerService.java b/src/main/java/com/genersoft/iot/vmp/service/IReceiveRtpServerService.java index 84cfbf9f9..335d2e5df 100644 --- a/src/main/java/com/genersoft/iot/vmp/service/IReceiveRtpServerService.java +++ b/src/main/java/com/genersoft/iot/vmp/service/IReceiveRtpServerService.java @@ -10,6 +10,10 @@ import com.genersoft.iot.vmp.service.bean.SSRCInfo; public interface IReceiveRtpServerService { + SSRCInfo openGbRTPServer(MediaServer mediaServer, String streamId, String presetSSRC, int tcpMode, + boolean playback, boolean ssrcCheck, boolean onlyAuto, boolean disableAuto, + ErrorCallback callback); + int openRTPServer(RTPServerParam rtpServerParam, ErrorCallback callback); void closeRTPServer(MediaServer mediaServer, String app, String stream); diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/RtpServerServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/RtpServerServiceImpl.java index 9a2aa2346..f7fbb83bd 100644 --- a/src/main/java/com/genersoft/iot/vmp/service/impl/RtpServerServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/service/impl/RtpServerServiceImpl.java @@ -1,13 +1,11 @@ package com.genersoft.iot.vmp.service.impl; -import com.genersoft.iot.vmp.common.StreamInfo; import com.genersoft.iot.vmp.common.enums.MediaApp; import com.genersoft.iot.vmp.conf.DynamicTask; import com.genersoft.iot.vmp.conf.UserSetting; import com.genersoft.iot.vmp.gb28181.bean.OpenRTPServerResult; import com.genersoft.iot.vmp.gb28181.session.SSRCFactory; import com.genersoft.iot.vmp.gb28181.session.SipInviteSessionManager; -import com.genersoft.iot.vmp.media.bean.MediaInfo; import com.genersoft.iot.vmp.media.bean.MediaServer; import com.genersoft.iot.vmp.media.event.hook.Hook; import com.genersoft.iot.vmp.media.event.hook.HookData; @@ -28,7 +26,6 @@ import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import java.util.Objects; -import java.util.UUID; @Slf4j @Service @@ -72,9 +69,10 @@ public class RtpServerServiceImpl implements IReceiveRtpServerService { } + @Override public SSRCInfo openGbRTPServer(MediaServer mediaServer, String streamId, String presetSSRC, int tcpMode, - boolean playback, boolean ssrcCheck, boolean onlyAuto, boolean disableAuto, boolean reUsePort, - ErrorCallback callback ) { + boolean playback, boolean ssrcCheck, boolean onlyAuto, boolean disableAuto, + ErrorCallback callback) { if (callback == null) { log.warn("[开启国标RTP收流] 失败,回调为NULL"); return null; @@ -84,7 +82,7 @@ public class RtpServerServiceImpl implements IReceiveRtpServerService { return null; } - // 获取mediaServer可用的ssrc + // 获取 mediaServer 可用的 ssrc final String ssrc; if (presetSSRC != null) { ssrc = presetSSRC; @@ -104,7 +102,7 @@ public class RtpServerServiceImpl implements IReceiveRtpServerService { } SSRCInfo ssrcInfo = new SSRCInfo(0, ssrc, MediaApp.GB28181, streamId); - RTPServerParam rtpServerParam = new RTPServerParam(mediaServer, MediaApp.GB28181, streamId, ssrcCheck ? Long.parseLong(ssrc): 0L, null, onlyAuto, disableAuto, reUsePort, tcpMode); + RTPServerParam rtpServerParam = new RTPServerParam(mediaServer, MediaApp.GB28181, streamId, ssrcCheck ? Long.parseLong(ssrc): 0L, null, onlyAuto, disableAuto, false, tcpMode); int rtpServerPort = openRTPServer(rtpServerParam, ((code, msg, data) -> { if (code == InviteErrorCode.SUCCESS.getCode()) { OpenRTPServerResult openRTPServerResult = new OpenRTPServerResult();