From d4ae8194eb87271423aba24bab0f0d815d5ffdc1 Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期二, 13 十月 2020 14:46:47 +0800
Subject: [PATCH] 离在线状态样式修改 修复未回复200ok导致catalog一直发送的bug 修改点播接口未收到视频后回复

---
 src/main/java/com/genersoft/iot/vmp/vmanager/play/PlayController.java |   28 ++++++++++++++++++++--------
 1 files changed, 20 insertions(+), 8 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 c0d2233..64bcf34 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
@@ -1,5 +1,7 @@
 package com.genersoft.iot.vmp.vmanager.play;
 
+import com.alibaba.fastjson.JSON;
+import com.genersoft.iot.vmp.common.StreamInfo;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -34,17 +36,26 @@
 	public ResponseEntity<String> play(@PathVariable String deviceId,@PathVariable String channelId){
 		
 		Device device = storager.queryVideoDevice(deviceId);
-		String ssrc = cmder.playStreamCmd(device, channelId);
-		
+		StreamInfo streamInfo = cmder.playStreamCmd(device, channelId);
+		// 绛夊緟鎺ㄦ祦, TODO 榛樿瓒呮椂15s
+
+		long startTime = System.currentTimeMillis();
+		while (storager.queryPlay(streamInfo) == null || storager.queryPlay(streamInfo).getFlv() == null) {
+			try {
+				if (System.currentTimeMillis() - startTime > 15 * 1000)
+				Thread.sleep(200);
+			} catch (InterruptedException e) {
+				e.printStackTrace();
+			}
+		}
+		streamInfo = storager.queryPlay(streamInfo);
 		if (logger.isDebugEnabled()) {
 			logger.debug(String.format("璁惧棰勮 API璋冪敤锛宒eviceId锛�%s 锛宑hannelId锛�%s",deviceId, channelId));
-			logger.debug("璁惧棰勮 API璋冪敤锛宻src锛�"+ssrc+",ZLMedia streamId:"+Integer.toHexString(Integer.parseInt(ssrc)));
+			logger.debug("璁惧棰勮 API璋冪敤锛宻src锛�"+streamInfo.getSsrc()+",ZLMedia streamId:"+Integer.toHexString(Integer.parseInt(streamInfo.getSsrc())));
 		}
 		
-		if(ssrc!=null) {
-			JSONObject json = new JSONObject();
-			json.put("ssrc", ssrc);
-			return new ResponseEntity<String>(json.toString(),HttpStatus.OK);
+		if(streamInfo!=null) {
+			return new ResponseEntity<String>(JSON.toJSONString(streamInfo),HttpStatus.OK);
 		} else {
 			logger.warn("璁惧棰勮API璋冪敤澶辫触锛�");
 			return new ResponseEntity<String>(HttpStatus.INTERNAL_SERVER_ERROR);
@@ -55,7 +66,8 @@
 	public ResponseEntity<String> playStop(@PathVariable String ssrc){
 		
 		cmder.streamByeCmd(ssrc);
-		
+		StreamInfo streamInfo = storager.queryPlayBySSRC(ssrc);
+		storager.stopPlay(streamInfo);
 		if (logger.isDebugEnabled()) {
 			logger.debug(String.format("璁惧棰勮鍋滄API璋冪敤锛宻src锛�%s", ssrc));
 		}

--
Gitblit v1.8.0