@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;
@@ -20,16 +20,27 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
20
20
  name: "EasyPlayer"
21
21
  },
22
22
  __name: "easyPlayer",
23
- props: {
24
- url: {}
25
- },
26
- setup(__props, { expose: __expose }) {
23
+ props: tzjPlayer.TzjPlayerProps,
24
+ emits: [
25
+ "timeout",
26
+ "error",
27
+ "play",
28
+ "pause",
29
+ "mute",
30
+ "videoInfo"
31
+ ],
32
+ setup(__props, { expose: __expose, emit: __emit }) {
27
33
  const props = __props;
34
+ const emits = __emit;
35
+ const slots = vue.useSlots();
36
+ const customBar = vue.computed(() => slots.customBar);
28
37
  let player = null;
29
38
  const id = tzjPlayer.uuid();
30
39
  const playerRef = vue.shallowRef();
31
40
  const playSuccess = vue.ref(true);
32
41
  const playUrl = vue.ref("");
42
+ const isFullscreen = vue.ref(false);
43
+ const videoInfo = vue.ref(null);
33
44
  vue.onMounted(() => {
34
45
  initPlayer(props.url || "");
35
46
  });
@@ -40,17 +51,81 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
40
51
  }
41
52
  );
42
53
  vue.onBeforeUnmount(() => {
54
+ if (props.debug) {
55
+ console.log("\u7EC4\u4EF6\u5378\u8F7D");
56
+ }
43
57
  playUrl.value = "";
44
58
  destroy();
45
59
  });
60
+ const play = /* @__PURE__ */ __name((url) => {
61
+ if (url) {
62
+ initPlayer(url);
63
+ } else {
64
+ if (player) {
65
+ player.play(playUrl.value);
66
+ } else {
67
+ destroy();
68
+ }
69
+ }
70
+ }, "play");
71
+ const playerPause = /* @__PURE__ */ __name(() => {
72
+ var _a;
73
+ if (props.debug) {
74
+ console.log("\u6682\u505C");
75
+ }
76
+ (_a = player == null ? void 0 : player.pause) == null ? void 0 : _a.call(player);
77
+ }, "playerPause");
78
+ const playerScreenShot = /* @__PURE__ */ __name(() => {
79
+ var _a;
80
+ if (props.debug) {
81
+ console.log("\u622A\u56FE");
82
+ }
83
+ (_a = player == null ? void 0 : player.screenshot) == null ? void 0 : _a.call(
84
+ player,
85
+ `${props.areaName}_${(/* @__PURE__ */ new Date()).getTime()}`,
86
+ "png",
87
+ 0.5,
88
+ "download"
89
+ );
90
+ }, "playerScreenShot");
91
+ const playerFullscreen = /* @__PURE__ */ __name((fullscreen) => {
92
+ var _a, _b, _c;
93
+ if (props.debug) {
94
+ console.log("\u5168\u5C4F");
95
+ }
96
+ if (fullscreen) {
97
+ (_a = document.exitFullscreen) == null ? void 0 : _a.call(document);
98
+ } else {
99
+ (_c = (_b = playerRef.value) == null ? void 0 : _b.requestFullscreen) == null ? void 0 : _c.call(_b);
100
+ }
101
+ isFullscreen.value = !fullscreen;
102
+ }, "playerFullscreen");
46
103
  __expose({
47
104
  play,
48
- destroy
105
+ destroy,
106
+ getPlayer: /* @__PURE__ */ __name(() => player, "getPlayer"),
107
+ pause: playerPause,
108
+ screenshot: playerScreenShot,
109
+ fullscreen: playerFullscreen,
110
+ isMute: /* @__PURE__ */ __name(() => {
111
+ var _a;
112
+ return (_a = player == null ? void 0 : player.isMute) == null ? void 0 : _a.call(player);
113
+ }, "isMute"),
114
+ setMute: /* @__PURE__ */ __name((mute) => {
115
+ var _a;
116
+ (_a = player == null ? void 0 : player.setMute) == null ? void 0 : _a.call(player, mute);
117
+ }, "setMute")
49
118
  });
50
119
  async function initPlayer(url) {
120
+ if (props.debug) {
121
+ console.log("\u521D\u59CB\u5316\u64AD\u653E\u5668", url);
122
+ }
51
123
  removePlayerDom();
52
124
  if (url) {
53
125
  playUrl.value = formatUrl(url);
126
+ if (props.debug) {
127
+ console.log("\u683C\u5F0F\u5316\u540E\u7684url", playUrl.value);
128
+ }
54
129
  if (window == null ? void 0 : window.EasyPlayerPro) {
55
130
  createPlayer();
56
131
  } else {
@@ -80,6 +155,10 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
80
155
  }
81
156
  __name(createPlayerDom, "createPlayerDom");
82
157
  async function createPlayer() {
158
+ if (props.debug) {
159
+ console.log("\u521B\u5EFA\u64AD\u653E\u5668");
160
+ }
161
+ videoInfo.value = null;
83
162
  createPlayerDom();
84
163
  await vue.nextTick();
85
164
  player = new window.EasyPlayerPro(document.getElementById(id), {
@@ -99,15 +178,47 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
99
178
  performance: false
100
179
  }
101
180
  });
181
+ player == null ? void 0 : player.play(playUrl.value);
182
+ const videoInfoTimer = setTimeout(() => {
183
+ if (!videoInfo.value) {
184
+ props.debug && console.log("15s\u672A\u83B7\u53D6\u5230\u89C6\u9891\u4FE1\u606F");
185
+ emits("error");
186
+ playSuccess.value = false;
187
+ destroy();
188
+ }
189
+ }, 3e3);
102
190
  player.on("timeout", () => {
191
+ clearTimeout(videoInfoTimer);
192
+ props.debug && console.log("\u52A0\u8F7D\u8D85\u65F6");
193
+ emits("timeout");
103
194
  playSuccess.value = false;
104
195
  destroy();
105
196
  });
106
197
  player.on("error", () => {
198
+ props.debug && console.log("\u64AD\u653E\u5F02\u5E38");
199
+ emits("error");
107
200
  playSuccess.value = false;
108
201
  destroy();
109
202
  });
110
- play(props.url);
203
+ player.on("play", () => {
204
+ playSuccess.value = true;
205
+ props.debug && console.log("\u64AD\u653E");
206
+ emits("play");
207
+ });
208
+ player.on("pause", () => {
209
+ props.debug && console.log("\u6682\u505C");
210
+ emits("pause");
211
+ });
212
+ player.on("videoInfo", (info) => {
213
+ clearTimeout(videoInfoTimer);
214
+ props.debug && console.log("\u89C6\u9891\u4FE1\u606F", info);
215
+ videoInfo.value = info;
216
+ emits("videoInfo", info);
217
+ });
218
+ player.on("mute", (mute) => {
219
+ props.debug && console.log("\u9759\u97F3");
220
+ emits("mute", mute);
221
+ });
111
222
  }
112
223
  __name(createPlayer, "createPlayer");
113
224
  function destroy() {
@@ -118,15 +229,6 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
118
229
  removePlayerDom();
119
230
  }
120
231
  __name(destroy, "destroy");
121
- function play(url) {
122
- if (player && (url || props.url)) {
123
- playUrl.value = formatUrl(url || props.url);
124
- player.play(playUrl.value);
125
- } else {
126
- initPlayer(url || props.url);
127
- }
128
- }
129
- __name(play, "play");
130
232
  function formatUrl(url) {
131
233
  if (url.startsWith("/")) {
132
234
  return `${window.location.origin}${url}`;
@@ -140,14 +242,16 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
140
242
  {
141
243
  ref_key: "playerRef",
142
244
  ref: playerRef,
143
- class: "i-tzj-player"
245
+ class: vue.normalizeClass(["i-tzj-easyPlayer", customBar.value ? "i-tzj-easyPlayer--custom" : ""])
144
246
  },
145
247
  [
146
248
  !playSuccess.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1, "\u65E0\u4FE1\u53F7")) : vue.createCommentVNode("v-if", true),
147
- !playUrl.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2, "\u65E0\u64AD\u653E\u5730\u5740")) : vue.createCommentVNode("v-if", true)
249
+ !playUrl.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2, "\u65E0\u64AD\u653E\u5730\u5740")) : vue.createCommentVNode("v-if", true),
250
+ vue.createCommentVNode(" \u64AD\u653E\u5668\u5E95\u90E8\u64CD\u4F5C\u680F "),
251
+ vue.renderSlot(_ctx.$slots, "customBar")
148
252
  ],
149
- 512
150
- /* NEED_PATCH */
253
+ 2
254
+ /* CLASS */
151
255
  );
152
256
  };
153
257
  }
@@ -1 +1 @@
1
- {"version":3,"file":"easyPlayer.vue2.js","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":["uuid","shallowRef","ref","onMounted","watch","onBeforeUnmount","nextTick","_createElementBlock"],"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 { 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":["useSlots","computed","uuid","shallowRef","ref","onMounted","watch","onBeforeUnmount","nextTick","_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>;
@@ -3,13 +3,44 @@
3
3
  var __defProp = Object.defineProperty;
4
4
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
5
5
  const TzjPlayerProps = {
6
+ /**
7
+ * 视频地址
8
+ */
6
9
  url: {
7
10
  type: String,
8
11
  default: ""
9
12
  },
13
+ /**
14
+ * 访问令牌
15
+ */
10
16
  accessToken: {
11
17
  type: String,
12
18
  default: ""
19
+ },
20
+ /**
21
+ * 视频标题
22
+ */
23
+ areaName: {
24
+ type: String,
25
+ default: ""
26
+ },
27
+ /**
28
+ * 视频ID
29
+ */
30
+ deviceSerial: {
31
+ type: String,
32
+ default: ""
33
+ },
34
+ /**
35
+ * 视频平台类型名称
36
+ */
37
+ platformTypeName: {
38
+ type: String,
39
+ default: ""
40
+ },
41
+ debug: {
42
+ type: Boolean,
43
+ default: false
13
44
  }
14
45
  };
15
46
  function uuid() {
@@ -31,8 +62,24 @@ function isSupportedProtocol(url) {
31
62
  return protocolRegex.test(url.trim());
32
63
  }
33
64
  __name(isSupportedProtocol, "isSupportedProtocol");
65
+ function getVideoType(url) {
66
+ if (!url || typeof url !== "string") {
67
+ return "";
68
+ }
69
+ const pathWithoutQuery = url.split("?")[0];
70
+ const lowerPath = pathWithoutQuery.toLowerCase();
71
+ if (lowerPath.endsWith(".flv")) {
72
+ return "flv";
73
+ }
74
+ if (lowerPath.endsWith("/hls.m3u8")) {
75
+ return "hls";
76
+ }
77
+ return "";
78
+ }
79
+ __name(getVideoType, "getVideoType");
34
80
 
35
81
  exports.TzjPlayerProps = TzjPlayerProps;
82
+ exports.getVideoType = getVideoType;
36
83
  exports.isSupportedProtocol = isSupportedProtocol;
37
84
  exports.uuid = uuid;
38
85
  //# sourceMappingURL=tzj-player.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tzj-player.js","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.js","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;;;;;;;"}