From b26935971590fa9fcf396efb4f3cdde59544de90 Mon Sep 17 00:00:00 2001 From: wangyan Date: Mon, 20 Oct 2025 17:21:06 +0800 Subject: [PATCH] =?UTF-8?q?feat(video):=20=E5=AE=9E=E7=8E=B0=E5=A4=A7?= =?UTF-8?q?=E5=8D=8E=E8=AE=BE=E5=A4=87=E8=A7=86=E9=A2=91=E9=A2=84=E8=A7=88?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修改后端控制器路径从 /api/video为 /dahuaVideo - 更新登录接口使用固定测试凭证 - 实现基于 StreamingResponseBody 的视频流传输 - 前端移除转码相关逻辑,集成大华播放器组件 - 添加设备登录和预览启动/停止接口 -优化视频播放器组件支持大华流媒体播放 - 调整播放器UI增加控制按钮和错误处理- 修复视频播放错误提示和资源释放逻辑 --- src/request/video_info.js | 4 + .../video_manager/components/playVideo.vue | 203 +++++++----------- .../video_manager/video_manager/index.vue | 58 +++-- 3 files changed, 100 insertions(+), 165 deletions(-) diff --git a/src/request/video_info.js b/src/request/video_info.js index c0276b9..c0070b2 100644 --- a/src/request/video_info.js +++ b/src/request/video_info.js @@ -14,3 +14,7 @@ export const stopTransCode = (params) => post("/playVideo/stopTranscode", params); export const getTranscodeStatus = (params) => post("/playVideo/getTranscodeStatus", params); +export const loginDahua = (params) => + post("/dahuaVideo/login", params); +export const getDahuaSDKStatus = (params) => + post("/dahuaVideo/status", params); diff --git a/src/views/video_manager/video_manager/components/playVideo.vue b/src/views/video_manager/video_manager/components/playVideo.vue index a7546f5..bd8baac 100644 --- a/src/views/video_manager/video_manager/components/playVideo.vue +++ b/src/views/video_manager/video_manager/components/playVideo.vue @@ -1,22 +1,29 @@ + \ No newline at end of file diff --git a/src/views/video_manager/video_manager/index.vue b/src/views/video_manager/video_manager/index.vue index bc51393..12cdabe 100644 --- a/src/views/video_manager/video_manager/index.vue +++ b/src/views/video_manager/video_manager/index.vue @@ -18,9 +18,6 @@ 重置 - 播放后台转码视频 @@ -106,12 +103,11 @@ @get-data="fnResetPagination" /> - + @@ -130,8 +126,8 @@ import { ElMessage, ElMessageBox } from "element-plus"; import SelectingPoints from "./components/selecting_points.vue"; import LayoutVideo from "@/components/video/index.vue"; import { setVideoManagerList } from "@/request/eightwork_videomanager.js"; -import PlayVideo from "@/views/video_manager/video_manager/components/playVideo.vue"; // 引入新播放器组件 -import { startTransCode, stopTransCode } from "@/request/video_info.js"; // 转码接口 +import PlayVideo from "@/views/video_manager/video_manager/components/playVideo.vue"; +import {loginDahua} from "@/request/video_info.js"; const data = reactive({ addDialog: { @@ -155,28 +151,13 @@ const data = reactive({ videomanagerId: "", visible: false, }, - transcodeVideoDialog: { + dahuaVideoDialog: { visible: false, - src: "http://localhost:8100/api/hls/stream.m3u8", // 后端转码后HLS流的访问路径 - id: "", + src: "", + channel: 0, }, }); -// 启动转码并显示播放器 -const handleStartTranscode = async () => { - try { - await startTransCode(); // 调用后端“启动转码”接口 - data.transcodeVideoDialog.visible = true; // 显示播放器弹窗 - } catch (error) { - ElMessage.error("启动转码失败: " + (error.message || "未知错误")); - } -}; - -// 转码停止后的回调 -const onTranscodeStopped = async () => { - await stopTransCode(); // 调用后端“停止转码”接口 -}; - // 列表数据逻辑(保持不变) const { list, pagination, searchForm, fnGetData, fnResetPagination } = useListData(getHkVideoManagerList); @@ -201,13 +182,22 @@ const fnUpToBi = async (videomanagerId) => { const fnPreviewVideo = async (row) => { try { - const resData = await startTransCode({ url: row.url, id: row.PLS_ID }); // 调用后端“启动转码”接口 - data.transcodeVideoDialog.visible = true; // 显示播放器弹窗 - data.transcodeVideoDialog.id = row.PLS_ID; // 显示播放器弹窗 - data.transcodeVideoDialog.src = - "http://172.16.70.226:7811/" + resData.videoUrl + "stream.m3u8"; + // 先登录大华设备 + const loginResult = await loginDahua(); + console.log("大华设备登录结果:", loginResult); + + if (!loginResult.success) { + ElMessage.error("设备登录失败: " + loginResult.message); + return; + } + + // 调用大华SDK接口播放视频 + data.dahuaVideoDialog.visible = true; + data.dahuaVideoDialog.channel = row.PLS_ID || 0; + data.dahuaVideoDialog.src = `/dahuaVideo/start-preview?channel=${row.PLS_ID || 0}`; } catch (error) { - ElMessage.error("启动转码失败: " + (error.message || "未知错误")); + console.error("播放视频过程出错:", error); + ElMessage.error("播放视频失败: " + (error.message || "未知错误")); } };