From b0080159d98cd441175ddaf90a77d30b8264003d Mon Sep 17 00:00:00 2001 From: panlinlin <648540858@qq.com> Date: 星期六, 19 十二月 2020 21:52:20 +0800 Subject: [PATCH] 去除ssrc作为流ID传递,ssrc只作为sdp消息使用。动态端口的情况下支持固定流地址,同时支持未点播时直接播放流地址,代码自动发起点播 --- src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java | 23 ++++++++++++++--------- 1 files changed, 14 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java index 3d5aacc..097d2b7 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java @@ -277,17 +277,22 @@ try { String ssrc = streamSession.createPlaySsrc(); + String streamId = null; + if (rtpEnable) { + streamId = String.format("gb_play_%s_%s", device.getDeviceId(), channelId); + }else { + streamId = String.format("%08x", Integer.parseInt(ssrc)).toUpperCase(); + } String streamMode = device.getStreamMode().toUpperCase(); MediaServerConfig mediaInfo = storager.getMediaInfo(); String mediaPort = null; // 浣跨敤鍔ㄦ�乽dp绔彛 if (rtpEnable) { - mediaPort = zlmUtils.getNewRTPPort(ssrc) + ""; + mediaPort = zlmUtils.getNewRTPPort(streamId) + ""; }else { mediaPort = mediaInfo.getRtpProxyPort(); } - String streamId = String.format("%08x", Integer.parseInt(ssrc)).toUpperCase(); // 娣诲姞璁㈤槄 JSONObject subscribeKey = new JSONObject(); subscribeKey.put("app", "rtp"); @@ -330,10 +335,10 @@ Request request = headerProvider.createInviteRequest(device, channelId, content.toString(), null, "live", null, ssrc); ClientTransaction transaction = transmitRequest(device, request); - streamSession.put(ssrc, transaction); + streamSession.put(streamId, transaction); DeviceChannel deviceChannel = storager.queryChannel(device.getDeviceId(), channelId); if (deviceChannel != null) { - deviceChannel.setSsrc(ssrc); + deviceChannel.setStreamId(streamId); storager.updateChannel(device.getDeviceId(), deviceChannel); } @@ -378,7 +383,7 @@ String mediaPort = null; // 浣跨敤鍔ㄦ�乽dp绔彛 if (rtpEnable) { - mediaPort = zlmUtils.getNewRTPPort(ssrc) + ""; + mediaPort = zlmUtils.getNewRTPPort(streamId) + ""; }else { mediaPort = mediaInfo.getRtpProxyPort(); } @@ -412,7 +417,7 @@ Request request = headerProvider.createPlaybackInviteRequest(device, channelId, content.toString(), null, "playback", null); ClientTransaction transaction = transmitRequest(device, request); - streamSession.put(ssrc, transaction); + streamSession.put(streamId, transaction); } catch ( SipException | ParseException | InvalidArgumentException e) { e.printStackTrace(); @@ -424,10 +429,10 @@ * */ @Override - public void streamByeCmd(String ssrc) { + public void streamByeCmd(String streamId) { try { - ClientTransaction transaction = streamSession.get(ssrc); + ClientTransaction transaction = streamSession.get(streamId); if (transaction == null) { return; } @@ -453,7 +458,7 @@ clientTransaction = udpSipProvider.getNewClientTransaction(byeRequest); } dialog.sendRequest(clientTransaction); - streamSession.remove(ssrc); + streamSession.remove(streamId); } catch (TransactionDoesNotExistException e) { e.printStackTrace(); } catch (SipException e) { -- Gitblit v1.8.0