From ca5139929b8b5853229ca3d63e2bca1ce82fa0ab Mon Sep 17 00:00:00 2001
From: songww <songww@inspur.com>
Date: 星期三, 13 五月 2020 14:55:06 +0800
Subject: [PATCH] 尝试修复catalog获取失败。服务重启后设备未注册仍上报keeplive处理
---
src/main/java/com/genersoft/iot/vmp/gb28181/event/DeviceOffLineDetector.java | 24 ++++++
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/response/impl/InviteResponseProcessor.java | 49 +++++++++++-
src/main/java/com/genersoft/iot/vmp/gb28181/event/offline/KeepliveTimeoutListener.java | 2
src/main/java/com/genersoft/iot/vmp/gb28181/event/offline/OfflineEvent.java | 6
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java | 19 ++--
src/main/java/com/genersoft/iot/vmp/gb28181/event/offline/OfflineEventListener.java | 10 +-
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java | 68 ++++++++++++-----
src/main/java/com/genersoft/iot/vmp/vmanager/playback/PlaybackController.java | 7 +
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/ISIPCommander.java | 2
src/main/resources/application.yml | 2
src/main/java/com/genersoft/iot/vmp/gb28181/event/EventPublisher.java | 4
11 files changed, 145 insertions(+), 48 deletions(-)
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/event/DeviceOffLineDetector.java b/src/main/java/com/genersoft/iot/vmp/gb28181/event/DeviceOffLineDetector.java
new file mode 100644
index 0000000..437e7de
--- /dev/null
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/event/DeviceOffLineDetector.java
@@ -0,0 +1,24 @@
+package com.genersoft.iot.vmp.gb28181.event;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import com.genersoft.iot.vmp.common.VideoManagerConstants;
+import com.genersoft.iot.vmp.utils.redis.RedisUtil;
+
+/**
+ * @Description:璁惧绂诲湪绾跨姸鎬佹娴嬪櫒锛岀敤浜庢娴嬭澶囩姸鎬�
+ * @author: songww
+ * @date: 2020骞�5鏈�13鏃� 涓嬪崍2:40:29
+ */
+@Component
+public class DeviceOffLineDetector {
+
+ @Autowired
+ private RedisUtil redis;
+
+ public boolean isOnline(String deviceId) {
+ String key = VideoManagerConstants.KEEPLIVEKEY_PREFIX + deviceId;
+ return redis.hasKey(key);
+ }
+}
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/event/EventPublisher.java b/src/main/java/com/genersoft/iot/vmp/gb28181/event/EventPublisher.java
index de0dbc4..c6f5d44 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/event/EventPublisher.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/event/EventPublisher.java
@@ -4,8 +4,8 @@
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.stereotype.Component;
+import com.genersoft.iot.vmp.gb28181.event.offline.OfflineEvent;
import com.genersoft.iot.vmp.gb28181.event.online.OnlineEvent;
-import com.genersoft.iot.vmp.gb28181.event.outline.OutlineEvent;
/**
* @Description:Event浜嬩欢閫氱煡鎺ㄩ�佸櫒锛屾敮鎸佹帹閫佸湪绾夸簨浠躲�佺绾夸簨浠�
@@ -26,7 +26,7 @@
}
public void outlineEventPublish(String deviceId, String from){
- OutlineEvent outEvent = new OutlineEvent(this);
+ OfflineEvent outEvent = new OfflineEvent(this);
outEvent.setDeviceId(deviceId);
outEvent.setFrom(from);
applicationEventPublisher.publishEvent(outEvent);
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/event/outline/KeepliveTimeoutListener.java b/src/main/java/com/genersoft/iot/vmp/gb28181/event/offline/KeepliveTimeoutListener.java
similarity index 96%
rename from src/main/java/com/genersoft/iot/vmp/gb28181/event/outline/KeepliveTimeoutListener.java
rename to src/main/java/com/genersoft/iot/vmp/gb28181/event/offline/KeepliveTimeoutListener.java
index 7f427e7..9f53d64 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/event/outline/KeepliveTimeoutListener.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/event/offline/KeepliveTimeoutListener.java
@@ -1,4 +1,4 @@
-package com.genersoft.iot.vmp.gb28181.event.outline;
+package com.genersoft.iot.vmp.gb28181.event.offline;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.connection.Message;
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/event/outline/OutlineEvent.java b/src/main/java/com/genersoft/iot/vmp/gb28181/event/offline/OfflineEvent.java
similarity index 82%
rename from src/main/java/com/genersoft/iot/vmp/gb28181/event/outline/OutlineEvent.java
rename to src/main/java/com/genersoft/iot/vmp/gb28181/event/offline/OfflineEvent.java
index 7e72936..d2f612a 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/event/outline/OutlineEvent.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/event/offline/OfflineEvent.java
@@ -1,4 +1,4 @@
-package com.genersoft.iot.vmp.gb28181.event.outline;
+package com.genersoft.iot.vmp.gb28181.event.offline;
import org.springframework.context.ApplicationEvent;
@@ -7,7 +7,7 @@
* @author: songww
* @date: 2020骞�5鏈�6鏃� 涓婂崍11:33:13
*/
-public class OutlineEvent extends ApplicationEvent {
+public class OfflineEvent extends ApplicationEvent {
/**
* @Title: OutlineEvent
@@ -15,7 +15,7 @@
* @param: @param source
* @throws
*/
- public OutlineEvent(Object source) {
+ public OfflineEvent(Object source) {
super(source);
}
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/event/outline/OutlineEventListener.java b/src/main/java/com/genersoft/iot/vmp/gb28181/event/offline/OfflineEventListener.java
similarity index 82%
rename from src/main/java/com/genersoft/iot/vmp/gb28181/event/outline/OutlineEventListener.java
rename to src/main/java/com/genersoft/iot/vmp/gb28181/event/offline/OfflineEventListener.java
index a87b42e..faa89fa 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/event/outline/OutlineEventListener.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/event/offline/OfflineEventListener.java
@@ -1,4 +1,4 @@
-package com.genersoft.iot.vmp.gb28181.event.outline;
+package com.genersoft.iot.vmp.gb28181.event.offline;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -13,14 +13,14 @@
/**
* @Description: 绂荤嚎浜嬩欢鐩戝惉鍣紝鐩戝惉鍒扮绾垮悗锛屼慨鏀硅澶囩鍦ㄧ嚎鐘舵�併�� 璁惧绂荤嚎鏈変袱涓潵婧愶細
* 1銆佽澶囦富鍔ㄦ敞閿�锛屽彂閫佹敞閿�鎸囦护锛寋@link com.genersoft.iot.vmp.gb28181.transmit.request.impl.RegisterRequestProcessor}
- * 2銆佽澶囨湭鐭ュ師鍥犵绾匡紝蹇冭烦瓒呮椂,{@link com.genersoft.iot.vmp.gb28181.event.outline.OutlineEventListener}
+ * 2銆佽澶囨湭鐭ュ師鍥犵绾匡紝蹇冭烦瓒呮椂,{@link com.genersoft.iot.vmp.gb28181.event.offline.OfflineEventListener}
* @author: songww
* @date: 2020骞�5鏈�6鏃� 涓嬪崍1:51:23
*/
@Component
-public class OutlineEventListener implements ApplicationListener<OutlineEvent> {
+public class OfflineEventListener implements ApplicationListener<OfflineEvent> {
- private final static Logger logger = LoggerFactory.getLogger(OutlineEventListener.class);
+ private final static Logger logger = LoggerFactory.getLogger(OfflineEventListener.class);
@Autowired
private IVideoManagerStorager storager;
@@ -29,7 +29,7 @@
private RedisUtil redis;
@Override
- public void onApplicationEvent(OutlineEvent event) {
+ public void onApplicationEvent(OfflineEvent event) {
if (logger.isDebugEnabled()) {
logger.debug("璁惧绂荤嚎浜嬩欢瑙﹀彂锛宒eviceId锛�" + event.getDeviceId() + ",from:" + event.getFrom());
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 b0fa6cd..1039a35 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
@@ -79,7 +79,7 @@
* @param startTime 寮�濮嬫椂闂�,鏍煎紡瑕佹眰锛歽yyy-MM-dd HH:mm:ss
* @param endTime 缁撴潫鏃堕棿,鏍煎紡瑕佹眰锛歽yyy-MM-dd HH:mm:ss
*/
- public String playbackStreamCmd(Device device,String channelId, String recordId, String startTime, String endTime);
+ public String playbackStreamCmd(Device device,String channelId, String startTime, String endTime);
/**
* 璇煶骞挎挱
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 b012f9a..a6b512f 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
@@ -1,14 +1,13 @@
package com.genersoft.iot.vmp.gb28181.transmit.cmd.impl;
import java.text.ParseException;
-import java.util.Random;
+import javax.sip.ClientTransaction;
import javax.sip.InvalidArgumentException;
import javax.sip.SipException;
import javax.sip.message.Request;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.ApplicationEventPublisher;
import org.springframework.stereotype.Component;
import com.genersoft.iot.vmp.conf.SipConfig;
@@ -18,8 +17,6 @@
import com.genersoft.iot.vmp.gb28181.transmit.cmd.SIPRequestHeaderProvider;
import com.genersoft.iot.vmp.gb28181.utils.DateUtil;
import com.genersoft.iot.vmp.gb28181.utils.SsrcUtil;
-
-import tk.mybatis.mapper.util.StringUtil;
/**
* @Description:璁惧鑳藉姏鎺ュ彛锛岀敤浜庡畾涔夎澶囩殑鎺у埗銆佹煡璇㈣兘鍔�
@@ -181,16 +178,16 @@
* @param endTime 缁撴潫鏃堕棿,鏍煎紡瑕佹眰锛歽yyy-MM-dd HH:mm:ss
*/
@Override
- public String playbackStreamCmd(Device device, String channelId, String recordId, String startTime, String endTime) {
+ public String playbackStreamCmd(Device device, String channelId, String startTime, String endTime) {
try {
String ssrc = SsrcUtil.getPlayBackSsrc();
//
StringBuffer content = new StringBuffer(200);
content.append("v=0\r\n");
- content.append("o="+channelId+" 0 0 IN IP4 "+sipConfig.getSipIp()+"\r\n");
+ content.append("o="+device.getDeviceId()+" 0 0 IN IP4 "+sipConfig.getSipIp()+"\r\n");
content.append("s=Playback\r\n");
- content.append("u="+recordId+":3\r\n");
+ content.append("u="+channelId+":3\r\n");
content.append("c=IN IP4 "+sipConfig.getMediaIp()+"\r\n");
content.append("t="+DateUtil.yyyy_MM_dd_HH_mm_ssToTimestamp(startTime)+" "+DateUtil.yyyy_MM_dd_HH_mm_ssToTimestamp(endTime) +"\r\n");
if(device.getTransport().equals("TCP")) {
@@ -439,11 +436,15 @@
}
private void transmitRequest(Device device, Request request) throws SipException {
+ ClientTransaction clientTransaction = null;
if(device.getTransport().equals("TCP")) {
- sipLayer.getTcpSipProvider().sendRequest(request);
+ clientTransaction = sipLayer.getTcpSipProvider().getNewClientTransaction(request);
+ //sipLayer.getTcpSipProvider().sendRequest(request);
} else if(device.getTransport().equals("UDP")) {
- sipLayer.getUdpSipProvider().sendRequest(request);
+ clientTransaction = sipLayer.getUdpSipProvider().getNewClientTransaction(request);
+ //sipLayer.getUdpSipProvider().sendRequest(request);
}
+ clientTransaction.sendRequest();
}
}
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java
index 9a39d5c..8a7c6cf 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java
@@ -30,6 +30,7 @@
import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel;
import com.genersoft.iot.vmp.gb28181.bean.RecordInfo;
import com.genersoft.iot.vmp.gb28181.bean.RecordItem;
+import com.genersoft.iot.vmp.gb28181.event.DeviceOffLineDetector;
import com.genersoft.iot.vmp.gb28181.event.EventPublisher;
import com.genersoft.iot.vmp.gb28181.transmit.callback.DeferredResultHolder;
import com.genersoft.iot.vmp.gb28181.transmit.callback.RequestMessage;
@@ -69,7 +70,20 @@
@Autowired
private DeferredResultHolder deferredResultHolder;
+ @Autowired
+ private DeviceOffLineDetector offLineDetector;
+
private final static String CACHE_RECORDINFO_KEY = "CACHE_RECORDINFO_";
+
+ private static final String MESSAGE_CATALOG = "Catalog";
+ private static final String MESSAGE_DEVICE_INFO = "DeviceInfo";
+ private static final String MESSAGE_KEEP_ALIVE = "Keepalive";
+ private static final String MESSAGE_ALARM = "Alarm";
+ private static final String MESSAGE_RECORD_INFO = "RecordInfo";
+// private static final String MESSAGE_BROADCAST = "Broadcast";
+// private static final String MESSAGE_DEVICE_STATUS = "DeviceStatus";
+// private static final String MESSAGE_MOBILE_POSITION = "MobilePosition";
+// private static final String MESSAGE_MOBILE_POSITION_INTERVAL = "Interval";
/**
* 澶勭悊MESSAGE璇锋眰
@@ -85,22 +99,31 @@
this.transaction = transaction;
Request request = evt.getRequest();
-
- if (new String(request.getRawContent()).contains("<CmdType>Keepalive</CmdType>")) {
- logger.info("鎺ユ敹鍒癒eepAlive娑堟伅");
- processMessageKeepAlive(evt);
- } else if (new String(request.getRawContent()).contains("<CmdType>Catalog</CmdType>")) {
- logger.info("鎺ユ敹鍒癈atalog娑堟伅");
- processMessageCatalogList(evt);
- } else if (new String(request.getRawContent()).contains("<CmdType>DeviceInfo</CmdType>")) {
- logger.info("鎺ユ敹鍒癉eviceInfo娑堟伅");
- processMessageDeviceInfo(evt);
- } else if (new String(request.getRawContent()).contains("<CmdType>Alarm</CmdType>")) {
- logger.info("鎺ユ敹鍒癆larm娑堟伅");
- processMessageAlarm(evt);
- } else if (new String(request.getRawContent()).contains("<CmdType>RecordInfo</CmdType>")) {
- logger.info("鎺ユ敹鍒癛ecordInfo娑堟伅");
- processMessageRecordInfo(evt);
+ SAXReader reader = new SAXReader();
+ Document xml;
+ try {
+ xml = reader.read(new ByteArrayInputStream(request.getRawContent()));
+ Element rootElement = xml.getRootElement();
+ String cmd = rootElement.element("CmdType").getStringValue();
+
+ if (MESSAGE_KEEP_ALIVE.equals(cmd)) {
+ logger.info("鎺ユ敹鍒癒eepAlive娑堟伅");
+ processMessageKeepAlive(evt);
+ } else if (MESSAGE_CATALOG.equals(cmd)) {
+ logger.info("鎺ユ敹鍒癈atalog娑堟伅");
+ processMessageCatalogList(evt);
+ } else if (MESSAGE_DEVICE_INFO.equals(cmd)) {
+ logger.info("鎺ユ敹鍒癉eviceInfo娑堟伅");
+ processMessageDeviceInfo(evt);
+ } else if (MESSAGE_ALARM.equals(cmd)) {
+ logger.info("鎺ユ敹鍒癆larm娑堟伅");
+ processMessageAlarm(evt);
+ } else if (MESSAGE_RECORD_INFO.equals(cmd)) {
+ logger.info("鎺ユ敹鍒癛ecordInfo娑堟伅");
+ processMessageRecordInfo(evt);
+ }
+ } catch (DocumentException e) {
+ e.printStackTrace();
}
}
@@ -247,12 +270,17 @@
*/
private void processMessageKeepAlive(RequestEvent evt){
try {
- Request request = evt.getRequest();
- Response response = layer.getMessageFactory().createResponse(Response.OK,request);
Element rootElement = getRootElement(evt);
- Element deviceIdElement = rootElement.element("DeviceID");
+ String deviceId = XmlUtil.getText(rootElement,"DeviceID");
+ Request request = evt.getRequest();
+ Response response = null;
+ if (offLineDetector.isOnline(deviceId)) {
+ response = layer.getMessageFactory().createResponse(Response.OK,request);
+ publisher.onlineEventPublish(deviceId, VideoManagerConstants.EVENT_ONLINE_KEEPLIVE);
+ } else {
+ response = layer.getMessageFactory().createResponse(Response.BAD_REQUEST,request);
+ }
transaction.sendResponse(response);
- publisher.onlineEventPublish(deviceIdElement.getText(), VideoManagerConstants.EVENT_ONLINE_KEEPLIVE);
} catch (ParseException | SipException | InvalidArgumentException | DocumentException e) {
e.printStackTrace();
}
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/response/impl/InviteResponseProcessor.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/response/impl/InviteResponseProcessor.java
index 4204ce7..f825584 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/response/impl/InviteResponseProcessor.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/response/impl/InviteResponseProcessor.java
@@ -1,15 +1,25 @@
package com.genersoft.iot.vmp.gb28181.transmit.response.impl;
+import java.text.ParseException;
+
+import javax.sip.ClientTransaction;
import javax.sip.Dialog;
import javax.sip.InvalidArgumentException;
import javax.sip.ResponseEvent;
import javax.sip.SipException;
+import javax.sip.address.SipURI;
+import javax.sip.header.CSeqHeader;
+import javax.sip.header.ViaHeader;
import javax.sip.message.Request;
+import javax.sip.message.Response;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import com.genersoft.iot.vmp.conf.SipConfig;
import com.genersoft.iot.vmp.gb28181.SipLayer;
+import com.genersoft.iot.vmp.gb28181.transmit.SIPProcessorFactory;
import com.genersoft.iot.vmp.gb28181.transmit.response.ISIPResponseProcessor;
/**
@@ -20,20 +30,51 @@
@Component
public class InviteResponseProcessor implements ISIPResponseProcessor {
+ private final static Logger logger = LoggerFactory.getLogger(SIPProcessorFactory.class);
+
/**
* 澶勭悊invite鍝嶅簲
*
- * @param request
+ * @param evt
* 鍝嶅簲娑堟伅
*/
@Override
public void process(ResponseEvent evt, SipLayer layer, SipConfig config) {
try {
- Dialog dialog = evt.getDialog();
- Request reqAck =dialog.createAck(1L);
- dialog.sendAck(reqAck);
+ Response response = evt.getResponse();
+ int statusCode = response.getStatusCode();
+ //trying涓嶄細鍥炲
+ if(statusCode == Response.TRYING){
+
+ }
+ //鎴愬姛鍝嶅簲
+ //涓嬪彂ack
+ if(statusCode == Response.OK){
+ ClientTransaction clientTransaction = evt.getClientTransaction();
+ if(clientTransaction == null){
+ logger.error("鍥炲ACK鏃讹紝clientTransaction涓簄ull >>> {}",response);
+ return;
+ }
+ Dialog clientDialog = clientTransaction.getDialog();
+
+ CSeqHeader clientCSeqHeader = (CSeqHeader) response.getHeader(CSeqHeader.NAME);
+ long cseqId = clientCSeqHeader.getSeqNumber();
+ /*
+ createAck鍑芥暟锛屽垱寤虹殑ackRequest锛屼細閲囩敤Invite鍝嶅簲鐨�200OK锛屼腑鐨刢ontact瀛楁涓殑鍦板潃锛屼綔涓虹洰鏍囧湴鍧�銆�
+ 鏈夌殑缁堢浼犱笂鏉ョ殑鍙兘杩樻槸鍐呯綉鍦板潃锛屼細閫犳垚ack鍙戦�佷笉鍑哄幓銆傛帴鍙椾笉鍒伴煶瑙嗛娴�
+ 鎵�浠ュ湪姝ゅ缁熶竴鏇挎崲鍦板潃銆傚拰鍝嶅簲娑堟伅鐨刅ia澶翠腑鐨勫湴鍧�淇濇寔涓�鑷淬��
+ */
+ Request ackRequest = clientDialog.createAck(cseqId);
+ SipURI requestURI = (SipURI) ackRequest.getRequestURI();
+ ViaHeader viaHeader = (ViaHeader) response.getHeader(ViaHeader.NAME);
+ requestURI.setHost(viaHeader.getHost());
+ requestURI.setPort(viaHeader.getPort());
+ clientDialog.sendAck(ackRequest);
+ }
} catch (InvalidArgumentException | SipException e) {
e.printStackTrace();
+ } catch (ParseException e) {
+ e.printStackTrace();
}
}
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/playback/PlaybackController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/playback/PlaybackController.java
index 4be6110..20078a7 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/playback/PlaybackController.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/playback/PlaybackController.java
@@ -10,6 +10,7 @@
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
+import com.alibaba.fastjson.JSONObject;
import com.genersoft.iot.vmp.gb28181.bean.Device;
import com.genersoft.iot.vmp.gb28181.transmit.cmd.impl.SIPCommander;
import com.genersoft.iot.vmp.storager.IVideoManagerStorager;
@@ -30,7 +31,7 @@
public ResponseEntity<String> play(@PathVariable String deviceId,@PathVariable String channelId, String startTime, String endTime){
Device device = storager.queryVideoDevice(deviceId);
- String ssrc = cmder.playStreamCmd(device, channelId);
+ String ssrc = cmder.playbackStreamCmd(device, channelId, startTime, endTime);
if (logger.isDebugEnabled()) {
logger.debug(String.format("璁惧棰勮 API璋冪敤锛宒eviceId锛�%s 锛宑hannelId锛�%s",deviceId, channelId));
@@ -38,7 +39,9 @@
}
if(ssrc!=null) {
- return new ResponseEntity<String>(ssrc,HttpStatus.OK);
+ JSONObject json = new JSONObject();
+ json.put("ssrc", ssrc);
+ return new ResponseEntity<String>(json.toString(),HttpStatus.OK);
} else {
logger.warn("璁惧棰勮API璋冪敤澶辫触锛�");
return new ResponseEntity<String>(HttpStatus.INTERNAL_SERVER_ERROR);
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 4ec320e..02dc489 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -26,7 +26,7 @@
server:
port: 8080
sip:
- ip: 10.200.64.63
+ ip: 127.0.0.1
port: 5060
# 鏍规嵁鍥芥爣6.1.2涓瀹氾紝domain瀹滈噰鐢↖D缁熶竴缂栫爜鐨勫墠鍗佷綅缂栫爜銆傚浗鏍囬檮褰旸涓畾涔夊墠8浣嶄负涓績缂栫爜锛堢敱鐪佺骇銆佸競绾с�佸尯绾с�佸熀灞傜紪鍙风粍鎴愶紝鍙傜収GB/T 2260-2007锛�
# 鍚庝袱浣嶄负琛屼笟缂栫爜锛屽畾涔夊弬鐓ч檮褰旸.3
--
Gitblit v1.8.0