@yimou6/common-ui 1.10.6 → 1.10.8

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 (56) hide show
  1. package/cdn/index.cdn.js +30 -17
  2. package/cdn/index.cdn.js.map +1 -1
  3. package/cdn/index.cdn.mjs +26 -13
  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 +12 -3
  7. package/es/components/tenant-enterprise/src/tenant-enterprise.vue2.mjs.map +1 -1
  8. package/es/components/tzj-player/index.d.ts +5066 -3
  9. package/es/components/tzj-player/src/easyPlayer.vue.d.ts +103 -7
  10. package/es/components/tzj-player/src/easyPlayer.vue2.mjs +125 -21
  11. package/es/components/tzj-player/src/easyPlayer.vue2.mjs.map +1 -1
  12. package/es/components/tzj-player/src/tzj-player.d.ts +19 -2
  13. package/es/components/tzj-player/src/tzj-player.mjs +47 -1
  14. package/es/components/tzj-player/src/tzj-player.mjs.map +1 -1
  15. package/es/components/tzj-player/src/tzj-player.vue.d.ts +5066 -3
  16. package/es/components/tzj-player/src/tzj-player.vue2.mjs +129 -36
  17. package/es/components/tzj-player/src/tzj-player.vue2.mjs.map +1 -1
  18. package/es/components/tzj-player/src/ysPlayer.vue2.mjs +3 -2
  19. package/es/components/tzj-player/src/ysPlayer.vue2.mjs.map +1 -1
  20. package/es/components/tzj-player/src/yunzhiyan.d.ts +6 -0
  21. package/es/components/tzj-player/src/yunzhiyan.mjs +159 -0
  22. package/es/components/tzj-player/src/yunzhiyan.mjs.map +1 -0
  23. package/es/components/tzj-player/src/yunzhiyanPlayer.vue.d.ts +1519 -0
  24. package/es/components/tzj-player/src/yunzhiyanPlayer.vue.mjs +6 -0
  25. package/es/components/tzj-player/src/yunzhiyanPlayer.vue.mjs.map +1 -0
  26. package/es/components/tzj-player/src/yunzhiyanPlayer.vue2.mjs +630 -0
  27. package/es/components/tzj-player/src/yunzhiyanPlayer.vue2.mjs.map +1 -0
  28. package/es/utils/provide.d.ts +3 -3
  29. package/es/utils/provide.mjs.map +1 -1
  30. package/lib/components/tenant-enterprise/src/tenant-enterprise.vue2.js +12 -3
  31. package/lib/components/tenant-enterprise/src/tenant-enterprise.vue2.js.map +1 -1
  32. package/lib/components/tzj-player/index.d.ts +5066 -3
  33. package/lib/components/tzj-player/src/easyPlayer.vue.d.ts +103 -7
  34. package/lib/components/tzj-player/src/easyPlayer.vue2.js +123 -19
  35. package/lib/components/tzj-player/src/easyPlayer.vue2.js.map +1 -1
  36. package/lib/components/tzj-player/src/tzj-player.d.ts +19 -2
  37. package/lib/components/tzj-player/src/tzj-player.js +47 -0
  38. package/lib/components/tzj-player/src/tzj-player.js.map +1 -1
  39. package/lib/components/tzj-player/src/tzj-player.vue.d.ts +5066 -3
  40. package/lib/components/tzj-player/src/tzj-player.vue2.js +125 -32
  41. package/lib/components/tzj-player/src/tzj-player.vue2.js.map +1 -1
  42. package/lib/components/tzj-player/src/ysPlayer.vue2.js +3 -2
  43. package/lib/components/tzj-player/src/ysPlayer.vue2.js.map +1 -1
  44. package/lib/components/tzj-player/src/yunzhiyan.d.ts +6 -0
  45. package/lib/components/tzj-player/src/yunzhiyan.js +166 -0
  46. package/lib/components/tzj-player/src/yunzhiyan.js.map +1 -0
  47. package/lib/components/tzj-player/src/yunzhiyanPlayer.vue.d.ts +1519 -0
  48. package/lib/components/tzj-player/src/yunzhiyanPlayer.vue.js +10 -0
  49. package/lib/components/tzj-player/src/yunzhiyanPlayer.vue.js.map +1 -0
  50. package/lib/components/tzj-player/src/yunzhiyanPlayer.vue2.js +634 -0
  51. package/lib/components/tzj-player/src/yunzhiyanPlayer.vue2.js.map +1 -0
  52. package/lib/utils/provide.d.ts +3 -3
  53. package/lib/utils/provide.js.map +1 -1
  54. package/package.json +5 -3
  55. package/theme-default/i-tzj-player.css +1 -1
  56. package/theme-default/index.css +1 -1
@@ -1,26 +1,122 @@
1
1
  declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
2
2
  url: {
3
3
  type: StringConstructor;
4
- required: true;
4
+ default: string;
5
+ };
6
+ accessToken: {
7
+ type: StringConstructor;
8
+ default: string;
9
+ };
10
+ areaName: {
11
+ type: StringConstructor;
12
+ default: string;
13
+ };
14
+ deviceSerial: {
15
+ type: StringConstructor;
16
+ default: string;
17
+ };
18
+ platformTypeName: {
19
+ type: StringConstructor;
20
+ default: string;
21
+ };
22
+ debug: {
23
+ type: BooleanConstructor;
24
+ default: boolean;
5
25
  };
6
26
  }>, {
7
- props: any;
27
+ props: import("@vue/shared").LooseRequired<Readonly<import("vue").ExtractPropTypes<{
28
+ url: {
29
+ type: StringConstructor;
30
+ default: string;
31
+ };
32
+ accessToken: {
33
+ type: StringConstructor;
34
+ default: string;
35
+ };
36
+ areaName: {
37
+ type: StringConstructor;
38
+ default: string;
39
+ };
40
+ deviceSerial: {
41
+ type: StringConstructor;
42
+ default: string;
43
+ };
44
+ platformTypeName: {
45
+ type: StringConstructor;
46
+ default: string;
47
+ };
48
+ debug: {
49
+ type: BooleanConstructor;
50
+ default: boolean;
51
+ };
52
+ }>> & Readonly<{
53
+ onPlay?: ((...args: any[]) => any) | undefined;
54
+ onPause?: ((...args: any[]) => any) | undefined;
55
+ onError?: ((...args: any[]) => any) | undefined;
56
+ onVideoInfo?: ((...args: any[]) => any) | undefined;
57
+ onTimeout?: ((...args: any[]) => any) | undefined;
58
+ onMute?: ((...args: any[]) => any) | undefined;
59
+ }> & {}>;
60
+ emits: (event: "error" | "play" | "pause" | "videoInfo" | "timeout" | "mute", ...args: any[]) => void;
61
+ slots: Readonly<{
62
+ [name: string]: import("vue").Slot<any> | undefined;
63
+ }>;
64
+ customBar: import("vue").ComputedRef<import("vue").Slot<any> | undefined>;
8
65
  player: any;
9
66
  id: string;
10
- playerRef: import("vue").ShallowRef<HTMLElement | undefined, HTMLElement | undefined>;
67
+ playerRef: import("vue").ShallowRef<HTMLDivElement | undefined, HTMLDivElement | undefined>;
11
68
  playSuccess: import("vue").Ref<boolean, boolean>;
12
69
  playUrl: import("vue").Ref<string, string>;
70
+ isFullscreen: import("vue").Ref<boolean, boolean>;
71
+ videoInfo: import("vue").Ref<any, any>;
72
+ play: (url?: string) => void;
73
+ playerPause: () => void;
74
+ playerScreenShot: () => void;
75
+ playerFullscreen: (fullscreen: boolean) => void;
13
76
  initPlayer: (url: string) => Promise<void>;
14
77
  removePlayerDom: () => void;
15
78
  createPlayerDom: () => void;
16
79
  createPlayer: () => Promise<void>;
17
80
  destroy: () => void;
18
- play: (url?: string) => void;
19
81
  formatUrl: (url: string) => string;
20
- }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
82
+ }, {}, {}, {}, 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<{
21
83
  url: {
22
84
  type: StringConstructor;
23
- required: true;
85
+ default: string;
24
86
  };
25
- }>> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
87
+ accessToken: {
88
+ type: StringConstructor;
89
+ default: string;
90
+ };
91
+ areaName: {
92
+ type: StringConstructor;
93
+ default: string;
94
+ };
95
+ deviceSerial: {
96
+ type: StringConstructor;
97
+ default: string;
98
+ };
99
+ platformTypeName: {
100
+ type: StringConstructor;
101
+ default: string;
102
+ };
103
+ debug: {
104
+ type: BooleanConstructor;
105
+ default: boolean;
106
+ };
107
+ }>> & Readonly<{
108
+ onPlay?: ((...args: any[]) => any) | undefined;
109
+ onPause?: ((...args: any[]) => any) | undefined;
110
+ onError?: ((...args: any[]) => any) | undefined;
111
+ onVideoInfo?: ((...args: any[]) => any) | undefined;
112
+ onTimeout?: ((...args: any[]) => any) | undefined;
113
+ onMute?: ((...args: any[]) => any) | undefined;
114
+ }>, {
115
+ url: string;
116
+ accessToken: string;
117
+ debug: boolean;
118
+ deviceSerial: string;
119
+ areaName: string;
120
+ platformTypeName: string;
121
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
26
122
  export default _default;
@@ -1,5 +1,5 @@
1
- import { defineComponent, shallowRef, ref, onMounted, watch, onBeforeUnmount, nextTick, openBlock, createElementBlock, createCommentVNode } from 'vue';
2
- import { uuid } from './tzj-player.mjs';
1
+ import { defineComponent, useSlots, computed, shallowRef, ref, onMounted, watch, onBeforeUnmount, nextTick, openBlock, createElementBlock, normalizeClass, createCommentVNode, renderSlot } from 'vue';
2
+ import { TzjPlayerProps, uuid } from './tzj-player.mjs';
3
3
 
4
4
  var __defProp = Object.defineProperty;
5
5
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
@@ -16,16 +16,27 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
16
16
  name: "EasyPlayer"
17
17
  },
18
18
  __name: "easyPlayer",
19
- props: {
20
- url: {}
21
- },
22
- setup(__props, { expose: __expose }) {
19
+ props: TzjPlayerProps,
20
+ emits: [
21
+ "timeout",
22
+ "error",
23
+ "play",
24
+ "pause",
25
+ "mute",
26
+ "videoInfo"
27
+ ],
28
+ setup(__props, { expose: __expose, emit: __emit }) {
23
29
  const props = __props;
30
+ const emits = __emit;
31
+ const slots = useSlots();
32
+ const customBar = computed(() => slots.customBar);
24
33
  let player = null;
25
34
  const id = uuid();
26
35
  const playerRef = shallowRef();
27
36
  const playSuccess = ref(true);
28
37
  const playUrl = ref("");
38
+ const isFullscreen = ref(false);
39
+ const videoInfo = ref(null);
29
40
  onMounted(() => {
30
41
  initPlayer(props.url || "");
31
42
  });
@@ -36,17 +47,81 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
36
47
  }
37
48
  );
38
49
  onBeforeUnmount(() => {
50
+ if (props.debug) {
51
+ console.log("\u7EC4\u4EF6\u5378\u8F7D");
52
+ }
39
53
  playUrl.value = "";
40
54
  destroy();
41
55
  });
56
+ const play = /* @__PURE__ */ __name((url) => {
57
+ if (url) {
58
+ initPlayer(url);
59
+ } else {
60
+ if (player) {
61
+ player.play(playUrl.value);
62
+ } else {
63
+ destroy();
64
+ }
65
+ }
66
+ }, "play");
67
+ const playerPause = /* @__PURE__ */ __name(() => {
68
+ var _a;
69
+ if (props.debug) {
70
+ console.log("\u6682\u505C");
71
+ }
72
+ (_a = player == null ? void 0 : player.pause) == null ? void 0 : _a.call(player);
73
+ }, "playerPause");
74
+ const playerScreenShot = /* @__PURE__ */ __name(() => {
75
+ var _a;
76
+ if (props.debug) {
77
+ console.log("\u622A\u56FE");
78
+ }
79
+ (_a = player == null ? void 0 : player.screenshot) == null ? void 0 : _a.call(
80
+ player,
81
+ `${props.areaName}_${(/* @__PURE__ */ new Date()).getTime()}`,
82
+ "png",
83
+ 0.5,
84
+ "download"
85
+ );
86
+ }, "playerScreenShot");
87
+ const playerFullscreen = /* @__PURE__ */ __name((fullscreen) => {
88
+ var _a, _b, _c;
89
+ if (props.debug) {
90
+ console.log("\u5168\u5C4F");
91
+ }
92
+ if (fullscreen) {
93
+ (_a = document.exitFullscreen) == null ? void 0 : _a.call(document);
94
+ } else {
95
+ (_c = (_b = playerRef.value) == null ? void 0 : _b.requestFullscreen) == null ? void 0 : _c.call(_b);
96
+ }
97
+ isFullscreen.value = !fullscreen;
98
+ }, "playerFullscreen");
42
99
  __expose({
43
100
  play,
44
- destroy
101
+ destroy,
102
+ getPlayer: /* @__PURE__ */ __name(() => player, "getPlayer"),
103
+ pause: playerPause,
104
+ screenshot: playerScreenShot,
105
+ fullscreen: playerFullscreen,
106
+ isMute: /* @__PURE__ */ __name(() => {
107
+ var _a;
108
+ return (_a = player == null ? void 0 : player.isMute) == null ? void 0 : _a.call(player);
109
+ }, "isMute"),
110
+ setMute: /* @__PURE__ */ __name((mute) => {
111
+ var _a;
112
+ (_a = player == null ? void 0 : player.setMute) == null ? void 0 : _a.call(player, mute);
113
+ }, "setMute")
45
114
  });
46
115
  async function initPlayer(url) {
116
+ if (props.debug) {
117
+ console.log("\u521D\u59CB\u5316\u64AD\u653E\u5668", url);
118
+ }
47
119
  removePlayerDom();
48
120
  if (url) {
49
121
  playUrl.value = formatUrl(url);
122
+ if (props.debug) {
123
+ console.log("\u683C\u5F0F\u5316\u540E\u7684url", playUrl.value);
124
+ }
50
125
  if (window == null ? void 0 : window.EasyPlayerPro) {
51
126
  createPlayer();
52
127
  } else {
@@ -76,6 +151,10 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
76
151
  }
77
152
  __name(createPlayerDom, "createPlayerDom");
78
153
  async function createPlayer() {
154
+ if (props.debug) {
155
+ console.log("\u521B\u5EFA\u64AD\u653E\u5668");
156
+ }
157
+ videoInfo.value = null;
79
158
  createPlayerDom();
80
159
  await nextTick();
81
160
  player = new window.EasyPlayerPro(document.getElementById(id), {
@@ -95,15 +174,47 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
95
174
  performance: false
96
175
  }
97
176
  });
177
+ player == null ? void 0 : player.play(playUrl.value);
178
+ const videoInfoTimer = setTimeout(() => {
179
+ if (!videoInfo.value) {
180
+ props.debug && console.log("15s\u672A\u83B7\u53D6\u5230\u89C6\u9891\u4FE1\u606F");
181
+ emits("error");
182
+ playSuccess.value = false;
183
+ destroy();
184
+ }
185
+ }, 3e3);
98
186
  player.on("timeout", () => {
187
+ clearTimeout(videoInfoTimer);
188
+ props.debug && console.log("\u52A0\u8F7D\u8D85\u65F6");
189
+ emits("timeout");
99
190
  playSuccess.value = false;
100
191
  destroy();
101
192
  });
102
193
  player.on("error", () => {
194
+ props.debug && console.log("\u64AD\u653E\u5F02\u5E38");
195
+ emits("error");
103
196
  playSuccess.value = false;
104
197
  destroy();
105
198
  });
106
- play(props.url);
199
+ player.on("play", () => {
200
+ playSuccess.value = true;
201
+ props.debug && console.log("\u64AD\u653E");
202
+ emits("play");
203
+ });
204
+ player.on("pause", () => {
205
+ props.debug && console.log("\u6682\u505C");
206
+ emits("pause");
207
+ });
208
+ player.on("videoInfo", (info) => {
209
+ clearTimeout(videoInfoTimer);
210
+ props.debug && console.log("\u89C6\u9891\u4FE1\u606F", info);
211
+ videoInfo.value = info;
212
+ emits("videoInfo", info);
213
+ });
214
+ player.on("mute", (mute) => {
215
+ props.debug && console.log("\u9759\u97F3");
216
+ emits("mute", mute);
217
+ });
107
218
  }
108
219
  __name(createPlayer, "createPlayer");
109
220
  function destroy() {
@@ -114,15 +225,6 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
114
225
  removePlayerDom();
115
226
  }
116
227
  __name(destroy, "destroy");
117
- function play(url) {
118
- if (player && (url || props.url)) {
119
- playUrl.value = formatUrl(url || props.url);
120
- player.play(playUrl.value);
121
- } else {
122
- initPlayer(url || props.url);
123
- }
124
- }
125
- __name(play, "play");
126
228
  function formatUrl(url) {
127
229
  if (url.startsWith("/")) {
128
230
  return `${window.location.origin}${url}`;
@@ -136,14 +238,16 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
136
238
  {
137
239
  ref_key: "playerRef",
138
240
  ref: playerRef,
139
- class: "i-tzj-player"
241
+ class: normalizeClass(["i-tzj-easyPlayer", customBar.value ? "i-tzj-easyPlayer--custom" : ""])
140
242
  },
141
243
  [
142
244
  !playSuccess.value ? (openBlock(), createElementBlock("div", _hoisted_1, "\u65E0\u4FE1\u53F7")) : createCommentVNode("v-if", true),
143
- !playUrl.value ? (openBlock(), createElementBlock("div", _hoisted_2, "\u65E0\u64AD\u653E\u5730\u5740")) : createCommentVNode("v-if", true)
245
+ !playUrl.value ? (openBlock(), createElementBlock("div", _hoisted_2, "\u65E0\u64AD\u653E\u5730\u5740")) : createCommentVNode("v-if", true),
246
+ createCommentVNode(" \u64AD\u653E\u5668\u5E95\u90E8\u64CD\u4F5C\u680F "),
247
+ renderSlot(_ctx.$slots, "customBar")
144
248
  ],
145
- 512
146
- /* NEED_PATCH */
249
+ 2
250
+ /* CLASS */
147
251
  );
148
252
  };
149
253
  }
@@ -1 +1 @@
1
- {"version":3,"file":"easyPlayer.vue2.mjs","sources":["../../../../../../../packages/components/tzj-player/src/easyPlayer.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport {\n nextTick,\n onBeforeUnmount,\n onMounted,\n ref,\n shallowRef,\n watch,\n} from \"vue\";\nimport { uuid } from \"./tzj-player\";\n\ndefineOptions({\n name: \"EasyPlayer\",\n});\n\nconst props = defineProps<{\n url: string;\n}>();\n\nlet player: any = null;\nconst id = uuid();\nconst playerRef = shallowRef<HTMLElement>();\nconst playSuccess = ref(true);\nconst playUrl = ref(\"\");\n\nonMounted(() => {\n initPlayer(props.url || \"\");\n});\n\nwatch(\n () => props.url,\n (newUrl) => {\n initPlayer(newUrl || \"\");\n },\n);\n\nonBeforeUnmount(() => {\n playUrl.value = \"\";\n destroy();\n});\n\ndefineExpose({\n play,\n destroy,\n});\n\nasync function initPlayer(url: string) {\n removePlayerDom();\n if (url) {\n playUrl.value = formatUrl(url);\n\n if (window?.EasyPlayerPro) {\n createPlayer();\n } else {\n const timer = setInterval(() => {\n if (window?.EasyPlayerPro) {\n createPlayer();\n clearInterval(timer);\n }\n }, 100);\n }\n }\n}\n\n// 移除播放器DOM\nfunction removePlayerDom() {\n const dom = document.getElementById(id);\n dom && dom.remove();\n}\n\n// 创建播放器DOM\nfunction createPlayerDom() {\n removePlayerDom();\n const dom = document.createElement(\"div\");\n dom.id = id;\n dom.style.width = \"100%\";\n dom.style.height = \"100%\";\n playerRef.value?.appendChild(dom);\n}\n\nasync function createPlayer() {\n createPlayerDom();\n await nextTick();\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 });\n\n // 加载超时\n player.on(\"timeout\", () => {\n playSuccess.value = false;\n destroy();\n });\n // 播放异常\n player.on(\"error\", () => {\n playSuccess.value = false;\n destroy();\n });\n play(props.url);\n}\n\nfunction destroy() {\n if (player) {\n player.destroy();\n player = null;\n }\n removePlayerDom();\n}\n\nfunction play(url?: string) {\n if (player && (url || props.url)) {\n playUrl.value = formatUrl(url || props.url);\n player.play(playUrl.value);\n } else {\n initPlayer(url || props.url);\n }\n}\n\n/**\n * 格式化url\n * 当url为相对路径时,添加baseUrl。baseUrl为当前页面的url\n * @param url\n * @example\n * formatUrl('/test.mp4') => 'http://192.168.111.206:8080/test.mp4'\n * formatUrl('http://192.168.111.206:8080/test.mp4') => 'http://192.168.111.206:8080/test.mp4'\n */\nfunction formatUrl(url: string) {\n if (url.startsWith(\"/\")) {\n return `${window.location.origin}${url}`;\n }\n return url;\n}\n</script>\n\n<template>\n <div ref=\"playerRef\" class=\"i-tzj-player\">\n <div v-if=\"!playSuccess\" class=\"i-tzj-player__error\">无信号</div>\n <div v-if=\"!playUrl\" class=\"i-tzj-player__error\">无播放地址</div>\n </div>\n</template>\n"],"names":["_createElementBlock"],"mappings":"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"}
1
+ {"version":3,"file":"easyPlayer.vue2.mjs","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\";\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);\n\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 if (props.debug) {\n console.log(\"全屏\");\n }\n // 自定义全屏逻辑\n if (fullscreen) {\n document.exitFullscreen?.();\n } else {\n playerRef.value?.requestFullscreen?.();\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\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 (window?.EasyPlayerPro) {\n createPlayer();\n } else {\n const timer = setInterval(() => {\n if (window?.EasyPlayerPro) {\n createPlayer();\n clearInterval(timer);\n }\n }, 100);\n }\n }\n}\n\n// 移除播放器DOM\nfunction removePlayerDom() {\n const dom = document.getElementById(id);\n dom && dom.remove();\n}\n\n// 创建播放器DOM\nfunction createPlayerDom() {\n removePlayerDom();\n const dom = document.createElement(\"div\");\n dom.id = id;\n dom.style.width = \"100%\";\n dom.style.height = \"100%\";\n playerRef.value?.appendChild(dom);\n}\n\nasync function createPlayer() {\n if (props.debug) {\n console.log(\"创建播放器\");\n }\n videoInfo.value = null;\n createPlayerDom();\n await nextTick();\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 });\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 }\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 });\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\nfunction destroy() {\n if (player) {\n player.destroy();\n player = null;\n }\n removePlayerDom();\n}\n\n/**\n * 格式化url\n * 当url为相对路径时,添加baseUrl。baseUrl为当前页面的url\n * @param url\n * @example\n * formatUrl('/test.mp4') => 'http://192.168.111.206:8080/test.mp4'\n * formatUrl('http://192.168.111.206:8080/test.mp4') => 'http://192.168.111.206:8080/test.mp4'\n */\nfunction formatUrl(url: string) {\n if (url.startsWith(\"/\")) {\n return `${window.location.origin}${url}`;\n }\n return url;\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 <div v-if=\"!playSuccess\" class=\"i-tzj-player__error\">无信号</div>\n <div v-if=\"!playUrl\" class=\"i-tzj-player__error\">无播放地址</div>\n\n <!-- 播放器底部操作栏 -->\n <slot name=\"customBar\" />\n </div>\n</template>\n"],"names":["_createElementBlock","_normalizeClass","_createCommentVNode","_renderSlot"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import type { ExtractPropTypes } from 'vue';
2
- import type TzjPlayer from './tzj-player.vue';
1
+ import type { ExtractPropTypes } from "vue";
2
+ import type TzjPlayer from "./tzj-player.vue";
3
3
  export declare const TzjPlayerProps: {
4
4
  url: {
5
5
  type: StringConstructor;
@@ -9,8 +9,25 @@ export declare const TzjPlayerProps: {
9
9
  type: StringConstructor;
10
10
  default: string;
11
11
  };
12
+ areaName: {
13
+ type: StringConstructor;
14
+ default: string;
15
+ };
16
+ deviceSerial: {
17
+ type: StringConstructor;
18
+ default: string;
19
+ };
20
+ platformTypeName: {
21
+ type: StringConstructor;
22
+ default: string;
23
+ };
24
+ debug: {
25
+ type: BooleanConstructor;
26
+ default: boolean;
27
+ };
12
28
  };
13
29
  export declare function uuid(): string;
14
30
  export declare function isSupportedProtocol(url: string): boolean;
31
+ export declare function getVideoType(url: string): string;
15
32
  export type TzjPlayerPropsType = ExtractPropTypes<typeof TzjPlayerProps>;
16
33
  export type TzjPlayerInstance = InstanceType<typeof TzjPlayer>;
@@ -1,13 +1,44 @@
1
1
  var __defProp = Object.defineProperty;
2
2
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
3
  const TzjPlayerProps = {
4
+ /**
5
+ * 视频地址
6
+ */
4
7
  url: {
5
8
  type: String,
6
9
  default: ""
7
10
  },
11
+ /**
12
+ * 访问令牌
13
+ */
8
14
  accessToken: {
9
15
  type: String,
10
16
  default: ""
17
+ },
18
+ /**
19
+ * 视频标题
20
+ */
21
+ areaName: {
22
+ type: String,
23
+ default: ""
24
+ },
25
+ /**
26
+ * 视频ID
27
+ */
28
+ deviceSerial: {
29
+ type: String,
30
+ default: ""
31
+ },
32
+ /**
33
+ * 视频平台类型名称
34
+ */
35
+ platformTypeName: {
36
+ type: String,
37
+ default: ""
38
+ },
39
+ debug: {
40
+ type: Boolean,
41
+ default: false
11
42
  }
12
43
  };
13
44
  function uuid() {
@@ -29,6 +60,21 @@ function isSupportedProtocol(url) {
29
60
  return protocolRegex.test(url.trim());
30
61
  }
31
62
  __name(isSupportedProtocol, "isSupportedProtocol");
63
+ function getVideoType(url) {
64
+ if (!url || typeof url !== "string") {
65
+ return "";
66
+ }
67
+ const pathWithoutQuery = url.split("?")[0];
68
+ const lowerPath = pathWithoutQuery.toLowerCase();
69
+ if (lowerPath.endsWith(".flv")) {
70
+ return "flv";
71
+ }
72
+ if (lowerPath.endsWith("/hls.m3u8")) {
73
+ return "hls";
74
+ }
75
+ return "";
76
+ }
77
+ __name(getVideoType, "getVideoType");
32
78
 
33
- export { TzjPlayerProps, isSupportedProtocol, uuid };
79
+ export { TzjPlayerProps, getVideoType, isSupportedProtocol, uuid };
34
80
  //# sourceMappingURL=tzj-player.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"tzj-player.mjs","sources":["../../../../../../../packages/components/tzj-player/src/tzj-player.ts"],"sourcesContent":["import type { ExtractPropTypes } from 'vue';\nimport type TzjPlayer from './tzj-player.vue';\n\nexport const TzjPlayerProps = {\n url: {\n type: String,\n default: '',\n },\n accessToken: {\n type: String,\n default: '',\n },\n};\n\nexport function uuid(): string {\n return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, c => {\n const r = (Math.random() * 16) | 0;\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n}\n\n/**\n * 是否为支持的协议\n * 支持:http,https,ws,wss,ezopen(萤石云)\n * * 当URL不包含协议时(相对地址),也返回true\n */\nexport function isSupportedProtocol(url: string): boolean {\n if (!url || typeof url !== 'string') {\n return false;\n }\n\n // 如果URL不包含协议部分(相对地址),返回true\n if (!url.includes('://')) {\n return true;\n }\n\n const protocolRegex = /^(https?|wss?|ezopen):\\/\\/.+$/i;\n return protocolRegex.test(url.trim());\n}\n\nexport type TzjPlayerPropsType = ExtractPropTypes<typeof TzjPlayerProps>;\nexport type TzjPlayerInstance = InstanceType<typeof TzjPlayer>;\n"],"names":[],"mappings":";;AAGO,MAAM,cAAiB,GAAA;AAAA,EAC5B,GAAK,EAAA;AAAA,IACH,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA;AAAA,GACX;AAAA,EACA,WAAa,EAAA;AAAA,IACX,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA;AAAA;AAEb;AAEO,SAAS,IAAe,GAAA;AAC7B,EAAO,OAAA,kCAAA,CAAmC,OAAQ,CAAA,OAAA,EAAS,CAAK,CAAA,KAAA;AAC9D,IAAA,MAAM,CAAK,GAAA,IAAA,CAAK,MAAO,EAAA,GAAI,EAAM,GAAA,CAAA;AACjC,IAAA,MAAM,CAAI,GAAA,CAAA,KAAM,GAAM,GAAA,CAAA,GAAK,IAAI,CAAO,GAAA,CAAA;AACtC,IAAO,OAAA,CAAA,CAAE,SAAS,EAAE,CAAA;AAAA,GACrB,CAAA;AACH;AANgB,MAAA,CAAA,IAAA,EAAA,MAAA,CAAA;AAaT,SAAS,oBAAoB,GAAsB,EAAA;AACxD,EAAA,IAAI,CAAC,GAAA,IAAO,OAAO,GAAA,KAAQ,QAAU,EAAA;AACnC,IAAO,OAAA,KAAA;AAAA;AAIT,EAAA,IAAI,CAAC,GAAA,CAAI,QAAS,CAAA,KAAK,CAAG,EAAA;AACxB,IAAO,OAAA,IAAA;AAAA;AAGT,EAAA,MAAM,aAAgB,GAAA,gCAAA;AACtB,EAAA,OAAO,aAAc,CAAA,IAAA,CAAK,GAAI,CAAA,IAAA,EAAM,CAAA;AACtC;AAZgB,MAAA,CAAA,mBAAA,EAAA,qBAAA,CAAA;;;;"}
1
+ {"version":3,"file":"tzj-player.mjs","sources":["../../../../../../../packages/components/tzj-player/src/tzj-player.ts"],"sourcesContent":["import type { ExtractPropTypes } from \"vue\";\nimport type TzjPlayer from \"./tzj-player.vue\";\n\nexport const TzjPlayerProps = {\n /**\n * 视频地址\n */\n url: {\n type: String,\n default: \"\",\n },\n /**\n * 访问令牌\n */\n accessToken: {\n type: String,\n default: \"\",\n },\n /**\n * 视频标题\n */\n areaName: {\n type: String,\n default: \"\",\n },\n /**\n * 视频ID\n */\n deviceSerial: {\n type: String,\n default: \"\",\n },\n /**\n * 视频平台类型名称\n */\n platformTypeName: {\n type: String,\n default: \"\",\n },\n debug: {\n type: Boolean,\n default: false,\n },\n};\n\nexport function uuid(): string {\n return \"xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx\".replace(/[xy]/g, (c) => {\n const r = (Math.random() * 16) | 0;\n const v = c === \"x\" ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n}\n\n/**\n * 是否为支持的协议\n * 支持:http,https,ws,wss,ezopen(萤石云)\n * 当URL不包含协议时(相对地址),也返回true\n */\nexport function isSupportedProtocol(url: string): boolean {\n if (!url || typeof url !== \"string\") {\n return false;\n }\n\n // 如果URL不包含协议部分(相对地址),返回true\n if (!url.includes(\"://\")) {\n return true;\n }\n\n const protocolRegex = /^(https?|wss?|ezopen):\\/\\/.+$/i;\n return protocolRegex.test(url.trim());\n}\n\n/**\n * 从路径中获取视频类型\n * @param url 视频路径\n * @returns 视频类型\n * /asdasd.flv?asdaslkg=123 => flv\n * /asdasd.live.flv?asdaslkg=123 => flv\n * /asdasd/hls.m3u8?asdaslkg=123 => hls\n */\nexport function getVideoType(url: string): string {\n if (!url || typeof url !== \"string\") {\n return \"\";\n }\n\n // 移除查询参数部分(?及其之后的内容)\n const pathWithoutQuery = url.split(\"?\")[0];\n\n // 转换为小写进行不区分大小写的匹配\n const lowerPath = pathWithoutQuery.toLowerCase();\n\n // 判断是否以.flv结尾\n if (lowerPath.endsWith(\".flv\")) {\n return \"flv\";\n }\n\n // 判断是否以/hls.m3u8结尾\n if (lowerPath.endsWith(\"/hls.m3u8\")) {\n return \"hls\";\n }\n\n // 如果都不匹配,返回空字符串\n return \"\";\n}\n\nexport type TzjPlayerPropsType = ExtractPropTypes<typeof TzjPlayerProps>;\nexport type TzjPlayerInstance = InstanceType<typeof TzjPlayer>;\n"],"names":[],"mappings":";;AAGO,MAAM,cAAiB,GAAA;AAAA;AAAA;AAAA;AAAA,EAI5B,GAAK,EAAA;AAAA,IACH,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA;AAAA,GACX;AAAA;AAAA;AAAA;AAAA,EAIA,WAAa,EAAA;AAAA,IACX,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA;AAAA,GACX;AAAA;AAAA;AAAA;AAAA,EAIA,QAAU,EAAA;AAAA,IACR,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA;AAAA,GACX;AAAA;AAAA;AAAA;AAAA,EAIA,YAAc,EAAA;AAAA,IACZ,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA;AAAA,GACX;AAAA;AAAA;AAAA;AAAA,EAIA,gBAAkB,EAAA;AAAA,IAChB,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA;AAAA,GACX;AAAA,EACA,KAAO,EAAA;AAAA,IACL,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA;AAAA;AAEb;AAEO,SAAS,IAAe,GAAA;AAC7B,EAAA,OAAO,kCAAmC,CAAA,OAAA,CAAQ,OAAS,EAAA,CAAC,CAAM,KAAA;AAChE,IAAA,MAAM,CAAK,GAAA,IAAA,CAAK,MAAO,EAAA,GAAI,EAAM,GAAA,CAAA;AACjC,IAAA,MAAM,CAAI,GAAA,CAAA,KAAM,GAAM,GAAA,CAAA,GAAK,IAAI,CAAO,GAAA,CAAA;AACtC,IAAO,OAAA,CAAA,CAAE,SAAS,EAAE,CAAA;AAAA,GACrB,CAAA;AACH;AANgB,MAAA,CAAA,IAAA,EAAA,MAAA,CAAA;AAaT,SAAS,oBAAoB,GAAsB,EAAA;AACxD,EAAA,IAAI,CAAC,GAAA,IAAO,OAAO,GAAA,KAAQ,QAAU,EAAA;AACnC,IAAO,OAAA,KAAA;AAAA;AAIT,EAAA,IAAI,CAAC,GAAA,CAAI,QAAS,CAAA,KAAK,CAAG,EAAA;AACxB,IAAO,OAAA,IAAA;AAAA;AAGT,EAAA,MAAM,aAAgB,GAAA,gCAAA;AACtB,EAAA,OAAO,aAAc,CAAA,IAAA,CAAK,GAAI,CAAA,IAAA,EAAM,CAAA;AACtC;AAZgB,MAAA,CAAA,mBAAA,EAAA,qBAAA,CAAA;AAsBT,SAAS,aAAa,GAAqB,EAAA;AAChD,EAAA,IAAI,CAAC,GAAA,IAAO,OAAO,GAAA,KAAQ,QAAU,EAAA;AACnC,IAAO,OAAA,EAAA;AAAA;AAIT,EAAA,MAAM,gBAAmB,GAAA,GAAA,CAAI,KAAM,CAAA,GAAG,EAAE,CAAC,CAAA;AAGzC,EAAM,MAAA,SAAA,GAAY,iBAAiB,WAAY,EAAA;AAG/C,EAAI,IAAA,SAAA,CAAU,QAAS,CAAA,MAAM,CAAG,EAAA;AAC9B,IAAO,OAAA,KAAA;AAAA;AAIT,EAAI,IAAA,SAAA,CAAU,QAAS,CAAA,WAAW,CAAG,EAAA;AACnC,IAAO,OAAA,KAAA;AAAA;AAIT,EAAO,OAAA,EAAA;AACT;AAvBgB,MAAA,CAAA,YAAA,EAAA,cAAA,CAAA;;;;"}