From e1917e9540f2a670372c3114400e2eb729526b21 Mon Sep 17 00:00:00 2001 From: 15683799673 Date: Mon, 8 Sep 2025 01:43:41 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=A7=86=E9=A2=91=E5=9B=9E?= =?UTF-8?q?=E6=94=BE=E7=95=8C=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sis/video/{ => playback}/channel-tree.vue | 0 .../views/sis/video/{ => playback}/data.ts | 0 .../views/sis/video/{ => playback}/index.vue | 112 ++--- .../src/views/sis/video/playback/process.vue | 386 ++++++++++++++++++ apps/web-antd/tsconfig.json | 1 + 5 files changed, 449 insertions(+), 50 deletions(-) rename apps/web-antd/src/views/sis/video/{ => playback}/channel-tree.vue (100%) rename apps/web-antd/src/views/sis/video/{ => playback}/data.ts (100%) rename apps/web-antd/src/views/sis/video/{ => playback}/index.vue (83%) create mode 100644 apps/web-antd/src/views/sis/video/playback/process.vue diff --git a/apps/web-antd/src/views/sis/video/channel-tree.vue b/apps/web-antd/src/views/sis/video/playback/channel-tree.vue similarity index 100% rename from apps/web-antd/src/views/sis/video/channel-tree.vue rename to apps/web-antd/src/views/sis/video/playback/channel-tree.vue diff --git a/apps/web-antd/src/views/sis/video/data.ts b/apps/web-antd/src/views/sis/video/playback/data.ts similarity index 100% rename from apps/web-antd/src/views/sis/video/data.ts rename to apps/web-antd/src/views/sis/video/playback/data.ts diff --git a/apps/web-antd/src/views/sis/video/index.vue b/apps/web-antd/src/views/sis/video/playback/index.vue similarity index 83% rename from apps/web-antd/src/views/sis/video/index.vue rename to apps/web-antd/src/views/sis/video/playback/index.vue index 82f64f8b..587f013a 100644 --- a/apps/web-antd/src/views/sis/video/index.vue +++ b/apps/web-antd/src/views/sis/video/playback/index.vue @@ -14,7 +14,7 @@
-
+
-
-
- - - - +
+
+ +
+ +
+
+
+
+ +
+ +
+ + + + + + + + + + +
+
+
@@ -67,17 +82,15 @@ import { onMounted, onUnmounted, ref, toRaw } from 'vue'; import { Loading, Page } from '@vben/common-ui'; import ChannelTree from './channel-tree.vue'; +import Process from './process.vue'; import mpegts from 'mpegts.js'; -import { message } from 'ant-design-vue'; +import { DatePicker, message } from 'ant-design-vue'; import { addStreamProxy } from '#/api/sis/stream'; -import { - Svg16FrameIcon, - Svg1FrameIcon, - Svg4FrameIcon, - Svg9FrameIcon, -} from '@vben/icons'; import { checkHEVCSupport } from '#/utils/video'; import type { AddStreamProxyResult } from '#/api/sis/stream/model'; +import { CaretRightOutlined, PauseCircleOutlined } from '@ant-design/icons-vue'; +import type { Dayjs } from 'dayjs'; +import dayjs from 'dayjs'; const selected = 'selected'; @@ -107,12 +120,18 @@ const currentSelectPlayerIndex = ref(0); const playerList: any[] = []; // 播放器loading const playerLoading = ref([]); - // 当前选择播放器的key const currentSelectKey = ref(''); // 当前所有的播放设备key const selectKeys = ref([]); +const playering = ref(true); +const playDate = ref(); + +function onPlayerBtnClick() { + playering.value = !playering.value; +} + function playerSelect(index: number) { currentSelectPlayerIndex.value = index; const player = playerList[index]; @@ -435,11 +454,20 @@ function loading(index: number, cmd: Number = 0) { playerLoading.value = loadinArr; } +const processDate = ref(''); let isSupportH265 = false; onMounted(() => { // 检测浏览器是否支持h265 isSupportH265 = checkHEVCSupport(); - setInterval(catchUp, 120000); + // setInterval(catchUp, 120000); + // 初始化当前日期 + const now = dayjs(); + playDate.value = now; + + processDate.value = dayjs(new Date()).format('YYYY-MM-DD HH:mm:ss'); + setInterval(() => { + processDate.value = dayjs(new Date()).format('YYYY-MM-DD HH:mm:ss'); + }, 1000); }); onUnmounted(() => { @@ -447,20 +475,6 @@ onUnmounted(() => { closePlayer(i); } }); - -function catchUp() { - playerList.forEach((playerData) => { - if (playerData) { - const { player, el } = playerData; - const end = player.buffered.end(player.buffered.length - 1); - const diff = end - el.currentTime; - if (diff > 2) { - // 如果延迟超过2秒 - el.currentTime = end - 0.5; // 跳转到接近直播点 - } - } - }); -} diff --git a/apps/web-antd/src/views/sis/video/playback/process.vue b/apps/web-antd/src/views/sis/video/playback/process.vue new file mode 100644 index 00000000..52d9ced7 --- /dev/null +++ b/apps/web-antd/src/views/sis/video/playback/process.vue @@ -0,0 +1,386 @@ + + + + + diff --git a/apps/web-antd/tsconfig.json b/apps/web-antd/tsconfig.json index d45e3d7a..40a9fdef 100644 --- a/apps/web-antd/tsconfig.json +++ b/apps/web-antd/tsconfig.json @@ -3,6 +3,7 @@ "extends": "@vben/tsconfig/web-app.json", "compilerOptions": { "baseUrl": ".", + "allowJs": true, "paths": { "#/*": [ "./src/*"