@yimou6/common-ui 1.11.13 → 1.12.0

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.
Files changed (50) hide show
  1. package/cdn/index.cdn.js +11 -11
  2. package/cdn/index.cdn.js.map +1 -1
  3. package/cdn/index.cdn.mjs +11 -11
  4. package/cdn/index.cdn.mjs.map +1 -1
  5. package/cdn/index.css +1 -1
  6. package/es/components/tenant-enterprise/src/tenant-enterprise.vue2.mjs +2 -2
  7. package/es/components/tenant-enterprise/src/tenant-enterprise.vue2.mjs.map +1 -1
  8. package/es/components/tzj-player/index.d.ts +24 -0
  9. package/es/components/tzj-player/src/ctyun-player.vue.d.ts +3 -0
  10. package/es/components/tzj-player/src/easyPlayer.vue.d.ts +3 -0
  11. package/es/components/tzj-player/src/easyPlayer.vue2.mjs +63 -29
  12. package/es/components/tzj-player/src/easyPlayer.vue2.mjs.map +1 -1
  13. package/es/components/tzj-player/src/newPlayer.vue.d.ts +7 -0
  14. package/es/components/tzj-player/src/newPlayer.vue.mjs +6 -0
  15. package/es/components/tzj-player/src/newPlayer.vue.mjs.map +1 -0
  16. package/es/components/tzj-player/src/newPlayer.vue2.mjs +67 -0
  17. package/es/components/tzj-player/src/newPlayer.vue2.mjs.map +1 -0
  18. package/es/components/tzj-player/src/tzj-player.vue.d.ts +24 -0
  19. package/es/components/tzj-player/src/tzj-player.vue2.mjs +10 -9
  20. package/es/components/tzj-player/src/tzj-player.vue2.mjs.map +1 -1
  21. package/es/components/tzj-player/src/xgplayer.vue.d.ts +5 -1
  22. package/es/components/tzj-player/src/xgplayer.vue2.mjs +77 -23
  23. package/es/components/tzj-player/src/xgplayer.vue2.mjs.map +1 -1
  24. package/es/components/tzj-player/src/yunzhiyanPlayer.vue.d.ts +3 -0
  25. package/es/installer.d.ts +1 -1
  26. package/es/installer.mjs.map +1 -1
  27. package/lib/components/tenant-enterprise/src/tenant-enterprise.vue2.js +2 -2
  28. package/lib/components/tenant-enterprise/src/tenant-enterprise.vue2.js.map +1 -1
  29. package/lib/components/tzj-player/index.d.ts +24 -0
  30. package/lib/components/tzj-player/src/ctyun-player.vue.d.ts +3 -0
  31. package/lib/components/tzj-player/src/easyPlayer.vue.d.ts +3 -0
  32. package/lib/components/tzj-player/src/easyPlayer.vue2.js +63 -29
  33. package/lib/components/tzj-player/src/easyPlayer.vue2.js.map +1 -1
  34. package/lib/components/tzj-player/src/newPlayer.vue.d.ts +7 -0
  35. package/lib/components/tzj-player/src/newPlayer.vue.js +10 -0
  36. package/lib/components/tzj-player/src/newPlayer.vue.js.map +1 -0
  37. package/lib/components/tzj-player/src/newPlayer.vue2.js +71 -0
  38. package/lib/components/tzj-player/src/newPlayer.vue2.js.map +1 -0
  39. package/lib/components/tzj-player/src/tzj-player.vue.d.ts +24 -0
  40. package/lib/components/tzj-player/src/tzj-player.vue2.js +10 -9
  41. package/lib/components/tzj-player/src/tzj-player.vue2.js.map +1 -1
  42. package/lib/components/tzj-player/src/xgplayer.vue.d.ts +5 -1
  43. package/lib/components/tzj-player/src/xgplayer.vue2.js +76 -22
  44. package/lib/components/tzj-player/src/xgplayer.vue2.js.map +1 -1
  45. package/lib/components/tzj-player/src/yunzhiyanPlayer.vue.d.ts +3 -0
  46. package/lib/installer.d.ts +1 -1
  47. package/lib/installer.js.map +1 -1
  48. package/package.json +1 -1
  49. package/theme-default/i-tzj-player.css +1 -1
  50. package/theme-default/index.css +1 -1
@@ -1434,6 +1434,9 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
1434
1434
  isFullscreen: import("vue").Ref<boolean, boolean>;
1435
1435
  videoInfo: import("vue").Ref<any, any>;
1436
1436
  realFullscreen: import("vue").Ref<boolean, boolean>;
1437
+ eventHandlers: import("vue").Ref<Map<string, Function> & Omit<Map<string, Function>, keyof Map<any, any>>, Map<string, Function> | (Map<string, Function> & Omit<Map<string, Function>, keyof Map<any, any>>)>;
1438
+ waitTimer: number | null;
1439
+ isUnmounted: boolean;
1437
1440
  play: (url?: string) => void;
1438
1441
  playerPause: () => void;
1439
1442
  playerScreenShot: () => void;
@@ -70,6 +70,9 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
70
70
  isFullscreen: import("vue").Ref<boolean, boolean>;
71
71
  videoInfo: import("vue").Ref<any, any>;
72
72
  realFullscreen: import("vue").Ref<boolean, boolean>;
73
+ eventHandlers: import("vue").Ref<Map<string, Function> & Omit<Map<string, Function>, keyof Map<any, any>>, Map<string, Function> | (Map<string, Function> & Omit<Map<string, Function>, keyof Map<any, any>>)>;
74
+ waitTimer: number | null;
75
+ isUnmounted: boolean;
73
76
  play: (url?: string) => void;
74
77
  playerPause: () => void;
75
78
  playerScreenShot: () => void;
@@ -3,8 +3,8 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var vue = require('vue');
6
- var tzjPlayer = require('./tzj-player.js');
7
6
  require('./errorPage.vue.js');
7
+ var tzjPlayer = require('./tzj-player.js');
8
8
  var errorPage_vue_vue_type_script_setup_true_lang = require('./errorPage.vue2.js');
9
9
 
10
10
  var __defProp = Object.defineProperty;
@@ -40,6 +40,9 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
40
40
  const isFullscreen = vue.ref(false);
41
41
  const videoInfo = vue.ref(null);
42
42
  const realFullscreen = vue.ref(false);
43
+ const eventHandlers = vue.ref(/* @__PURE__ */ new Map());
44
+ let waitTimer = null;
45
+ let isUnmounted = false;
43
46
  vue.onMounted(() => {
44
47
  initPlayer(props.url || "");
45
48
  });
@@ -50,6 +53,11 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
50
53
  }
51
54
  );
52
55
  vue.onBeforeUnmount(() => {
56
+ isUnmounted = true;
57
+ if (waitTimer !== null) {
58
+ clearInterval(waitTimer);
59
+ waitTimer = null;
60
+ }
53
61
  if (props.debug) {
54
62
  console.log("\u7EC4\u4EF6\u5378\u8F7D");
55
63
  }
@@ -99,9 +107,11 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
99
107
  } else {
100
108
  (_c = (_b = playerRef.value) == null ? void 0 : _b.requestFullscreen) == null ? void 0 : _c.call(_b);
101
109
  }
110
+ destroy();
102
111
  setTimeout(() => {
103
- destroy();
104
- initPlayer(playUrl.value);
112
+ if (!isUnmounted) {
113
+ initPlayer(playUrl.value);
114
+ }
105
115
  }, 200);
106
116
  }
107
117
  isFullscreen.value = !fullscreen;
@@ -136,6 +146,10 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
136
146
  if (props.debug) {
137
147
  console.log("\u521D\u59CB\u5316\u64AD\u653E\u5668", url);
138
148
  }
149
+ if (waitTimer !== null) {
150
+ clearInterval(waitTimer);
151
+ waitTimer = null;
152
+ }
139
153
  removePlayerDom();
140
154
  if (url) {
141
155
  playUrl.value = formatUrl(url);
@@ -145,10 +159,13 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
145
159
  if (typeof window !== "undefined" && (window == null ? void 0 : window.EasyPlayerPro)) {
146
160
  createPlayer();
147
161
  } else if (typeof window !== "undefined") {
148
- const timer = setInterval(() => {
162
+ waitTimer = setInterval(() => {
149
163
  if (window == null ? void 0 : window.EasyPlayerPro) {
150
- createPlayer();
151
- clearInterval(timer);
164
+ clearInterval(waitTimer);
165
+ waitTimer = null;
166
+ if (!isUnmounted) {
167
+ createPlayer();
168
+ }
152
169
  }
153
170
  }, 100);
154
171
  }
@@ -195,61 +212,78 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
195
212
  // 是否直播
196
213
  hasAudio: true,
197
214
  // 是否解析音频
198
- bufferTime: 0.2,
199
- // 缓存时长
215
+ bufferTime: 0,
216
+ // 直播监控缓存时长设为0,减少内存堆积
200
217
  stretch: true,
201
218
  // 加视频拉伸
202
219
  MSE: false,
203
220
  WCS: false,
204
221
  WASM: true,
205
222
  debug: false,
206
- operateBtns: {
207
- performance: false
208
- },
223
+ // operateBtns: {
224
+ // performance: false,
225
+ // },
209
226
  autoCleanupSourceBuffer: true,
210
227
  //(对 SourceBuffer 进行自动清理)
211
- autoCleanupMinBackwardDuration: 60
212
- // (指示在执行自动清理时为后向缓冲区保留的持续时间,以秒为单位)
228
+ // H.265 直播监控场景:后向缓冲区保留时长设为0,避免长时间占用大量内存
229
+ // 原值60秒会导致H.265高码率视频内存持续增长
230
+ autoCleanupMinBackwardDuration: 0
213
231
  });
214
232
  }
215
233
  if (player) {
216
234
  player.play(playUrl.value);
217
- player.on("timeout", () => {
235
+ const timeoutHandler = /* @__PURE__ */ __name(() => {
218
236
  props.debug && console.log("\u52A0\u8F7D\u8D85\u65F6");
219
237
  emits("timeout");
220
238
  playSuccess.value = false;
221
239
  destroy();
222
240
  initPlayer(playUrl.value);
223
- });
224
- player.on("error", () => {
241
+ }, "timeoutHandler");
242
+ const errorHandler = /* @__PURE__ */ __name(() => {
225
243
  props.debug && console.log("\u64AD\u653E\u5F02\u5E38");
226
244
  emits("error");
227
245
  playSuccess.value = false;
228
246
  destroy();
229
- });
230
- player.on("play", () => {
247
+ }, "errorHandler");
248
+ const playHandler = /* @__PURE__ */ __name(() => {
231
249
  playSuccess.value = true;
232
250
  props.debug && console.log("\u64AD\u653E");
233
251
  emits("play");
234
- });
235
- player.on("pause", () => {
252
+ }, "playHandler");
253
+ const pauseHandler = /* @__PURE__ */ __name(() => {
236
254
  props.debug && console.log("\u6682\u505C");
237
255
  emits("pause");
238
- });
239
- player.on("videoInfo", (info) => {
256
+ }, "pauseHandler");
257
+ const videoInfoHandler = /* @__PURE__ */ __name((info) => {
240
258
  props.debug && console.log("\u89C6\u9891\u4FE1\u606F", info);
241
259
  videoInfo.value = info;
242
260
  emits("videoInfo", info);
243
- });
244
- player.on("mute", (mute) => {
261
+ }, "videoInfoHandler");
262
+ const muteHandler = /* @__PURE__ */ __name((mute) => {
245
263
  props.debug && console.log("\u9759\u97F3");
246
264
  emits("mute", mute);
247
- });
265
+ }, "muteHandler");
266
+ player.on("timeout", timeoutHandler);
267
+ player.on("error", errorHandler);
268
+ player.on("play", playHandler);
269
+ player.on("pause", pauseHandler);
270
+ player.on("videoInfo", videoInfoHandler);
271
+ player.on("mute", muteHandler);
272
+ eventHandlers.value.set("timeout", timeoutHandler);
273
+ eventHandlers.value.set("error", errorHandler);
274
+ eventHandlers.value.set("play", playHandler);
275
+ eventHandlers.value.set("pause", pauseHandler);
276
+ eventHandlers.value.set("videoInfo", videoInfoHandler);
277
+ eventHandlers.value.set("mute", muteHandler);
248
278
  }
249
279
  }
250
280
  __name(createPlayer, "createPlayer");
251
281
  function destroy() {
252
282
  if (player) {
283
+ eventHandlers.value.forEach((handler, eventName) => {
284
+ player.off(eventName, handler);
285
+ });
286
+ eventHandlers.value.clear();
253
287
  player.destroy();
254
288
  player = null;
255
289
  }
@@ -284,14 +318,14 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
284
318
  ])) : vue.createCommentVNode("v-if", true),
285
319
  !playSuccess.value ? (vue.openBlock(), vue.createBlock(errorPage_vue_vue_type_script_setup_true_lang.default, {
286
320
  key: 1,
287
- videoName: _ctx.areaName || _ctx.deviceSerial,
321
+ "video-name": _ctx.areaName || _ctx.deviceSerial,
288
322
  message: "\u65E0\u4FE1\u53F7"
289
- }, null, 8, ["videoName"])) : vue.createCommentVNode("v-if", true),
323
+ }, null, 8, ["video-name"])) : vue.createCommentVNode("v-if", true),
290
324
  !playUrl.value ? (vue.openBlock(), vue.createBlock(errorPage_vue_vue_type_script_setup_true_lang.default, {
291
325
  key: 2,
292
- videoName: _ctx.areaName || _ctx.deviceSerial,
326
+ "video-name": _ctx.areaName || _ctx.deviceSerial,
293
327
  message: "\u65E0\u64AD\u653E\u5730\u5740"
294
- }, null, 8, ["videoName"])) : vue.createCommentVNode("v-if", true),
328
+ }, null, 8, ["video-name"])) : vue.createCommentVNode("v-if", true),
295
329
  vue.createCommentVNode(" \u64AD\u653E\u5668\u5E95\u90E8\u64CD\u4F5C\u680F "),
296
330
  vue.renderSlot(_ctx.$slots, "customBar")
297
331
  ],
@@ -1 +1 @@
1
- {"version":3,"file":"easyPlayer.vue2.js","sources":["../../../../../../../packages/components/tzj-player/src/easyPlayer.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport {\n computed,\n nextTick,\n onBeforeUnmount,\n onMounted,\n ref,\n shallowRef,\n useSlots,\n watch,\n} from \"vue\";\nimport { TzjPlayerProps, uuid } from \"./tzj-player\";\nimport ErrorPage from \"./errorPage.vue\";\n\ndefineOptions({\n name: \"EasyPlayer\",\n});\n\nconst props = defineProps(TzjPlayerProps);\nconst emits = defineEmits([\n \"timeout\",\n \"error\",\n \"play\",\n \"pause\",\n \"mute\",\n \"videoInfo\",\n]);\nconst slots = useSlots();\nconst customBar = computed(() => slots.customBar);\n\nlet player: any = null;\nconst id = uuid();\nconst playerRef = shallowRef<HTMLDivElement>();\nconst playSuccess = ref(true);\nconst playUrl = ref(\"\");\nconst isFullscreen = ref(false);\nconst videoInfo = ref<any>(null);\nconst realFullscreen = ref(false);\nonMounted(() => {\n initPlayer(props.url || \"\");\n});\n\nwatch(\n () => props.url,\n (newUrl: string) => {\n initPlayer(newUrl || \"\");\n },\n);\n\nonBeforeUnmount(() => {\n if (props.debug) {\n console.log(\"组件卸载\");\n }\n playUrl.value = \"\";\n destroy();\n});\n\nconst play = (url?: string) => {\n if (url) {\n initPlayer(url);\n } else {\n if (player) {\n player.play(playUrl.value);\n } else {\n destroy();\n }\n }\n};\n\nconst playerPause = () => {\n if (props.debug) {\n console.log(\"暂停\");\n }\n player?.pause?.();\n};\n\nconst playerScreenShot = () => {\n if (props.debug) {\n console.log(\"截图\");\n }\n player?.screenshot?.(\n `${props.areaName}_${new Date().getTime()}`,\n \"png\",\n 0.5,\n \"download\",\n );\n};\n\nconst playerFullscreen = (fullscreen: boolean) => {\n realFullscreen.value = fullscreen;\n if (props.debug) {\n console.log(\"全屏\");\n }\n // 自定义全屏逻辑\n if (typeof document !== \"undefined\") {\n if (!fullscreen) {\n document.exitFullscreen?.();\n } else {\n playerRef.value?.requestFullscreen?.();\n }\n setTimeout(() => {\n destroy();\n initPlayer(playUrl.value);\n }, 200);\n }\n isFullscreen.value = !fullscreen;\n};\ndefineExpose({\n play,\n destroy,\n getPlayer: () => player,\n pause: playerPause,\n screenshot: playerScreenShot,\n fullscreen: playerFullscreen,\n isMute: () => {\n return player?.isMute?.();\n },\n setMute: (mute: number) => {\n player?.setMute?.(mute);\n },\n});\n\n/**\n * 格式化URL,确保使用完整的URL\n * @param url - 原始URL\n * @returns 格式化后的URL\n */\nconst formatUrl = (url: string): string => {\n if (!url) return \"\";\n\n // 如果已经是完整URL,直接返回\n if (url.startsWith(\"http://\") || url.startsWith(\"https://\")) {\n return url;\n }\n\n // 检查是否在浏览器环境中,避免SSR环境下的location访问错误\n if (typeof window !== \"undefined\" && window.location) {\n // 如果是相对路径,添加当前域名\n return `${window.location.origin}${url.startsWith(\"/\") ? \"\" : \"/\"}${url}`;\n }\n\n // SSR 环境下返回相对路径\n return url;\n};\n\nasync function initPlayer(url: string) {\n if (props.debug) {\n console.log(\"初始化播放器\", url);\n }\n removePlayerDom();\n if (url) {\n playUrl.value = formatUrl(url);\n if (props.debug) {\n console.log(\"格式化后的url\", playUrl.value);\n }\n if (typeof window !== \"undefined\" && window?.EasyPlayerPro) {\n createPlayer();\n } else if (typeof window !== \"undefined\") {\n const timer = setInterval(() => {\n if (window?.EasyPlayerPro) {\n createPlayer();\n clearInterval(timer);\n }\n }, 100);\n }\n }\n}\n\n/**\n * 移除播放器DOM\n */\nfunction removePlayerDom() {\n if (typeof document !== \"undefined\") {\n const dom = document.getElementById(id);\n dom && dom.remove();\n }\n}\n\n/**\n * 创建播放器DOM\n */\nfunction createPlayerDom() {\n removePlayerDom();\n if (typeof document !== \"undefined\") {\n nextTick(() => {\n const dom = document.createElement(\"div\");\n const { width, height } = playerRef.value!.getBoundingClientRect();\n dom.id = id;\n if (realFullscreen.value) {\n dom.style.width = `100vw`;\n dom.style.height =\n props.areaName || props.deviceSerial ? `calc(100vh - 32px)` : `100vh`;\n } else {\n dom.style.width = `${width}px`;\n dom.style.height =\n props.areaName || props.deviceSerial\n ? `${height - 32}px`\n : `${height}px`;\n }\n playerRef.value?.appendChild(dom);\n });\n }\n}\n\nasync function createPlayer() {\n if (props.debug) {\n console.log(\"创建播放器\");\n }\n videoInfo.value = null;\n createPlayerDom();\n await nextTick();\n if (typeof window !== \"undefined\" && typeof document !== \"undefined\") {\n player = new window.EasyPlayerPro(document.getElementById(id), {\n isLive: true, // 是否直播\n hasAudio: true, // 是否解析音频\n bufferTime: 0.2, // 缓存时长\n stretch: true, // 加视频拉伸\n MSE: false,\n WCS: false,\n WASM: true,\n debug: false,\n operateBtns: {\n performance: false,\n },\n autoCleanupSourceBuffer: true, //(对 SourceBuffer 进行自动清理)\n\n autoCleanupMinBackwardDuration: 60, // (指示在执行自动清理时为后向缓冲区保留的持续时间,以秒为单位)\n });\n }\n if (player) {\n player.play(playUrl.value);\n\n // 15s未获取到视频信息,认为播放失败\n // const videoInfoTimer = setTimeout(() => {\n // if (!videoInfo.value) {\n // props.debug && console.log(\"15s未获取到视频信息\");\n // emits(\"error\");\n // playSuccess.value = false;\n // destroy();\n // initPlayer(playUrl.value);\n // }\n // }, 3000);\n // 加载超时\n player.on(\"timeout\", () => {\n // clearTimeout(videoInfoTimer);\n props.debug && console.log(\"加载超时\");\n emits(\"timeout\");\n playSuccess.value = false;\n destroy();\n initPlayer(playUrl.value);\n });\n // 播放异常\n player.on(\"error\", () => {\n props.debug && console.log(\"播放异常\");\n emits(\"error\");\n playSuccess.value = false;\n destroy();\n });\n player.on(\"play\", () => {\n playSuccess.value = true;\n props.debug && console.log(\"播放\");\n emits(\"play\");\n });\n player.on(\"pause\", () => {\n props.debug && console.log(\"暂停\");\n emits(\"pause\");\n });\n player.on(\"videoInfo\", (info: any) => {\n // clearTimeout(videoInfoTimer);\n props.debug && console.log(\"视频信息\", info);\n videoInfo.value = info;\n emits(\"videoInfo\", info);\n });\n player.on(\"mute\", (mute: false) => {\n props.debug && console.log(\"静音\");\n emits(\"mute\", mute);\n });\n }\n}\n\nfunction destroy() {\n if (player) {\n player.destroy();\n player = null;\n }\n removePlayerDom();\n}\n</script>\n\n<template>\n <div\n ref=\"playerRef\"\n class=\"i-tzj-easyPlayer\"\n :class=\"customBar ? 'i-tzj-easyPlayer--custom' : ''\"\n >\n <!-- 播放器顶部显示区域(设备)名称 -->\n <div v-if=\"areaName || deviceSerial\" class=\"i-tzj-easyPlayer__top\">\n <i class=\"iconfont icon-shexiangtou4\" />\n <span>{{ areaName || deviceSerial }}</span>\n </div>\n <error-page\n :videoName=\"areaName || deviceSerial\"\n message=\"无信号\"\n v-if=\"!playSuccess\"\n />\n <error-page\n :videoName=\"areaName || deviceSerial\"\n message=\"无播放地址\"\n v-if=\"!playUrl\"\n />\n\n <!-- 播放器底部操作栏 -->\n <slot name=\"customBar\" />\n </div>\n</template>\n"],"names":["useSlots","computed","uuid","shallowRef","ref","onMounted","watch","onBeforeUnmount","nextTick","_createElementBlock","_normalizeClass","_createCommentVNode","areaName","deviceSerial","_openBlock","_createElementVNode","_toDisplayString","_createBlock","ErrorPage","_renderSlot"],"mappings":"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"}
1
+ {"version":3,"file":"easyPlayer.vue2.js","sources":["../../../../../../../packages/components/tzj-player/src/easyPlayer.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport {\n computed,\n nextTick,\n onBeforeUnmount,\n onMounted,\n ref,\n shallowRef,\n useSlots,\n watch,\n} from \"vue\";\nimport ErrorPage from \"./errorPage.vue\";\nimport { TzjPlayerProps, uuid } from \"./tzj-player\";\n\ndefineOptions({\n name: \"EasyPlayer\",\n});\n\nconst props = defineProps(TzjPlayerProps);\nconst emits = defineEmits([\n \"timeout\",\n \"error\",\n \"play\",\n \"pause\",\n \"mute\",\n \"videoInfo\",\n]);\nconst slots = useSlots();\nconst customBar = computed(() => slots.customBar);\n\nlet player: any = null;\nconst id = uuid();\nconst playerRef = shallowRef<HTMLDivElement>();\nconst playSuccess = ref(true);\nconst playUrl = ref(\"\");\nconst isFullscreen = ref(false);\nconst videoInfo = ref<any>(null);\nconst realFullscreen = ref(false);\nconst eventHandlers = ref<Map<string, Function>>(new Map());\n// 用于追踪等待 EasyPlayerPro 加载的轮询定时器,防止组件卸载后泄漏\nlet waitTimer: ReturnType<typeof setInterval> | null = null;\n// 标记组件是否已卸载,防止卸载后的异步操作继续执行\nlet isUnmounted = false;\nonMounted(() => {\n initPlayer(props.url || \"\");\n});\n\nwatch(\n () => props.url,\n (newUrl: string) => {\n initPlayer(newUrl || \"\");\n },\n);\n\nonBeforeUnmount(() => {\n isUnmounted = true;\n // 清除等待 EasyPlayerPro 加载的轮询定时器,防止卸载后继续创建播放器\n if (waitTimer !== null) {\n clearInterval(waitTimer);\n waitTimer = null;\n }\n if (props.debug) {\n console.log(\"组件卸载\");\n }\n playUrl.value = \"\";\n destroy();\n});\n\nconst play = (url?: string) => {\n if (url) {\n initPlayer(url);\n } else {\n if (player) {\n player.play(playUrl.value);\n } else {\n destroy();\n }\n }\n};\n\nconst playerPause = () => {\n if (props.debug) {\n console.log(\"暂停\");\n }\n player?.pause?.();\n};\n\nconst playerScreenShot = () => {\n if (props.debug) {\n console.log(\"截图\");\n }\n player?.screenshot?.(\n `${props.areaName}_${new Date().getTime()}`,\n \"png\",\n 0.5,\n \"download\",\n );\n};\n\nconst playerFullscreen = (fullscreen: boolean) => {\n realFullscreen.value = fullscreen;\n if (props.debug) {\n console.log(\"全屏\");\n }\n // 自定义全屏逻辑\n if (typeof document !== \"undefined\") {\n if (!fullscreen) {\n document.exitFullscreen?.();\n } else {\n playerRef.value?.requestFullscreen?.();\n }\n // 先同步销毁,再延迟重建,避免异步销毁时组件已卸载导致实例泄漏\n destroy();\n setTimeout(() => {\n if (!isUnmounted) {\n initPlayer(playUrl.value);\n }\n }, 200);\n }\n isFullscreen.value = !fullscreen;\n};\ndefineExpose({\n play,\n destroy,\n getPlayer: () => player,\n pause: playerPause,\n screenshot: playerScreenShot,\n fullscreen: playerFullscreen,\n isMute: () => {\n return player?.isMute?.();\n },\n setMute: (mute: number) => {\n player?.setMute?.(mute);\n },\n});\n\n/**\n * 格式化URL,确保使用完整的URL\n * @param url - 原始URL\n * @returns 格式化后的URL\n */\nconst formatUrl = (url: string): string => {\n if (!url) return \"\";\n\n // 如果已经是完整URL,直接返回\n if (url.startsWith(\"http://\") || url.startsWith(\"https://\")) {\n return url;\n }\n\n // 检查是否在浏览器环境中,避免SSR环境下的location访问错误\n if (typeof window !== \"undefined\" && window.location) {\n // 如果是相对路径,添加当前域名\n return `${window.location.origin}${url.startsWith(\"/\") ? \"\" : \"/\"}${url}`;\n }\n\n // SSR 环境下返回相对路径\n return url;\n};\n\nasync function initPlayer(url: string) {\n if (props.debug) {\n console.log(\"初始化播放器\", url);\n }\n // 清除上一次可能残留的轮询定时器\n if (waitTimer !== null) {\n clearInterval(waitTimer);\n waitTimer = null;\n }\n removePlayerDom();\n if (url) {\n playUrl.value = formatUrl(url);\n if (props.debug) {\n console.log(\"格式化后的url\", playUrl.value);\n }\n if (typeof window !== \"undefined\" && window?.EasyPlayerPro) {\n createPlayer();\n } else if (typeof window !== \"undefined\") {\n waitTimer = setInterval(() => {\n if (window?.EasyPlayerPro) {\n clearInterval(waitTimer!);\n waitTimer = null;\n // 组件已卸载则不再创建播放器\n if (!isUnmounted) {\n createPlayer();\n }\n }\n }, 100);\n }\n }\n}\n\n/**\n * 移除播放器DOM\n */\nfunction removePlayerDom() {\n if (typeof document !== \"undefined\") {\n const dom = document.getElementById(id);\n dom && dom.remove();\n }\n}\n\n/**\n * 创建播放器DOM\n */\nfunction createPlayerDom() {\n removePlayerDom();\n if (typeof document !== \"undefined\") {\n nextTick(() => {\n const dom = document.createElement(\"div\");\n const { width, height } = playerRef.value!.getBoundingClientRect();\n dom.id = id;\n if (realFullscreen.value) {\n dom.style.width = `100vw`;\n dom.style.height =\n props.areaName || props.deviceSerial ? `calc(100vh - 32px)` : `100vh`;\n } else {\n dom.style.width = `${width}px`;\n dom.style.height =\n props.areaName || props.deviceSerial\n ? `${height - 32}px`\n : `${height}px`;\n }\n playerRef.value?.appendChild(dom);\n });\n }\n}\n\nasync function createPlayer() {\n if (props.debug) {\n console.log(\"创建播放器\");\n }\n videoInfo.value = null;\n createPlayerDom();\n await nextTick();\n\n if (typeof window !== \"undefined\" && typeof document !== \"undefined\") {\n player = new window.EasyPlayerPro(document.getElementById(id), {\n isLive: true, // 是否直播\n hasAudio: true, // 是否解析音频\n bufferTime: 0, // 直播监控缓存时长设为0,减少内存堆积\n stretch: true, // 加视频拉伸\n MSE: false,\n WCS: false,\n WASM: true,\n debug: false,\n // operateBtns: {\n // performance: false,\n // },\n autoCleanupSourceBuffer: true, //(对 SourceBuffer 进行自动清理)\n // H.265 直播监控场景:后向缓冲区保留时长设为0,避免长时间占用大量内存\n // 原值60秒会导致H.265高码率视频内存持续增长\n autoCleanupMinBackwardDuration: 0,\n });\n }\n if (player) {\n player.play(playUrl.value);\n\n const timeoutHandler = () => {\n props.debug && console.log(\"加载超时\");\n emits(\"timeout\");\n playSuccess.value = false;\n destroy();\n initPlayer(playUrl.value);\n };\n\n const errorHandler = () => {\n props.debug && console.log(\"播放异常\");\n emits(\"error\");\n playSuccess.value = false;\n destroy();\n };\n\n const playHandler = () => {\n playSuccess.value = true;\n props.debug && console.log(\"播放\");\n emits(\"play\");\n };\n\n const pauseHandler = () => {\n props.debug && console.log(\"暂停\");\n emits(\"pause\");\n };\n\n const videoInfoHandler = (info: any) => {\n props.debug && console.log(\"视频信息\", info);\n videoInfo.value = info;\n emits(\"videoInfo\", info);\n };\n\n const muteHandler = (mute: false) => {\n props.debug && console.log(\"静音\");\n emits(\"mute\", mute);\n };\n\n player.on(\"timeout\", timeoutHandler);\n player.on(\"error\", errorHandler);\n player.on(\"play\", playHandler);\n player.on(\"pause\", pauseHandler);\n player.on(\"videoInfo\", videoInfoHandler);\n player.on(\"mute\", muteHandler);\n\n eventHandlers.value.set(\"timeout\", timeoutHandler);\n eventHandlers.value.set(\"error\", errorHandler);\n eventHandlers.value.set(\"play\", playHandler);\n eventHandlers.value.set(\"pause\", pauseHandler);\n eventHandlers.value.set(\"videoInfo\", videoInfoHandler);\n eventHandlers.value.set(\"mute\", muteHandler);\n }\n}\n\nfunction destroy() {\n if (player) {\n eventHandlers.value.forEach((handler, eventName) => {\n player.off(eventName, handler);\n });\n eventHandlers.value.clear();\n player.destroy();\n player = null;\n }\n removePlayerDom();\n}\n</script>\n\n<template>\n <div\n ref=\"playerRef\"\n class=\"i-tzj-easyPlayer\"\n :class=\"customBar ? 'i-tzj-easyPlayer--custom' : ''\"\n >\n <!-- 播放器顶部显示区域(设备)名称 -->\n <div v-if=\"areaName || deviceSerial\" class=\"i-tzj-easyPlayer__top\">\n <i class=\"iconfont icon-shexiangtou4\" />\n <span>{{ areaName || deviceSerial }}</span>\n </div>\n <ErrorPage\n v-if=\"!playSuccess\"\n :video-name=\"areaName || deviceSerial\"\n message=\"无信号\"\n />\n <ErrorPage\n v-if=\"!playUrl\"\n :video-name=\"areaName || deviceSerial\"\n message=\"无播放地址\"\n />\n\n <!-- 播放器底部操作栏 -->\n <slot name=\"customBar\" />\n </div>\n</template>\n"],"names":["useSlots","computed","uuid","shallowRef","ref","onMounted","watch","onBeforeUnmount","nextTick","_createElementBlock","_normalizeClass","_createCommentVNode","areaName","deviceSerial","_openBlock","_createElementVNode","_toDisplayString","_createBlock","ErrorPage","_renderSlot"],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ declare const _default: import("vue").DefineComponent<{}, {
2
+ player: import("vue").Ref<any, any>;
3
+ destroy: () => void;
4
+ play: () => void;
5
+ initPlayer: () => void;
6
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
7
+ export default _default;
@@ -0,0 +1,10 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var newPlayer_vue_vue_type_script_setup_true_lang = require('./newPlayer.vue2.js');
6
+
7
+
8
+
9
+ exports.default = newPlayer_vue_vue_type_script_setup_true_lang.default;
10
+ //# sourceMappingURL=newPlayer.vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"newPlayer.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
@@ -0,0 +1,71 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var vue = require('vue');
6
+
7
+ var __defProp = Object.defineProperty;
8
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
9
+ const _hoisted_1 = {
10
+ id: "player",
11
+ class: "w-50 h-50"
12
+ };
13
+ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
14
+ ...{
15
+ name: ""
16
+ },
17
+ __name: "newPlayer",
18
+ setup(__props) {
19
+ const player = vue.ref(null);
20
+ function destroy() {
21
+ var _a;
22
+ (_a = player.value) == null ? void 0 : _a.destroy();
23
+ player.value = null;
24
+ }
25
+ __name(destroy, "destroy");
26
+ function play() {
27
+ player.value = new window.EasyPlayerPro(document.getElementById("player"), {
28
+ isLive: true,
29
+ // 是否直播
30
+ hasAudio: true,
31
+ // 是否解析音频
32
+ bufferTime: 0.2,
33
+ // 缓存时长
34
+ stretch: true,
35
+ // 加视频拉伸
36
+ MSE: false,
37
+ WCS: false,
38
+ WASM: true,
39
+ gpuDecoder: true,
40
+ debug: false
41
+ // operateBtns: {
42
+ // performance: false,
43
+ // },
44
+ });
45
+ console.log("\u{1F680} ~ player.value:", player.value);
46
+ player.value.play("http://192.168.111.212:8099/tzjzlm/23_39-1/hls.m3u8");
47
+ }
48
+ __name(play, "play");
49
+ function initPlayer() {
50
+ console.log("initPlayer");
51
+ destroy();
52
+ try {
53
+ play();
54
+ } catch (error) {
55
+ setTimeout(() => {
56
+ initPlayer();
57
+ }, 1e3);
58
+ }
59
+ }
60
+ __name(initPlayer, "initPlayer");
61
+ vue.onMounted(() => {
62
+ initPlayer();
63
+ });
64
+ return (_ctx, _cache) => {
65
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1);
66
+ };
67
+ }
68
+ });
69
+
70
+ exports.default = _sfc_main;
71
+ //# sourceMappingURL=newPlayer.vue2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"newPlayer.vue2.js","sources":["../../../../../../../packages/components/tzj-player/src/newPlayer.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { onMounted, ref } from \"vue\";\n\ndefineOptions({\n name: \"\",\n});\nconst player = ref<any>(null);\nfunction destroy() {\n // player.value?.pause();\n player.value?.destroy();\n player.value = null;\n}\nfunction play() {\n player.value = new window.EasyPlayerPro(document.getElementById(\"player\"), {\n isLive: true, // 是否直播\n hasAudio: true, // 是否解析音频\n bufferTime: 0.2, // 缓存时长\n stretch: true, // 加视频拉伸\n MSE: false,\n WCS: false,\n WASM: true,\n gpuDecoder: true,\n debug: false,\n // operateBtns: {\n // performance: false,\n // },\n });\n console.log(\"🚀 ~ player.value:\", player.value);\n\n player.value.play(\"http://192.168.111.212:8099/tzjzlm/23_39-1/hls.m3u8\");\n}\nfunction initPlayer() {\n console.log(\"initPlayer\");\n destroy();\n try {\n play();\n } catch (error) {\n setTimeout(() => {\n initPlayer();\n }, 1000);\n }\n}\n\nonMounted(() => {\n initPlayer();\n});\n</script>\n\n<template>\n <div id=\"player\" class=\"w-50 h-50\" />\n</template>\n\n<style lang=\"scss\" scoped></style>\n"],"names":["ref","onMounted","_openBlock","_createElementBlock"],"mappings":";;;;;;;;;;;;;;;;;;AAMA,IAAM,MAAA,MAAA,GAASA,QAAS,IAAI,CAAA;AAC5B,IAAA,SAAS,OAAU,GAAA;;AAEjB,MAAA,CAAA,EAAA,GAAA,MAAA,CAAO,UAAP,IAAc,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAA,EAAA;AACd,MAAA,MAAA,CAAO,KAAQ,GAAA,IAAA;AAAA;AAHR,IAAA,MAAA,CAAA,OAAA,EAAA,SAAA,CAAA;AAKT,IAAA,SAAS,IAAO,GAAA;AACd,MAAA,MAAA,CAAO,QAAQ,IAAI,MAAA,CAAO,cAAc,QAAS,CAAA,cAAA,CAAe,QAAQ,CAAG,EAAA;AAAA,QACzE,MAAQ,EAAA,IAAA;AAAA;AAAA,QACR,QAAU,EAAA,IAAA;AAAA;AAAA,QACV,UAAY,EAAA,GAAA;AAAA;AAAA,QACZ,OAAS,EAAA,IAAA;AAAA;AAAA,QACT,GAAK,EAAA,KAAA;AAAA,QACL,GAAK,EAAA,KAAA;AAAA,QACL,IAAM,EAAA,IAAA;AAAA,QACN,UAAY,EAAA,IAAA;AAAA,QACZ,KAAO,EAAA;AAAA;AAAA;AAAA;AAAA,OAIR,CAAA;AACD,MAAQ,OAAA,CAAA,GAAA,CAAI,2BAAsB,EAAA,MAAA,CAAO,KAAK,CAAA;AAE9C,MAAO,MAAA,CAAA,KAAA,CAAM,KAAK,qDAAqD,CAAA;AAAA;AAjBhE,IAAA,MAAA,CAAA,IAAA,EAAA,MAAA,CAAA;AAmBT,IAAA,SAAS,UAAa,GAAA;AACpB,MAAA,OAAA,CAAQ,IAAI,YAAY,CAAA;AACxB,MAAQ,OAAA,EAAA;AACR,MAAI,IAAA;AACF,QAAK,IAAA,EAAA;AAAA,eACE,KAAO,EAAA;AACd,QAAA,UAAA,CAAW,MAAM;AACf,UAAW,UAAA,EAAA;AAAA,WACV,GAAI,CAAA;AAAA;AACT;AATO,IAAA,MAAA,CAAA,UAAA,EAAA,YAAA,CAAA;AAYT,IAAAC,aAAA,CAAU,MAAM;AACd,MAAW,UAAA,EAAA;AAAA,KACZ,CAAA;;AAIC,MAAA,OAAAC,aAAA,EAAA,EAAAC,sBAAqC,CAAA,KAAA,EAArC,UAAqC,CAAA;AAAA;;;;;;"}
@@ -1492,6 +1492,9 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
1492
1492
  isFullscreen: import("vue").Ref<boolean, boolean>;
1493
1493
  videoInfo: import("vue").Ref<any, any>;
1494
1494
  realFullscreen: import("vue").Ref<boolean, boolean>;
1495
+ eventHandlers: import("vue").Ref<Map<string, Function> & Omit<Map<string, Function>, keyof Map<any, any>>, Map<string, Function> | (Map<string, Function> & Omit<Map<string, Function>, keyof Map<any, any>>)>;
1496
+ waitTimer: number | null;
1497
+ isUnmounted: boolean;
1495
1498
  play: (url?: string) => void;
1496
1499
  playerPause: () => void;
1497
1500
  playerScreenShot: () => void;
@@ -3195,6 +3198,9 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
3195
3198
  isFullscreen: import("vue").Ref<boolean, boolean>;
3196
3199
  videoInfo: import("vue").Ref<any, any>;
3197
3200
  realFullscreen: import("vue").Ref<boolean, boolean>;
3201
+ eventHandlers: import("vue").Ref<Map<string, Function> & Omit<Map<string, Function>, keyof Map<any, any>>, Map<string, Function> | (Map<string, Function> & Omit<Map<string, Function>, keyof Map<any, any>>)>;
3202
+ waitTimer: number | null;
3203
+ isUnmounted: boolean;
3198
3204
  play: (url?: string) => void;
3199
3205
  playerPause: () => void;
3200
3206
  playerScreenShot: () => void;
@@ -3417,6 +3423,9 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
3417
3423
  isFullscreen: import("vue").Ref<boolean, boolean>;
3418
3424
  videoInfo: import("vue").Ref<any, any>;
3419
3425
  realFullscreen: import("vue").Ref<boolean, boolean>;
3426
+ eventHandlers: import("vue").Ref<Map<string, Function> & Omit<Map<string, Function>, keyof Map<any, any>>, Map<string, Function> | (Map<string, Function> & Omit<Map<string, Function>, keyof Map<any, any>>)>;
3427
+ waitTimer: number | null;
3428
+ isUnmounted: boolean;
3420
3429
  play: (url?: string) => void;
3421
3430
  playerPause: () => void;
3422
3431
  playerScreenShot: () => void;
@@ -4935,6 +4944,9 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
4935
4944
  isFullscreen: import("vue").Ref<boolean, boolean>;
4936
4945
  videoInfo: import("vue").Ref<any, any>;
4937
4946
  realFullscreen: import("vue").Ref<boolean, boolean>;
4947
+ eventHandlers: import("vue").Ref<Map<string, Function> & Omit<Map<string, Function>, keyof Map<any, any>>, Map<string, Function> | (Map<string, Function> & Omit<Map<string, Function>, keyof Map<any, any>>)>;
4948
+ waitTimer: number | null;
4949
+ isUnmounted: boolean;
4938
4950
  play: (url?: string) => void;
4939
4951
  playerPause: () => void;
4940
4952
  playerScreenShot: () => void;
@@ -6636,6 +6648,9 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
6636
6648
  isFullscreen: import("vue").Ref<boolean, boolean>;
6637
6649
  videoInfo: import("vue").Ref<any, any>;
6638
6650
  realFullscreen: import("vue").Ref<boolean, boolean>;
6651
+ eventHandlers: import("vue").Ref<Map<string, Function> & Omit<Map<string, Function>, keyof Map<any, any>>, Map<string, Function> | (Map<string, Function> & Omit<Map<string, Function>, keyof Map<any, any>>)>;
6652
+ waitTimer: number | null;
6653
+ isUnmounted: boolean;
6639
6654
  play: (url?: string) => void;
6640
6655
  playerPause: () => void;
6641
6656
  playerScreenShot: () => void;
@@ -6861,6 +6876,9 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
6861
6876
  isFullscreen: import("vue").Ref<boolean, boolean>;
6862
6877
  videoInfo: import("vue").Ref<any, any>;
6863
6878
  realFullscreen: import("vue").Ref<boolean, boolean>;
6879
+ eventHandlers: import("vue").Ref<Map<string, Function> & Omit<Map<string, Function>, keyof Map<any, any>>, Map<string, Function> | (Map<string, Function> & Omit<Map<string, Function>, keyof Map<any, any>>)>;
6880
+ waitTimer: number | null;
6881
+ isUnmounted: boolean;
6864
6882
  play: (url?: string) => void;
6865
6883
  playerPause: () => void;
6866
6884
  playerScreenShot: () => void;
@@ -8379,6 +8397,9 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
8379
8397
  isFullscreen: import("vue").Ref<boolean, boolean>;
8380
8398
  videoInfo: import("vue").Ref<any, any>;
8381
8399
  realFullscreen: import("vue").Ref<boolean, boolean>;
8400
+ eventHandlers: import("vue").Ref<Map<string, Function> & Omit<Map<string, Function>, keyof Map<any, any>>, Map<string, Function> | (Map<string, Function> & Omit<Map<string, Function>, keyof Map<any, any>>)>;
8401
+ waitTimer: number | null;
8402
+ isUnmounted: boolean;
8382
8403
  play: (url?: string) => void;
8383
8404
  playerPause: () => void;
8384
8405
  playerScreenShot: () => void;
@@ -10080,6 +10101,9 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
10080
10101
  isFullscreen: import("vue").Ref<boolean, boolean>;
10081
10102
  videoInfo: import("vue").Ref<any, any>;
10082
10103
  realFullscreen: import("vue").Ref<boolean, boolean>;
10104
+ eventHandlers: import("vue").Ref<Map<string, Function> & Omit<Map<string, Function>, keyof Map<any, any>>, Map<string, Function> | (Map<string, Function> & Omit<Map<string, Function>, keyof Map<any, any>>)>;
10105
+ waitTimer: number | null;
10106
+ isUnmounted: boolean;
10083
10107
  play: (url?: string) => void;
10084
10108
  playerPause: () => void;
10085
10109
  playerScreenShot: () => void;
@@ -6,9 +6,9 @@ var vue = require('vue');
6
6
  var lodashEs = require('lodash-es');
7
7
  require('./ctyun-player.vue.js');
8
8
  require('./easyPlayer.vue.js');
9
+ require('./errorPage.vue.js');
9
10
  var tzjPlayer = require('./tzj-player.js');
10
11
  require('./ysPlayer.vue.js');
11
- require('./errorPage.vue.js');
12
12
  require('./yunzhiyanPlayer.vue.js');
13
13
  var yunzhiyanPlayer_vue_vue_type_script_setup_true_lang = require('./yunzhiyanPlayer.vue2.js');
14
14
  var ysPlayer_vue_vue_type_script_setup_true_lang = require('./ysPlayer.vue2.js');
@@ -35,10 +35,11 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
35
35
  }, 300);
36
36
  vue.watch(
37
37
  () => [url.value, platformTypeName.value, accessToken.value],
38
- () => {
39
- updatePlayerComponent();
40
- },
41
- { deep: true }
38
+ ([newUrl, newPlatform, newToken], [oldUrl, oldPlatform, oldToken]) => {
39
+ if (newUrl !== oldUrl || newPlatform !== oldPlatform || newToken !== oldToken) {
40
+ updatePlayerComponent();
41
+ }
42
+ }
42
43
  );
43
44
  const PLATFORM_COMPONENTS = {
44
45
  \u4E91\u667A\u773C: yunzhiyanPlayer_vue_vue_type_script_setup_true_lang.default,
@@ -143,9 +144,9 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
143
144
  vue.createCommentVNode(" \u9519\u8BEF\u72B6\u6001\u663E\u793A "),
144
145
  errorState.value ? (vue.openBlock(), vue.createBlock(errorPage_vue_vue_type_script_setup_true_lang.default, {
145
146
  key: 0,
146
- videoName: _ctx.areaName || _ctx.deviceSerial,
147
+ "video-name": _ctx.areaName || _ctx.deviceSerial,
147
148
  message: errorState.value.message
148
- }, null, 8, ["videoName", "message"])) : shouldShowPlayer.value ? (vue.openBlock(), vue.createElementBlock(
149
+ }, null, 8, ["video-name", "message"])) : shouldShowPlayer.value ? (vue.openBlock(), vue.createElementBlock(
149
150
  vue.Fragment,
150
151
  { key: 1 },
151
152
  [
@@ -169,9 +170,9 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
169
170
  [
170
171
  vue.createCommentVNode(" \u65E0\u53EF\u7528\u64AD\u653E\u5668 "),
171
172
  vue.createVNode(errorPage_vue_vue_type_script_setup_true_lang.default, {
172
- videoName: _ctx.areaName || _ctx.deviceSerial,
173
+ "video-name": _ctx.areaName || _ctx.deviceSerial,
173
174
  message: "\u65E0\u4FE1\u53F7"
174
- }, null, 8, ["videoName"])
175
+ }, null, 8, ["video-name"])
175
176
  ],
176
177
  2112
177
178
  /* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */
@@ -1 +1 @@
1
- {"version":3,"file":"tzj-player.vue2.js","sources":["../../../../../../../packages/components/tzj-player/src/tzj-player.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, shallowRef, toRefs, watch } from \"vue\";\nimport { debounce } from \"lodash-es\";\nimport CtyunPlayer from \"./ctyun-player.vue\";\nimport EasyPlayer from \"./easyPlayer.vue\";\n// import XgPlayer from \"./xgplayer.vue\";\nimport {\n getVideoType,\n isSupportedProtocol,\n TzjPlayerProps,\n} from \"./tzj-player\";\nimport YsPlayer from \"./ysPlayer.vue\";\nimport ErrorPage from \"./errorPage.vue\";\nimport YunzhiyanPlayer from \"./yunzhiyanPlayer.vue\";\n\ndefineOptions({\n name: \"ITzjPlayer\",\n});\n\nconst props = defineProps(TzjPlayerProps);\nconst { url, platformTypeName, accessToken } = toRefs(props);\n\nconst compRef = shallowRef();\n\n// 防抖处理组件渲染更新,避免频繁切换播放器类型\nconst updatePlayerComponent = debounce(() => {\n // 强制更新组件,销毁旧实例\n if (compRef.value) {\n compRef.value.destroy?.();\n }\n}, 300);\n\n// 监听URL变化,使用防抖处理\nwatch(\n () => [url.value, platformTypeName.value, accessToken.value],\n () => {\n // 更新播放器组件\n updatePlayerComponent();\n },\n { deep: true },\n);\n\n/**\n * 平台类型映射表,提升可维护性\n */\nconst PLATFORM_COMPONENTS = {\n 云智眼: YunzhiyanPlayer,\n 萤石云: YsPlayer,\n 天翼云: CtyunPlayer,\n // hls: XgPlayer,\n} as const;\n\n/**\n * 计算当前播放器组件类型\n * 使用计算属性避免重复计算,提升性能\n */\nconst playerComponent = computed(() => {\n // 优先使用指定的平台类型\n if (platformTypeName.value) {\n return (\n PLATFORM_COMPONENTS[\n platformTypeName.value as keyof typeof PLATFORM_COMPONENTS\n ] || EasyPlayer\n );\n }\n\n // 未指定平台类型时,根据URL自动判断\n if (!url.value) {\n return null;\n }\n\n // 检查协议支持性\n if (!isSupportedProtocol(url.value)) {\n return null;\n }\n\n // ezopen协议使用萤石云播放器\n if (url.value.includes(\"ezopen\")) {\n return YsPlayer;\n }\n\n // 根据视频类型选择播放器\n const videoType = getVideoType(url.value);\n return videoType ? EasyPlayer : null;\n});\n\n/**\n * 计算错误状态信息\n * 统一错误状态管理,提升用户体验\n */\nconst errorState = computed(() => {\n // 云智眼平台不需要URL\n if (\n platformTypeName.value === \"云智眼\" ||\n platformTypeName.value === \"天翼云\"\n ) {\n return null;\n }\n\n // 检查URL是否存在\n if (!url.value) {\n return {\n type: \"no-url\",\n message: \"无视频地址\",\n };\n }\n\n // 检查协议支持性\n if (!isSupportedProtocol(url.value)) {\n return {\n type: \"unsupported-protocol\",\n message: \"不支持该视频协议\",\n };\n }\n\n // 萤石云平台需要accessToken\n if (\n (platformTypeName.value === \"萤石云\" || url.value.includes(\"ezopen\")) &&\n !accessToken.value\n ) {\n return {\n type: \"no-token\",\n message: \"缺少访问令牌\",\n };\n }\n\n return null;\n});\n\n/**\n * 计算是否显示播放器组件\n */\nconst shouldShowPlayer = computed(() => {\n return !errorState.value && playerComponent.value;\n});\n\n/**\n * 暴露的方法,增加错误处理\n */\ndefineExpose({\n /**\n * 播放视频\n * @param options 播放选项\n */\n play(options?: any) {\n if (!compRef.value) {\n props.debug && console.warn(\"[TzjPlayer] 播放器组件未初始化\");\n return;\n }\n compRef.value?.play(options);\n },\n\n /**\n * 销毁播放器\n */\n destroy() {\n if (!compRef.value) {\n props.debug && console.warn(\"[TzjPlayer] 播放器组件未初始化\");\n return;\n }\n compRef.value?.destroy();\n },\n\n /**\n * 调整播放器尺寸\n */\n resize() {\n if (!compRef.value) {\n props.debug && console.warn(\"[TzjPlayer] 播放器组件未初始化\");\n return;\n }\n compRef.value?.resize();\n },\n\n /**\n * 获取当前播放器类型\n */\n getPlayerType() {\n return playerComponent.value?.name || null;\n },\n\n /**\n * 获取错误状态\n */\n getErrorState() {\n return errorState.value;\n },\n});\n</script>\n\n<template>\n <div class=\"i-tzj-player\">\n <!-- 错误状态显示 -->\n <error-page\n :videoName=\"areaName || deviceSerial\"\n :message=\"errorState.message\"\n v-if=\"errorState\"\n />\n\n <!-- 播放器组件 -->\n <component\n :is=\"playerComponent\"\n v-else-if=\"shouldShowPlayer\"\n ref=\"compRef\"\n v-bind=\"props\"\n />\n\n <!-- 无可用播放器 -->\n <error-page :videoName=\"areaName || deviceSerial\" message=\"无信号\" v-else />\n </div>\n</template>\n"],"names":["toRefs","shallowRef","debounce","watch","YunzhiyanPlayer","YsPlayer","CtyunPlayer","computed","EasyPlayer","isSupportedProtocol","getVideoType","_openBlock","_createElementBlock","_createCommentVNode","_createBlock","ErrorPage","areaName","deviceSerial","_Fragment","_resolveDynamicComponent","_mergeProps","_createVNode"],"mappings":"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"}
1
+ {"version":3,"file":"tzj-player.vue2.js","sources":["../../../../../../../packages/components/tzj-player/src/tzj-player.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { debounce } from \"lodash-es\";\nimport { computed, shallowRef, toRefs, watch } from \"vue\";\nimport CtyunPlayer from \"./ctyun-player.vue\";\nimport EasyPlayer from \"./easyPlayer.vue\";\nimport ErrorPage from \"./errorPage.vue\";\nimport {\n getVideoType,\n isSupportedProtocol,\n TzjPlayerProps,\n} from \"./tzj-player\";\nimport YsPlayer from \"./ysPlayer.vue\";\nimport YunzhiyanPlayer from \"./yunzhiyanPlayer.vue\";\n\ndefineOptions({\n name: \"ITzjPlayer\",\n});\n\nconst props = defineProps(TzjPlayerProps);\nconst { url, platformTypeName, accessToken } = toRefs(props);\n\nconst compRef = shallowRef();\n\n// 防抖处理组件渲染更新,避免频繁切换播放器类型\nconst updatePlayerComponent = debounce(() => {\n // 强制更新组件,销毁旧实例\n if (compRef.value) {\n compRef.value.destroy?.();\n }\n}, 300);\n\n// 监听URL变化,使用防抖处理\nwatch(\n () => [url.value, platformTypeName.value, accessToken.value],\n ([newUrl, newPlatform, newToken], [oldUrl, oldPlatform, oldToken]) => {\n // 只有当值真正发生变化时才更新\n if (\n newUrl !== oldUrl ||\n newPlatform !== oldPlatform ||\n newToken !== oldToken\n ) {\n // 更新播放器组件\n updatePlayerComponent();\n }\n },\n);\n\n/**\n * 平台类型映射表,提升可维护性\n */\nconst PLATFORM_COMPONENTS = {\n 云智眼: YunzhiyanPlayer,\n 萤石云: YsPlayer,\n 天翼云: CtyunPlayer,\n // hls: XgPlayer,\n} as const;\n\n/**\n * 计算当前播放器组件类型\n * 使用计算属性避免重复计算,提升性能\n */\nconst playerComponent = computed(() => {\n // 优先使用指定的平台类型\n if (platformTypeName.value) {\n return (\n PLATFORM_COMPONENTS[\n platformTypeName.value as keyof typeof PLATFORM_COMPONENTS\n ] || EasyPlayer\n );\n }\n\n // 未指定平台类型时,根据URL自动判断\n if (!url.value) {\n return null;\n }\n\n // 检查协议支持性\n if (!isSupportedProtocol(url.value)) {\n return null;\n }\n\n // ezopen协议使用萤石云播放器\n if (url.value.includes(\"ezopen\")) {\n return YsPlayer;\n }\n\n // 根据视频类型选择播放器\n const videoType = getVideoType(url.value);\n return videoType ? EasyPlayer : null;\n});\n\n/**\n * 计算错误状态信息\n * 统一错误状态管理,提升用户体验\n */\nconst errorState = computed(() => {\n // 云智眼平台不需要URL\n if (\n platformTypeName.value === \"云智眼\" ||\n platformTypeName.value === \"天翼云\"\n ) {\n return null;\n }\n\n // 检查URL是否存在\n if (!url.value) {\n return {\n type: \"no-url\",\n message: \"无视频地址\",\n };\n }\n // 检查协议支持性\n if (!isSupportedProtocol(url.value)) {\n return {\n type: \"unsupported-protocol\",\n message: \"不支持该视频协议\",\n };\n }\n\n // 萤石云平台需要accessToken\n if (\n (platformTypeName.value === \"萤石云\" || url.value.includes(\"ezopen\")) &&\n !accessToken.value\n ) {\n return {\n type: \"no-token\",\n message: \"缺少访问令牌\",\n };\n }\n\n return null;\n});\n\n/**\n * 计算是否显示播放器组件\n */\nconst shouldShowPlayer = computed(() => {\n return !errorState.value && playerComponent.value;\n});\n\n/**\n * 暴露的方法,增加错误处理\n */\ndefineExpose({\n /**\n * 播放视频\n * @param options 播放选项\n */\n play(options?: any) {\n if (!compRef.value) {\n props.debug && console.warn(\"[TzjPlayer] 播放器组件未初始化\");\n return;\n }\n compRef.value?.play(options);\n },\n\n /**\n * 销毁播放器\n */\n destroy() {\n if (!compRef.value) {\n props.debug && console.warn(\"[TzjPlayer] 播放器组件未初始化\");\n return;\n }\n compRef.value?.destroy();\n },\n\n /**\n * 调整播放器尺寸\n */\n resize() {\n if (!compRef.value) {\n props.debug && console.warn(\"[TzjPlayer] 播放器组件未初始化\");\n return;\n }\n compRef.value?.resize();\n },\n\n /**\n * 获取当前播放器类型\n */\n getPlayerType() {\n return playerComponent.value?.name || null;\n },\n\n /**\n * 获取错误状态\n */\n getErrorState() {\n return errorState.value;\n },\n});\n</script>\n\n<template>\n <div class=\"i-tzj-player\">\n <!-- 错误状态显示 -->\n <ErrorPage\n v-if=\"errorState\"\n :video-name=\"areaName || deviceSerial\"\n :message=\"errorState.message\"\n />\n\n <!-- 播放器组件 -->\n <component\n :is=\"playerComponent\"\n v-else-if=\"shouldShowPlayer\"\n ref=\"compRef\"\n v-bind=\"props\"\n />\n\n <!-- 无可用播放器 -->\n <ErrorPage v-else :video-name=\"areaName || deviceSerial\" message=\"无信号\" />\n </div>\n</template>\n"],"names":["toRefs","shallowRef","debounce","watch","YunzhiyanPlayer","YsPlayer","CtyunPlayer","computed","EasyPlayer","isSupportedProtocol","getVideoType","_openBlock","_createElementBlock","_createCommentVNode","_createBlock","ErrorPage","areaName","deviceSerial","_Fragment","_resolveDynamicComponent","_mergeProps","_createVNode"],"mappings":"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"}
@@ -57,7 +57,11 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
57
57
  onTimeout?: ((...args: any[]) => any) | undefined;
58
58
  onMute?: ((...args: any[]) => any) | undefined;
59
59
  }> & {}>;
60
- emits: (event: "error" | "play" | "pause" | "videoInfo" | "timeout" | "mute", ...args: any[]) => void;
60
+ isH265Supported: import("vue").Ref<boolean, boolean>;
61
+ showBrowserTip: import("vue").Ref<boolean, boolean>;
62
+ isH265Video: import("vue").Ref<boolean, boolean>;
63
+ checkIsH265Video: (url: string) => boolean;
64
+ checkH265Support: () => any;
61
65
  setCamera: () => void;
62
66
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("error" | "play" | "pause" | "videoInfo" | "timeout" | "mute")[], "error" | "play" | "pause" | "videoInfo" | "timeout" | "mute", import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
63
67
  url: {