From 845ce5331322b18f1514c476c86a0e352f79dde9 Mon Sep 17 00:00:00 2001
From: lovemen <50255147@qq.com>
Date: Thu, 23 Feb 2023 15:35:42 +0800
Subject: [PATCH 01/68] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E4=B8=8A=E7=BA=A7?=
=?UTF-8?q?=E5=B9=B3=E5=8F=B0=E7=82=B9=E6=92=ADproxy=E4=BB=A3=E7=90=86?=
=?UTF-8?q?=E6=B5=81=E6=97=B6=E6=9C=AA=E6=90=BA=E5=B8=A6SSRC=E4=BF=A1?=
=?UTF-8?q?=E6=81=AF,gbStream=E9=87=87=E7=94=A8=E9=BB=98=E8=AE=A4000000000?=
=?UTF-8?q?0=E4=BD=9C=E4=B8=BASSRC=E6=97=A0=E6=B3=95=E6=92=AD=E6=94=BE?=
=?UTF-8?q?=E9=97=AE=E9=A2=98=E3=80=82=E4=BB=A5=E5=8F=8A=E4=B8=8A=E7=BA=A7?=
=?UTF-8?q?=E5=B9=B3=E5=8F=B0=E7=82=B9=E6=92=ADproxy=E4=BB=A3=E7=90=86?=
=?UTF-8?q?=E6=B5=81=E6=97=B6=E5=9B=9E=E5=A4=8D=E7=9A=84SDP=E6=9C=AC?=
=?UTF-8?q?=E5=9C=B0=E7=AB=AF=E5=8F=A3=E5=8F=B7=E4=B8=BA0=E4=B8=8D?=
=?UTF-8?q?=E5=85=BC=E5=AE=B9=E9=97=AE=E9=A2=98=E3=80=82?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../request/impl/InviteRequestProcessor.java | 18 +++++++++++++++++-
1 file changed, 17 insertions(+), 1 deletion(-)
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/InviteRequestProcessor.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/InviteRequestProcessor.java
index 81dd8d810..fd9e0c606 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/InviteRequestProcessor.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/InviteRequestProcessor.java
@@ -5,6 +5,7 @@ import com.genersoft.iot.vmp.conf.DynamicTask;
import com.genersoft.iot.vmp.conf.UserSetting;
import com.genersoft.iot.vmp.gb28181.bean.*;
import com.genersoft.iot.vmp.gb28181.event.SipSubscribe;
+import com.genersoft.iot.vmp.gb28181.session.SsrcConfig;
import com.genersoft.iot.vmp.gb28181.session.VideoStreamSessionManager;
import com.genersoft.iot.vmp.gb28181.transmit.SIPProcessorObserver;
import com.genersoft.iot.vmp.gb28181.transmit.SIPSender;
@@ -492,6 +493,15 @@ public class InviteRequestProcessor extends SIPRequestProcessorParent implements
}
}
} else if (gbStream != null) {
+ if(ssrc.equals(ssrcDefault))
+ {
+ SsrcConfig ssrcConfig = mediaServerItem.getSsrcConfig();
+ if(ssrcConfig != null)
+ {
+ ssrc = ssrcConfig.getPlaySsrc();
+ ssrcConfig.releaseSsrc(ssrc);
+ }
+ }
if("push".equals(gbStream.getStreamType())) {
if (streamPushItem != null && streamPushItem.isPushIng()) {
// 推流状态
@@ -818,7 +828,13 @@ public class InviteRequestProcessor extends SIPRequestProcessorParent implements
content.append("s=Play\r\n");
content.append("c=IN IP4 " + mediaServerItem.getSdpIp() + "\r\n");
content.append("t=0 0\r\n");
- content.append("m=video " + sendRtpItem.getLocalPort() + " RTP/AVP 96\r\n");
+ // 非严格模式端口不统一, 增加兼容性,修改为一个不为0的端口
+ int localPort = sendRtpItem.getLocalPort();
+ if(localPort == 0)
+ {
+ localPort = new Random().nextInt(65535) + 1;
+ }
+ content.append("m=video " + localPort + " RTP/AVP 96\r\n");
content.append("a=sendonly\r\n");
content.append("a=rtpmap:96 PS/90000\r\n");
if (sendRtpItem.isTcp()) {
From 6afcd5176b89e213fed5d5904279c4095bfada9a Mon Sep 17 00:00:00 2001
From: wangyimeng <421132955@qq.com>
Date: Fri, 3 Mar 2023 20:59:10 +0800
Subject: [PATCH 02/68] =?UTF-8?q?=E8=AF=B7=E6=B1=82=E5=8E=86=E5=8F=B2?=
=?UTF-8?q?=E5=AA=92=E4=BD=93=E4=B8=8B=E8=BD=BD=E5=A2=9E=E5=8A=A0=E5=9B=9E?=
=?UTF-8?q?=E5=A4=8D=E4=BA=8B=E4=BB=B6=E5=A4=84=E7=90=86ssrc=E4=B8=8E?=
=?UTF-8?q?=E4=B8=8B=E7=BA=A7=E4=B8=8D=E4=B8=80=E8=87=B4=E6=83=85=E5=86=B5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../gb28181/transmit/cmd/ISIPCommander.java | 106 +++++++++---------
.../transmit/cmd/impl/SIPCommander.java | 71 ++++++------
.../iot/vmp/service/impl/PlayServiceImpl.java | 67 ++++++++++-
3 files changed, 152 insertions(+), 92 deletions(-)
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/ISIPCommander.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/ISIPCommander.java
index 1f1d10a65..6aa20e4da 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/ISIPCommander.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/ISIPCommander.java
@@ -15,26 +15,26 @@ import javax.sip.InvalidArgumentException;
import javax.sip.SipException;
import java.text.ParseException;
-/**
- * @description:设备能力接口,用于定义设备的控制、查询能力
+/**
+ * @description:设备能力接口,用于定义设备的控制、查询能力
* @author: swwheihei
- * @date: 2020年5月3日 下午9:16:34
+ * @date: 2020年5月3日 下午9:16:34
*/
public interface ISIPCommander {
/**
* 云台方向放控制,使用配置文件中的默认镜头移动速度
- *
+ *
* @param device 控制设备
* @param channelId 预览通道
* @param leftRight 镜头左移右移 0:停止 1:左移 2:右移
* @param upDown 镜头上移下移 0:停止 1:上移 2:下移
*/
void ptzdirectCmd(Device device,String channelId,int leftRight, int upDown) throws InvalidArgumentException, ParseException, SipException;
-
+
/**
* 云台方向放控制
- *
+ *
* @param device 控制设备
* @param channelId 预览通道
* @param leftRight 镜头左移右移 0:停止 1:左移 2:右移
@@ -42,28 +42,28 @@ public interface ISIPCommander {
* @param moveSpeed 镜头移动速度
*/
void ptzdirectCmd(Device device,String channelId,int leftRight, int upDown, int moveSpeed) throws InvalidArgumentException, ParseException, SipException;
-
+
/**
* 云台缩放控制,使用配置文件中的默认镜头缩放速度
- *
+ *
* @param device 控制设备
* @param channelId 预览通道
* @param inOut 镜头放大缩小 0:停止 1:缩小 2:放大
*/
void ptzZoomCmd(Device device,String channelId,int inOut) throws InvalidArgumentException, ParseException, SipException;
-
+
/**
* 云台缩放控制
- *
+ *
* @param device 控制设备
* @param channelId 预览通道
* @param inOut 镜头放大缩小 0:停止 1:缩小 2:放大
*/
void ptzZoomCmd(Device device,String channelId,int inOut, int moveSpeed) throws InvalidArgumentException, ParseException, SipException;
-
+
/**
* 云台控制,支持方向与缩放控制
- *
+ *
* @param device 控制设备
* @param channelId 预览通道
* @param leftRight 镜头左移右移 0:停止 1:左移 2:右移
@@ -73,10 +73,10 @@ public interface ISIPCommander {
* @param zoomSpeed 镜头缩放速度
*/
void ptzCmd(Device device,String channelId,int leftRight, int upDown, int inOut, int moveSpeed, int zoomSpeed) throws InvalidArgumentException, SipException, ParseException;
-
+
/**
* 前端控制,包括PTZ指令、FI指令、预置位指令、巡航指令、扫描指令和辅助开关指令
- *
+ *
* @param device 控制设备
* @param channelId 预览通道
* @param cmdCode 指令码
@@ -85,7 +85,7 @@ public interface ISIPCommander {
* @param combineCode2 组合码2
*/
void frontEndCmd(Device device, String channelId, int cmdCode, int parameter1, int parameter2, int combineCode2) throws SipException, InvalidArgumentException, ParseException;
-
+
/**
* 前端控制指令(用于转发上级指令)
* @param device 控制设备
@@ -103,7 +103,7 @@ public interface ISIPCommander {
/**
* 请求回放视频流
- *
+ *
* @param device 视频设备
* @param channelId 预览通道
* @param startTime 开始时间,格式要求:yyyy-MM-dd HH:mm:ss
@@ -113,16 +113,16 @@ public interface ISIPCommander {
/**
* 请求历史媒体下载
- *
+ *
* @param device 视频设备
* @param channelId 预览通道
* @param startTime 开始时间,格式要求:yyyy-MM-dd HH:mm:ss
* @param endTime 结束时间,格式要求:yyyy-MM-dd HH:mm:ss
* @param downloadSpeed 下载倍速参数
- */
+ */
void downloadStreamCmd(MediaServerItem mediaServerItem, SSRCInfo ssrcInfo, Device device, String channelId,
String startTime, String endTime, int downloadSpeed, InviteStreamCallback inviteStreamCallback, InviteStreamCallback hookEvent,
- SipSubscribe.Event errorEvent) throws InvalidArgumentException, SipException, ParseException;
+ SipSubscribe.Event errorEvent,SipSubscribe.Event okEvent) throws InvalidArgumentException, SipException, ParseException;
/**
* 视频流停止
@@ -150,7 +150,7 @@ public interface ISIPCommander {
* 回放倍速播放
*/
void playSpeedCmd(Device device, StreamInfo streamInfo, Double speed) throws InvalidArgumentException, ParseException, SipException;
-
+
/**
* 回放控制
* @param device
@@ -162,55 +162,55 @@ public interface ISIPCommander {
/**
* 语音广播
- *
+ *
* @param device 视频设备
* @param channelId 预览通道
*/
void audioBroadcastCmd(Device device,String channelId);
-
+
/**
* 语音广播
- *
+ *
* @param device 视频设备
*/
void audioBroadcastCmd(Device device, SipSubscribe.Event okEvent) throws InvalidArgumentException, SipException, ParseException;
void audioBroadcastCmd(Device device) throws InvalidArgumentException, SipException, ParseException;
-
+
/**
* 音视频录像控制
- *
+ *
* @param device 视频设备
* @param channelId 预览通道
* @param recordCmdStr 录像命令:Record / StopRecord
*/
void recordCmd(Device device, String channelId, String recordCmdStr, SipSubscribe.Event errorEvent, SipSubscribe.Event okEvent) throws InvalidArgumentException, SipException, ParseException;
-
+
/**
* 远程启动控制命令
- *
+ *
* @param device 视频设备
*/
void teleBootCmd(Device device) throws InvalidArgumentException, SipException, ParseException;
/**
* 报警布防/撤防命令
- *
+ *
* @param device 视频设备
*/
void guardCmd(Device device, String guardCmdStr, SipSubscribe.Event errorEvent, SipSubscribe.Event okEvent) throws InvalidArgumentException, SipException, ParseException;
-
+
/**
* 报警复位命令
- *
+ *
* @param device 视频设备
* @param alarmMethod 报警方式(可选)
* @param alarmType 报警类型(可选)
*/
void alarmCmd(Device device, String alarmMethod, String alarmType, SipSubscribe.Event errorEvent, SipSubscribe.Event okEvent) throws InvalidArgumentException, SipException, ParseException;
-
+
/**
* 强制关键帧命令,设备收到此命令应立刻发送一个IDR帧
- *
+ *
* @param device 视频设备
* @param channelId 预览通道
*/
@@ -230,58 +230,58 @@ public interface ISIPCommander {
/**
* 设备配置命令
- *
+ *
* @param device 视频设备
*/
void deviceConfigCmd(Device device);
-
+
/**
* 设备配置命令:basicParam
- *
+ *
* @param device 视频设备
* @param channelId 通道编码(可选)
* @param name 设备/通道名称(可选)
* @param expiration 注册过期时间(可选)
* @param heartBeatInterval 心跳间隔时间(可选)
* @param heartBeatCount 心跳超时次数(可选)
- */
+ */
void deviceBasicConfigCmd(Device device, String channelId, String name, String expiration, String heartBeatInterval, String heartBeatCount, SipSubscribe.Event errorEvent) throws InvalidArgumentException, SipException, ParseException;
/**
* 查询设备状态
- *
+ *
* @param device 视频设备
*/
void deviceStatusQuery(Device device, SipSubscribe.Event errorEvent) throws InvalidArgumentException, SipException, ParseException;
-
+
/**
* 查询设备信息
- *
+ *
* @param device 视频设备
- * @return
+ * @return
*/
void deviceInfoQuery(Device device) throws InvalidArgumentException, SipException, ParseException;
-
+
/**
* 查询目录列表
- *
+ *
* @param device 视频设备
*/
void catalogQuery(Device device, int sn, SipSubscribe.Event errorEvent) throws SipException, InvalidArgumentException, ParseException;
-
+
/**
* 查询录像信息
- *
+ *
* @param device 视频设备
* @param startTime 开始时间,格式要求:yyyy-MM-dd HH:mm:ss
* @param endTime 结束时间,格式要求:yyyy-MM-dd HH:mm:ss
* @param sn
*/
void recordInfoQuery(Device device, String channelId, String startTime, String endTime, int sn, Integer Secrecy, String type, SipSubscribe.Event okEvent, SipSubscribe.Event errorEvent) throws InvalidArgumentException, SipException, ParseException;
-
+
/**
* 查询报警信息
- *
+ *
* @param device 视频设备
* @param startPriority 报警起始级别(可选)
* @param endPriority 报警终止级别(可选)
@@ -293,33 +293,33 @@ public interface ISIPCommander {
*/
void alarmInfoQuery(Device device, String startPriority, String endPriority, String alarmMethod,
String alarmType, String startTime, String endTime, SipSubscribe.Event errorEvent) throws InvalidArgumentException, SipException, ParseException;
-
+
/**
* 查询设备配置
- *
+ *
* @param device 视频设备
* @param channelId 通道编码(可选)
* @param configType 配置类型:
*/
void deviceConfigQuery(Device device, String channelId, String configType, SipSubscribe.Event errorEvent) throws InvalidArgumentException, SipException, ParseException;
-
+
/**
* 查询设备预置位置
- *
+ *
* @param device 视频设备
*/
void presetQuery(Device device, String channelId, SipSubscribe.Event errorEvent) throws InvalidArgumentException, SipException, ParseException;
-
+
/**
* 查询移动设备位置数据
- *
+ *
* @param device 视频设备
*/
void mobilePostitionQuery(Device device, SipSubscribe.Event errorEvent) throws InvalidArgumentException, SipException, ParseException;
/**
* 订阅、取消订阅移动位置
- *
+ *
* @param device 视频设备
* @return true = 命令发送成功
*/
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 fbd9ececd..0d1bf2a8c 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
@@ -29,7 +29,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.DependsOn;
import org.springframework.stereotype.Component;
import org.springframework.util.ObjectUtils;
-import org.springframework.util.StringUtils;
import javax.sip.InvalidArgumentException;
import javax.sip.ResponseEvent;
@@ -57,7 +56,7 @@ public class SIPCommander implements ISIPCommander {
@Autowired
private SIPSender sipSender;
-
+
@Autowired
private SIPRequestHeaderProvider headerProvider;
@@ -181,7 +180,7 @@ public class SIPCommander implements ISIPCommander {
ptzXml.append("5\r\n");
ptzXml.append("\r\n");
ptzXml.append("\r\n");
-
+
Request request = headerProvider.createMessageRequest(device, ptzXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null, sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()));
sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()),request);
@@ -244,8 +243,8 @@ public class SIPCommander implements ISIPCommander {
ptzXml.append("5\r\n");
ptzXml.append("\r\n");
ptzXml.append("\r\n");
-
-
+
+
Request request = headerProvider.createMessageRequest(device, ptzXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()));
sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()),request, errorEvent, okEvent);
@@ -365,7 +364,8 @@ public class SIPCommander implements ISIPCommander {
*/
@Override
public void playbackStreamCmd(MediaServerItem mediaServerItem, SSRCInfo ssrcInfo, Device device, String channelId,
- String startTime, String endTime, InviteStreamCallback inviteStreamCallback, InviteStreamCallback hookEvent,
+ String startTime, String endTime,
+ InviteStreamCallback inviteStreamCallback, InviteStreamCallback hookEvent,
SipSubscribe.Event okEvent, SipSubscribe.Event errorEvent) throws InvalidArgumentException, SipException, ParseException {
@@ -411,7 +411,8 @@ public class SIPCommander implements ISIPCommander {
content.append("a=setup:active\r\n");
content.append("a=connection:new\r\n");
}
- } else {
+ } else
+ {
if ("TCP-PASSIVE".equalsIgnoreCase(streamMode)) {
content.append("m=video " + ssrcInfo.getPort() + " TCP/RTP/AVP 96 97 98 99\r\n");
} else if ("TCP-ACTIVE".equalsIgnoreCase(streamMode)) {
@@ -471,8 +472,9 @@ public class SIPCommander implements ISIPCommander {
*/
@Override
public void downloadStreamCmd(MediaServerItem mediaServerItem, SSRCInfo ssrcInfo, Device device, String channelId,
- String startTime, String endTime, int downloadSpeed, InviteStreamCallback inviteStreamCallback, InviteStreamCallback hookEvent,
- SipSubscribe.Event errorEvent) throws InvalidArgumentException, SipException, ParseException {
+ String startTime, String endTime, int downloadSpeed,
+ InviteStreamCallback inviteStreamCallback, InviteStreamCallback hookEvent,
+ SipSubscribe.Event errorEvent,SipSubscribe.Event okEvent) throws InvalidArgumentException, SipException, ParseException {
logger.info("{} 分配的ZLM为: {} [{}:{}]", ssrcInfo.getStream(), mediaServerItem.getId(), mediaServerItem.getIp(), ssrcInfo.getPort());
String sdpIp;
@@ -541,10 +543,11 @@ public class SIPCommander implements ISIPCommander {
content.append("a=downloadspeed:" + downloadSpeed + "\r\n");
content.append("y=" + ssrcInfo.getSsrc() + "\r\n");//ssrc
-
+
HookSubscribeForStreamChange hookSubscribe = HookSubscribeFactory.on_stream_changed("rtp", ssrcInfo.getStream(), true, null, mediaServerItem.getId());
// 添加订阅
- subscribe.addSubscribe(hookSubscribe, (MediaServerItem mediaServerItemInUse, JSONObject json) -> {
+ subscribe.addSubscribe(hookSubscribe, (MediaServerItem mediaServerItemInUse, JSONObject json) ->
+ {
hookEvent.call(new InviteStreamInfo(mediaServerItem, json,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()).getCallId(), "rtp", ssrcInfo.getStream()));
subscribe.removeSubscribe(hookSubscribe);
hookSubscribe.getContent().put("regist", false);
@@ -567,10 +570,11 @@ public class SIPCommander implements ISIPCommander {
inviteStreamCallback.call(new InviteStreamInfo(mediaServerItem, null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()).getCallId(), "rtp", ssrcInfo.getStream()));
}
- sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request, errorEvent, okEvent -> {
- ResponseEvent responseEvent = (ResponseEvent) okEvent.event;
+ sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request, errorEvent, event -> {
+ ResponseEvent responseEvent = (ResponseEvent) event.event;
SIPResponse response = (SIPResponse) responseEvent.getResponse();
streamSession.put(device.getDeviceId(), channelId, response.getCallIdHeader().getCallId(), ssrcInfo.getStream(), ssrcInfo.getSsrc(), mediaServerItem.getId(), response, VideoStreamSessionManager.SessionType.download);
+ okEvent.response(event);
});
}
@@ -628,7 +632,7 @@ public class SIPCommander implements ISIPCommander {
broadcastXml.append("" + device.getDeviceId() + "\r\n");
broadcastXml.append("\r\n");
-
+
Request request = headerProvider.createMessageRequest(device, broadcastXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()));
sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request);
@@ -648,7 +652,7 @@ public class SIPCommander implements ISIPCommander {
broadcastXml.append("" + device.getDeviceId() + "\r\n");
broadcastXml.append("\r\n");
-
+
Request request = headerProvider.createMessageRequest(device, broadcastXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()));
sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request, errorEvent);
@@ -679,7 +683,7 @@ public class SIPCommander implements ISIPCommander {
cmdXml.append("" + recordCmdStr + "\r\n");
cmdXml.append("\r\n");
-
+
Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()));
sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request, errorEvent,okEvent);
@@ -703,7 +707,7 @@ public class SIPCommander implements ISIPCommander {
cmdXml.append("Boot\r\n");
cmdXml.append("\r\n");
-
+
Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()));
sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request);
@@ -762,7 +766,7 @@ public class SIPCommander implements ISIPCommander {
}
cmdXml.append("\r\n");
-
+
Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()));
sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request, errorEvent,okEvent);
@@ -791,7 +795,7 @@ public class SIPCommander implements ISIPCommander {
cmdXml.append("Send\r\n");
cmdXml.append("\r\n");
-
+
Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()));
sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request);
@@ -802,7 +806,6 @@ public class SIPCommander implements ISIPCommander {
*
* @param device 视频设备
* @param channelId 通道id,非通道则是设备本身
- * @param frontCmd 上级平台的指令,如果存在则直接下发
* @param enabled 看守位使能:1 = 开启,0 = 关闭
* @param resetTime 自动归位时间间隔,开启看守位时使用,单位:秒(s)
* @param presetIndex 调用预置位编号,开启看守位时使用,取值范围0~255
@@ -840,7 +843,7 @@ public class SIPCommander implements ISIPCommander {
cmdXml.append("\r\n");
cmdXml.append("\r\n");
-
+
Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()));
sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request, errorEvent,okEvent);
@@ -903,7 +906,7 @@ public class SIPCommander implements ISIPCommander {
cmdXml.append("\r\n");
cmdXml.append("\r\n");
-
+
Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()));
sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request, errorEvent);
@@ -926,7 +929,7 @@ public class SIPCommander implements ISIPCommander {
catalogXml.append("" + device.getDeviceId() + "\r\n");
catalogXml.append("\r\n");
-
+
Request request = headerProvider.createMessageRequest(device, catalogXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()));
@@ -950,7 +953,7 @@ public class SIPCommander implements ISIPCommander {
catalogXml.append("" + device.getDeviceId() + "\r\n");
catalogXml.append("\r\n");
-
+
Request request = headerProvider.createMessageRequest(device, catalogXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()));
@@ -975,7 +978,7 @@ public class SIPCommander implements ISIPCommander {
catalogXml.append(" " + device.getDeviceId() + "\r\n");
catalogXml.append("\r\n");
-
+
Request request = headerProvider.createMessageRequest(device, catalogXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()));
@@ -1020,7 +1023,7 @@ public class SIPCommander implements ISIPCommander {
}
recordInfoXml.append("\r\n");
-
+
Request request = headerProvider.createMessageRequest(device, recordInfoXml.toString(),
SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()));
@@ -1071,7 +1074,7 @@ public class SIPCommander implements ISIPCommander {
}
cmdXml.append("\r\n");
-
+
Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()));
sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request, errorEvent);
@@ -1101,7 +1104,7 @@ public class SIPCommander implements ISIPCommander {
cmdXml.append("" + configType + "\r\n");
cmdXml.append("\r\n");
-
+
Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()));
sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request, errorEvent);
@@ -1128,7 +1131,7 @@ public class SIPCommander implements ISIPCommander {
}
cmdXml.append("\r\n");
-
+
Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()));
sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request, errorEvent);
@@ -1152,7 +1155,7 @@ public class SIPCommander implements ISIPCommander {
mobilePostitionXml.append("60\r\n");
mobilePostitionXml.append("\r\n");
-
+
Request request = headerProvider.createMessageRequest(device, mobilePostitionXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()));
@@ -1237,7 +1240,7 @@ public class SIPCommander implements ISIPCommander {
}
cmdXml.append("\r\n");
-
+
Request request = headerProvider.createSubscribeRequest(device, cmdXml.toString(), null, expires, "presence",sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()));
sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request);
@@ -1287,14 +1290,14 @@ public class SIPCommander implements ISIPCommander {
}
dragXml.append(cmdString);
dragXml.append("\r\n");
-
+
Request request = headerProvider.createMessageRequest(device, dragXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()));
logger.debug("拉框信令: " + request.toString());
sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()),request);
}
-
+
/**
@@ -1398,7 +1401,7 @@ public class SIPCommander implements ISIPCommander {
deviceStatusXml.append("\r\n");
deviceStatusXml.append("\r\n");
-
+
Request request = headerProvider.createMessageRequest(device, deviceStatusXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()));
sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()),request);
diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java
index b8e7c8e56..96027d4c5 100644
--- a/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java
@@ -258,7 +258,8 @@ public class PlayServiceImpl implements IPlayService {
return;
}
try {
- cmder.playStreamCmd(mediaServerItem, ssrcInfo, device, channelId, (MediaServerItem mediaServerItemInuse, JSONObject response) -> {
+ cmder.playStreamCmd(mediaServerItem, ssrcInfo, device, channelId, (MediaServerItem mediaServerItemInuse, JSONObject response) ->
+ {
logger.info("收到订阅消息: " + response.toJSONString());
dynamicTask.stop(timeOutTaskKey);
@@ -273,7 +274,8 @@ public class PlayServiceImpl implements IPlayService {
logger.info("[请求截图]: " + fileName);
zlmresTfulUtils.getSnap(mediaServerItemInuse, streamUrl, 15, 1, path, fileName);
- }, (event) -> {
+ }, (event) ->
+ {
ResponseEvent responseEvent = (ResponseEvent) event.event;
String contentString = new String(responseEvent.getResponse().getRawContent());
// 获取ssrc
@@ -322,7 +324,8 @@ public class PlayServiceImpl implements IPlayService {
}
}
- }, (event) -> {
+ }, (event) ->
+ {
dynamicTask.stop(timeOutTaskKey);
mediaServerService.closeRTPServer(mediaServerItem, ssrcInfo.getStream());
// 释放ssrc
@@ -513,7 +516,8 @@ public class PlayServiceImpl implements IPlayService {
try {
cmder.playbackStreamCmd(mediaServerItem, ssrcInfo, device, channelId, startTime, endTime, infoCallBack,
- hookEvent, eventResult -> {
+ hookEvent, eventResult ->
+ {
if (eventResult.type == SipSubscribe.EventResultType.response) {
ResponseEvent responseEvent = (ResponseEvent) eventResult.event;
String contentString = new String(responseEvent.getResponse().getRawContent());
@@ -582,6 +586,7 @@ public class PlayServiceImpl implements IPlayService {
if (device == null) {
return;
}
+ //获取录像下载的服务,配置文件中的record-assist-port不为0
MediaServerItem newMediaServerItem = getNewMediaServerItemHasAssist(device);
if (newMediaServerItem == null) {
PlayBackResult downloadResult = new PlayBackResult<>();
@@ -651,7 +656,59 @@ public class PlayServiceImpl implements IPlayService {
downloadResult.setMediaServerItem(inviteStreamInfo.getMediaServerItem());
downloadResult.setResponse(inviteStreamInfo.getResponse());
hookCallBack.call(downloadResult);
- }, errorEvent);
+ }, errorEvent, eventResult ->
+ {
+ if (eventResult.type == SipSubscribe.EventResultType.response) {
+ ResponseEvent responseEvent = (ResponseEvent) eventResult.event;
+ String contentString = new String(responseEvent.getResponse().getRawContent());
+ // 获取ssrc
+ int ssrcIndex = contentString.indexOf("y=");
+ // 检查是否有y字段
+ if (ssrcIndex >= 0) {
+ //ssrc规定长度为10字节,不取余下长度以避免后续还有“f=”字段 TODO 后续对不规范的非10位ssrc兼容
+ String ssrcInResponse = contentString.substring(ssrcIndex + 2, ssrcIndex + 12);
+ // 查询到ssrc不一致且开启了ssrc校验则需要针对处理
+ if (ssrcInfo.getSsrc().equals(ssrcInResponse)) {
+ return;
+ }
+ logger.info("[回放消息] 收到invite 200, 发现下级自定义了ssrc: {}", ssrcInResponse);
+ if (!mediaServerItem.isRtpEnable() || device.isSsrcCheck()) {
+ logger.info("[回放消息] SSRC修正 {}->{}", ssrcInfo.getSsrc(), ssrcInResponse);
+
+ if (!mediaServerItem.getSsrcConfig().checkSsrc(ssrcInResponse)) {
+ // ssrc 不可用
+ // 释放ssrc
+ mediaServerService.releaseSsrc(mediaServerItem.getId(), ssrcInfo.getSsrc());
+ streamSession.remove(device.getDeviceId(), channelId, ssrcInfo.getStream());
+ eventResult.msg = "下级自定义了ssrc,但是此ssrc不可用";
+ eventResult.statusCode = 400;
+ errorEvent.response(eventResult);
+ return;
+ }
+
+ // 单端口模式streamId也有变化,需要重新设置监听
+ if (!mediaServerItem.isRtpEnable()) {
+ // 添加订阅
+ HookSubscribeForStreamChange hookSubscribe = HookSubscribeFactory.on_stream_changed("rtp", ssrcInfo.getStream(), true, "rtsp", mediaServerItem.getId());
+ subscribe.removeSubscribe(hookSubscribe);
+ hookSubscribe.getContent().put("stream", String.format("%08x", Integer.parseInt(ssrcInResponse)).toUpperCase());
+ subscribe.addSubscribe(hookSubscribe, (MediaServerItem mediaServerItemInUse, JSONObject response) -> {
+ logger.info("[ZLM HOOK] ssrc修正后收到订阅消息: " + response.toJSONString());
+ dynamicTask.stop(downLoadTimeOutTaskKey);
+ // hook响应,TODO 此处待处理
+// onPublishHandlerForPlayback(mediaServerItemInUse, response, device.getDeviceId(), channelId, playBackCallback);
+// hookCallBack.call(new InviteStreamInfo(mediaServerItem, null, eventResult.callId, "rtp", ssrcInfo.getStream()));
+ });
+ }
+ // 关闭rtp server
+ mediaServerService.closeRTPServer(mediaServerItem, ssrcInfo.getStream());
+ // 重新开启ssrc server
+ mediaServerService.openRTPServer(mediaServerItem, ssrcInfo.getStream(), ssrcInResponse, device.isSsrcCheck(), true, ssrcInfo.getPort());
+ }
+ }
+ }
+
+ });
} catch (InvalidArgumentException | SipException | ParseException e) {
logger.error("[命令发送失败] 录像下载: {}", e.getMessage());
From 9c349789633a27ec0cecc2499933012492807642 Mon Sep 17 00:00:00 2001
From: wangyimeng <421132955@qq.com>
Date: Fri, 3 Mar 2023 20:59:56 +0800
Subject: [PATCH 03/68] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=9F=A5=E8=AF=A2?=
=?UTF-8?q?=E8=AE=BE=E5=A4=87=E9=80=9A=E9=81=93=E7=9B=AE=E5=BD=95=E6=97=B6?=
=?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=8A=A5=E9=94=99=E7=9A=84=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../genersoft/iot/vmp/storager/dao/DeviceChannelMapper.java | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceChannelMapper.java b/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceChannelMapper.java
index 83f933433..9e2b1b7d0 100644
--- a/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceChannelMapper.java
+++ b/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceChannelMapper.java
@@ -316,10 +316,10 @@ public interface DeviceChannelMapper {
"select * " +
"from device_channel " +
"where deviceId=#{deviceId}" +
- " and parentId = #{parentId} or left(channelId, #{parentId.length()}) = #{parentId} and length(channelId)=#{length} " +
+ " and parentId = #{parentId} or left(channelId, LENGTH(#{parentId})) = #{parentId} and length(channelId)=#{length} " +
" and parentId = #{parentId} or length(channelId)=#{length} " +
" and parentId = #{parentId} " +
- " and parentId = #{parentId} or left(channelId, #{parentId.length()}) = #{parentId} " +
+ " and parentId = #{parentId} or left(channelId, LENGTH(#{parentId})) = #{parentId} " +
" "})
List getChannelsWithCivilCodeAndLength(String deviceId, String parentId, Integer length);
From a0cdc7c59d37aedc2538bfb6db8559286e4969b5 Mon Sep 17 00:00:00 2001
From: wangyimeng <421132955@qq.com>
Date: Fri, 3 Mar 2023 21:01:43 +0800
Subject: [PATCH 04/68] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=9F=A5=E8=AF=A2?=
=?UTF-8?q?=E5=8E=86=E5=8F=B2=E5=BD=95=E5=83=8F=E6=97=A0=E8=AE=B0=E5=BD=95?=
=?UTF-8?q?=E6=97=B6=E6=8A=A5=E9=94=99=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../response/cmd/RecordInfoResponseMessageHandler.java | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/RecordInfoResponseMessageHandler.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/RecordInfoResponseMessageHandler.java
index 6d8d8f56e..9d28ec527 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/RecordInfoResponseMessageHandler.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/RecordInfoResponseMessageHandler.java
@@ -94,7 +94,8 @@ public class RecordInfoResponseMessageHandler extends SIPRequestProcessorParent
recordInfo.setCount(sumNum);
eventPublisher.recordEndEventPush(recordInfo);
releaseRequest(device.getDeviceId(), sn,recordInfo);
- } else {
+ } else
+ {
Iterator recordListIterator = recordListElement.elementIterator();
if (recordListIterator != null) {
List recordList = new ArrayList<>();
@@ -162,9 +163,12 @@ public class RecordInfoResponseMessageHandler extends SIPRequestProcessorParent
public void releaseRequest(String deviceId, String sn,RecordInfo recordInfo){
String key = DeferredResultHolder.CALLBACK_CMD_RECORDINFO + deviceId + sn;
+ if(null!=recordInfo.getRecordList()){
+ Collections.sort(recordInfo.getRecordList());
+ }else{
+ recordInfo.setRecordList(new ArrayList<>());
+ }
// 对数据进行排序
- Collections.sort(recordInfo.getRecordList());
-
RequestMessage msg = new RequestMessage();
msg.setKey(key);
msg.setData(recordInfo);
From c662a530989706b705142743e0095d5b7f331751 Mon Sep 17 00:00:00 2001
From: wangyimeng <421132955@qq.com>
Date: Sat, 4 Mar 2023 20:47:48 +0800
Subject: [PATCH 05/68] =?UTF-8?q?=E8=AF=B7=E6=B1=82=E5=8E=86=E5=8F=B2?=
=?UTF-8?q?=E5=AA=92=E4=BD=93=E4=B8=8B=E8=BD=BD=E5=A2=9E=E5=8A=A0=E5=9B=9E?=
=?UTF-8?q?=E5=A4=8D=E4=BA=8B=E4=BB=B6=E5=A4=84=E7=90=86ssrc=E4=B8=8E?=
=?UTF-8?q?=E4=B8=8B=E7=BA=A7=E4=B8=8D=E4=B8=80=E8=87=B4=E6=83=85=E5=86=B5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../gb28181/transmit/cmd/ISIPCommander.java | 105 +++++++++---------
.../transmit/cmd/impl/SIPCommander.java | 59 +++++-----
.../iot/vmp/service/impl/PlayServiceImpl.java | 13 +--
3 files changed, 84 insertions(+), 93 deletions(-)
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/ISIPCommander.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/ISIPCommander.java
index 6aa20e4da..fdd2288f9 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/ISIPCommander.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/ISIPCommander.java
@@ -15,26 +15,26 @@ import javax.sip.InvalidArgumentException;
import javax.sip.SipException;
import java.text.ParseException;
-/**
- * @description:设备能力接口,用于定义设备的控制、查询能力
+/**
+ * @description:设备能力接口,用于定义设备的控制、查询能力
* @author: swwheihei
- * @date: 2020年5月3日 下午9:16:34
+ * @date: 2020年5月3日 下午9:16:34
*/
public interface ISIPCommander {
/**
* 云台方向放控制,使用配置文件中的默认镜头移动速度
- *
+ *
* @param device 控制设备
* @param channelId 预览通道
* @param leftRight 镜头左移右移 0:停止 1:左移 2:右移
* @param upDown 镜头上移下移 0:停止 1:上移 2:下移
*/
void ptzdirectCmd(Device device,String channelId,int leftRight, int upDown) throws InvalidArgumentException, ParseException, SipException;
-
+
/**
* 云台方向放控制
- *
+ *
* @param device 控制设备
* @param channelId 预览通道
* @param leftRight 镜头左移右移 0:停止 1:左移 2:右移
@@ -42,28 +42,28 @@ public interface ISIPCommander {
* @param moveSpeed 镜头移动速度
*/
void ptzdirectCmd(Device device,String channelId,int leftRight, int upDown, int moveSpeed) throws InvalidArgumentException, ParseException, SipException;
-
+
/**
* 云台缩放控制,使用配置文件中的默认镜头缩放速度
- *
+ *
* @param device 控制设备
* @param channelId 预览通道
* @param inOut 镜头放大缩小 0:停止 1:缩小 2:放大
*/
void ptzZoomCmd(Device device,String channelId,int inOut) throws InvalidArgumentException, ParseException, SipException;
-
+
/**
* 云台缩放控制
- *
+ *
* @param device 控制设备
* @param channelId 预览通道
* @param inOut 镜头放大缩小 0:停止 1:缩小 2:放大
*/
void ptzZoomCmd(Device device,String channelId,int inOut, int moveSpeed) throws InvalidArgumentException, ParseException, SipException;
-
+
/**
* 云台控制,支持方向与缩放控制
- *
+ *
* @param device 控制设备
* @param channelId 预览通道
* @param leftRight 镜头左移右移 0:停止 1:左移 2:右移
@@ -73,10 +73,10 @@ public interface ISIPCommander {
* @param zoomSpeed 镜头缩放速度
*/
void ptzCmd(Device device,String channelId,int leftRight, int upDown, int inOut, int moveSpeed, int zoomSpeed) throws InvalidArgumentException, SipException, ParseException;
-
+
/**
* 前端控制,包括PTZ指令、FI指令、预置位指令、巡航指令、扫描指令和辅助开关指令
- *
+ *
* @param device 控制设备
* @param channelId 预览通道
* @param cmdCode 指令码
@@ -85,7 +85,7 @@ public interface ISIPCommander {
* @param combineCode2 组合码2
*/
void frontEndCmd(Device device, String channelId, int cmdCode, int parameter1, int parameter2, int combineCode2) throws SipException, InvalidArgumentException, ParseException;
-
+
/**
* 前端控制指令(用于转发上级指令)
* @param device 控制设备
@@ -103,7 +103,7 @@ public interface ISIPCommander {
/**
* 请求回放视频流
- *
+ *
* @param device 视频设备
* @param channelId 预览通道
* @param startTime 开始时间,格式要求:yyyy-MM-dd HH:mm:ss
@@ -113,13 +113,13 @@ public interface ISIPCommander {
/**
* 请求历史媒体下载
- *
+ *
* @param device 视频设备
* @param channelId 预览通道
* @param startTime 开始时间,格式要求:yyyy-MM-dd HH:mm:ss
* @param endTime 结束时间,格式要求:yyyy-MM-dd HH:mm:ss
* @param downloadSpeed 下载倍速参数
- */
+ */
void downloadStreamCmd(MediaServerItem mediaServerItem, SSRCInfo ssrcInfo, Device device, String channelId,
String startTime, String endTime, int downloadSpeed, InviteStreamCallback inviteStreamCallback, InviteStreamCallback hookEvent,
SipSubscribe.Event errorEvent,SipSubscribe.Event okEvent) throws InvalidArgumentException, SipException, ParseException;
@@ -150,7 +150,7 @@ public interface ISIPCommander {
* 回放倍速播放
*/
void playSpeedCmd(Device device, StreamInfo streamInfo, Double speed) throws InvalidArgumentException, ParseException, SipException;
-
+
/**
* 回放控制
* @param device
@@ -162,55 +162,55 @@ public interface ISIPCommander {
/**
* 语音广播
- *
+ *
* @param device 视频设备
* @param channelId 预览通道
*/
void audioBroadcastCmd(Device device,String channelId);
-
+
/**
* 语音广播
- *
+ *
* @param device 视频设备
*/
void audioBroadcastCmd(Device device, SipSubscribe.Event okEvent) throws InvalidArgumentException, SipException, ParseException;
void audioBroadcastCmd(Device device) throws InvalidArgumentException, SipException, ParseException;
-
+
/**
* 音视频录像控制
- *
+ *
* @param device 视频设备
* @param channelId 预览通道
* @param recordCmdStr 录像命令:Record / StopRecord
*/
void recordCmd(Device device, String channelId, String recordCmdStr, SipSubscribe.Event errorEvent, SipSubscribe.Event okEvent) throws InvalidArgumentException, SipException, ParseException;
-
+
/**
* 远程启动控制命令
- *
+ *
* @param device 视频设备
*/
void teleBootCmd(Device device) throws InvalidArgumentException, SipException, ParseException;
/**
* 报警布防/撤防命令
- *
+ *
* @param device 视频设备
*/
void guardCmd(Device device, String guardCmdStr, SipSubscribe.Event errorEvent, SipSubscribe.Event okEvent) throws InvalidArgumentException, SipException, ParseException;
-
+
/**
* 报警复位命令
- *
+ *
* @param device 视频设备
* @param alarmMethod 报警方式(可选)
* @param alarmType 报警类型(可选)
*/
void alarmCmd(Device device, String alarmMethod, String alarmType, SipSubscribe.Event errorEvent, SipSubscribe.Event okEvent) throws InvalidArgumentException, SipException, ParseException;
-
+
/**
* 强制关键帧命令,设备收到此命令应立刻发送一个IDR帧
- *
+ *
* @param device 视频设备
* @param channelId 预览通道
*/
@@ -221,7 +221,6 @@ public interface ISIPCommander {
*
* @param device 视频设备
* @param channelId 通道id,非通道则是设备本身
- * @param frontCmd 上级平台的指令,如果存在则直接下发
* @param enabled 看守位使能:1 = 开启,0 = 关闭
* @param resetTime 自动归位时间间隔,开启看守位时使用,单位:秒(s)
* @param presetIndex 调用预置位编号,开启看守位时使用,取值范围0~255
@@ -230,58 +229,58 @@ public interface ISIPCommander {
/**
* 设备配置命令
- *
+ *
* @param device 视频设备
*/
void deviceConfigCmd(Device device);
-
+
/**
* 设备配置命令:basicParam
- *
+ *
* @param device 视频设备
* @param channelId 通道编码(可选)
* @param name 设备/通道名称(可选)
* @param expiration 注册过期时间(可选)
* @param heartBeatInterval 心跳间隔时间(可选)
* @param heartBeatCount 心跳超时次数(可选)
- */
+ */
void deviceBasicConfigCmd(Device device, String channelId, String name, String expiration, String heartBeatInterval, String heartBeatCount, SipSubscribe.Event errorEvent) throws InvalidArgumentException, SipException, ParseException;
/**
* 查询设备状态
- *
+ *
* @param device 视频设备
*/
void deviceStatusQuery(Device device, SipSubscribe.Event errorEvent) throws InvalidArgumentException, SipException, ParseException;
-
+
/**
* 查询设备信息
- *
+ *
* @param device 视频设备
- * @return
+ * @return
*/
void deviceInfoQuery(Device device) throws InvalidArgumentException, SipException, ParseException;
-
+
/**
* 查询目录列表
- *
+ *
* @param device 视频设备
*/
void catalogQuery(Device device, int sn, SipSubscribe.Event errorEvent) throws SipException, InvalidArgumentException, ParseException;
-
+
/**
* 查询录像信息
- *
+ *
* @param device 视频设备
* @param startTime 开始时间,格式要求:yyyy-MM-dd HH:mm:ss
* @param endTime 结束时间,格式要求:yyyy-MM-dd HH:mm:ss
* @param sn
*/
void recordInfoQuery(Device device, String channelId, String startTime, String endTime, int sn, Integer Secrecy, String type, SipSubscribe.Event okEvent, SipSubscribe.Event errorEvent) throws InvalidArgumentException, SipException, ParseException;
-
+
/**
* 查询报警信息
- *
+ *
* @param device 视频设备
* @param startPriority 报警起始级别(可选)
* @param endPriority 报警终止级别(可选)
@@ -293,33 +292,33 @@ public interface ISIPCommander {
*/
void alarmInfoQuery(Device device, String startPriority, String endPriority, String alarmMethod,
String alarmType, String startTime, String endTime, SipSubscribe.Event errorEvent) throws InvalidArgumentException, SipException, ParseException;
-
+
/**
* 查询设备配置
- *
+ *
* @param device 视频设备
* @param channelId 通道编码(可选)
* @param configType 配置类型:
*/
void deviceConfigQuery(Device device, String channelId, String configType, SipSubscribe.Event errorEvent) throws InvalidArgumentException, SipException, ParseException;
-
+
/**
* 查询设备预置位置
- *
+ *
* @param device 视频设备
*/
void presetQuery(Device device, String channelId, SipSubscribe.Event errorEvent) throws InvalidArgumentException, SipException, ParseException;
-
+
/**
* 查询移动设备位置数据
- *
+ *
* @param device 视频设备
*/
void mobilePostitionQuery(Device device, SipSubscribe.Event errorEvent) throws InvalidArgumentException, SipException, ParseException;
/**
* 订阅、取消订阅移动位置
- *
+ *
* @param device 视频设备
* @return true = 命令发送成功
*/
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 0d1bf2a8c..5fd88282b 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
@@ -56,7 +56,7 @@ public class SIPCommander implements ISIPCommander {
@Autowired
private SIPSender sipSender;
-
+
@Autowired
private SIPRequestHeaderProvider headerProvider;
@@ -180,7 +180,7 @@ public class SIPCommander implements ISIPCommander {
ptzXml.append("5\r\n");
ptzXml.append("\r\n");
ptzXml.append("\r\n");
-
+
Request request = headerProvider.createMessageRequest(device, ptzXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null, sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()));
sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()),request);
@@ -243,8 +243,8 @@ public class SIPCommander implements ISIPCommander {
ptzXml.append("5\r\n");
ptzXml.append("\r\n");
ptzXml.append("\r\n");
-
-
+
+
Request request = headerProvider.createMessageRequest(device, ptzXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()));
sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()),request, errorEvent, okEvent);
@@ -364,8 +364,7 @@ public class SIPCommander implements ISIPCommander {
*/
@Override
public void playbackStreamCmd(MediaServerItem mediaServerItem, SSRCInfo ssrcInfo, Device device, String channelId,
- String startTime, String endTime,
- InviteStreamCallback inviteStreamCallback, InviteStreamCallback hookEvent,
+ String startTime, String endTime, InviteStreamCallback inviteStreamCallback, InviteStreamCallback hookEvent,
SipSubscribe.Event okEvent, SipSubscribe.Event errorEvent) throws InvalidArgumentException, SipException, ParseException {
@@ -411,8 +410,7 @@ public class SIPCommander implements ISIPCommander {
content.append("a=setup:active\r\n");
content.append("a=connection:new\r\n");
}
- } else
- {
+ } else {
if ("TCP-PASSIVE".equalsIgnoreCase(streamMode)) {
content.append("m=video " + ssrcInfo.getPort() + " TCP/RTP/AVP 96 97 98 99\r\n");
} else if ("TCP-ACTIVE".equalsIgnoreCase(streamMode)) {
@@ -543,11 +541,10 @@ public class SIPCommander implements ISIPCommander {
content.append("a=downloadspeed:" + downloadSpeed + "\r\n");
content.append("y=" + ssrcInfo.getSsrc() + "\r\n");//ssrc
-
+
HookSubscribeForStreamChange hookSubscribe = HookSubscribeFactory.on_stream_changed("rtp", ssrcInfo.getStream(), true, null, mediaServerItem.getId());
// 添加订阅
- subscribe.addSubscribe(hookSubscribe, (MediaServerItem mediaServerItemInUse, JSONObject json) ->
- {
+ subscribe.addSubscribe(hookSubscribe, (MediaServerItem mediaServerItemInUse, JSONObject json) -> {
hookEvent.call(new InviteStreamInfo(mediaServerItem, json,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()).getCallId(), "rtp", ssrcInfo.getStream()));
subscribe.removeSubscribe(hookSubscribe);
hookSubscribe.getContent().put("regist", false);
@@ -632,7 +629,7 @@ public class SIPCommander implements ISIPCommander {
broadcastXml.append("" + device.getDeviceId() + "\r\n");
broadcastXml.append("\r\n");
-
+
Request request = headerProvider.createMessageRequest(device, broadcastXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()));
sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request);
@@ -652,7 +649,7 @@ public class SIPCommander implements ISIPCommander {
broadcastXml.append("" + device.getDeviceId() + "\r\n");
broadcastXml.append("\r\n");
-
+
Request request = headerProvider.createMessageRequest(device, broadcastXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()));
sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request, errorEvent);
@@ -683,7 +680,7 @@ public class SIPCommander implements ISIPCommander {
cmdXml.append("" + recordCmdStr + "\r\n");
cmdXml.append("\r\n");
-
+
Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()));
sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request, errorEvent,okEvent);
@@ -707,7 +704,7 @@ public class SIPCommander implements ISIPCommander {
cmdXml.append("Boot\r\n");
cmdXml.append("\r\n");
-
+
Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()));
sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request);
@@ -766,7 +763,7 @@ public class SIPCommander implements ISIPCommander {
}
cmdXml.append("\r\n");
-
+
Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()));
sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request, errorEvent,okEvent);
@@ -795,7 +792,7 @@ public class SIPCommander implements ISIPCommander {
cmdXml.append("Send\r\n");
cmdXml.append("\r\n");
-
+
Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()));
sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request);
@@ -843,7 +840,7 @@ public class SIPCommander implements ISIPCommander {
cmdXml.append("\r\n");
cmdXml.append("\r\n");
-
+
Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()));
sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request, errorEvent,okEvent);
@@ -906,7 +903,7 @@ public class SIPCommander implements ISIPCommander {
cmdXml.append("\r\n");
cmdXml.append("\r\n");
-
+
Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()));
sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request, errorEvent);
@@ -929,7 +926,7 @@ public class SIPCommander implements ISIPCommander {
catalogXml.append("" + device.getDeviceId() + "\r\n");
catalogXml.append("\r\n");
-
+
Request request = headerProvider.createMessageRequest(device, catalogXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()));
@@ -953,7 +950,7 @@ public class SIPCommander implements ISIPCommander {
catalogXml.append("" + device.getDeviceId() + "\r\n");
catalogXml.append("\r\n");
-
+
Request request = headerProvider.createMessageRequest(device, catalogXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()));
@@ -978,7 +975,7 @@ public class SIPCommander implements ISIPCommander {
catalogXml.append(" " + device.getDeviceId() + "\r\n");
catalogXml.append("\r\n");
-
+
Request request = headerProvider.createMessageRequest(device, catalogXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()));
@@ -1023,7 +1020,7 @@ public class SIPCommander implements ISIPCommander {
}
recordInfoXml.append("\r\n");
-
+
Request request = headerProvider.createMessageRequest(device, recordInfoXml.toString(),
SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()));
@@ -1074,7 +1071,7 @@ public class SIPCommander implements ISIPCommander {
}
cmdXml.append("\r\n");
-
+
Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()));
sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request, errorEvent);
@@ -1104,7 +1101,7 @@ public class SIPCommander implements ISIPCommander {
cmdXml.append("" + configType + "\r\n");
cmdXml.append("\r\n");
-
+
Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()));
sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request, errorEvent);
@@ -1131,7 +1128,7 @@ public class SIPCommander implements ISIPCommander {
}
cmdXml.append("\r\n");
-
+
Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()));
sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request, errorEvent);
@@ -1155,7 +1152,7 @@ public class SIPCommander implements ISIPCommander {
mobilePostitionXml.append("60\r\n");
mobilePostitionXml.append("\r\n");
-
+
Request request = headerProvider.createMessageRequest(device, mobilePostitionXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()));
@@ -1240,7 +1237,7 @@ public class SIPCommander implements ISIPCommander {
}
cmdXml.append("\r\n");
-
+
Request request = headerProvider.createSubscribeRequest(device, cmdXml.toString(), null, expires, "presence",sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()));
sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request);
@@ -1290,14 +1287,14 @@ public class SIPCommander implements ISIPCommander {
}
dragXml.append(cmdString);
dragXml.append("\r\n");
-
+
Request request = headerProvider.createMessageRequest(device, dragXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()));
logger.debug("拉框信令: " + request.toString());
sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()),request);
}
-
+
/**
@@ -1401,7 +1398,7 @@ public class SIPCommander implements ISIPCommander {
deviceStatusXml.append("\r\n");
deviceStatusXml.append("\r\n");
-
+
Request request = headerProvider.createMessageRequest(device, deviceStatusXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()));
sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()),request);
diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java
index 96027d4c5..c03ab62e9 100644
--- a/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java
@@ -258,8 +258,7 @@ public class PlayServiceImpl implements IPlayService {
return;
}
try {
- cmder.playStreamCmd(mediaServerItem, ssrcInfo, device, channelId, (MediaServerItem mediaServerItemInuse, JSONObject response) ->
- {
+ cmder.playStreamCmd(mediaServerItem, ssrcInfo, device, channelId, (MediaServerItem mediaServerItemInuse, JSONObject response) -> {
logger.info("收到订阅消息: " + response.toJSONString());
dynamicTask.stop(timeOutTaskKey);
@@ -274,8 +273,7 @@ public class PlayServiceImpl implements IPlayService {
logger.info("[请求截图]: " + fileName);
zlmresTfulUtils.getSnap(mediaServerItemInuse, streamUrl, 15, 1, path, fileName);
- }, (event) ->
- {
+ }, (event) -> {
ResponseEvent responseEvent = (ResponseEvent) event.event;
String contentString = new String(responseEvent.getResponse().getRawContent());
// 获取ssrc
@@ -324,8 +322,7 @@ public class PlayServiceImpl implements IPlayService {
}
}
- }, (event) ->
- {
+ }, (event) -> {
dynamicTask.stop(timeOutTaskKey);
mediaServerService.closeRTPServer(mediaServerItem, ssrcInfo.getStream());
// 释放ssrc
@@ -516,8 +513,7 @@ public class PlayServiceImpl implements IPlayService {
try {
cmder.playbackStreamCmd(mediaServerItem, ssrcInfo, device, channelId, startTime, endTime, infoCallBack,
- hookEvent, eventResult ->
- {
+ hookEvent, eventResult -> {
if (eventResult.type == SipSubscribe.EventResultType.response) {
ResponseEvent responseEvent = (ResponseEvent) eventResult.event;
String contentString = new String(responseEvent.getResponse().getRawContent());
@@ -586,7 +582,6 @@ public class PlayServiceImpl implements IPlayService {
if (device == null) {
return;
}
- //获取录像下载的服务,配置文件中的record-assist-port不为0
MediaServerItem newMediaServerItem = getNewMediaServerItemHasAssist(device);
if (newMediaServerItem == null) {
PlayBackResult downloadResult = new PlayBackResult<>();
From 2177e9dbf988188297b416dc78b0a4a587b0fdd7 Mon Sep 17 00:00:00 2001
From: wangyimeng <421132955@qq.com>
Date: Sat, 4 Mar 2023 20:55:48 +0800
Subject: [PATCH 06/68] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=9F=A5=E8=AF=A2?=
=?UTF-8?q?=E5=8E=86=E5=8F=B2=E5=BD=95=E5=83=8F=E6=97=A0=E8=AE=B0=E5=BD=95?=
=?UTF-8?q?=E6=97=B6=E6=8A=A5=E9=94=99=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../message/response/cmd/RecordInfoResponseMessageHandler.java | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/RecordInfoResponseMessageHandler.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/RecordInfoResponseMessageHandler.java
index 9d28ec527..817455fc8 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/RecordInfoResponseMessageHandler.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/RecordInfoResponseMessageHandler.java
@@ -94,8 +94,7 @@ public class RecordInfoResponseMessageHandler extends SIPRequestProcessorParent
recordInfo.setCount(sumNum);
eventPublisher.recordEndEventPush(recordInfo);
releaseRequest(device.getDeviceId(), sn,recordInfo);
- } else
- {
+ } else {
Iterator recordListIterator = recordListElement.elementIterator();
if (recordListIterator != null) {
List recordList = new ArrayList<>();
From a7c3cf531640bb59aa90cb476b8c21db97f41ddb Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: Sun, 5 Mar 2023 09:53:26 +0800
Subject: [PATCH 07/68] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=B7=A8=E5=9F=9F?=
=?UTF-8?q?=E9=85=8D=E7=BD=AE=EF=BC=8C=E6=94=AF=E6=8C=81=E5=90=8C=E5=9F=9F?=
=?UTF-8?q?=E7=9A=84=E5=89=8D=E5=90=8E=E7=AB=AF=E5=88=86=E7=A6=BB=E9=83=A8?=
=?UTF-8?q?=E7=BD=B2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
doc/_content/ability/gis.md | 2 +-
.../genersoft/iot/vmp/conf/ApiAccessFilter.java | 11 ++++++++---
.../AnonymousAuthenticationEntryPoint.java | 6 ++++--
.../iot/vmp/media/zlm/ZLMHttpHookListener.java | 2 ++
.../MobilePosition/MobilePositionController.java | 2 +-
.../gb28181/SseController/SseController.java | 2 +-
.../vmanager/gb28181/alarm/AlarmController.java | 8 +-------
.../vmanager/gb28181/device/DeviceConfig.java | 5 +----
.../vmanager/gb28181/device/DeviceControl.java | 2 +-
.../vmp/vmanager/gb28181/device/DeviceQuery.java | 2 +-
.../gb28181/gbStream/GbStreamController.java | 2 +-
.../vmanager/gb28181/media/MediaController.java | 2 +-
.../gb28181/platform/PlatformController.java | 2 +-
.../vmanager/gb28181/play/PlayController.java | 2 +-
.../gb28181/playback/PlaybackController.java | 2 +-
.../vmp/vmanager/gb28181/ptz/PtzController.java | 16 +++++++---------
.../gb28181/record/GBRecordController.java | 2 +-
.../iot/vmp/vmanager/log/LogController.java | 9 +--------
.../vmp/vmanager/record/RecordController.java | 2 +-
.../vmp/vmanager/server/ServerController.java | 12 +++---------
.../streamProxy/StreamProxyController.java | 2 +-
.../streamPush/StreamPushController.java | 2 +-
.../iot/vmp/vmanager/user/RoleController.java | 6 +-----
.../iot/vmp/vmanager/user/UserController.java | 2 +-
.../vmp/web/gb28181/ApiControlController.java | 2 +-
.../iot/vmp/web/gb28181/ApiController.java | 3 +--
.../iot/vmp/web/gb28181/ApiDeviceController.java | 2 +-
.../iot/vmp/web/gb28181/ApiStreamController.java | 2 +-
.../iot/vmp/web/gb28181/AuthController.java | 2 +-
web_src/build/utils.js | 3 +--
web_src/config/index.js | 10 +++++-----
web_src/index.html | 2 +-
web_src/src/components/CloudRecord.vue | 4 ++--
web_src/src/components/CloudRecordDetail.vue | 10 +++++-----
web_src/src/components/DeviceList.vue | 10 +++++-----
web_src/src/components/GBRecordDetail.vue | 16 ++++++++--------
web_src/src/components/Login.vue | 2 +-
web_src/src/components/ParentPlatformList.vue | 4 ++--
web_src/src/components/PushVideoList.vue | 10 +++++-----
web_src/src/components/StreamProxyList.vue | 12 ++++++------
web_src/src/components/UserManager.vue | 4 ++--
web_src/src/components/channelList.vue | 12 ++++++------
web_src/src/components/console.vue | 8 ++++----
.../src/components/dialog/MediaServerEdit.vue | 2 +-
.../src/components/dialog/StreamProxyEdit.vue | 8 ++++----
.../components/dialog/SyncChannelProgress.vue | 2 +-
web_src/src/components/dialog/addUser.vue | 4 ++--
web_src/src/components/dialog/catalogEdit.vue | 2 +-
web_src/src/components/dialog/changePassword.vue | 2 +-
.../components/dialog/changePasswordForAdmin.vue | 2 +-
web_src/src/components/dialog/changePushKey.vue | 2 +-
.../src/components/dialog/channelMapInfobox.vue | 2 +-
web_src/src/components/dialog/chooseChannel.vue | 2 +-
.../dialog/chooseChannelForCatalog.vue | 8 ++++----
.../src/components/dialog/chooseChannelForGb.vue | 10 +++++-----
.../components/dialog/chooseChannelForStream.vue | 10 +++++-----
web_src/src/components/dialog/deviceEdit.vue | 2 +-
web_src/src/components/dialog/devicePlayer.vue | 14 +++++++-------
web_src/src/components/dialog/getCatalog.vue | 4 ++--
web_src/src/components/dialog/importChannel.vue | 2 +-
web_src/src/components/dialog/onvifEdit.vue | 2 +-
web_src/src/components/dialog/platformEdit.vue | 6 +++---
web_src/src/components/dialog/pushStreamEdit.vue | 6 +++---
web_src/src/components/dialog/queryTrace.vue | 2 +-
web_src/src/components/dialog/recordDownload.vue | 8 ++++----
web_src/src/components/live.vue | 2 +-
web_src/src/components/map.vue | 2 +-
web_src/src/components/service/DeviceService.js | 10 +++++-----
web_src/src/components/service/MediaServer.js | 14 +++++++-------
web_src/src/main.js | 8 ++++----
web_src/static/js/{mapConfig.js => config.js} | 3 +++
71 files changed, 173 insertions(+), 191 deletions(-)
rename web_src/static/js/{mapConfig.js => config.js} (96%)
diff --git a/doc/_content/ability/gis.md b/doc/_content/ability/gis.md
index 8796dba05..f77a428c0 100644
--- a/doc/_content/ability/gis.md
+++ b/doc/_content/ability/gis.md
@@ -14,7 +14,7 @@ WVP提供了简单的电子地图用于设备的定位以及移动设备的轨
PS: 目前的底图仅用用作演示和学习,商用情况请自行购买授权使用。
### 更换底图以及底图配置
-目前WVP支持使用了更换底图,配置文件在web_src/static/js/mapConfig.js,请修改后重新编译前端文件。
+目前WVP支持使用了更换底图,配置文件在web_src/static/js/config.js,请修改后重新编译前端文件。
```javascript
window.mapParam = {
// 开启/关闭地图功能
diff --git a/src/main/java/com/genersoft/iot/vmp/conf/ApiAccessFilter.java b/src/main/java/com/genersoft/iot/vmp/conf/ApiAccessFilter.java
index 7133e14eb..e30b6db31 100644
--- a/src/main/java/com/genersoft/iot/vmp/conf/ApiAccessFilter.java
+++ b/src/main/java/com/genersoft/iot/vmp/conf/ApiAccessFilter.java
@@ -48,6 +48,13 @@ public class ApiAccessFilter extends OncePerRequestFilter {
long start = System.currentTimeMillis(); // 请求进入时间
String uriName = ApiSaveConstant.getVal(servletRequest.getRequestURI());
+ String origin = servletRequest.getHeader("Origin");
+ servletResponse.setContentType("application/json;charset=UTF-8");
+ servletResponse.setHeader("Access-Control-Allow-Origin", origin != null ? origin : "*");
+ servletResponse.setHeader("Access-Control-Allow-Credentials", "true");
+ servletResponse.setHeader("Access-Control-Allow-Methods", "POST, GET, PATCH, DELETE, PUT");
+ servletResponse.setHeader("Access-Control-Max-Age", "3600");
+ servletResponse.setHeader("Access-Control-Allow-Headers", "token,Content-Type,Content-Length, Authorization, Accept,X-Requested-With,domain,zdy");
filterChain.doFilter(servletRequest, servletResponse);
if (uriName != null && userSetting != null && userSetting.getLogInDatebase() != null && userSetting.getLogInDatebase()) {
@@ -65,9 +72,7 @@ public class ApiAccessFilter extends OncePerRequestFilter {
logDto.setUri(servletRequest.getRequestURI());
logDto.setCreateTime(DateUtil.getNow());
logService.add(logDto);
-// logger.warn("[Api Access] [{}] [{}] [{}] [{}] [{}] {}ms",
-// uriName, servletRequest.getMethod(), servletRequest.getRequestURI(), servletRequest.getRemoteAddr(), HttpStatus.valueOf(servletResponse.getStatus()),
-// System.currentTimeMillis() - start);
+
}
}
diff --git a/src/main/java/com/genersoft/iot/vmp/conf/security/AnonymousAuthenticationEntryPoint.java b/src/main/java/com/genersoft/iot/vmp/conf/security/AnonymousAuthenticationEntryPoint.java
index cd5042088..35c68d5d9 100644
--- a/src/main/java/com/genersoft/iot/vmp/conf/security/AnonymousAuthenticationEntryPoint.java
+++ b/src/main/java/com/genersoft/iot/vmp/conf/security/AnonymousAuthenticationEntryPoint.java
@@ -2,7 +2,6 @@ package com.genersoft.iot.vmp.conf.security;
import com.alibaba.fastjson2.JSONObject;
import com.genersoft.iot.vmp.vmanager.bean.ErrorCode;
-import org.apache.poi.hssf.eventmodel.ERFListener;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.security.core.AuthenticationException;
@@ -25,7 +24,10 @@ public class AnonymousAuthenticationEntryPoint implements AuthenticationEntryPoi
@Override
public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException e) {
// 允许跨域
- response.setHeader("Access-Control-Allow-Origin", "*");
+ String origin = request.getHeader("Origin");
+ response.setHeader("Access-Control-Allow-Credentials", "true");
+ response.setHeader("Access-Control-Allow-Origin", origin != null ? origin : "*");
+ response.setHeader("Access-Control-Allow-Methods", "PUT,POST, GET,DELETE,OPTIONS");
// 允许自定义请求头token(允许head跨域)
response.setHeader("Access-Control-Allow-Headers", "token, Accept, Origin, X-Requested-With, Content-Type, Last-Modified");
response.setHeader("Content-type", "application/json;charset=UTF-8");
diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java
index a795e77bb..a07a47cdc 100644
--- a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java
+++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java
@@ -112,6 +112,7 @@ public class ZLMHttpHookListener {
* 服务器定时上报时间,上报间隔可配置,默认10s上报一次
*/
@ResponseBody
+
@PostMapping(value = "/on_server_keepalive", produces = "application/json;charset=UTF-8")
public HookResult onServerKeepalive(@RequestBody OnServerKeepaliveHookParam param) {
@@ -135,6 +136,7 @@ public class ZLMHttpHookListener {
* 播放器鉴权事件,rtsp/rtmp/http-flv/ws-flv/hls的播放都将触发此鉴权事件。
*/
@ResponseBody
+
@PostMapping(value = "/on_play", produces = "application/json;charset=UTF-8")
public HookResult onPlay(@RequestBody OnPlayHookParam param) {
if (logger.isDebugEnabled()) {
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/MobilePosition/MobilePositionController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/MobilePosition/MobilePositionController.java
index 305d488a9..5046faa09 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/MobilePosition/MobilePositionController.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/MobilePosition/MobilePositionController.java
@@ -30,7 +30,7 @@ import java.util.UUID;
* 位置信息管理
*/
@Tag(name = "位置信息管理")
-@CrossOrigin
+
@RestController
@RequestMapping("/api/position")
public class MobilePositionController {
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/SseController/SseController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/SseController/SseController.java
index d58d43146..b1ad3b9f5 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/SseController/SseController.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/SseController/SseController.java
@@ -17,7 +17,7 @@ import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
* @data: 2021-01-20
*/
@Tag(name = "SSE推送")
-@CrossOrigin
+
@Controller
@RequestMapping("/api")
public class SseController {
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/alarm/AlarmController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/alarm/AlarmController.java
index e030b1769..00155308a 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/alarm/AlarmController.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/alarm/AlarmController.java
@@ -6,24 +6,18 @@ import com.genersoft.iot.vmp.gb28181.bean.DeviceAlarm;
import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform;
import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommander;
import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommanderForPlatform;
-import com.genersoft.iot.vmp.media.zlm.ZLMHttpHookListener;
import com.genersoft.iot.vmp.service.IDeviceAlarmService;
import com.genersoft.iot.vmp.storager.IVideoManagerStorage;
import com.genersoft.iot.vmp.utils.DateUtil;
import com.genersoft.iot.vmp.vmanager.bean.ErrorCode;
-import com.genersoft.iot.vmp.vmanager.bean.WVPResult;
import com.github.pagehelper.PageInfo;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
import org.springframework.util.ObjectUtils;
-import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import javax.sip.InvalidArgumentException;
@@ -34,7 +28,7 @@ import java.util.Arrays;
import java.util.List;
@Tag(name = "报警信息管理")
-@CrossOrigin
+
@RestController
@RequestMapping("/api/alarm")
public class AlarmController {
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceConfig.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceConfig.java
index 651d9ac51..eac68ca41 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceConfig.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceConfig.java
@@ -14,7 +14,6 @@ import com.genersoft.iot.vmp.gb28181.transmit.callback.DeferredResultHolder;
import com.genersoft.iot.vmp.gb28181.transmit.callback.RequestMessage;
import com.genersoft.iot.vmp.gb28181.transmit.cmd.impl.SIPCommander;
import com.genersoft.iot.vmp.storager.IVideoManagerStorage;
-
import com.genersoft.iot.vmp.vmanager.bean.ErrorCode;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
@@ -22,9 +21,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.ResponseEntity;
import org.springframework.util.ObjectUtils;
-import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.context.request.async.DeferredResult;
@@ -34,7 +31,7 @@ import java.text.ParseException;
import java.util.UUID;
@Tag(name = "国标设备配置")
-@CrossOrigin
+
@RestController
@RequestMapping("/api/device/config")
public class DeviceConfig {
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceControl.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceControl.java
index ff0d8b4f3..bf0acb5ab 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceControl.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceControl.java
@@ -32,7 +32,7 @@ import java.text.ParseException;
import java.util.UUID;
@Tag(name = "国标设备控制")
-@CrossOrigin
+
@RestController
@RequestMapping("/api/device/control")
public class DeviceControl {
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceQuery.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceQuery.java
index c15d771a2..7a8732c8c 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceQuery.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceQuery.java
@@ -46,7 +46,7 @@ import java.util.*;
@Tag(name = "国标设备查询", description = "国标设备查询")
@SuppressWarnings("rawtypes")
-@CrossOrigin
+
@RestController
@RequestMapping("/api/device/query")
public class DeviceQuery {
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/gbStream/GbStreamController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/gbStream/GbStreamController.java
index 447944a7f..5e673729b 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/gbStream/GbStreamController.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/gbStream/GbStreamController.java
@@ -17,7 +17,7 @@ import org.springframework.web.bind.annotation.*;
import java.util.List;
@Tag(name = "视频流关联到级联平台")
-@CrossOrigin
+
@RestController
@RequestMapping("/api/gbStream")
public class GbStreamController {
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/media/MediaController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/media/MediaController.java
index d135fa2f3..8e0e2012f 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/media/MediaController.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/media/MediaController.java
@@ -24,7 +24,7 @@ import javax.servlet.http.HttpServletRequest;
@Tag(name = "媒体流相关")
@Controller
-@CrossOrigin
+
@RequestMapping(value = "/api/media")
public class MediaController {
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/PlatformController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/PlatformController.java
index 40b65c33b..7628f7ca8 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/PlatformController.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/PlatformController.java
@@ -37,7 +37,7 @@ import java.util.List;
* 级联平台管理
*/
@Tag(name = "级联平台管理")
-@CrossOrigin
+
@RestController
@RequestMapping("/api/platform")
public class PlatformController {
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/play/PlayController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/play/PlayController.java
index c94dbf2cf..958cc6895 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/play/PlayController.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/play/PlayController.java
@@ -40,7 +40,7 @@ import java.util.List;
import java.util.UUID;
@Tag(name = "国标设备点播")
-@CrossOrigin
+
@RestController
@RequestMapping("/api/play")
public class PlayController {
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/playback/PlaybackController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/playback/PlaybackController.java
index eb6f997d1..8bab3fd0c 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/playback/PlaybackController.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/playback/PlaybackController.java
@@ -40,7 +40,7 @@ import java.util.UUID;
* @author lin
*/
@Tag(name = "视频回放")
-@CrossOrigin
+
@RestController
@RequestMapping("/api/playback")
public class PlaybackController {
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/ptz/PtzController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/ptz/PtzController.java
index 171f57ca9..e9ea457db 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/ptz/PtzController.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/ptz/PtzController.java
@@ -1,7 +1,12 @@
package com.genersoft.iot.vmp.vmanager.gb28181.ptz;
-
+
import com.genersoft.iot.vmp.conf.exception.ControllerException;
+import com.genersoft.iot.vmp.gb28181.bean.Device;
+import com.genersoft.iot.vmp.gb28181.transmit.callback.DeferredResultHolder;
+import com.genersoft.iot.vmp.gb28181.transmit.callback.RequestMessage;
+import com.genersoft.iot.vmp.gb28181.transmit.cmd.impl.SIPCommander;
+import com.genersoft.iot.vmp.storager.IVideoManagerStorage;
import com.genersoft.iot.vmp.vmanager.bean.ErrorCode;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
@@ -10,23 +15,16 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils;
-import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.context.request.async.DeferredResult;
-import com.genersoft.iot.vmp.gb28181.bean.Device;
-import com.genersoft.iot.vmp.gb28181.transmit.callback.DeferredResultHolder;
-import com.genersoft.iot.vmp.gb28181.transmit.callback.RequestMessage;
-import com.genersoft.iot.vmp.gb28181.transmit.cmd.impl.SIPCommander;
-import com.genersoft.iot.vmp.storager.IVideoManagerStorage;
-
import javax.sip.InvalidArgumentException;
import javax.sip.SipException;
import java.text.ParseException;
import java.util.UUID;
@Tag(name = "云台控制")
-@CrossOrigin
+
@RestController
@RequestMapping("/api/ptz")
public class PtzController {
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/record/GBRecordController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/record/GBRecordController.java
index c3b9c7814..093b32408 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/record/GBRecordController.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/record/GBRecordController.java
@@ -36,7 +36,7 @@ import java.text.ParseException;
import java.util.UUID;
@Tag(name = "国标录像")
-@CrossOrigin
+
@RestController
@RequestMapping("/api/gb_record")
public class GBRecordController {
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/log/LogController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/log/LogController.java
index 42efbb1a1..3cabb99fd 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/log/LogController.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/log/LogController.java
@@ -6,25 +6,18 @@ import com.genersoft.iot.vmp.service.ILogService;
import com.genersoft.iot.vmp.storager.dao.dto.LogDto;
import com.genersoft.iot.vmp.utils.DateUtil;
import com.genersoft.iot.vmp.vmanager.bean.ErrorCode;
-import com.genersoft.iot.vmp.vmanager.bean.WVPResult;
import com.github.pagehelper.PageInfo;
-
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
import org.springframework.util.ObjectUtils;
-import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
-import java.text.ParseException;
-
@Tag(name = "日志管理")
-@CrossOrigin
+
@RestController
@RequestMapping("/api/log")
public class LogController {
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/record/RecordController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/record/RecordController.java
index ec88b5075..6e2aca37a 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/record/RecordController.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/record/RecordController.java
@@ -14,7 +14,7 @@
//import org.springframework.web.bind.annotation.*;
//
//@Tag(name = "云端录像")
-//@CrossOrigin
+//
//@RestController
//@RequestMapping("/api/record")
//public class RecordController {
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/server/ServerController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/server/ServerController.java
index 6b8550db7..ad2c13b6c 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/server/ServerController.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/server/ServerController.java
@@ -2,7 +2,6 @@ package com.genersoft.iot.vmp.vmanager.server;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
-import com.genersoft.iot.vmp.VManageBootstrap;
import com.genersoft.iot.vmp.common.SystemAllInfo;
import com.genersoft.iot.vmp.common.VersionPo;
import com.genersoft.iot.vmp.conf.SipConfig;
@@ -15,13 +14,10 @@ import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem;
import com.genersoft.iot.vmp.service.*;
import com.genersoft.iot.vmp.service.bean.MediaServerLoad;
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
-import com.genersoft.iot.vmp.utils.SpringBeanFactory;
import com.genersoft.iot.vmp.vmanager.bean.ErrorCode;
import com.genersoft.iot.vmp.vmanager.bean.ResourceBaceInfo;
import com.genersoft.iot.vmp.vmanager.bean.ResourceInfo;
import com.genersoft.iot.vmp.vmanager.bean.SystemConfigInfo;
-import gov.nist.javax.sip.SipStackImpl;
-
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
@@ -31,14 +27,12 @@ import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*;
-import javax.sip.ListeningPoint;
-import javax.sip.ObjectInUseException;
-import javax.sip.SipProvider;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.List;
@SuppressWarnings("rawtypes")
@Tag(name = "服务控制")
-@CrossOrigin
+
@RestController
@RequestMapping("/api/server")
public class ServerController {
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/streamProxy/StreamProxyController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/streamProxy/StreamProxyController.java
index 65ec3d339..4a8522b6e 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/streamProxy/StreamProxyController.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/streamProxy/StreamProxyController.java
@@ -25,7 +25,7 @@ import org.springframework.web.bind.annotation.*;
*/
@Tag(name = "拉流代理", description = "")
@Controller
-@CrossOrigin
+
@RequestMapping(value = "/api/proxy")
public class StreamProxyController {
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/streamPush/StreamPushController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/streamPush/StreamPushController.java
index 7506433f9..662256884 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/streamPush/StreamPushController.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/streamPush/StreamPushController.java
@@ -41,7 +41,7 @@ import java.util.UUID;
@Tag(name = "推流信息管理")
@Controller
-@CrossOrigin
+
@RequestMapping(value = "/api/push")
public class StreamPushController {
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/user/RoleController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/user/RoleController.java
index 769dca001..f34f1c4b4 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/user/RoleController.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/user/RoleController.java
@@ -6,20 +6,16 @@ import com.genersoft.iot.vmp.service.IRoleService;
import com.genersoft.iot.vmp.storager.dao.dto.Role;
import com.genersoft.iot.vmp.utils.DateUtil;
import com.genersoft.iot.vmp.vmanager.bean.ErrorCode;
-import com.genersoft.iot.vmp.vmanager.bean.WVPResult;
-
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@Tag(name = "角色管理")
-@CrossOrigin
+
@RestController
@RequestMapping("/api/role")
public class RoleController {
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/user/UserController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/user/UserController.java
index 157cb7511..127e83b8a 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/user/UserController.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/user/UserController.java
@@ -24,7 +24,7 @@ import javax.security.sasl.AuthenticationException;
import java.util.List;
@Tag(name = "用户管理")
-@CrossOrigin
+
@RestController
@RequestMapping("/api/user")
public class UserController {
diff --git a/src/main/java/com/genersoft/iot/vmp/web/gb28181/ApiControlController.java b/src/main/java/com/genersoft/iot/vmp/web/gb28181/ApiControlController.java
index be2bbc192..6f2fe544e 100644
--- a/src/main/java/com/genersoft/iot/vmp/web/gb28181/ApiControlController.java
+++ b/src/main/java/com/genersoft/iot/vmp/web/gb28181/ApiControlController.java
@@ -18,7 +18,7 @@ import java.text.ParseException;
/**
* API兼容:设备控制
*/
-@CrossOrigin
+
@RestController
@RequestMapping(value = "/api/v1/control")
public class ApiControlController {
diff --git a/src/main/java/com/genersoft/iot/vmp/web/gb28181/ApiController.java b/src/main/java/com/genersoft/iot/vmp/web/gb28181/ApiController.java
index e6286d603..bd5d5ef3f 100644
--- a/src/main/java/com/genersoft/iot/vmp/web/gb28181/ApiController.java
+++ b/src/main/java/com/genersoft/iot/vmp/web/gb28181/ApiController.java
@@ -6,7 +6,6 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@@ -14,7 +13,7 @@ import org.springframework.web.bind.annotation.ResponseBody;
* API兼容:系统接口
*/
@Controller
-@CrossOrigin
+
@RequestMapping(value = "/api/v1")
public class ApiController {
diff --git a/src/main/java/com/genersoft/iot/vmp/web/gb28181/ApiDeviceController.java b/src/main/java/com/genersoft/iot/vmp/web/gb28181/ApiDeviceController.java
index e5f422728..5065523e8 100644
--- a/src/main/java/com/genersoft/iot/vmp/web/gb28181/ApiDeviceController.java
+++ b/src/main/java/com/genersoft/iot/vmp/web/gb28181/ApiDeviceController.java
@@ -20,7 +20,7 @@ import java.util.List;
* API兼容:设备信息
*/
@SuppressWarnings("unchecked")
-@CrossOrigin
+
@RestController
@RequestMapping(value = "/api/v1/device")
public class ApiDeviceController {
diff --git a/src/main/java/com/genersoft/iot/vmp/web/gb28181/ApiStreamController.java b/src/main/java/com/genersoft/iot/vmp/web/gb28181/ApiStreamController.java
index 5381a3aec..72a1b5da8 100644
--- a/src/main/java/com/genersoft/iot/vmp/web/gb28181/ApiStreamController.java
+++ b/src/main/java/com/genersoft/iot/vmp/web/gb28181/ApiStreamController.java
@@ -26,7 +26,7 @@ import java.text.ParseException;
* API兼容:实时直播
*/
@SuppressWarnings(value = {"rawtypes", "unchecked"})
-@CrossOrigin
+
@RestController
@RequestMapping(value = "/api/v1/stream")
public class ApiStreamController {
diff --git a/src/main/java/com/genersoft/iot/vmp/web/gb28181/AuthController.java b/src/main/java/com/genersoft/iot/vmp/web/gb28181/AuthController.java
index abefa42bf..d503f1531 100644
--- a/src/main/java/com/genersoft/iot/vmp/web/gb28181/AuthController.java
+++ b/src/main/java/com/genersoft/iot/vmp/web/gb28181/AuthController.java
@@ -5,7 +5,7 @@ import com.genersoft.iot.vmp.storager.dao.dto.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
-@CrossOrigin
+
@RestController
@RequestMapping(value = "/auth")
public class AuthController {
diff --git a/web_src/build/utils.js b/web_src/build/utils.js
index bc98c135e..e534fb0fd 100644
--- a/web_src/build/utils.js
+++ b/web_src/build/utils.js
@@ -47,8 +47,7 @@ exports.cssLoaders = function (options) {
if (options.extract) {
return ExtractTextPlugin.extract({
use: loaders,
- fallback: 'vue-style-loader',
- publicPath: '../../'
+ fallback: 'vue-style-loader'
})
} else {
return ['vue-style-loader'].concat(loaders)
diff --git a/web_src/config/index.js b/web_src/config/index.js
index 6f0ca8bb1..b1e1cbe14 100644
--- a/web_src/config/index.js
+++ b/web_src/config/index.js
@@ -8,18 +8,18 @@ module.exports = {
dev: {
// Paths
- assetsSubDirectory: './static',
- assetsPublicPath: './',
+ assetsSubDirectory: 'static',
+ assetsPublicPath: '/',
proxyTable: {
'/debug': {
- target: 'http://localhost:38080',
+ target: 'http://localhost:18080',
changeOrigin: true,
pathRewrite: {
'^/debug': '/'
}
},
'/static/snap': {
- target: 'http://localhost:38080',
+ target: 'http://localhost:18080',
changeOrigin: true,
// pathRewrite: {
// '^/static/snap': '/static/snap'
@@ -61,7 +61,7 @@ module.exports = {
// Paths
assetsRoot: path.resolve(__dirname, '../../src/main/resources/static/'),
assetsSubDirectory: './static',
- assetsPublicPath: './',
+ assetsPublicPath: '/',
/**
* Source Maps
diff --git a/web_src/index.html b/web_src/index.html
index e338faad8..778591ed2 100644
--- a/web_src/index.html
+++ b/web_src/index.html
@@ -13,7 +13,7 @@
-
+