From 742ee8f6ee86bcdb88a9cdf00a7947e7bcda897e Mon Sep 17 00:00:00 2001 From: liuqingkun Date: Wed, 24 May 2023 09:35:01 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/org/hentai/jtt1078/publisher/PublishManager.java | 7 +++---- .../java/cn/org/hentai/jtt1078/server/Jtt1078Handler.java | 6 +++++- .../java/cn/org/hentai/jtt1078/server/SessionManager.java | 4 ++++ .../cn/org/hentai/jtt1078/subscriber/RTMPPublisher.java | 2 +- src/main/resources/app.properties | 2 +- 5 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/main/java/cn/org/hentai/jtt1078/publisher/PublishManager.java b/src/main/java/cn/org/hentai/jtt1078/publisher/PublishManager.java index 5fa5f23..fd0cf78 100644 --- a/src/main/java/cn/org/hentai/jtt1078/publisher/PublishManager.java +++ b/src/main/java/cn/org/hentai/jtt1078/publisher/PublishManager.java @@ -57,10 +57,7 @@ public final class PublishManager { } public Channel open(String tag) { - logger.info(BusinessConstant.LOGGER_PREFIX + " : 通道开启 : {} ", tag); - Channel chl = channels.get(tag); - - // 开启一个新的推流通道, 释放原来的通道 + // 开启一个新的推流通道, 先释放原来的通道 channels.values().forEach(channel -> { logger.info(BusinessConstant.LOGGER_PREFIX + " : 通道开启 : 调用close方法释放原来的通道"); close(channel.tag); @@ -68,6 +65,8 @@ public final class PublishManager { // 有新设备开启通道时, 清空下channels缓存 channels.clear(); + logger.info(BusinessConstant.LOGGER_PREFIX + " : 通道开启 : {} ", tag); + Channel chl = channels.get(tag); if (chl == null) { chl = new Channel(tag); channels.put(tag, chl); diff --git a/src/main/java/cn/org/hentai/jtt1078/server/Jtt1078Handler.java b/src/main/java/cn/org/hentai/jtt1078/server/Jtt1078Handler.java index b1e77e6..6ba542e 100644 --- a/src/main/java/cn/org/hentai/jtt1078/server/Jtt1078Handler.java +++ b/src/main/java/cn/org/hentai/jtt1078/server/Jtt1078Handler.java @@ -35,7 +35,7 @@ public class Jtt1078Handler extends SimpleChannelInboundHandler { String sim = packet.nextBCD() + packet.nextBCD() + packet.nextBCD() + packet.nextBCD() + packet.nextBCD() + packet.nextBCD(); int channel = packet.nextByte() & 0xff; String tag = sim + "-" + channel; - logger.debug(BusinessConstant.LOGGER_PREFIX + " : channelRead from tag : {} ", tag); + logger.debug(BusinessConstant.LOGGER_PREFIX + " : channelRead from tag = {} : data = {} ", tag, packet.data.toString()); if (SessionManager.contains(nettyChannel, "tag") == false) { Channel chl = PublishManager.getInstance().open(tag); @@ -76,6 +76,7 @@ public class Jtt1078Handler extends SimpleChannelInboundHandler { /** * 连接断开触发 + * * @param ctx */ @Override @@ -91,6 +92,7 @@ public class Jtt1078Handler extends SimpleChannelInboundHandler { /** * 连接异常触发 + * * @param ctx * @param cause * @throws Exception @@ -134,5 +136,7 @@ public class Jtt1078Handler extends SimpleChannelInboundHandler { logger.info(BusinessConstant.LOGGER_PREFIX + " : 关闭通道 : 调用close方法释放原来的通道"); PublishManager.getInstance().close(tag); } + + SessionManager.clearMapping(); } } diff --git a/src/main/java/cn/org/hentai/jtt1078/server/SessionManager.java b/src/main/java/cn/org/hentai/jtt1078/server/SessionManager.java index 988354d..3c25c28 100644 --- a/src/main/java/cn/org/hentai/jtt1078/server/SessionManager.java +++ b/src/main/java/cn/org/hentai/jtt1078/server/SessionManager.java @@ -33,4 +33,8 @@ public final class SessionManager { logger.info(BusinessConstant.LOGGER_PREFIX + " : SessionManager : mapping keys = {} ", mappings.keySet().toString()); logger.info(BusinessConstant.LOGGER_PREFIX + " : SessionManager : mapping values = {} ", mappings.values().toString()); } + + public static void clearMapping() { + mappings.clear(); + } } \ No newline at end of file diff --git a/src/main/java/cn/org/hentai/jtt1078/subscriber/RTMPPublisher.java b/src/main/java/cn/org/hentai/jtt1078/subscriber/RTMPPublisher.java index 9f434b7..40413ed 100644 --- a/src/main/java/cn/org/hentai/jtt1078/subscriber/RTMPPublisher.java +++ b/src/main/java/cn/org/hentai/jtt1078/subscriber/RTMPPublisher.java @@ -39,7 +39,7 @@ public class RTMPPublisher extends Thread { String errMsg = ""; while ((len = stderr.read(buff)) > -1) { String str = new String(buff, 0, len); - errMsg += str; +// errMsg += str; if (debugMode) System.out.print(str); } diff --git a/src/main/resources/app.properties b/src/main/resources/app.properties index 6ef4ed1..a559c15 100644 --- a/src/main/resources/app.properties +++ b/src/main/resources/app.properties @@ -20,4 +20,4 @@ rtmp.url = rtmp://127.0.0.1:1935/live #rtmp.url = rtmp://111583.livepush.myqcloud.com/trtc_1400439699/live_2042508984163242532?txSecret=78986d90bfaec1030442f0f1135646c9&txTime=642696EF # 设置为on时,控制台将输出ffmpeg的输出 -debug.mode = on \ No newline at end of file +debug.mode = off \ No newline at end of file