From 29099cbaa4b81023aa3a9fa3f63ef5201c7c5350 Mon Sep 17 00:00:00 2001 From: lin <648540858@qq.com> Date: Sat, 11 Oct 2025 21:37:41 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=B4=E6=97=B6=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iot/vmp/vmanager/bean/StreamContent.java | 4 ++++ .../web/custom/CameraChannelController.java | 19 ++++++++++------ .../web/custom/bean/CameraStreamContent.java | 4 +--- .../vmp/web/custom/bean/CameraStreamInfo.java | 22 +++++++++++++++++++ .../custom/service/CameraChannelService.java | 8 ++++--- 5 files changed, 44 insertions(+), 13 deletions(-) create mode 100644 src/main/java/com/genersoft/iot/vmp/web/custom/bean/CameraStreamInfo.java diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/bean/StreamContent.java b/src/main/java/com/genersoft/iot/vmp/vmanager/bean/StreamContent.java index ff7df7552..2d3861b2e 100755 --- a/src/main/java/com/genersoft/iot/vmp/vmanager/bean/StreamContent.java +++ b/src/main/java/com/genersoft/iot/vmp/vmanager/bean/StreamContent.java @@ -111,6 +111,9 @@ public class StreamContent { @Schema(description = "拉流代理返回的KEY") private String key; + @Schema(description = "使用的WVP ID") + private String serverId; + public StreamContent(StreamInfo streamInfo) { if (streamInfo == null) { return; @@ -190,6 +193,7 @@ public class StreamContent { this.progress = streamInfo.getProgress(); this.duration = streamInfo.getDuration(); this.key = streamInfo.getKey(); + this.serverId = streamInfo.getServerId(); if (streamInfo.getDownLoadFilePath() != null) { this.downLoadFilePath = streamInfo.getDownLoadFilePath(); diff --git a/src/main/java/com/genersoft/iot/vmp/web/custom/CameraChannelController.java b/src/main/java/com/genersoft/iot/vmp/web/custom/CameraChannelController.java index caec3ed65..39490ad8e 100644 --- a/src/main/java/com/genersoft/iot/vmp/web/custom/CameraChannelController.java +++ b/src/main/java/com/genersoft/iot/vmp/web/custom/CameraChannelController.java @@ -3,14 +3,12 @@ package com.genersoft.iot.vmp.web.custom; import com.genersoft.iot.vmp.common.StreamInfo; import com.genersoft.iot.vmp.conf.UserSetting; import com.genersoft.iot.vmp.conf.security.JwtUtils; +import com.genersoft.iot.vmp.gb28181.bean.CommonGBChannel; import com.genersoft.iot.vmp.service.bean.ErrorCallback; import com.genersoft.iot.vmp.service.bean.InviteErrorCode; import com.genersoft.iot.vmp.vmanager.bean.ErrorCode; import com.genersoft.iot.vmp.vmanager.bean.WVPResult; -import com.genersoft.iot.vmp.web.custom.bean.CameraChannel; -import com.genersoft.iot.vmp.web.custom.bean.CameraStreamContent; -import com.genersoft.iot.vmp.web.custom.bean.IdsQueryParam; -import com.genersoft.iot.vmp.web.custom.bean.PolygonQueryParam; +import com.genersoft.iot.vmp.web.custom.bean.*; import com.genersoft.iot.vmp.web.custom.service.CameraChannelService; import com.github.pagehelper.PageInfo; import io.swagger.v3.oas.annotations.Operation; @@ -189,10 +187,12 @@ public class CameraChannelController { log.info("[SY-播放摄像头] API调用,deviceId:{} ,deviceCode:{} ",deviceId, deviceCode); DeferredResult> result = new DeferredResult<>(userSetting.getPlayTimeout().longValue()); - ErrorCallback callback = (code, msg, streamInfo) -> { + ErrorCallback callback = (code, msg, cameraStreamInfo) -> { if (code == InviteErrorCode.SUCCESS.getCode()) { + StreamInfo streamInfo = cameraStreamInfo.getStreamInfo(); + CommonGBChannel channel = cameraStreamInfo.getChannel(); WVPResult wvpResult = WVPResult.success(); - if (streamInfo != null) { + if (cameraStreamInfo.getStreamInfo() != null) { if (userSetting.getUseSourceIpAsStreamIp()) { streamInfo=streamInfo.clone();//深拷贝 String host; @@ -208,7 +208,12 @@ public class CameraChannelController { && !"null".equalsIgnoreCase(streamInfo.getMediaServer().getTranscodeSuffix())) { streamInfo.setStream(streamInfo.getStream() + "_" + streamInfo.getMediaServer().getTranscodeSuffix()); } - wvpResult.setData(new CameraStreamContent(streamInfo)); + CameraStreamContent cameraStreamContent = new CameraStreamContent(streamInfo); + cameraStreamContent.setName(channel.getGbName()); + cameraStreamContent.setControlType( + (channel.getGbPtzType() == 1 || channel.getGbPtzType() == 4 || channel.getGbPtzType() == 5) ? 1 : 0); + + wvpResult.setData(cameraStreamContent); }else { wvpResult.setCode(code); wvpResult.setMsg(msg); diff --git a/src/main/java/com/genersoft/iot/vmp/web/custom/bean/CameraStreamContent.java b/src/main/java/com/genersoft/iot/vmp/web/custom/bean/CameraStreamContent.java index 2c71d3cac..5327ef78d 100644 --- a/src/main/java/com/genersoft/iot/vmp/web/custom/bean/CameraStreamContent.java +++ b/src/main/java/com/genersoft/iot/vmp/web/custom/bean/CameraStreamContent.java @@ -13,12 +13,10 @@ public class CameraStreamContent extends StreamContent { super(streamInfo); } - private String name; - // 0不可动,1可动 - private Integer controltype; + private Integer controlType; } diff --git a/src/main/java/com/genersoft/iot/vmp/web/custom/bean/CameraStreamInfo.java b/src/main/java/com/genersoft/iot/vmp/web/custom/bean/CameraStreamInfo.java new file mode 100644 index 000000000..ca71a298f --- /dev/null +++ b/src/main/java/com/genersoft/iot/vmp/web/custom/bean/CameraStreamInfo.java @@ -0,0 +1,22 @@ +package com.genersoft.iot.vmp.web.custom.bean; + +import com.genersoft.iot.vmp.common.StreamInfo; +import com.genersoft.iot.vmp.gb28181.bean.CommonGBChannel; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class CameraStreamInfo { + + + private CommonGBChannel channel; + + + private StreamInfo streamInfo; + + public CameraStreamInfo(CommonGBChannel channel, StreamInfo streamInfo) { + this.channel = channel; + this.streamInfo = streamInfo; + } +} diff --git a/src/main/java/com/genersoft/iot/vmp/web/custom/service/CameraChannelService.java b/src/main/java/com/genersoft/iot/vmp/web/custom/service/CameraChannelService.java index bb03e84f1..a580ce363 100644 --- a/src/main/java/com/genersoft/iot/vmp/web/custom/service/CameraChannelService.java +++ b/src/main/java/com/genersoft/iot/vmp/web/custom/service/CameraChannelService.java @@ -2,7 +2,6 @@ package com.genersoft.iot.vmp.web.custom.service; import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; -import com.genersoft.iot.vmp.common.StreamInfo; import com.genersoft.iot.vmp.conf.DynamicTask; import com.genersoft.iot.vmp.conf.UserSetting; import com.genersoft.iot.vmp.conf.exception.ControllerException; @@ -18,6 +17,7 @@ import com.genersoft.iot.vmp.utils.Coordtransform; import com.genersoft.iot.vmp.vmanager.bean.ErrorCode; import com.genersoft.iot.vmp.web.custom.bean.CameraChannel; import com.genersoft.iot.vmp.web.custom.bean.CameraGroup; +import com.genersoft.iot.vmp.web.custom.bean.CameraStreamInfo; import com.genersoft.iot.vmp.web.custom.bean.Point; import com.genersoft.iot.vmp.web.custom.conf.SyTokenManager; import com.github.pagehelper.PageHelper; @@ -231,10 +231,12 @@ public class CameraChannelService implements CommandLineRunner { * @param deviceCode 通道对应的国标设备的编号 * @param callback 点播结果的回放 */ - public void play(String deviceId, String deviceCode, ErrorCallback callback) { + public void play(String deviceId, String deviceCode, ErrorCallback callback) { CommonGBChannel channel = channelMapper.queryGbChannelByChannelDeviceIdAndGbDeviceId(deviceId, deviceCode); Assert.notNull(channel, "通道不存在"); - channelPlayService.play(channel, null, userSetting.getRecordSip(), callback); + channelPlayService.play(channel, null, userSetting.getRecordSip(), (code, msg, data) -> { + callback.run(code, msg, new CameraStreamInfo(channel, data)); + }); } /**