From 9cd9ebd060bbcfe02dcd84c4194d9772f7779fdc Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期四, 15 十月 2020 15:41:27 +0800
Subject: [PATCH] 更新readme
---
src/main/java/com/genersoft/iot/vmp/vmanager/play/PlayController.java | 31 ++++++++++++++++++++++++-------
1 files changed, 24 insertions(+), 7 deletions(-)
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/play/PlayController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/play/PlayController.java
index 996039e..19429a2 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/play/PlayController.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/play/PlayController.java
@@ -7,6 +7,7 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.CrossOrigin;
@@ -41,18 +42,36 @@
public ResponseEntity<String> play(@PathVariable String deviceId,@PathVariable String channelId){
Device device = storager.queryVideoDevice(deviceId);
- StreamInfo streamInfo = cmder.playStreamCmd(device, channelId);
+ StreamInfo streamInfo = storager.queryPlayByDevice(deviceId, channelId);
+
+ if (streamInfo == null) {
+ streamInfo = cmder.playStreamCmd(device, channelId);
+ }else {
+ String streamId = String.format("%08x", Integer.parseInt(streamInfo.getSsrc())).toUpperCase();
+ JSONObject rtpInfo = zlmresTfulUtils.getRtpInfo(streamId);
+ if (rtpInfo.getBoolean("exist")) {
+ return new ResponseEntity<String>(JSON.toJSONString(streamInfo),HttpStatus.OK);
+ }else {
+ storager.stopPlay(streamInfo);
+ streamInfo = cmder.playStreamCmd(device, channelId);
+ }
+
+ }
+ String streamId = String.format("%08x", Integer.parseInt(streamInfo.getSsrc())).toUpperCase();
// 绛夊緟鎺ㄦ祦, TODO 榛樿瓒呮椂15s
boolean lockFlag = true;
long startTime = System.currentTimeMillis();
- String streamId = String.format("%08x", Integer.parseInt(streamInfo.getSsrc())).toUpperCase();
- // 鍒ゆ柇鎺ㄦ祦鏄惁瀛樺湪
while (lockFlag) {
try {
+
if (System.currentTimeMillis() - startTime > 15 * 1000) {
+ storager.stopPlay(streamInfo);
+ return new ResponseEntity<String>("timeout",HttpStatus.OK);
+ }else {
JSONObject rtpInfo = zlmresTfulUtils.getRtpInfo(streamId);
- if (rtpInfo == null){
+ if (rtpInfo == null || !rtpInfo.getBoolean("exist") || storager.queryPlayByDevice(deviceId, channelId).getFlv() == null){
+ Thread.sleep(2000);
continue;
}else {
lockFlag = false;
@@ -72,10 +91,8 @@
}
}
};
-
}
-
- Thread.sleep(200);
+ streamInfo = storager.queryPlayByDevice(deviceId, channelId);
} catch (InterruptedException e) {
e.printStackTrace();
}
--
Gitblit v1.8.0