From 92e5ed2e30126afc320ddf458c2653c4d41ef61d Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期三, 06 十二月 2023 16:10:32 +0800
Subject: [PATCH] 优化前端云端录像的播放
---
src/main/java/com/genersoft/iot/vmp/service/impl/CloudRecordServiceImpl.java | 13 ++++++
src/main/java/com/genersoft/iot/vmp/vmanager/cloudRecord/CloudRecordController.java | 11 +++++
src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java | 18 +--------
src/main/java/com/genersoft/iot/vmp/service/ICloudRecordService.java | 5 ++
src/main/java/com/genersoft/iot/vmp/utils/CloudRecordUtils.java | 22 +++++++++++
src/main/java/com/genersoft/iot/vmp/storager/dao/CloudRecordServiceMapper.java | 7 +++
web_src/src/components/CloudRecord.vue | 24 ++++++++++--
7 files changed, 80 insertions(+), 20 deletions(-)
diff --git a/src/main/java/com/genersoft/iot/vmp/service/ICloudRecordService.java b/src/main/java/com/genersoft/iot/vmp/service/ICloudRecordService.java
index 87798a0..83b1b15 100755
--- a/src/main/java/com/genersoft/iot/vmp/service/ICloudRecordService.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/ICloudRecordService.java
@@ -4,6 +4,7 @@
import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem;
import com.genersoft.iot.vmp.media.zlm.dto.hook.OnRecordMp4HookParam;
import com.genersoft.iot.vmp.service.bean.CloudRecordItem;
+import com.genersoft.iot.vmp.service.bean.DownloadFileInfo;
import com.github.pagehelper.PageInfo;
import java.util.List;
@@ -50,4 +51,8 @@
*/
int changeCollectById(Integer recordId, boolean result);
+ /**
+ * 鑾峰彇鎾斁鍦板潃
+ */
+ DownloadFileInfo getPlayUrlPath(Integer recordId);
}
diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/CloudRecordServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/CloudRecordServiceImpl.java
index d9d6fe3..c9ed173 100644
--- a/src/main/java/com/genersoft/iot/vmp/service/impl/CloudRecordServiceImpl.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/impl/CloudRecordServiceImpl.java
@@ -11,8 +11,10 @@
import com.genersoft.iot.vmp.service.ICloudRecordService;
import com.genersoft.iot.vmp.service.IMediaServerService;
import com.genersoft.iot.vmp.service.bean.CloudRecordItem;
+import com.genersoft.iot.vmp.service.bean.DownloadFileInfo;
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
import com.genersoft.iot.vmp.storager.dao.CloudRecordServiceMapper;
+import com.genersoft.iot.vmp.utils.CloudRecordUtils;
import com.genersoft.iot.vmp.utils.DateUtil;
import com.genersoft.iot.vmp.vmanager.bean.ErrorCode;
import com.github.pagehelper.PageHelper;
@@ -226,4 +228,15 @@
public int changeCollectById(Integer recordId, boolean result) {
return cloudRecordServiceMapper.changeCollectById(result, recordId);
}
+
+ @Override
+ public DownloadFileInfo getPlayUrlPath(Integer recordId) {
+ CloudRecordItem recordItem = cloudRecordServiceMapper.queryOne(recordId);
+ if (recordItem == null) {
+ throw new ControllerException(ErrorCode.ERROR400.getCode(), "璧勬簮涓嶅瓨鍦�");
+ }
+ String filePath = recordItem.getFilePath();
+ MediaServerItem mediaServerItem = mediaServerService.getOne(recordItem.getMediaServerId());
+ return CloudRecordUtils.getDownloadFilePath(mediaServerItem, filePath);
+ }
}
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 7ca07ee..2d94f30 100755
--- a/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java
@@ -32,6 +32,7 @@
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
import com.genersoft.iot.vmp.storager.IVideoManagerStorage;
import com.genersoft.iot.vmp.storager.dao.CloudRecordServiceMapper;
+import com.genersoft.iot.vmp.utils.CloudRecordUtils;
import com.genersoft.iot.vmp.utils.DateUtil;
import com.genersoft.iot.vmp.vmanager.bean.ErrorCode;
import gov.nist.javax.sip.message.SIPResponse;
@@ -728,7 +729,7 @@
logger.info("[褰曞儚涓嬭浇] 鏀跺埌褰曞儚鍐欏叆纾佺洏娑堟伅鍐呭锛� " + hookParam);
OnRecordMp4HookParam recordMp4HookParam = (OnRecordMp4HookParam)hookParam;
String filePath = recordMp4HookParam.getFile_path();
- DownloadFileInfo downloadFileInfo = getDownloadFilePath(mediaServerItem, filePath);
+ DownloadFileInfo downloadFileInfo = CloudRecordUtils.getDownloadFilePath(mediaServerItem, filePath);
InviteInfo inviteInfoForNew = inviteStreamService.getInviteInfo(inviteInfo.getType(), inviteInfo.getDeviceId()
, inviteInfo.getChannelId(), inviteInfo.getStream());
inviteInfoForNew.getStreamInfo().setDownLoadFilePath(downloadFileInfo);
@@ -822,21 +823,6 @@
}
inviteStreamService.updateInviteInfo(inviteInfo);
return inviteInfo.getStreamInfo();
- }
-
- private DownloadFileInfo getDownloadFilePath(MediaServerItem mediaServerItem, String filePath) {
- DownloadFileInfo downloadFileInfo = new DownloadFileInfo();
-
- String pathTemplate = "%s://%s:%s/index/api/downloadFile?file_path=" + filePath;
-
- downloadFileInfo.setHttpPath(String.format(pathTemplate, "http", mediaServerItem.getStreamIp(),
- mediaServerItem.getHttpPort()));
-
- if (mediaServerItem.getHttpSSlPort() > 0) {
- downloadFileInfo.setHttpsPath(String.format(pathTemplate, "https", mediaServerItem.getStreamIp(),
- mediaServerItem.getHttpSSlPort()));
- }
- return downloadFileInfo;
}
private StreamInfo onPublishHandlerForDownload(MediaServerItem mediaServerItemInuse, HookParam hookParam, String deviceId, String channelId, String startTime, String endTime) {
diff --git a/src/main/java/com/genersoft/iot/vmp/storager/dao/CloudRecordServiceMapper.java b/src/main/java/com/genersoft/iot/vmp/storager/dao/CloudRecordServiceMapper.java
index 3724fec..08f67ba 100644
--- a/src/main/java/com/genersoft/iot/vmp/storager/dao/CloudRecordServiceMapper.java
+++ b/src/main/java/com/genersoft/iot/vmp/storager/dao/CloudRecordServiceMapper.java
@@ -112,4 +112,11 @@
"where call_id = #{callId}" +
" </script>")
List<CloudRecordItem> getListByCallId(@Param("callId") String callId);
+
+ @Select(" <script>" +
+ "select *" +
+ " from wvp_cloud_record " +
+ "where id = #{id}" +
+ " </script>")
+ CloudRecordItem queryOne(@Param("id") Integer id);
}
diff --git a/src/main/java/com/genersoft/iot/vmp/utils/CloudRecordUtils.java b/src/main/java/com/genersoft/iot/vmp/utils/CloudRecordUtils.java
new file mode 100644
index 0000000..8954bd7
--- /dev/null
+++ b/src/main/java/com/genersoft/iot/vmp/utils/CloudRecordUtils.java
@@ -0,0 +1,22 @@
+package com.genersoft.iot.vmp.utils;
+
+import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem;
+import com.genersoft.iot.vmp.service.bean.DownloadFileInfo;
+
+public class CloudRecordUtils {
+
+ public static DownloadFileInfo getDownloadFilePath(MediaServerItem mediaServerItem, String filePath) {
+ DownloadFileInfo downloadFileInfo = new DownloadFileInfo();
+
+ String pathTemplate = "%s://%s:%s/index/api/downloadFile?file_path=" + filePath;
+
+ downloadFileInfo.setHttpPath(String.format(pathTemplate, "http", mediaServerItem.getStreamIp(),
+ mediaServerItem.getHttpPort()));
+
+ if (mediaServerItem.getHttpSSlPort() > 0) {
+ downloadFileInfo.setHttpsPath(String.format(pathTemplate, "https", mediaServerItem.getStreamIp(),
+ mediaServerItem.getHttpSSlPort()));
+ }
+ return downloadFileInfo;
+ }
+}
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/cloudRecord/CloudRecordController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/cloudRecord/CloudRecordController.java
index 41633cf..dd7de2b 100755
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/cloudRecord/CloudRecordController.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/cloudRecord/CloudRecordController.java
@@ -10,6 +10,7 @@
import com.genersoft.iot.vmp.service.ICloudRecordService;
import com.genersoft.iot.vmp.service.IMediaServerService;
import com.genersoft.iot.vmp.service.bean.CloudRecordItem;
+import com.genersoft.iot.vmp.service.bean.DownloadFileInfo;
import com.genersoft.iot.vmp.vmanager.bean.ErrorCode;
import com.github.pagehelper.PageInfo;
import io.swagger.v3.oas.annotations.Operation;
@@ -237,4 +238,14 @@
return cloudRecordService.changeCollect(false, app, stream, mediaServerId, startTime, endTime, callId);
}
}
+
+ @ResponseBody
+ @GetMapping("/play/path")
+ @Operation(summary = "鑾峰彇鎾斁鍦板潃")
+ @Parameter(name = "recordId", description = "褰曞儚璁板綍鐨処D", required = true)
+ public DownloadFileInfo getPlayUrlPath(
+ @RequestParam(required = true) Integer recordId
+ ){
+ return cloudRecordService.getPlayUrlPath(recordId);
+ }
}
diff --git a/web_src/src/components/CloudRecord.vue b/web_src/src/components/CloudRecord.vue
index ca963e6..4a4a74b 100755
--- a/web_src/src/components/CloudRecord.vue
+++ b/web_src/src/components/CloudRecord.vue
@@ -213,10 +213,26 @@
console.log(row)
this.chooseRecord = row;
this.showPlayer = true;
- let videoPath = row.filePath.substring(row.filePath.length - 25);
- console.log(videoPath)
- this.videoUrl = `${this.getFileBasePath(row)}/download/${row.app}/${row.stream}/${videoPath}`
- console.log(this.videoUrl)
+ this.$axios({
+ method: 'get',
+ url: `/api/cloud/record/play/path`,
+ params: {
+ recordId: row.id,
+ }
+ }).then((res) => {
+ console.log(res)
+ if (res.data.code === 0) {
+ if (location.protocol === "https:") {
+ this.videoUrl = res.data.data.httpsPath;
+ }else {
+ this.videoUrl = res.data.data.httpPath;
+ }
+ console.log(222 )
+ console.log(this.videoUrl )
+ }
+ }).catch((error) => {
+ console.log(error);
+ });
},
getFileBasePath(item) {
let basePath = ""
--
Gitblit v1.8.0