@yimou6/common-ui 1.12.4 → 1.12.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- import { defineComponent, ref, onMounted, onBeforeUnmount, openBlock, createElementBlock, createCommentVNode, createElementVNode, withModifiers, createVNode } from 'vue';
1
+ import { defineComponent, ref, onMounted, onBeforeUnmount, openBlock, createElementBlock, createCommentVNode, createElementVNode, withDirectives, vShow, toDisplayString, createVNode } from 'vue';
2
2
  import '../timeline-ruler/src/timeline-ruler.vue.mjs';
3
3
  import { MonitorPlaybackProps } from './monitor-playback.mjs';
4
4
  import _sfc_main$1 from '../timeline-ruler/src/timeline-ruler.vue2.mjs';
@@ -7,6 +7,12 @@ var __defProp = Object.defineProperty;
7
7
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
8
8
  const _hoisted_1 = { class: "replay-page" };
9
9
  const _hoisted_2 = { class: "player-wrap" };
10
+ const _hoisted_3 = {
11
+ key: 0,
12
+ class: "player-error"
13
+ };
14
+ const _hoisted_4 = { class: "player-error__text" };
15
+ const MAX_RETRY = 3;
10
16
  var _sfc_main = /* @__PURE__ */ defineComponent({
11
17
  ...{
12
18
  name: "IMonitorPlayback"
@@ -15,15 +21,19 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
15
21
  props: MonitorPlaybackProps,
16
22
  setup(__props) {
17
23
  const props = __props;
18
- const videoRef = ref(null);
24
+ const playerContainerRef = ref(null);
19
25
  const timelineRef = ref(null);
20
26
  const kbpsInfo = ref("-- KB/s");
21
27
  const overlayTimeText = ref("2026-05-02 15:02:17");
22
- let mpegts = null;
23
- let player = null;
28
+ const errorMsg = ref("");
29
+ let jessibuca = null;
30
+ let isDestroying = false;
31
+ let retryCount = 0;
24
32
  const currentUrl = ref(
25
33
  props.url || "ws://cms.abaixun.com/websocket/0402b0580060f0df/0000000001.flv?starttime=20260502T150217&duration=3600&uuid=s1vwaoh0rse31rpgars33u1d68384buc"
26
34
  );
35
+ let playStartTimeMs = 0;
36
+ let lastPtsMs = 0;
27
37
  let playTimerId = null;
28
38
  function pad(n) {
29
39
  return String(n).padStart(2, "0");
@@ -67,89 +77,134 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
67
77
  return null;
68
78
  }
69
79
  __name(parseStartTime, "parseStartTime");
70
- function playStream(url) {
80
+ async function playStream(url) {
71
81
  if (!url) return;
72
- if (!mpegts || !mpegts.isSupported()) return;
73
- destroyPlayer();
82
+ if (isDestroying) {
83
+ await new Promise((r) => setTimeout(r, 600));
84
+ return playStream(url);
85
+ }
86
+ await destroyPlayer();
87
+ errorMsg.value = "";
74
88
  const st = parseStartTime(url);
75
89
  let dur = 3600;
76
90
  const dm = url.match(/duration=(\d+)/i);
77
91
  if (dm) dur = parseInt(dm[1]);
92
+ if (st instanceof Date) {
93
+ playStartTimeMs = st.getTime();
94
+ }
78
95
  if (st && timelineRef.value) {
79
96
  timelineRef.value.initRuler(st, dur);
80
97
  }
81
- player = mpegts.createPlayer(
82
- { type: "flv", isLive: false, hasAudio: false, url },
83
- {
84
- enableStashBuffer: false,
85
- stashInitialSize: 128,
86
- lazyLoadMaxDuration: 1800,
87
- seekType: "range"
88
- }
89
- );
90
- player.attachMediaElement(videoRef.value);
91
- player.on(mpegts.Events.ERROR, () => {
98
+ createJessibuca(url);
99
+ }
100
+ __name(playStream, "playStream");
101
+ function createJessibuca(url) {
102
+ const win = window;
103
+ if (!win.Jessibuca) {
104
+ errorMsg.value = "Jessibuca \u64AD\u653E\u5668\u672A\u52A0\u8F7D";
105
+ return;
106
+ }
107
+ jessibuca = new win.Jessibuca({
108
+ container: playerContainerRef.value,
109
+ decoder: "./plugins/jessibuca/decoder.js",
110
+ videoBuffer: 0.2,
111
+ isResize: true,
112
+ isFullResize: true,
113
+ hasAudio: false,
114
+ debug: props.debug,
115
+ supportDblclickFullscreen: true,
116
+ showBandwidth: false,
117
+ operateBtns: {
118
+ fullscreen: true,
119
+ screenshot: true,
120
+ play: true,
121
+ audio: true,
122
+ record: true
123
+ },
124
+ // 优先使用 WASM 软解,支持 H.265
125
+ useMSE: false,
126
+ useWCS: false,
127
+ autoWasm: true,
128
+ isNotMute: true,
129
+ timeout: 10,
130
+ heartTimeout: 10,
131
+ loadingTimeout: 10,
132
+ heartTimeoutReplay: true,
133
+ heartTimeoutReplayTimes: MAX_RETRY,
134
+ loadingTimeoutReplay: true,
135
+ loadingTimeoutReplayTimes: MAX_RETRY
92
136
  });
93
- player.on(mpegts.Events.LOADING_COMPLETE, () => {
137
+ jessibuca.on("play", () => {
138
+ retryCount = 0;
94
139
  });
95
- player.on(mpegts.Events.MEDIA_INFO, (_e) => {
140
+ jessibuca.on("timeUpdate", (ts) => {
141
+ lastPtsMs = ts;
96
142
  });
97
- player.on(mpegts.Events.STATISTICS_INFO, (s) => {
98
- kbpsInfo.value = `${Math.round(s.speed / 1024)}KB/s`;
143
+ jessibuca.on("kBps", (kbps) => {
144
+ kbpsInfo.value = `${Math.round(kbps)}KB/s`;
99
145
  });
100
- player.load();
101
- videoRef.value.play().catch(() => {
146
+ jessibuca.on("videoInfo", (info) => {
147
+ if (props.debug) {
148
+ console.log("[Jessibuca] videoInfo:", info);
149
+ }
150
+ });
151
+ jessibuca.on("error", (err) => {
152
+ console.error("[Jessibuca] error:", err);
153
+ const errCode = (err == null ? void 0 : err.code) || "";
154
+ const errMsg = String((err == null ? void 0 : err.message) || err || "");
155
+ if (errCode === "mediaSourceH265NotSupport" || errCode === "webcodecsH265NotSupport" || errMsg.includes("H265") || errMsg.includes("h265") || errMsg.includes("HEVC")) {
156
+ errorMsg.value = "\u5F53\u524D\u6D4F\u89C8\u5668\u4E0D\u652F\u6301 H.265/HEVC \u7F16\u7801\u64AD\u653E\uFF0C\u8BF7\u4F7F\u7528\u652F\u6301 HEVC \u786C\u89E3\u7684\u6D4F\u89C8\u5668";
157
+ destroyPlayer();
158
+ }
102
159
  });
160
+ jessibuca.on("timeout", () => {
161
+ if (retryCount < MAX_RETRY) {
162
+ retryCount++;
163
+ console.warn(`[Jessibuca] \u8D85\u65F6\uFF0C\u7B2C ${retryCount}/${MAX_RETRY} \u6B21\u91CD\u8BD5...`);
164
+ }
165
+ });
166
+ jessibuca.on("streamEnd", () => {
167
+ if (props.debug) {
168
+ console.log("[Jessibuca] streamEnd: \u6D41\u7ED3\u675F");
169
+ }
170
+ });
171
+ jessibuca.play(url);
103
172
  }
104
- __name(playStream, "playStream");
105
- function destroyPlayer() {
106
- if (!player) return;
173
+ __name(createJessibuca, "createJessibuca");
174
+ async function destroyPlayer() {
175
+ if (!jessibuca) return;
176
+ isDestroying = true;
107
177
  try {
108
- player.pause();
109
- player.unload();
110
- player.detachMediaElement();
111
- player.destroy();
178
+ await jessibuca.destroy();
112
179
  } catch (_e) {
113
180
  }
114
- player = null;
181
+ jessibuca = null;
182
+ const container = playerContainerRef.value;
183
+ if (container) {
184
+ container.innerHTML = "";
185
+ }
186
+ await new Promise((r) => setTimeout(r, 200));
187
+ isDestroying = false;
115
188
  }
116
189
  __name(destroyPlayer, "destroyPlayer");
117
190
  function onTimelineSeek(sec) {
118
191
  commitWithTime(sec);
119
192
  }
120
193
  __name(onTimelineSeek, "onTimelineSeek");
121
- const win = window;
122
- onMounted(async () => {
123
- if (typeof window !== "undefined" && !win.mpegts) {
124
- const script = document.createElement("script");
125
- script.src = "https://cdn.jsdelivr.net/npm/mpegts.js@1.7.3/dist/mpegts.min.js";
126
- script.onload = () => {
127
- mpegts = win.mpegts;
128
- playStream(currentUrl.value);
129
- startPlayTimer();
130
- };
131
- script.onerror = () => {
132
- };
133
- document.head.appendChild(script);
134
- } else {
135
- mpegts = win.mpegts;
136
- playStream(currentUrl.value);
137
- startPlayTimer();
194
+ onMounted(() => {
195
+ const win = window;
196
+ if (!win.Jessibuca) {
197
+ errorMsg.value = "Jessibuca \u64AD\u653E\u5668\u672A\u52A0\u8F7D\uFF0C\u8BF7\u68C0\u67E5 HTML \u662F\u5426\u5F15\u5165\u4E86 jessibuca.js";
198
+ return;
138
199
  }
200
+ playStream(currentUrl.value);
201
+ startPlayTimer();
139
202
  });
140
203
  function startPlayTimer() {
141
204
  playTimerId = setInterval(() => {
142
- if (!player || !videoRef.value || videoRef.value.paused || !timelineRef.value)
143
- return;
144
- const baseMatch = currentUrl.value.match(/starttime=(\d{8}T\d{6})/i);
145
- if (baseMatch && baseMatch[1]) {
146
- const base = new Date(
147
- baseMatch[1].replace(
148
- /^(\d{4})(\d{2})(\d{2})T(\d{2})(\d{2})(\d{2})/,
149
- "$1-$2-$3T$4:$5:$6"
150
- )
151
- );
152
- const timeMs = base.getTime() + videoRef.value.currentTime * (videoRef.value.playbackRate || 1) * 1e3;
205
+ if (!jessibuca || !timelineRef.value) return;
206
+ if (playStartTimeMs > 0 && lastPtsMs >= 0) {
207
+ const timeMs = playStartTimeMs + lastPtsMs;
153
208
  timelineRef.value.updateRulerTime(timeMs);
154
209
  timelineRef.value.autoFollow();
155
210
  overlayTimeText.value = `${fmtD(timeMs / 1e3)} ${fmtTF(timeMs / 1e3)}`;
@@ -165,21 +220,35 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
165
220
  return openBlock(), createElementBlock("div", _hoisted_1, [
166
221
  createCommentVNode(" \u64AD\u653E\u5668 "),
167
222
  createElementVNode("div", _hoisted_2, [
168
- createElementVNode(
169
- "video",
223
+ withDirectives(createElementVNode(
224
+ "div",
170
225
  {
171
- id: "player",
172
- ref_key: "videoRef",
173
- ref: videoRef,
174
- muted: "",
175
- controls: "",
176
- onClick: _cache[0] || (_cache[0] = withModifiers(() => {
177
- }, ["prevent"]))
226
+ ref_key: "playerContainerRef",
227
+ ref: playerContainerRef,
228
+ class: "jessibuca-container"
178
229
  },
179
230
  null,
180
231
  512
181
232
  /* NEED_PATCH */
182
- )
233
+ ), [
234
+ [vShow, !errorMsg.value]
235
+ ]),
236
+ errorMsg.value ? (openBlock(), createElementBlock("div", _hoisted_3, [
237
+ _cache[0] || (_cache[0] = createElementVNode(
238
+ "div",
239
+ { class: "player-error__icon" },
240
+ "\u26A0",
241
+ -1
242
+ /* CACHED */
243
+ )),
244
+ createElementVNode(
245
+ "div",
246
+ _hoisted_4,
247
+ toDisplayString(errorMsg.value),
248
+ 1
249
+ /* TEXT */
250
+ )
251
+ ])) : createCommentVNode("v-if", true)
183
252
  ]),
184
253
  createCommentVNode(" \u523B\u5EA6\u5C3A\u65F6\u95F4\u8F74 "),
185
254
  createVNode(
@@ -1 +1 @@
1
- {"version":3,"file":"monitor-playback.vue2.mjs","sources":["../../../../../../../packages/components/monitor-playback/src/monitor-playback.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { onBeforeUnmount, onMounted, ref } from \"vue\";\nimport ITimelineRuler from \"../timeline-ruler/src/timeline-ruler.vue\";\nimport { MonitorPlaybackProps } from \"./monitor-playback\";\n\ndefineOptions({\n name: \"IMonitorPlayback\",\n});\n\n// ==================== Props / State ====================\nconst props = defineProps(MonitorPlaybackProps);\n\n// ==================== DOM Refs ====================\nconst videoRef = ref<HTMLVideoElement | null>(null);\nconst timelineRef = ref<InstanceType<typeof ITimelineRuler> | null>(null);\n\n// ==================== UI State ====================\nconst kbpsInfo = ref(\"-- KB/s\");\nconst overlayTimeText = ref(\"2026-05-02 15:02:17\");\n\n// ==================== Player State ====================\nlet mpegts: any = null;\nlet player: any = null;\nconst currentUrl = ref(\n props.url ||\n \"ws://cms.abaixun.com/websocket/0402b0580060f0df/0000000001.flv?starttime=20260502T150217&duration=3600&uuid=s1vwaoh0rse31rpgars33u1d68384buc\",\n);\n\n// Timer ref\nlet playTimerId: ReturnType<typeof setInterval> | null = null;\n\n// ==================== Utils ====================\nfunction pad(n: number) {\n return String(n).padStart(2, \"0\");\n}\n\nfunction syncStartTimeToUrl(unixSec: number) {\n const d = new Date(unixSec * 1000);\n const val = `${\n pad(d.getFullYear()) + pad(d.getMonth() + 1) + pad(d.getDate())\n }T${pad(d.getHours())}${pad(d.getMinutes())}${pad(d.getSeconds())}`;\n currentUrl.value = currentUrl.value.replace(\n /starttime=\\d{8}T\\d{6}/i,\n `starttime=${val}`,\n );\n}\n\nfunction commitWithTime(sec: number) {\n syncStartTimeToUrl(sec);\n playStream(currentUrl.value);\n}\n\nfunction fmtTF(s: number) {\n const d = new Date(s * 1000);\n return `${pad(d.getHours())}:${pad(d.getMinutes())}:${pad(d.getSeconds())}`;\n}\n\nfunction fmtD(s: number) {\n const d = new Date(s * 1000);\n return `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}`;\n}\n\n// ==================== Player Functions ====================\nfunction parseStartTime(url: string): Date | number | null {\n const m = url.match(/starttime=(\\d{8}T\\d{6})/i);\n if (m)\n return new Date(\n m[1].replace(\n /^(\\d{4})(\\d{2})(\\d{2})T(\\d{2})(\\d{2})(\\d{2})/,\n \"$1-$2-$3T$4:$5:$6\",\n ),\n );\n const dm = url.match(/duration=(\\d+)/i);\n if (dm) return parseInt(dm[1]);\n return null;\n}\n\nfunction playStream(url: string) {\n if (!url) return;\n if (!mpegts || !mpegts.isSupported()) return;\n\n destroyPlayer();\n\n const st = parseStartTime(url);\n let dur = 3600;\n const dm = url.match(/duration=(\\d+)/i);\n if (dm) dur = parseInt(dm[1]);\n\n if (st && timelineRef.value) {\n timelineRef.value.initRuler(st as Date, dur);\n }\n\n player = mpegts.createPlayer(\n { type: \"flv\", isLive: false, hasAudio: false, url },\n {\n enableStashBuffer: false,\n stashInitialSize: 128,\n lazyLoadMaxDuration: 1800,\n seekType: \"range\",\n },\n );\n player.attachMediaElement(videoRef.value!);\n\n player.on(mpegts.Events.ERROR, () => {});\n player.on(mpegts.Events.LOADING_COMPLETE, () => {});\n player.on(mpegts.Events.MEDIA_INFO, (_e: unknown) => {});\n player.on(mpegts.Events.STATISTICS_INFO, (s: any) => {\n kbpsInfo.value = `${Math.round(s.speed / 1024)}KB/s`;\n });\n\n player.load();\n videoRef.value!.play().catch(() => {});\n}\n\nfunction destroyPlayer() {\n if (!player) return;\n try {\n player.pause();\n player.unload();\n player.detachMediaElement();\n player.destroy();\n } catch (_e) {}\n player = null;\n}\n\n/** 时间轴 seek 跳转 */\nfunction onTimelineSeek(sec: number) {\n commitWithTime(sec);\n}\n\n// ==================== Lifecycle ====================\n// mpegts is loaded dynamically via script tag\nconst win = window as any;\nonMounted(async () => {\n // 加载 mpegts.js\n if (typeof window !== \"undefined\" && !win.mpegts) {\n const script = document.createElement(\"script\");\n script.src =\n \"https://cdn.jsdelivr.net/npm/mpegts.js@1.7.3/dist/mpegts.min.js\";\n script.onload = () => {\n mpegts = win.mpegts;\n playStream(currentUrl.value);\n startPlayTimer();\n };\n script.onerror = () => {};\n document.head.appendChild(script);\n } else {\n mpegts = win.mpegts;\n playStream(currentUrl.value);\n startPlayTimer();\n }\n});\n\n/** 定时同步播放进度到时间轴 */\nfunction startPlayTimer() {\n playTimerId = setInterval(() => {\n if (\n !player ||\n !videoRef.value ||\n videoRef.value.paused ||\n !timelineRef.value\n )\n return;\n const baseMatch = currentUrl.value.match(/starttime=(\\d{8}T\\d{6})/i);\n if (baseMatch && baseMatch[1]) {\n const base = new Date(\n baseMatch[1].replace(\n /^(\\d{4})(\\d{2})(\\d{2})T(\\d{2})(\\d{2})(\\d{2})/,\n \"$1-$2-$3T$4:$5:$6\",\n ),\n );\n const timeMs =\n base.getTime() +\n videoRef.value!.currentTime *\n (videoRef.value!.playbackRate || 1) *\n 1000;\n timelineRef.value.updateRulerTime(timeMs);\n timelineRef.value.autoFollow();\n\n // 更新叠加时间\n overlayTimeText.value = `${fmtD(timeMs / 1000)} ${fmtTF(timeMs / 1000)}`;\n }\n }, 250);\n}\n\nonBeforeUnmount(() => {\n if (playTimerId) clearInterval(playTimerId);\n destroyPlayer();\n});\n</script>\n\n<template>\n <div class=\"replay-page\">\n <!-- 播放器 -->\n <div class=\"player-wrap\">\n <video id=\"player\" ref=\"videoRef\" muted controls @click.prevent />\n </div>\n\n <!-- 刻度尺时间轴 -->\n <ITimelineRuler ref=\"timelineRef\" @seek=\"onTimelineSeek\" />\n </div>\n</template>\n"],"names":["_openBlock","_createElementBlock","_createCommentVNode","_createElementVNode","_createVNode","ITimelineRuler"],"mappings":"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"}
1
+ {"version":3,"file":"monitor-playback.vue2.mjs","sources":["../../../../../../../packages/components/monitor-playback/src/monitor-playback.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { onBeforeUnmount, onMounted, ref } from \"vue\";\nimport ITimelineRuler from \"../timeline-ruler/src/timeline-ruler.vue\";\nimport { MonitorPlaybackProps } from \"./monitor-playback\";\n\ndefineOptions({\n name: \"IMonitorPlayback\",\n});\n\n// ==================== Props / State ====================\nconst props = defineProps(MonitorPlaybackProps);\n\n// ==================== DOM Refs ====================\nconst playerContainerRef = ref<HTMLDivElement | null>(null);\nconst timelineRef = ref<InstanceType<typeof ITimelineRuler> | null>(null);\n\n// ==================== UI State ====================\nconst kbpsInfo = ref(\"-- KB/s\");\nconst overlayTimeText = ref(\"2026-05-02 15:02:17\");\nconst errorMsg = ref(\"\");\n\n// ==================== Player State ====================\nlet jessibuca: any = null;\nlet isDestroying = false;\nlet retryCount = 0;\nconst MAX_RETRY = 3;\nconst currentUrl = ref(\n props.url ||\n \"ws://cms.abaixun.com/websocket/0402b0580060f0df/0000000001.flv?starttime=20260502T150217&duration=3600&uuid=s1vwaoh0rse31rpgars33u1d68384buc\",\n);\n\n// 记录播放起始时间,用于结合 timeUpdate 计算当前播放进度\nlet playStartTimeMs = 0;\nlet lastPtsMs = 0;\n\n// Timer ref\nlet playTimerId: ReturnType<typeof setInterval> | null = null;\n\n// ==================== Utils ====================\nfunction pad(n: number) {\n return String(n).padStart(2, \"0\");\n}\n\nfunction syncStartTimeToUrl(unixSec: number) {\n const d = new Date(unixSec * 1000);\n const val = `${\n pad(d.getFullYear()) + pad(d.getMonth() + 1) + pad(d.getDate())\n }T${pad(d.getHours())}${pad(d.getMinutes())}${pad(d.getSeconds())}`;\n currentUrl.value = currentUrl.value.replace(\n /starttime=\\d{8}T\\d{6}/i,\n `starttime=${val}`,\n );\n}\n\nfunction commitWithTime(sec: number) {\n syncStartTimeToUrl(sec);\n playStream(currentUrl.value);\n}\n\nfunction fmtTF(s: number) {\n const d = new Date(s * 1000);\n return `${pad(d.getHours())}:${pad(d.getMinutes())}:${pad(d.getSeconds())}`;\n}\n\nfunction fmtD(s: number) {\n const d = new Date(s * 1000);\n return `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}`;\n}\n\n// ==================== Player Functions ====================\nfunction parseStartTime(url: string): Date | number | null {\n const m = url.match(/starttime=(\\d{8}T\\d{6})/i);\n if (m)\n return new Date(\n m[1].replace(\n /^(\\d{4})(\\d{2})(\\d{2})T(\\d{2})(\\d{2})(\\d{2})/,\n \"$1-$2-$3T$4:$5:$6\",\n ),\n );\n const dm = url.match(/duration=(\\d+)/i);\n if (dm) return parseInt(dm[1]);\n return null;\n}\n\nasync function playStream(url: string) {\n if (!url) return;\n\n // 如果正在销毁,延迟等待后再执行\n if (isDestroying) {\n await new Promise<void>((r) => setTimeout(r, 600));\n return playStream(url);\n }\n\n await destroyPlayer();\n errorMsg.value = \"\";\n\n const st = parseStartTime(url);\n let dur = 3600;\n const dm = url.match(/duration=(\\d+)/i);\n if (dm) dur = parseInt(dm[1]);\n\n // 记录播放起始时间\n if (st instanceof Date) {\n playStartTimeMs = st.getTime();\n }\n\n if (st && timelineRef.value) {\n timelineRef.value.initRuler(st as Date, dur);\n }\n\n // 创建 Jessibuca 实例\n createJessibuca(url);\n}\n\nfunction createJessibuca(url: string) {\n const win = window as any;\n if (!win.Jessibuca) {\n errorMsg.value = \"Jessibuca 播放器未加载\";\n return;\n }\n\n jessibuca = new win.Jessibuca({\n container: playerContainerRef.value!,\n decoder: \"./plugins/jessibuca/decoder.js\",\n videoBuffer: 0.2,\n isResize: true,\n isFullResize: true,\n hasAudio: false,\n debug: props.debug,\n supportDblclickFullscreen: true,\n showBandwidth: false,\n operateBtns: {\n fullscreen: true,\n screenshot: true,\n play: true,\n audio: true,\n record: true,\n },\n // 优先使用 WASM 软解,支持 H.265\n useMSE: false,\n useWCS: false,\n autoWasm: true,\n isNotMute: true,\n timeout: 10,\n heartTimeout: 10,\n loadingTimeout: 10,\n heartTimeoutReplay: true,\n heartTimeoutReplayTimes: MAX_RETRY,\n loadingTimeoutReplay: true,\n loadingTimeoutReplayTimes: MAX_RETRY,\n });\n\n // ---- 事件监听 ----\n jessibuca.on(\"play\", () => {\n retryCount = 0;\n });\n\n jessibuca.on(\"timeUpdate\", (ts: number) => {\n // ts 是当前帧的 pts(毫秒)\n lastPtsMs = ts;\n });\n\n jessibuca.on(\"kBps\", (kbps: number) => {\n kbpsInfo.value = `${Math.round(kbps)}KB/s`;\n });\n\n jessibuca.on(\"videoInfo\", (info: any) => {\n if (props.debug) {\n console.log(\"[Jessibuca] videoInfo:\", info);\n }\n });\n\n jessibuca.on(\"error\", (err: any) => {\n console.error(\"[Jessibuca] error:\", err);\n const errCode = err?.code || \"\";\n const errMsg = String(err?.message || err || \"\");\n if (\n errCode === \"mediaSourceH265NotSupport\" ||\n errCode === \"webcodecsH265NotSupport\" ||\n errMsg.includes(\"H265\") ||\n errMsg.includes(\"h265\") ||\n errMsg.includes(\"HEVC\")\n ) {\n errorMsg.value =\n \"当前浏览器不支持 H.265/HEVC 编码播放,请使用支持 HEVC 硬解的浏览器\";\n destroyPlayer();\n }\n });\n\n jessibuca.on(\"timeout\", () => {\n if (retryCount < MAX_RETRY) {\n retryCount++;\n console.warn(`[Jessibuca] 超时,第 ${retryCount}/${MAX_RETRY} 次重试...`);\n // Jessibuca 内置重连,此处仅记录\n }\n });\n\n jessibuca.on(\"streamEnd\", () => {\n if (props.debug) {\n console.log(\"[Jessibuca] streamEnd: 流结束\");\n }\n });\n\n // 开始播放\n jessibuca.play(url);\n}\n\nasync function destroyPlayer() {\n if (!jessibuca) return;\n isDestroying = true;\n try {\n await jessibuca.destroy();\n } catch (_e) {}\n jessibuca = null;\n\n // destroy 完成后再清理容器内残留 DOM,避免 removeChild 冲突\n const container = playerContainerRef.value;\n if (container) {\n container.innerHTML = \"\";\n }\n\n // 等待 WebGL/Worker 资源释放\n await new Promise<void>((r) => setTimeout(r, 200));\n isDestroying = false;\n}\n\n/** 时间轴 seek 跳转 */\nfunction onTimelineSeek(sec: number) {\n commitWithTime(sec);\n}\n\n// ==================== Lifecycle ====================\nonMounted(() => {\n const win = window as any;\n if (!win.Jessibuca) {\n errorMsg.value =\n \"Jessibuca 播放器未加载,请检查 HTML 是否引入了 jessibuca.js\";\n return;\n }\n playStream(currentUrl.value);\n startPlayTimer();\n});\n\n/** 定时同步播放进度到时间轴 */\nfunction startPlayTimer() {\n playTimerId = setInterval(() => {\n if (!jessibuca || !timelineRef.value) return;\n\n // 使用 playStartTimeMs + lastPtsMs 计算当前播放时间\n // 对于回放流,pts 通常是从0开始的偏移量\n if (playStartTimeMs > 0 && lastPtsMs >= 0) {\n const timeMs = playStartTimeMs + lastPtsMs;\n timelineRef.value.updateRulerTime(timeMs);\n timelineRef.value.autoFollow();\n\n // 更新叠加时间\n overlayTimeText.value = `${fmtD(timeMs / 1000)} ${fmtTF(timeMs / 1000)}`;\n }\n }, 250);\n}\n\nonBeforeUnmount(() => {\n if (playTimerId) clearInterval(playTimerId);\n destroyPlayer();\n});\n</script>\n\n<template>\n <div class=\"replay-page\">\n <!-- 播放器 -->\n <div class=\"player-wrap\">\n <div\n v-show=\"!errorMsg\"\n ref=\"playerContainerRef\"\n class=\"jessibuca-container\"\n />\n <div v-if=\"errorMsg\" class=\"player-error\">\n <div class=\"player-error__icon\">⚠</div>\n <div class=\"player-error__text\">{{ errorMsg }}</div>\n </div>\n </div>\n\n <!-- 刻度尺时间轴 -->\n <ITimelineRuler ref=\"timelineRef\" @seek=\"onTimelineSeek\" />\n </div>\n</template>\n"],"names":["_openBlock","_createElementBlock","_createCommentVNode","_createElementVNode","_toDisplayString","_createVNode","ITimelineRuler"],"mappings":";;;;;;;;;;;;;;AAyBA,MAAM,SAAY,GAAA,CAAA;;;;;;;;AAflB,IAAA,MAAM,KAAQ,GAAA,OAAA;AAGd,IAAM,MAAA,kBAAA,GAAqB,IAA2B,IAAI,CAAA;AAC1D,IAAM,MAAA,WAAA,GAAc,IAAgD,IAAI,CAAA;AAGxE,IAAM,MAAA,QAAA,GAAW,IAAI,SAAS,CAAA;AAC9B,IAAM,MAAA,eAAA,GAAkB,IAAI,qBAAqB,CAAA;AACjD,IAAM,MAAA,QAAA,GAAW,IAAI,EAAE,CAAA;AAGvB,IAAA,IAAI,SAAiB,GAAA,IAAA;AACrB,IAAA,IAAI,YAAe,GAAA,KAAA;AACnB,IAAA,IAAI,UAAa,GAAA,CAAA;AAEjB,IAAA,MAAM,UAAa,GAAA,GAAA;AAAA,MACjB,MAAM,GACJ,IAAA;AAAA,KACJ;AAGA,IAAA,IAAI,eAAkB,GAAA,CAAA;AACtB,IAAA,IAAI,SAAY,GAAA,CAAA;AAGhB,IAAA,IAAI,WAAqD,GAAA,IAAA;AAGzD,IAAA,SAAS,IAAI,CAAW,EAAA;AACtB,MAAA,OAAO,MAAO,CAAA,CAAC,CAAE,CAAA,QAAA,CAAS,GAAG,GAAG,CAAA;AAAA;AADzB,IAAA,MAAA,CAAA,GAAA,EAAA,KAAA,CAAA;AAIT,IAAA,SAAS,mBAAmB,OAAiB,EAAA;AAC3C,MAAA,MAAM,CAAI,GAAA,IAAI,IAAK,CAAA,OAAA,GAAU,GAAI,CAAA;AACjC,MAAA,MAAM,GAAM,GAAA,CAAA,EACV,GAAI,CAAA,CAAA,CAAE,aAAa,CAAA,GAAI,GAAI,CAAA,CAAA,CAAE,UAAa,GAAA,CAAC,CAAI,GAAA,GAAA,CAAI,EAAE,OAAQ,EAAC,CAChE,CAAA,CAAA,EAAI,IAAI,CAAE,CAAA,QAAA,EAAU,CAAC,GAAG,GAAI,CAAA,CAAA,CAAE,UAAW,EAAC,CAAC,CAAG,EAAA,GAAA,CAAI,CAAE,CAAA,UAAA,EAAY,CAAC,CAAA,CAAA;AACjE,MAAW,UAAA,CAAA,KAAA,GAAQ,WAAW,KAAM,CAAA,OAAA;AAAA,QAClC,wBAAA;AAAA,QACA,aAAa,GAAG,CAAA;AAAA,OAClB;AAAA;AARO,IAAA,MAAA,CAAA,kBAAA,EAAA,oBAAA,CAAA;AAWT,IAAA,SAAS,eAAe,GAAa,EAAA;AACnC,MAAA,kBAAA,CAAmB,GAAG,CAAA;AACtB,MAAA,UAAA,CAAW,WAAW,KAAK,CAAA;AAAA;AAFpB,IAAA,MAAA,CAAA,cAAA,EAAA,gBAAA,CAAA;AAKT,IAAA,SAAS,MAAM,CAAW,EAAA;AACxB,MAAA,MAAM,CAAI,GAAA,IAAI,IAAK,CAAA,CAAA,GAAI,GAAI,CAAA;AAC3B,MAAA,OAAO,GAAG,GAAI,CAAA,CAAA,CAAE,QAAS,EAAC,CAAC,CAAI,CAAA,EAAA,GAAA,CAAI,CAAE,CAAA,UAAA,EAAY,CAAC,CAAA,CAAA,EAAI,IAAI,CAAE,CAAA,UAAA,EAAY,CAAC,CAAA,CAAA;AAAA;AAFlE,IAAA,MAAA,CAAA,KAAA,EAAA,OAAA,CAAA;AAKT,IAAA,SAAS,KAAK,CAAW,EAAA;AACvB,MAAA,MAAM,CAAI,GAAA,IAAI,IAAK,CAAA,CAAA,GAAI,GAAI,CAAA;AAC3B,MAAA,OAAO,GAAG,CAAE,CAAA,WAAA,EAAa,CAAA,CAAA,EAAI,IAAI,CAAE,CAAA,QAAA,EAAa,GAAA,CAAC,CAAC,CAAI,CAAA,EAAA,GAAA,CAAI,CAAE,CAAA,OAAA,EAAS,CAAC,CAAA,CAAA;AAAA;AAF/D,IAAA,MAAA,CAAA,IAAA,EAAA,MAAA,CAAA;AAMT,IAAA,SAAS,eAAe,GAAmC,EAAA;AACzD,MAAM,MAAA,CAAA,GAAI,GAAI,CAAA,KAAA,CAAM,0BAA0B,CAAA;AAC9C,MAAI,IAAA,CAAA;AACF,QAAA,OAAO,IAAI,IAAA;AAAA,UACT,CAAA,CAAE,CAAC,CAAE,CAAA,OAAA;AAAA,YACH,8CAAA;AAAA,YACA;AAAA;AACF,SACF;AACF,MAAM,MAAA,EAAA,GAAK,GAAI,CAAA,KAAA,CAAM,iBAAiB,CAAA;AACtC,MAAA,IAAI,EAAI,EAAA,OAAO,QAAS,CAAA,EAAA,CAAG,CAAC,CAAC,CAAA;AAC7B,MAAO,OAAA,IAAA;AAAA;AAXA,IAAA,MAAA,CAAA,cAAA,EAAA,gBAAA,CAAA;AAcT,IAAA,eAAe,WAAW,GAAa,EAAA;AACrC,MAAA,IAAI,CAAC,GAAK,EAAA;AAGV,MAAA,IAAI,YAAc,EAAA;AAChB,QAAA,MAAM,IAAI,OAAc,CAAA,CAAC,MAAM,UAAW,CAAA,CAAA,EAAG,GAAG,CAAC,CAAA;AACjD,QAAA,OAAO,WAAW,GAAG,CAAA;AAAA;AAGvB,MAAA,MAAM,aAAc,EAAA;AACpB,MAAA,QAAA,CAAS,KAAQ,GAAA,EAAA;AAEjB,MAAM,MAAA,EAAA,GAAK,eAAe,GAAG,CAAA;AAC7B,MAAA,IAAI,GAAM,GAAA,IAAA;AACV,MAAM,MAAA,EAAA,GAAK,GAAI,CAAA,KAAA,CAAM,iBAAiB,CAAA;AACtC,MAAA,IAAI,EAAI,EAAA,GAAA,GAAM,QAAS,CAAA,EAAA,CAAG,CAAC,CAAC,CAAA;AAG5B,MAAA,IAAI,cAAc,IAAM,EAAA;AACtB,QAAA,eAAA,GAAkB,GAAG,OAAQ,EAAA;AAAA;AAG/B,MAAI,IAAA,EAAA,IAAM,YAAY,KAAO,EAAA;AAC3B,QAAY,WAAA,CAAA,KAAA,CAAM,SAAU,CAAA,EAAA,EAAY,GAAG,CAAA;AAAA;AAI7C,MAAA,eAAA,CAAgB,GAAG,CAAA;AAAA;AA3BN,IAAA,MAAA,CAAA,UAAA,EAAA,YAAA,CAAA;AA8Bf,IAAA,SAAS,gBAAgB,GAAa,EAAA;AACpC,MAAA,MAAM,GAAM,GAAA,MAAA;AACZ,MAAI,IAAA,CAAC,IAAI,SAAW,EAAA;AAClB,QAAA,QAAA,CAAS,KAAQ,GAAA,gDAAA;AACjB,QAAA;AAAA;AAGF,MAAY,SAAA,GAAA,IAAI,IAAI,SAAU,CAAA;AAAA,QAC5B,WAAW,kBAAmB,CAAA,KAAA;AAAA,QAC9B,OAAS,EAAA,gCAAA;AAAA,QACT,WAAa,EAAA,GAAA;AAAA,QACb,QAAU,EAAA,IAAA;AAAA,QACV,YAAc,EAAA,IAAA;AAAA,QACd,QAAU,EAAA,KAAA;AAAA,QACV,OAAO,KAAM,CAAA,KAAA;AAAA,QACb,yBAA2B,EAAA,IAAA;AAAA,QAC3B,aAAe,EAAA,KAAA;AAAA,QACf,WAAa,EAAA;AAAA,UACX,UAAY,EAAA,IAAA;AAAA,UACZ,UAAY,EAAA,IAAA;AAAA,UACZ,IAAM,EAAA,IAAA;AAAA,UACN,KAAO,EAAA,IAAA;AAAA,UACP,MAAQ,EAAA;AAAA,SACV;AAAA;AAAA,QAEA,MAAQ,EAAA,KAAA;AAAA,QACR,MAAQ,EAAA,KAAA;AAAA,QACR,QAAU,EAAA,IAAA;AAAA,QACV,SAAW,EAAA,IAAA;AAAA,QACX,OAAS,EAAA,EAAA;AAAA,QACT,YAAc,EAAA,EAAA;AAAA,QACd,cAAgB,EAAA,EAAA;AAAA,QAChB,kBAAoB,EAAA,IAAA;AAAA,QACpB,uBAAyB,EAAA,SAAA;AAAA,QACzB,oBAAsB,EAAA,IAAA;AAAA,QACtB,yBAA2B,EAAA;AAAA,OAC5B,CAAA;AAGD,MAAU,SAAA,CAAA,EAAA,CAAG,QAAQ,MAAM;AACzB,QAAa,UAAA,GAAA,CAAA;AAAA,OACd,CAAA;AAED,MAAU,SAAA,CAAA,EAAA,CAAG,YAAc,EAAA,CAAC,EAAe,KAAA;AAEzC,QAAY,SAAA,GAAA,EAAA;AAAA,OACb,CAAA;AAED,MAAU,SAAA,CAAA,EAAA,CAAG,MAAQ,EAAA,CAAC,IAAiB,KAAA;AACrC,QAAA,QAAA,CAAS,KAAQ,GAAA,CAAA,EAAG,IAAK,CAAA,KAAA,CAAM,IAAI,CAAC,CAAA,IAAA,CAAA;AAAA,OACrC,CAAA;AAED,MAAU,SAAA,CAAA,EAAA,CAAG,WAAa,EAAA,CAAC,IAAc,KAAA;AACvC,QAAA,IAAI,MAAM,KAAO,EAAA;AACf,UAAQ,OAAA,CAAA,GAAA,CAAI,0BAA0B,IAAI,CAAA;AAAA;AAC5C,OACD,CAAA;AAED,MAAU,SAAA,CAAA,EAAA,CAAG,OAAS,EAAA,CAAC,GAAa,KAAA;AAClC,QAAQ,OAAA,CAAA,KAAA,CAAM,sBAAsB,GAAG,CAAA;AACvC,QAAM,MAAA,OAAA,GAAA,CAAU,2BAAK,IAAQ,KAAA,EAAA;AAC7B,QAAA,MAAM,MAAS,GAAA,MAAA,CAAA,CAAO,GAAK,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,GAAA,CAAA,OAAA,KAAW,OAAO,EAAE,CAAA;AAC/C,QAAA,IACE,OAAY,KAAA,2BAAA,IACZ,OAAY,KAAA,yBAAA,IACZ,OAAO,QAAS,CAAA,MAAM,CACtB,IAAA,MAAA,CAAO,SAAS,MAAM,CAAA,IACtB,MAAO,CAAA,QAAA,CAAS,MAAM,CACtB,EAAA;AACA,UAAA,QAAA,CAAS,KACP,GAAA,oKAAA;AACF,UAAc,aAAA,EAAA;AAAA;AAChB,OACD,CAAA;AAED,MAAU,SAAA,CAAA,EAAA,CAAG,WAAW,MAAM;AAC5B,QAAA,IAAI,aAAa,SAAW,EAAA;AAC1B,UAAA,UAAA,EAAA;AACA,UAAA,OAAA,CAAQ,IAAK,CAAA,CAAA,qCAAA,EAAoB,UAAU,CAAA,CAAA,EAAI,SAAS,CAAS,sBAAA,CAAA,CAAA;AAAA;AAEnE,OACD,CAAA;AAED,MAAU,SAAA,CAAA,EAAA,CAAG,aAAa,MAAM;AAC9B,QAAA,IAAI,MAAM,KAAO,EAAA;AACf,UAAA,OAAA,CAAQ,IAAI,2CAA4B,CAAA;AAAA;AAC1C,OACD,CAAA;AAGD,MAAA,SAAA,CAAU,KAAK,GAAG,CAAA;AAAA;AA1FX,IAAA,MAAA,CAAA,eAAA,EAAA,iBAAA,CAAA;AA6FT,IAAA,eAAe,aAAgB,GAAA;AAC7B,MAAA,IAAI,CAAC,SAAW,EAAA;AAChB,MAAe,YAAA,GAAA,IAAA;AACf,MAAI,IAAA;AACF,QAAA,MAAM,UAAU,OAAQ,EAAA;AAAA,eACjB,EAAI,EAAA;AAAA;AACb,MAAY,SAAA,GAAA,IAAA;AAGZ,MAAA,MAAM,YAAY,kBAAmB,CAAA,KAAA;AACrC,MAAA,IAAI,SAAW,EAAA;AACb,QAAA,SAAA,CAAU,SAAY,GAAA,EAAA;AAAA;AAIxB,MAAA,MAAM,IAAI,OAAc,CAAA,CAAC,MAAM,UAAW,CAAA,CAAA,EAAG,GAAG,CAAC,CAAA;AACjD,MAAe,YAAA,GAAA,KAAA;AAAA;AAhBF,IAAA,MAAA,CAAA,aAAA,EAAA,eAAA,CAAA;AAoBf,IAAA,SAAS,eAAe,GAAa,EAAA;AACnC,MAAA,cAAA,CAAe,GAAG,CAAA;AAAA;AADX,IAAA,MAAA,CAAA,cAAA,EAAA,gBAAA,CAAA;AAKT,IAAA,SAAA,CAAU,MAAM;AACd,MAAA,MAAM,GAAM,GAAA,MAAA;AACZ,MAAI,IAAA,CAAC,IAAI,SAAW,EAAA;AAClB,QAAA,QAAA,CAAS,KACP,GAAA,yHAAA;AACF,QAAA;AAAA;AAEF,MAAA,UAAA,CAAW,WAAW,KAAK,CAAA;AAC3B,MAAe,cAAA,EAAA;AAAA,KAChB,CAAA;AAGD,IAAA,SAAS,cAAiB,GAAA;AACxB,MAAA,WAAA,GAAc,YAAY,MAAM;AAC9B,QAAA,IAAI,CAAC,SAAA,IAAa,CAAC,WAAA,CAAY,KAAO,EAAA;AAItC,QAAI,IAAA,eAAA,GAAkB,CAAK,IAAA,SAAA,IAAa,CAAG,EAAA;AACzC,UAAA,MAAM,SAAS,eAAkB,GAAA,SAAA;AACjC,UAAY,WAAA,CAAA,KAAA,CAAM,gBAAgB,MAAM,CAAA;AACxC,UAAA,WAAA,CAAY,MAAM,UAAW,EAAA;AAG7B,UAAgB,eAAA,CAAA,KAAA,GAAQ,CAAG,EAAA,IAAA,CAAK,MAAS,GAAA,GAAI,CAAC,CAAI,CAAA,EAAA,KAAA,CAAM,MAAS,GAAA,GAAI,CAAC,CAAA,CAAA;AAAA;AACxE,SACC,GAAG,CAAA;AAAA;AAdC,IAAA,MAAA,CAAA,cAAA,EAAA,gBAAA,CAAA;AAiBT,IAAA,eAAA,CAAgB,MAAM;AACpB,MAAI,IAAA,WAAA,gBAA2B,WAAW,CAAA;AAC1C,MAAc,aAAA,EAAA;AAAA,KACf,CAAA;;AAIC,MAAA,OAAAA,SAAA,EAAA,EAAAC,kBAgBM,CAAA,KAAA,EAhBN,UAgBM,EAAA;AAAA,QAfJC,mBAAY,sBAAA,CAAA;AAAA,QACZC,kBAAA,CAUM,OAVN,UAUM,EAAA;AAAA,wBATJ,CAAAA,kBAAA;AAAA,YAIE,KAAA;AAAA,YAAA;AAAA,qBAFI,EAAA,oBAAA;AAAA,cAAJ,GAAI,EAAA,kBAAA;AAAA,cACJ,KAAM,EAAA;AAAA;;;;;qBAFG,QAAA,CAAQ,KAAA;AAAA;UAIR,SAAQ,KAAnB,IAAAH,SAAA,EAAA,EAAAC,kBAAA,CAGM,OAHN,UAGM,EAAA;AAAA,YAFJ,MAAA,CAAA,CAAA,CAAA,KAAA,MAAA,CAAA,CAAA,CAAA,GAAAE,kBAAA;AAAA,cAAuC,KAAA;AAAA,cAAlC,EAAA,OAAM;cAAqB,QAAA;AAAA,cAAC,CAAA;AAAA;AAAA,aAAA,CAAA;AAAA,YACjCA,kBAAA;AAAA,cAAoD,KAAA;AAAA,cAApD,UAAA;AAAA,cAAoDC,eAAA,CAAjB,SAAQ,KAAA,CAAA;AAAA,cAAA;AAAA;AAAA;AAAA;;QAI/CF,mBAAe,wCAAA,CAAA;AAAA,QACfG,WAAA;AAAA,UAA2DC,WAAA;AAAA,UAAA;AAAA,mBAAvC,EAAA,aAAA;AAAA,YAAJ,GAAI,EAAA,WAAA;AAAA,YAAe,MAAM,EAAA;AAAA;;;;;;;;;;;;"}
@@ -705,7 +705,7 @@ export declare const ISelect: import("../../types").SFCWithInstall<import("vue")
705
705
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
706
706
  visibleChange: (visible: boolean) => boolean;
707
707
  removeTag: (tagValue: any) => any;
708
- 'update:modelValue': (value: any) => any;
708
+ "update:modelValue": (value: any) => any;
709
709
  clear: () => true;
710
710
  blur: (evt: MouseEvent) => MouseEvent;
711
711
  focus: (evt: MouseEvent) => MouseEvent;
@@ -705,7 +705,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
705
705
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
706
706
  visibleChange: (visible: boolean) => boolean;
707
707
  removeTag: (tagValue: any) => any;
708
- 'update:modelValue': (value: any) => any;
708
+ "update:modelValue": (value: any) => any;
709
709
  clear: () => true;
710
710
  blur: (evt: MouseEvent) => MouseEvent;
711
711
  focus: (evt: MouseEvent) => MouseEvent;
@@ -27,7 +27,14 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
27
27
  const emits = __emit;
28
28
  const dictStore = inject(DICT_STORE);
29
29
  const bindAttrs = computed(() => {
30
- return excludeObjectKeys(props, ["data", "dataCallback", "optLabel", "optValue", "modelValue", "action"]);
30
+ return excludeObjectKeys(props, [
31
+ "data",
32
+ "dataCallback",
33
+ "optLabel",
34
+ "optValue",
35
+ "modelValue",
36
+ "action"
37
+ ]);
31
38
  });
32
39
  const _loading = ref(false);
33
40
  const optionList = ref([]);
@@ -1 +1 @@
1
- {"version":3,"file":"select.vue2.mjs","sources":["../../../../../../../packages/components/select/src/select.vue"],"sourcesContent":["<script lang=\"ts\" setup>\n import { ElOption, ElSelect } from 'element-plus';\n import { computed, inject, nextTick, ref, watch, watchEffect } from 'vue';\n import { DICT_STORE, excludeObjectKeys } from '../../../utils';\n import { SelectProps } from './select';\n\n defineOptions({\n name: 'ISelect',\n });\n const props = defineProps(SelectProps);\n const emits = defineEmits({\n visibleChange: (visible: boolean) => visible,\n removeTag: (tagValue: any) => tagValue,\n 'update:modelValue': (value: any) => value,\n clear: () => true,\n blur: (evt: MouseEvent) => evt,\n focus: (evt: MouseEvent) => evt,\n change: (value: any) => value,\n });\n const dictStore = inject(DICT_STORE);\n\n const bindAttrs = computed(() => {\n return excludeObjectKeys(props, ['data', 'dataCallback', 'optLabel', 'optValue', 'modelValue', 'action']);\n });\n\n const _loading = ref(false);\n const optionList = ref<any[]>([]);\n const selectRef = ref();\n const selectValue = ref(props.modelValue);\n\n watchEffect(() => {\n _loading.value = props.loading;\n });\n watch(\n () => props.data,\n () => setOptions(),\n { deep: true, immediate: true },\n );\n watch(\n () => props.modelValue,\n (val: any) => (selectValue.value = val),\n { deep: true, immediate: true },\n );\n\n defineExpose({\n getRef() {\n return selectRef.value;\n },\n focus() {\n selectRef.value?.focus();\n },\n blur() {\n selectRef.value?.blur();\n },\n });\n\n const handleChange = (value: any) => {\n emits('update:modelValue', value);\n emits('change', value);\n };\n\n async function setOptions() {\n _loading.value = true;\n const list = await getList();\n optionList.value = props.dataCallback ? props.dataCallback(list) : list;\n await nextTick();\n _loading.value = false;\n }\n\n async function getList() {\n if (Array.isArray(props.data)) {\n return props.data;\n } else {\n if (props?.action) return await props.action?.getDict(props.data);\n if (dictStore) return await dictStore.getDict(props.data);\n return [];\n }\n }\n function handleVisibleChange(visible: boolean) {\n emits('visibleChange', visible);\n }\n function handleRemoveTag(tagValue: any) {\n emits('removeTag', tagValue);\n }\n</script>\n\n<template>\n <ElSelect\n ref=\"selectRef\"\n v-model=\"selectValue\"\n class=\"i-select\"\n v-bind=\"bindAttrs\"\n :loading=\"_loading\"\n @change=\"handleChange\"\n @visible-change=\"handleVisibleChange\"\n @remove-tag=\"handleRemoveTag\"\n @clear=\"emits('clear')\"\n @blur=\"event => emits('blur', event)\"\n @focus=\"event => emits('focus', event)\"\n >\n <ElOption\n v-for=\"(option, index) of optionList\"\n :key=\"option[optValue]\"\n :label=\"option[optLabel]\"\n :value=\"option[optValue]\"\n :disabled=\"option?.disabled\"\n >\n <template #default>\n <slot name=\"default\" :data=\"option\" :index=\"index\" />\n </template>\n </ElOption>\n </ElSelect>\n</template>\n"],"names":["_openBlock","_createBlock","_unref","_mergeProps","_createElementBlock","_Fragment","_renderList","optValue","optLabel","_renderSlot"],"mappings":"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"}
1
+ {"version":3,"file":"select.vue2.mjs","sources":["../../../../../../../packages/components/select/src/select.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { ElOption, ElSelect } from \"element-plus\";\nimport { computed, inject, nextTick, ref, watch, watchEffect } from \"vue\";\nimport { DICT_STORE, excludeObjectKeys } from \"../../../utils\";\nimport { SelectProps } from \"./select\";\n\ndefineOptions({\n name: \"ISelect\",\n});\nconst props = defineProps(SelectProps);\nconst emits = defineEmits({\n visibleChange: (visible: boolean) => visible,\n removeTag: (tagValue: any) => tagValue,\n \"update:modelValue\": (value: any) => value,\n clear: () => true,\n blur: (evt: MouseEvent) => evt,\n focus: (evt: MouseEvent) => evt,\n change: (value: any) => value,\n});\nconst dictStore = inject(DICT_STORE);\n\nconst bindAttrs = computed(() => {\n return excludeObjectKeys(props, [\n \"data\",\n \"dataCallback\",\n \"optLabel\",\n \"optValue\",\n \"modelValue\",\n \"action\",\n ]);\n});\n\nconst _loading = ref(false);\nconst optionList = ref<any[]>([]);\nconst selectRef = ref();\nconst selectValue = ref(props.modelValue);\n\nwatchEffect(() => {\n _loading.value = props.loading;\n});\nwatch(\n () => props.data,\n () => setOptions(),\n { deep: true, immediate: true },\n);\nwatch(\n () => props.modelValue,\n (val: any) => (selectValue.value = val),\n { deep: true, immediate: true },\n);\n\ndefineExpose({\n getRef() {\n return selectRef.value;\n },\n focus() {\n selectRef.value?.focus();\n },\n blur() {\n selectRef.value?.blur();\n },\n});\n\nconst handleChange = (value: any) => {\n emits(\"update:modelValue\", value);\n emits(\"change\", value);\n};\n\nasync function setOptions() {\n _loading.value = true;\n const list = await getList();\n optionList.value = props.dataCallback ? props.dataCallback(list) : list;\n await nextTick();\n _loading.value = false;\n}\n\nasync function getList() {\n if (Array.isArray(props.data)) {\n return props.data;\n } else {\n if (props?.action) return await props.action?.getDict(props.data);\n if (dictStore) return await dictStore.getDict(props.data);\n return [];\n }\n}\nfunction handleVisibleChange(visible: boolean) {\n emits(\"visibleChange\", visible);\n}\nfunction handleRemoveTag(tagValue: any) {\n emits(\"removeTag\", tagValue);\n}\n</script>\n\n<template>\n <ElSelect\n ref=\"selectRef\"\n v-model=\"selectValue\"\n class=\"i-select\"\n v-bind=\"bindAttrs\"\n :loading=\"_loading\"\n @change=\"handleChange\"\n @visible-change=\"handleVisibleChange\"\n @remove-tag=\"handleRemoveTag\"\n @clear=\"emits('clear')\"\n @blur=\"(event) => emits('blur', event)\"\n @focus=\"(event) => emits('focus', event)\"\n >\n <ElOption\n v-for=\"(option, index) of optionList\"\n :key=\"option[optValue]\"\n :label=\"option[optLabel]\"\n :value=\"option[optValue]\"\n :disabled=\"option?.disabled\"\n >\n <template #default>\n <slot name=\"default\" :data=\"option\" :index=\"index\" />\n </template>\n </ElOption>\n </ElSelect>\n</template>\n"],"names":["_openBlock","_createBlock","_unref","_mergeProps","_createElementBlock","_Fragment","_renderList","optValue","optLabel","_renderSlot"],"mappings":"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"}
@@ -50,7 +50,7 @@ export declare const IMonitorPlayback: import("../../types").SFCWithInstall<impo
50
50
  default: boolean;
51
51
  };
52
52
  }>> & Readonly<{}> & {}>;
53
- videoRef: import("vue").Ref<HTMLVideoElement | null, HTMLVideoElement | null>;
53
+ playerContainerRef: import("vue").Ref<HTMLDivElement | null, HTMLDivElement | null>;
54
54
  timelineRef: import("vue").Ref<import("vue").CreateComponentPublicInstanceWithMixins<Readonly<import("vue").ExtractPropTypes<{
55
55
  startTime: {
56
56
  type: DateConstructor;
@@ -420,9 +420,14 @@ export declare const IMonitorPlayback: import("../../types").SFCWithInstall<impo
420
420
  }> | null>;
421
421
  kbpsInfo: import("vue").Ref<string, string>;
422
422
  overlayTimeText: import("vue").Ref<string, string>;
423
- mpegts: any;
424
- player: any;
423
+ errorMsg: import("vue").Ref<string, string>;
424
+ jessibuca: any;
425
+ isDestroying: boolean;
426
+ retryCount: number;
427
+ MAX_RETRY: number;
425
428
  currentUrl: import("vue").Ref<string, string>;
429
+ playStartTimeMs: number;
430
+ lastPtsMs: number;
426
431
  playTimerId: number | null;
427
432
  pad: (n: number) => string;
428
433
  syncStartTimeToUrl: (unixSec: number) => void;
@@ -430,10 +435,10 @@ export declare const IMonitorPlayback: import("../../types").SFCWithInstall<impo
430
435
  fmtTF: (s: number) => string;
431
436
  fmtD: (s: number) => string;
432
437
  parseStartTime: (url: string) => Date | number | null;
433
- playStream: (url: string) => void;
434
- destroyPlayer: () => void;
438
+ playStream: (url: string) => Promise<void>;
439
+ createJessibuca: (url: string) => void;
440
+ destroyPlayer: () => Promise<void>;
435
441
  onTimelineSeek: (sec: number) => void;
436
- win: any;
437
442
  startPlayTimer: () => void;
438
443
  ITimelineRuler: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
439
444
  startTime: {
@@ -50,7 +50,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
50
50
  default: boolean;
51
51
  };
52
52
  }>> & Readonly<{}> & {}>;
53
- videoRef: import("vue").Ref<HTMLVideoElement | null, HTMLVideoElement | null>;
53
+ playerContainerRef: import("vue").Ref<HTMLDivElement | null, HTMLDivElement | null>;
54
54
  timelineRef: import("vue").Ref<import("vue").CreateComponentPublicInstanceWithMixins<Readonly<import("vue").ExtractPropTypes<{
55
55
  startTime: {
56
56
  type: DateConstructor;
@@ -420,9 +420,14 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
420
420
  }> | null>;
421
421
  kbpsInfo: import("vue").Ref<string, string>;
422
422
  overlayTimeText: import("vue").Ref<string, string>;
423
- mpegts: any;
424
- player: any;
423
+ errorMsg: import("vue").Ref<string, string>;
424
+ jessibuca: any;
425
+ isDestroying: boolean;
426
+ retryCount: number;
427
+ MAX_RETRY: number;
425
428
  currentUrl: import("vue").Ref<string, string>;
429
+ playStartTimeMs: number;
430
+ lastPtsMs: number;
426
431
  playTimerId: number | null;
427
432
  pad: (n: number) => string;
428
433
  syncStartTimeToUrl: (unixSec: number) => void;
@@ -430,10 +435,10 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
430
435
  fmtTF: (s: number) => string;
431
436
  fmtD: (s: number) => string;
432
437
  parseStartTime: (url: string) => Date | number | null;
433
- playStream: (url: string) => void;
434
- destroyPlayer: () => void;
438
+ playStream: (url: string) => Promise<void>;
439
+ createJessibuca: (url: string) => void;
440
+ destroyPlayer: () => Promise<void>;
435
441
  onTimelineSeek: (sec: number) => void;
436
- win: any;
437
442
  startPlayTimer: () => void;
438
443
  ITimelineRuler: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
439
444
  startTime: {