diff --git a/src/main/java/com/genersoft/iot/vmp/jt1078/service/impl/jt1078ServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/jt1078/service/impl/jt1078ServiceImpl.java index dfea3ec35..5977b1a8f 100644 --- a/src/main/java/com/genersoft/iot/vmp/jt1078/service/impl/jt1078ServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/jt1078/service/impl/jt1078ServiceImpl.java @@ -800,7 +800,7 @@ public class jt1078ServiceImpl implements Ijt1078Service { throw new ControllerException(ErrorCode.ERROR100.getCode(), "对讲进行中"); } - String reciveStream = deviceId + "_" + channelId; + String receiveStream = "1078" + "_" + deviceId + "_" + channelId; MediaServer mediaServer = mediaServerService.getOne(mediaServerId); if (mediaServer == null) { for (GeneralCallback errorCallback : errorCallbacks) { @@ -828,11 +828,11 @@ public class jt1078ServiceImpl implements Ijt1078Service { sendRtpItem.setTcpActive(true); sendRtpItem.setUsePs(false); sendRtpItem.setOnlyAudio(true); - sendRtpItem.setReceiveStream(reciveStream); + sendRtpItem.setReceiveStream(receiveStream); sendRtpItem.setPlatformId(deviceId); // 设置hook监听 - Hook hook = Hook.getInstance(HookType.on_media_arrival, "rtp", reciveStream, mediaServer.getId()); + Hook hook = Hook.getInstance(HookType.on_media_arrival, "rtp", receiveStream, mediaServer.getId()); subscribe.addSubscribe(hook, (hookData) -> { dynamicTask.stop(playKey); logger.info("[1078-对讲] 对讲成功, deviceId: {}, channelId: {}", deviceId, channelId); @@ -846,6 +846,12 @@ public class jt1078ServiceImpl implements Ijt1078Service { // 存储发流信息 redisCatchStorage.updateSendRTPSever(sendRtpItem); }); + Hook hookForDeparture = Hook.getInstance(HookType.on_media_departure, "rtp", receiveStream, mediaServer.getId()); + subscribe.addSubscribe(hookForDeparture, (hookData) -> { + logger.info("[1078-对讲] 对讲时源流注销, app: {}. stream: {}, deviceId: {}, channelId: {}",app, stream, deviceId, channelId); + stopTalk(deviceId, channelId); + }); + // 设置超时监听 dynamicTask.startDelay(playKey, () -> { logger.info("[1078-对讲] 超时, deviceId: {}, channelId: {}", deviceId, channelId); 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 144fb590b..efadfc6e4 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 @@ -268,8 +268,11 @@ public class MediaServiceImpl implements IMediaService { storager.stopPlay(inviteInfo.getDeviceId(), inviteInfo.getChannelId()); return result; } + if (stream.startsWith("1078")) { + return false; + } SendRtpItem sendRtpItem = redisCatchStorage.querySendRTPServer(null, null, stream, null); - if (sendRtpItem != null && "talk".equals(sendRtpItem.getApp())) { + if (sendRtpItem != null && "talk".equals(sendRtpItem.getApp() )) { return false; } } else if ("talk".equals(app) || "broadcast".equals(app)) {