From f36ed68607a9f65203a4c3b25dd623df4917c40c Mon Sep 17 00:00:00 2001 From: shikong <919411476@qq.com> Date: Thu, 5 Oct 2023 03:11:59 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E6=8C=81=E9=85=8D=E7=BD=AE=E6=B5=81?= =?UTF-8?q?=E4=BC=A0=E8=BE=93=E6=A8=A1=E5=BC=8F=20=E5=B7=B2=E7=9F=A5=20zlm?= =?UTF-8?q?=20rtp=20udp=20=E6=94=B6=E6=B5=81=E6=9C=89=E9=97=AE=E9=A2=98,?= =?UTF-8?q?=20=E6=95=85=E6=8F=90=E4=BE=9B=E9=80=89=E9=A1=B9=E5=88=87?= =?UTF-8?q?=E6=8D=A2=E4=B8=BA=20tcp=20=E6=94=B6=E6=B5=81/=E4=B8=8B?= =?UTF-8?q?=E8=BD=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../docking/gb28181/wvp/config/ProxySipConfig.java | 3 +++ .../wvp/service/gb28181/Gb28181DownloadService.java | 10 +++++++--- .../src/main/resources/application-local.yml | 3 ++- .../src/main/resources/application.yml | 5 +++-- 4 files changed, 15 insertions(+), 6 deletions(-) diff --git a/gb28181-wvp-proxy-service/src/main/java/cn/skcks/docking/gb28181/wvp/config/ProxySipConfig.java b/gb28181-wvp-proxy-service/src/main/java/cn/skcks/docking/gb28181/wvp/config/ProxySipConfig.java index 27c19e2..8e6267e 100644 --- a/gb28181-wvp-proxy-service/src/main/java/cn/skcks/docking/gb28181/wvp/config/ProxySipConfig.java +++ b/gb28181-wvp-proxy-service/src/main/java/cn/skcks/docking/gb28181/wvp/config/ProxySipConfig.java @@ -1,6 +1,7 @@ package cn.skcks.docking.gb28181.wvp.config; import cn.skcks.docking.gb28181.config.sip.SipConfig; +import cn.skcks.docking.gb28181.core.sip.gb28181.sdp.StreamMode; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; @@ -29,6 +30,8 @@ public class ProxySipConfig { private String transport = ListeningPoint.UDP; + private StreamMode streamMode = StreamMode.TCP_ACTIVE; + @Bean public SipConfig sipConfig(){ SipConfig sipConfig = new SipConfig(); diff --git a/gb28181-wvp-proxy-service/src/main/java/cn/skcks/docking/gb28181/wvp/service/gb28181/Gb28181DownloadService.java b/gb28181-wvp-proxy-service/src/main/java/cn/skcks/docking/gb28181/wvp/service/gb28181/Gb28181DownloadService.java index b029e9a..d10c7fb 100644 --- a/gb28181-wvp-proxy-service/src/main/java/cn/skcks/docking/gb28181/wvp/service/gb28181/Gb28181DownloadService.java +++ b/gb28181-wvp-proxy-service/src/main/java/cn/skcks/docking/gb28181/wvp/service/gb28181/Gb28181DownloadService.java @@ -207,9 +207,10 @@ public class Gb28181DownloadService { long start = LocalDateTimeUtil.of(startTime.toInstant(), zoneId).atZone(zoneId).toEpochSecond(); long end = LocalDateTimeUtil.of(endTime.toInstant(), zoneId).atZone(zoneId).toEpochSecond(); String streamId = MediaSdpHelper.getStreamId(gbDeviceId, channel, String.valueOf(start), String.valueOf(end), IdUtil.getSnowflakeNextIdStr()); - int streamMode = proxySipConfig.getTransport().equalsIgnoreCase(ListeningPoint.UDP) ? 0 : 1; + int isTcp = proxySipConfig.getStreamMode() == StreamMode.UDP ? 0 : 1; + StreamMode streamMode = proxySipConfig.getStreamMode(); String ip = zlmMediaConfig.getIp(); - int port = openRtpServer(streamId, streamMode); + int port = openRtpServer(streamId, isTcp); if(port <= 0){ log.error("zlm 暂无可用端口"); result.complete(null); @@ -220,10 +221,13 @@ public class Gb28181DownloadService { timeField.setStartTime(start); timeField.setStopTime(end); TimeDescription timeDescription = SdpFactory.getInstance().createTimeDescription(timeField); - GB28181Description gb28181Description = MediaSdpHelper.build(MediaSdpHelper.Action.DOWNLOAD, gbDeviceId, channel, Connection.IP4, ip, port, ssrc, StreamMode.of(ListeningPoint.UDP), timeDescription); + GB28181Description gb28181Description = MediaSdpHelper.build(MediaSdpHelper.Action.DOWNLOAD, gbDeviceId, channel, Connection.IP4, ip, port, ssrc, streamMode, timeDescription); gb28181Description.setSessionName(SdpFactory.getInstance().createSessionName(MediaSdpHelper.Action.DOWNLOAD.getAction())); gb28181Description.setTimeDescriptions(new Vector<>(){{add(timeDescription);}}); MediaDescriptionImpl media = (MediaDescriptionImpl) gb28181Description.getMediaDescriptions(true).get(0); + if(proxySipConfig.getStreamMode() != StreamMode.UDP){ + media.getMedia().setProtocol("RTP/AVP/TCP"); + } media.setAttribute("downloadspeed", String.valueOf(4)); URIField uriField = new URIField(); uriField.setURI(StringUtils.joinWith(":", channel, "0")); diff --git a/gb28181-wvp-proxy-starter/src/main/resources/application-local.yml b/gb28181-wvp-proxy-starter/src/main/resources/application-local.yml index 42fd6dd..4036395 100644 --- a/gb28181-wvp-proxy-starter/src/main/resources/application-local.yml +++ b/gb28181-wvp-proxy-starter/src/main/resources/application-local.yml @@ -35,7 +35,7 @@ spring: media: ip: 10.10.10.200 - url: 'http://10.10.10.200:5080' + url: 'http://10.10.10.200:5081' # url: 'http://10.10.10.200:12580/anything/' id: amrWMKmbKqoBjRQ9 # secret: 035c73f7-bb6b-4889-a715-d9eb2d1925cc @@ -56,6 +56,7 @@ proxy: port: 5063 ip: - 10.10.10.20 + stream-mode: tcp_active # - 192.168.1.241 ffmpeg-support: ffmpeg: D:\Soft\Captura\ffmpeg\ffmpeg.exe diff --git a/gb28181-wvp-proxy-starter/src/main/resources/application.yml b/gb28181-wvp-proxy-starter/src/main/resources/application.yml index a00681f..3b65f5b 100644 --- a/gb28181-wvp-proxy-starter/src/main/resources/application.yml +++ b/gb28181-wvp-proxy-starter/src/main/resources/application.yml @@ -24,8 +24,8 @@ spring: username: root password: 123456a url: jdbc:mysql://192.168.1.241:3306/gb28181_docking_platform_dev?createDatabaseIfNotExist=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai -# profiles: -# active: local + profiles: + active: local cloud: openfeign: httpclient: @@ -64,6 +64,7 @@ proxy: - 192.168.0.195 # - 192.168.3.10 # - 192.168.1.241 + stream-mode: tcp_active ffmpeg-support: ffmpeg: /usr/bin/ffmpeg/ffmpeg