From 7c019dbeef4ee1f79bd09d87abf18112b4ffc376 Mon Sep 17 00:00:00 2001 From: 刘跃龙 <yjkhtddx@sina.com> Date: 星期四, 16 二月 2023 18:18:10 +0800 Subject: [PATCH] RTP推流地址应使用SDP中Connection中的IP地址,原来使用Origin中的IP地址,在流媒体服务和信令服务不在同一台设备上时,媒体流数据将发给信令服务器,导致无法播放BUG。 --- src/main/java/com/genersoft/iot/vmp/gb28181/task/SipRunner.java | 22 +++++++++++++++++++++- 1 files changed, 21 insertions(+), 1 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/task/SipRunner.java b/src/main/java/com/genersoft/iot/vmp/gb28181/task/SipRunner.java index e04bad9..2ffec09 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/task/SipRunner.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/task/SipRunner.java @@ -1,6 +1,6 @@ package com.genersoft.iot.vmp.gb28181.task; -import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson2.JSONObject; import com.genersoft.iot.vmp.conf.UserSetting; import com.genersoft.iot.vmp.gb28181.bean.Device; import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform; @@ -69,6 +69,26 @@ // 閲嶇疆cseq璁℃暟 redisCatchStorage.resetAllCSEQ(); // 娓呯悊redis + // 娓呯悊鏁版嵁搴撲笉瀛樺湪浣嗘槸redis涓瓨鍦ㄧ殑鏁版嵁 + List<Device> devicesInDb = deviceService.getAll(); + if (devicesInDb.size() == 0) { + redisCatchStorage.removeAllDevice(); + }else { + List<Device> devicesInRedis = redisCatchStorage.getAllDevices(); + if (devicesInRedis.size() > 0) { + Map<String, Device> deviceMapInDb = new HashMap<>(); + devicesInDb.parallelStream().forEach(device -> { + deviceMapInDb.put(device.getDeviceId(), device); + }); + devicesInRedis.parallelStream().forEach(device -> { + if (deviceMapInDb.get(device.getDeviceId()) == null) { + redisCatchStorage.removeDevice(device.getDeviceId()); + } + }); + } + } + + // 鏌ユ壘鍥芥爣鎺ㄦ祦 List<SendRtpItem> sendRtpItems = redisCatchStorage.queryAllSendRTPServer(); if (sendRtpItems.size() > 0) { -- Gitblit v1.8.0