@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
@@ -6,20 +6,16 @@ var vue = require('vue');
6
6
  require('./easyPlayer.vue.js');
7
7
  var tzjPlayer = require('./tzj-player.js');
8
8
  require('./ysPlayer.vue.js');
9
+ require('./yunzhiyanPlayer.vue.js');
10
+ var yunzhiyanPlayer_vue_vue_type_script_setup_true_lang = require('./yunzhiyanPlayer.vue2.js');
9
11
  var ysPlayer_vue_vue_type_script_setup_true_lang = require('./ysPlayer.vue2.js');
10
12
  var easyPlayer_vue_vue_type_script_setup_true_lang = require('./easyPlayer.vue2.js');
11
13
 
12
- var __defProp = Object.defineProperty;
13
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
14
14
  const _hoisted_1 = { class: "i-tzj-player" };
15
15
  const _hoisted_2 = {
16
16
  key: 0,
17
17
  class: "i-tzj-player__error"
18
18
  };
19
- const _hoisted_3 = {
20
- key: 1,
21
- class: "i-tzj-player__error"
22
- };
23
19
  var _sfc_main = /* @__PURE__ */ vue.defineComponent({
24
20
  ...{
25
21
  name: "ITzjPlayer"
@@ -28,50 +24,147 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
28
24
  props: tzjPlayer.TzjPlayerProps,
29
25
  setup(__props, { expose: __expose }) {
30
26
  const props = __props;
31
- const comp = vue.shallowRef();
27
+ const { url, platformTypeName, accessToken } = vue.toRefs(props);
32
28
  const compRef = vue.shallowRef();
33
- const supportedProtocol = vue.ref(true);
34
- vue.onMounted(() => initPlayer());
35
- vue.watch(
36
- () => [props.url, props.accessToken],
37
- () => initPlayer()
38
- );
39
- function initPlayer() {
40
- supportedProtocol.value = tzjPlayer.isSupportedProtocol(props.url);
41
- if (supportedProtocol.value) {
42
- comp.value = props.accessToken && props.accessToken.length > 32 ? ysPlayer_vue_vue_type_script_setup_true_lang.default : easyPlayer_vue_vue_type_script_setup_true_lang.default;
43
- } else {
44
- comp.value = null;
29
+ const PLATFORM_COMPONENTS = {
30
+ \u4E91\u667A\u773C: yunzhiyanPlayer_vue_vue_type_script_setup_true_lang.default,
31
+ \u8424\u77F3\u4E91: ysPlayer_vue_vue_type_script_setup_true_lang.default
32
+ };
33
+ const playerComponent = vue.computed(() => {
34
+ if (platformTypeName.value) {
35
+ return PLATFORM_COMPONENTS[platformTypeName.value] || easyPlayer_vue_vue_type_script_setup_true_lang.default;
36
+ }
37
+ if (!url.value) {
38
+ return null;
39
+ }
40
+ if (!tzjPlayer.isSupportedProtocol(url.value)) {
41
+ return null;
42
+ }
43
+ if (url.value.includes("ezopen")) {
44
+ return ysPlayer_vue_vue_type_script_setup_true_lang.default;
45
+ }
46
+ const videoType = tzjPlayer.getVideoType(url.value);
47
+ return videoType ? easyPlayer_vue_vue_type_script_setup_true_lang.default : null;
48
+ });
49
+ const errorState = vue.computed(() => {
50
+ if (platformTypeName.value === "\u4E91\u667A\u773C") {
51
+ return null;
45
52
  }
46
- }
47
- __name(initPlayer, "initPlayer");
53
+ if (!url.value) {
54
+ return {
55
+ type: "no-url",
56
+ message: "\u65E0\u89C6\u9891\u5730\u5740"
57
+ };
58
+ }
59
+ if (!tzjPlayer.isSupportedProtocol(url.value)) {
60
+ return {
61
+ type: "unsupported-protocol",
62
+ message: "\u4E0D\u652F\u6301\u8BE5\u89C6\u9891\u534F\u8BAE"
63
+ };
64
+ }
65
+ if ((platformTypeName.value === "\u8424\u77F3\u4E91" || url.value.includes("ezopen")) && !accessToken.value) {
66
+ return {
67
+ type: "no-token",
68
+ message: "\u7F3A\u5C11\u8BBF\u95EE\u4EE4\u724C"
69
+ };
70
+ }
71
+ return null;
72
+ });
73
+ const shouldShowPlayer = vue.computed(() => {
74
+ return !errorState.value && playerComponent.value;
75
+ });
48
76
  __expose({
77
+ /**
78
+ * 播放视频
79
+ * @param options 播放选项
80
+ */
49
81
  play(options) {
50
82
  var _a;
83
+ if (!compRef.value) {
84
+ props.debug && console.warn("[TzjPlayer] \u64AD\u653E\u5668\u7EC4\u4EF6\u672A\u521D\u59CB\u5316");
85
+ return;
86
+ }
51
87
  (_a = compRef.value) == null ? void 0 : _a.play(options);
52
88
  },
89
+ /**
90
+ * 销毁播放器
91
+ */
53
92
  destroy() {
54
93
  var _a;
94
+ if (!compRef.value) {
95
+ props.debug && console.warn("[TzjPlayer] \u64AD\u653E\u5668\u7EC4\u4EF6\u672A\u521D\u59CB\u5316");
96
+ return;
97
+ }
55
98
  (_a = compRef.value) == null ? void 0 : _a.destroy();
56
99
  },
100
+ /**
101
+ * 调整播放器尺寸
102
+ */
57
103
  resize() {
58
104
  var _a;
105
+ if (!compRef.value) {
106
+ props.debug && console.warn("[TzjPlayer] \u64AD\u653E\u5668\u7EC4\u4EF6\u672A\u521D\u59CB\u5316");
107
+ return;
108
+ }
59
109
  (_a = compRef.value) == null ? void 0 : _a.resize();
110
+ },
111
+ /**
112
+ * 获取当前播放器类型
113
+ */
114
+ getPlayerType() {
115
+ var _a;
116
+ return ((_a = playerComponent.value) == null ? void 0 : _a.name) || null;
117
+ },
118
+ /**
119
+ * 获取错误状态
120
+ */
121
+ getErrorState() {
122
+ return errorState.value;
60
123
  }
61
124
  });
62
125
  return (_ctx, _cache) => {
63
126
  return vue.openBlock(), vue.createElementBlock("div", _hoisted_1, [
64
- (vue.openBlock(), vue.createBlock(
65
- vue.resolveDynamicComponent(comp.value),
66
- vue.mergeProps({
67
- ref_key: "compRef",
68
- ref: compRef
69
- }, props),
70
- null,
71
- 16
72
- /* FULL_PROPS */
73
- )),
74
- !_ctx.url ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2, "\u65E0\u64AD\u653E\u5730\u5740")) : !supportedProtocol.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3, " \u683C\u5F0F\u4E0D\u652F\u6301 ")) : vue.createCommentVNode("v-if", true)
127
+ vue.createCommentVNode(" \u9519\u8BEF\u72B6\u6001\u663E\u793A "),
128
+ errorState.value ? (vue.openBlock(), vue.createElementBlock(
129
+ "div",
130
+ _hoisted_2,
131
+ vue.toDisplayString(errorState.value.message),
132
+ 1
133
+ /* TEXT */
134
+ )) : shouldShowPlayer.value ? (vue.openBlock(), vue.createElementBlock(
135
+ vue.Fragment,
136
+ { key: 1 },
137
+ [
138
+ vue.createCommentVNode(" \u64AD\u653E\u5668\u7EC4\u4EF6 "),
139
+ (vue.openBlock(), vue.createBlock(
140
+ vue.resolveDynamicComponent(playerComponent.value),
141
+ vue.mergeProps({
142
+ ref_key: "compRef",
143
+ ref: compRef
144
+ }, props),
145
+ null,
146
+ 16
147
+ /* FULL_PROPS */
148
+ ))
149
+ ],
150
+ 2112
151
+ /* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */
152
+ )) : (vue.openBlock(), vue.createElementBlock(
153
+ vue.Fragment,
154
+ { key: 2 },
155
+ [
156
+ vue.createCommentVNode(" \u65E0\u53EF\u7528\u64AD\u653E\u5668 "),
157
+ _cache[0] || (_cache[0] = vue.createElementVNode(
158
+ "div",
159
+ { class: "i-tzj-player__error" },
160
+ "\u65E0\u4FE1\u53F7",
161
+ -1
162
+ /* CACHED */
163
+ ))
164
+ ],
165
+ 2112
166
+ /* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */
167
+ ))
75
168
  ]);
76
169
  };
77
170
  }
@@ -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 { onMounted, ref, shallowRef, watch } from \"vue\";\nimport EasyPlayer from \"./easyPlayer.vue\";\nimport { isSupportedProtocol, TzjPlayerProps } from \"./tzj-player\";\nimport YsPlayer from \"./ysPlayer.vue\";\n\ndefineOptions({\n name: \"ITzjPlayer\",\n});\n\nconst props = defineProps(TzjPlayerProps);\n\nconst comp = shallowRef();\nconst compRef = shallowRef();\nconst supportedProtocol = ref(true);\n\nonMounted(() => initPlayer());\n\nwatch(\n () => [props.url, props.accessToken],\n () => initPlayer(),\n);\n\nfunction initPlayer() {\n supportedProtocol.value = isSupportedProtocol(props.url);\n if (supportedProtocol.value) {\n // 当访问令牌存在时,使用萤石云播放器(YsPlayer)\n comp.value =\n props.accessToken && props.accessToken.length > 32\n ? YsPlayer\n : EasyPlayer;\n } else {\n comp.value = null;\n }\n}\n\ndefineExpose({\n play(options?: any) {\n compRef.value?.play(options);\n },\n destroy() {\n compRef.value?.destroy();\n },\n resize() {\n compRef.value?.resize();\n },\n});\n</script>\n\n<template>\n <div class=\"i-tzj-player\">\n <component :is=\"comp\" ref=\"compRef\" v-bind=\"props\" />\n <div v-if=\"!url\" class=\"i-tzj-player__error\">无播放地址</div>\n <div v-else-if=\"!supportedProtocol\" class=\"i-tzj-player__error\">\n 格式不支持\n </div>\n </div>\n</template>\n"],"names":["shallowRef","ref","onMounted","watch","isSupportedProtocol","YsPlayer","EasyPlayer","_openBlock","_createElementBlock","_createBlock","_resolveDynamicComponent","_mergeProps","url"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAEd,IAAA,MAAM,OAAOA,cAAW,EAAA;AACxB,IAAA,MAAM,UAAUA,cAAW,EAAA;AAC3B,IAAM,MAAA,iBAAA,GAAoBC,QAAI,IAAI,CAAA;AAElC,IAAUC,aAAA,CAAA,MAAM,YAAY,CAAA;AAE5B,IAAAC,SAAA;AAAA,MACE,MAAM,CAAC,KAAM,CAAA,GAAA,EAAK,MAAM,WAAW,CAAA;AAAA,MACnC,MAAM,UAAW;AAAA,KACnB;AAEA,IAAA,SAAS,UAAa,GAAA;AACpB,MAAkB,iBAAA,CAAA,KAAA,GAAQC,6BAAoB,CAAA,KAAA,CAAM,GAAG,CAAA;AACvD,MAAA,IAAI,kBAAkB,KAAO,EAAA;AAE3B,QAAA,IAAA,CAAK,QACH,KAAM,CAAA,WAAA,IAAe,MAAM,WAAY,CAAA,MAAA,GAAS,KAC5CC,oDACA,GAAAC,sDAAA;AAAA,OACD,MAAA;AACL,QAAA,IAAA,CAAK,KAAQ,GAAA,IAAA;AAAA;AACf;AAVO,IAAA,MAAA,CAAA,UAAA,EAAA,YAAA,CAAA;AAaT,IAAa,QAAA,CAAA;AAAA,MACX,KAAK,OAAe,EAAA;;AAClB,QAAQ,CAAA,EAAA,GAAA,OAAA,CAAA,KAAA,KAAR,mBAAe,IAAK,CAAA,OAAA,CAAA;AAAA,OACtB;AAAA,MACA,OAAU,GAAA;;AACR,QAAA,CAAA,EAAA,GAAA,OAAA,CAAQ,UAAR,IAAe,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAA,EAAA;AAAA,OACjB;AAAA,MACA,MAAS,GAAA;;AACP,QAAA,CAAA,EAAA,GAAA,OAAA,CAAQ,UAAR,IAAe,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAA,EAAA;AAAA;AACjB,KACD,CAAA;;AAIC,MAAA,OAAAC,aAAA,EAAA,EAAAC,sBAMM,CAAA,KAAA,EANN,UAMM,EAAA;AAAA,wBALJ,EAAAC,eAAA;AAAA,UAAqDC,2BAAA,CAArC,KAAI,KAAA,CAAA;AAAA,UAApBC,cAAqD,CAAA;AAAA,mBAA3B,EAAA,SAAA;AAAA,YAAJ,GAAI,EAAA;AAAA,aAAkB,KAAK,CAAA;AAAA,UAAA,IAAA;AAAA,UAAA;AAAA;AAAA,SAAA;AAAA,SACrCC,KAAG,wBAAfJ,sBAAwD,CAAA,KAAA,EAAxD,UAA6C,EAAA,gCAAK,MACjC,kBAAiB,0BAAlCA,sBAEM,CAAA,KAAA,EAFN,YAAgE,kCAEhE,CAAA;;;;;;;;"}
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 } from \"vue\";\nimport EasyPlayer from \"./easyPlayer.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/**\n * 平台类型映射表,提升可维护性\n */\nconst PLATFORM_COMPONENTS = {\n 云智眼: YunzhiyanPlayer,\n 萤石云: YsPlayer,\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 (platformTypeName.value === \"云智眼\") {\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 <div v-if=\"errorState\" class=\"i-tzj-player__error\">\n {{ errorState.message }}\n </div>\n\n <!-- 播放器组件 -->\n <component\n :is=\"playerComponent\"\n v-else-if=\"shouldShowPlayer\"\n ref=\"compRef\"\n v-bind=\"props\"\n />\n\n <!-- 无可用播放器 -->\n <div v-else class=\"i-tzj-player__error\">无信号</div>\n </div>\n</template>\n"],"names":["toRefs","shallowRef","YunzhiyanPlayer","YsPlayer","computed","EasyPlayer","isSupportedProtocol","getVideoType","_openBlock","_createElementBlock","_createCommentVNode","_toDisplayString","_Fragment","_createBlock","_resolveDynamicComponent","_mergeProps","_createElementVNode"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAeA,IAAA,MAAM,KAAQ,GAAA,OAAA;AACd,IAAA,MAAM,EAAE,GAAK,EAAA,gBAAA,EAAkB,WAAY,EAAA,GAAIA,WAAO,KAAK,CAAA;AAE3D,IAAA,MAAM,UAAUC,cAAW,EAAA;AAK3B,IAAA,MAAM,mBAAsB,GAAA;AAAA,MAC1B,kBAAK,EAAAC,2DAAA;AAAA,MACL,kBAAK,EAAAC;AAAA,KACP;AAMA,IAAM,MAAA,eAAA,GAAkBC,aAAS,MAAM;AAErC,MAAA,IAAI,iBAAiB,KAAO,EAAA;AAC1B,QACE,OAAA,mBAAA,CACE,gBAAiB,CAAA,KACnB,CAAK,IAAAC,sDAAA;AAAA;AAKT,MAAI,IAAA,CAAC,IAAI,KAAO,EAAA;AACd,QAAO,OAAA,IAAA;AAAA;AAIT,MAAA,IAAI,CAACC,6BAAA,CAAoB,GAAI,CAAA,KAAK,CAAG,EAAA;AACnC,QAAO,OAAA,IAAA;AAAA;AAIT,MAAA,IAAI,GAAI,CAAA,KAAA,CAAM,QAAS,CAAA,QAAQ,CAAG,EAAA;AAChC,QAAO,OAAAH,oDAAA;AAAA;AAIT,MAAM,MAAA,SAAA,GAAYI,sBAAa,CAAA,GAAA,CAAI,KAAK,CAAA;AACxC,MAAA,OAAO,YAAYF,sDAAa,GAAA,IAAA;AAAA,KACjC,CAAA;AAMD,IAAM,MAAA,UAAA,GAAaD,aAAS,MAAM;AAEhC,MAAI,IAAA,gBAAA,CAAiB,UAAU,oBAAO,EAAA;AACpC,QAAO,OAAA,IAAA;AAAA;AAIT,MAAI,IAAA,CAAC,IAAI,KAAO,EAAA;AACd,QAAO,OAAA;AAAA,UACL,IAAM,EAAA,QAAA;AAAA,UACN,OAAS,EAAA;AAAA,SACX;AAAA;AAIF,MAAA,IAAI,CAACE,6BAAA,CAAoB,GAAI,CAAA,KAAK,CAAG,EAAA;AACnC,QAAO,OAAA;AAAA,UACL,IAAM,EAAA,sBAAA;AAAA,UACN,OAAS,EAAA;AAAA,SACX;AAAA;AAIF,MACG,IAAA,CAAA,gBAAA,CAAiB,KAAU,KAAA,oBAAA,IAAS,GAAI,CAAA,KAAA,CAAM,SAAS,QAAQ,CAAA,KAChE,CAAC,WAAA,CAAY,KACb,EAAA;AACA,QAAO,OAAA;AAAA,UACL,IAAM,EAAA,UAAA;AAAA,UACN,OAAS,EAAA;AAAA,SACX;AAAA;AAGF,MAAO,OAAA,IAAA;AAAA,KACR,CAAA;AAKD,IAAM,MAAA,gBAAA,GAAmBF,aAAS,MAAM;AACtC,MAAO,OAAA,CAAC,UAAW,CAAA,KAAA,IAAS,eAAgB,CAAA,KAAA;AAAA,KAC7C,CAAA;AAKD,IAAa,QAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAKX,KAAK,OAAe,EAAA;;AAClB,QAAI,IAAA,CAAC,QAAQ,KAAO,EAAA;AAClB,UAAM,KAAA,CAAA,KAAA,IAAS,OAAQ,CAAA,IAAA,CAAK,oEAAuB,CAAA;AACnD,UAAA;AAAA;AAEF,QAAQ,CAAA,EAAA,GAAA,OAAA,CAAA,KAAA,KAAR,mBAAe,IAAK,CAAA,OAAA,CAAA;AAAA,OACtB;AAAA;AAAA;AAAA;AAAA,MAKA,OAAU,GAAA;;AACR,QAAI,IAAA,CAAC,QAAQ,KAAO,EAAA;AAClB,UAAM,KAAA,CAAA,KAAA,IAAS,OAAQ,CAAA,IAAA,CAAK,oEAAuB,CAAA;AACnD,UAAA;AAAA;AAEF,QAAA,CAAA,EAAA,GAAA,OAAA,CAAQ,UAAR,IAAe,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAA,EAAA;AAAA,OACjB;AAAA;AAAA;AAAA;AAAA,MAKA,MAAS,GAAA;;AACP,QAAI,IAAA,CAAC,QAAQ,KAAO,EAAA;AAClB,UAAM,KAAA,CAAA,KAAA,IAAS,OAAQ,CAAA,IAAA,CAAK,oEAAuB,CAAA;AACnD,UAAA;AAAA;AAEF,QAAA,CAAA,EAAA,GAAA,OAAA,CAAQ,UAAR,IAAe,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAA,EAAA;AAAA,OACjB;AAAA;AAAA;AAAA;AAAA,MAKA,aAAgB,GAAA;;AACd,QAAO,OAAA,CAAA,CAAA,EAAA,GAAA,eAAA,CAAgB,KAAhB,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAuB,IAAQ,KAAA,IAAA;AAAA,OACxC;AAAA;AAAA;AAAA;AAAA,MAKA,aAAgB,GAAA;AACd,QAAA,OAAO,UAAW,CAAA,KAAA;AAAA;AACpB,KACD,CAAA;;AAIC,MAAA,OAAAI,aAAA,EAAA,EAAAC,sBAgBM,CAAA,KAAA,EAhBN,UAgBM,EAAA;AAAA,QAfJC,uBAAe,wCAAA,CAAA;AAAA,QACJ,UAAA,CAAU,KAArB,IAAAF,aAAA,EAAA,EAAAC,sBAAA;AAAA,UAEM,KAAA;AAAA,UAFN,UAAA;AAAA,UACKE,mBAAA,CAAA,UAAA,CAAA,KAAA,CAAW,OAAO,CAAA;AAAA,UAAA;AAAA;AAAA,SAMV,IAAA,gBAAA,CAAgB,wBAF7B,EAAAF,sBAAA;AAAA,UAKEG,YAAA;AAAA,UAAA,EAAA,KAAA,CAAA,EAAA;AAAA,UAAA;AAAA,YANFF,uBAAc,kCAAA,CAAA;AAAA,4BACd,EAAAG,eAAA;AAAA,cAKEC,2BAAA,CAJK,gBAAe,KAAA,CAAA;AAAA,cADtBC,cAKE,CAAA;AAAA,uBAFI,EAAA,SAAA;AAAA,gBAAJ,GAAI,EAAA;AAAA,iBACI,KAAK,CAAA;AAAA,cAAA,IAAA;AAAA,cAAA;AAAA;AAAA,aAAA;AAAA;;;6BAIf,EAAAN,sBAAA;AAAA,UAAiDG,YAAA;AAAA,UAAA,EAAA,KAAA,CAAA,EAAA;AAAA,UAAA;AAAA,YADjDF,uBAAe,wCAAA,CAAA;AAAA,YACf,MAAA,CAAA,CAAA,CAAA,KAAA,MAAA,CAAA,CAAA,CAAA,GAAAM,sBAAA;AAAA,cAAiD,KAAA;AAAA,cAArC,EAAA,OAAM;cAAsB,oBAAA;AAAA,cAAG,CAAA;AAAA;AAAA,aAAA;AAAA;;;;;;;;;;;"}
@@ -4,6 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var vue = require('vue');
6
6
  var core = require('@vueuse/core');
7
+ var EZUIKit = require('ezuikit-js');
7
8
  var tzjPlayer = require('./tzj-player.js');
8
9
 
9
10
  var __defProp = Object.defineProperty;
@@ -96,7 +97,7 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
96
97
  }
97
98
  __name(resize, "resize");
98
99
  function createPlayer(options) {
99
- playerInstance = new window.EZUIKit.EZUIKitPlayer({
100
+ playerInstance = new EZUIKit.EZUIKitPlayer({
100
101
  id,
101
102
  url: formatterUrl(),
102
103
  accessToken: props.accessToken,
@@ -165,7 +166,7 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
165
166
  {
166
167
  ref_key: "ysRef",
167
168
  ref: ysRef,
168
- class: "i-tzj-player"
169
+ class: "i-tzj-ysplayer"
169
170
  },
170
171
  [
171
172
  vue.unref(errorMsg) ? (vue.openBlock(), vue.createElementBlock(
@@ -1 +1 @@
1
- {"version":3,"file":"ysPlayer.vue2.js","sources":["../../../../../../../packages/components/tzj-player/src/ysPlayer.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { useElementSize } from \"@vueuse/core\";\nimport { nextTick, onBeforeUnmount, onMounted, shallowRef, watch } from \"vue\";\nimport { uuid } from \"./tzj-player\";\n// 萤石云播放器\ndefineOptions({\n name: \"YsPlayer\",\n});\n\n// 传值方式\n// 1、传url、accessToken\n// 2、传deviceSerial、channel、accessToken\nconst props = defineProps<{\n // 播放地址\n // 高清:ezopen://open.ys7.com/${设备序列号}/${通道号}.hd.live\n // 流畅:ezopen://open.ys7.com/${设备序列号}/${通道号}.live\n url?: string;\n // 设备序列号\n deviceSerial?: string;\n // 通道号\n channel?: number;\n // 清晰度,默认为空,也表示高清\n // hd:高清;sd:流畅\n quality?: \"hd\" | \"sd\" | \"\";\n accessToken: string;\n // 播放器模板ID\n playerTemplate?: string;\n}>();\n\n// 播放器模板ID\n// 可在萤石云控制台查看、修改、获取\n// 位置:云直播-轻应用-特致珈默认模板\nconst PLAYER_TEMPLATE = \"5f295a9341a74d439b5d69374c90d501\";\nconst id = uuid();\nlet playerInstance: any = null;\nlet errorMsg = \"\";\nconst ysRef = shallowRef();\nconst { width, height } = useElementSize(ysRef);\nlet ratio = 16 / 9;\nlet isCurrentFullscreen = false;\n\nonMounted(() => play());\n\nonBeforeUnmount(() => destroy());\n\ndefineExpose({ play, destroy, resize });\n\n// 防抖函数\nfunction debounce(func: Function, wait: number) {\n let timeout: ReturnType<typeof setTimeout> | null = null;\n return function (this: any, ...args: any[]) {\n if (timeout) clearTimeout(timeout);\n timeout = setTimeout(() => func.apply(this, args), wait);\n };\n}\n\n// 加上防抖的 resize 函数\nconst debouncedResize = debounce(resize, 300);\n\nwatch(\n () => [width.value, height.value, ratio],\n () => {\n if (!isCurrentFullscreen) {\n debouncedResize();\n }\n },\n);\n\nfunction play(options?: Record<string, any>) {\n if (!props.accessToken) {\n errorMsg = `params 'accessToken' is not found`;\n } else {\n const url = formatterUrl();\n if (url) {\n createPlayerDom();\n nextTick(() => createPlayer(options));\n }\n }\n}\nfunction destroy() {\n if (playerInstance) {\n playerInstance.destroy();\n playerInstance = null;\n removePlayerDom();\n }\n}\nfunction resize() {\n // 根据播放器宽高比,设置播放器高度\n if (width.value > 0 && height.value > 0) {\n let calculatedWidth = width.value;\n let calculatedHeight = calculatedWidth / ratio;\n if (calculatedHeight > height.value) {\n calculatedHeight = height.value;\n calculatedWidth = calculatedHeight * ratio;\n }\n if (playerInstance?.resize) {\n playerInstance.resize(calculatedWidth, calculatedHeight);\n } else {\n const dom = document.getElementById(id);\n if (dom) {\n dom.style.width = `${calculatedWidth}px`;\n dom.style.height = `${calculatedHeight}px`;\n }\n }\n }\n}\n\n/**\n * 创建萤石云播放器实例,播放萤石云直播流\n */\nfunction createPlayer(options?: Record<string, any>) {\n playerInstance = new window.EZUIKit.EZUIKitPlayer({\n id,\n url: formatterUrl(),\n accessToken: props.accessToken,\n template: props.playerTemplate || PLAYER_TEMPLATE,\n width: width.value,\n height: height.value,\n audio: 1,\n // @ts-ignore\n loggerOptions: {\n name: \"YSPLAYER\",\n level: \"ERROR\",\n showTime: true,\n },\n staticPath: \"/plugins/ezuikit/ezuikit_static\",\n ...options,\n });\n\n playerInstance.eventEmitter.on(\"fullscreen\", () => {\n isCurrentFullscreen = true;\n });\n playerInstance.eventEmitter.on(\"exitFullscreen\", () => {\n isCurrentFullscreen = false;\n });\n playerInstance.eventEmitter.on(\"videoInfo\", (args: any) => {\n const { width: w, height: h } = args;\n // 计算播放器宽高比\n if (w && h) {\n ratio = w / h;\n }\n debouncedResize();\n });\n}\n\nfunction formatterUrl(): string {\n if (props.url) {\n return props.url;\n } else {\n if (props.deviceSerial && props.channel) {\n const quality =\n props.quality === \"\" || props.quality === \"hd\" ? \"hd.\" : \"\";\n return `ezopen://open.ys7.com/${props.deviceSerial}/${props.channel}.${quality}live`;\n } else {\n errorMsg = `params 'deviceSerial' or 'channel' is not found`;\n return \"\";\n }\n }\n}\n\n// 移除播放器DOM\nfunction removePlayerDom() {\n const dom = document.getElementById(id);\n dom && dom.remove();\n}\n// 创建播放器DOM\nfunction createPlayerDom() {\n if (!errorMsg) {\n removePlayerDom();\n const dom = document.createElement(\"div\");\n dom.id = id;\n dom.style.width = \"100%\";\n dom.style.height = \"100%\";\n ysRef.value?.appendChild(dom);\n }\n}\n</script>\n\n<template>\n <div ref=\"ysRef\" class=\"i-tzj-player\">\n <div v-if=\"errorMsg\" class=\"i-tzj-player__error\">\n {{ errorMsg }}\n </div>\n </div>\n</template>\n"],"names":["uuid","shallowRef","useElementSize","onMounted","onBeforeUnmount","watch","nextTick","_createElementBlock","_unref","_toDisplayString"],"mappings":"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"}
1
+ {"version":3,"file":"ysPlayer.vue2.js","sources":["../../../../../../../packages/components/tzj-player/src/ysPlayer.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { useElementSize } from \"@vueuse/core\";\nimport EZUIKit from \"ezuikit-js\";\nimport { nextTick, onBeforeUnmount, onMounted, shallowRef, watch } from \"vue\";\nimport { uuid } from \"./tzj-player\";\n// 萤石云播放器\ndefineOptions({\n name: \"YsPlayer\",\n});\n\n// 传值方式\n// 1、传url、accessToken\n// 2、传deviceSerial、channel、accessToken\nconst props = defineProps<{\n // 播放地址\n // 高清:ezopen://open.ys7.com/${设备序列号}/${通道号}.hd.live\n // 流畅:ezopen://open.ys7.com/${设备序列号}/${通道号}.live\n url?: string;\n // 设备序列号\n deviceSerial?: string;\n // 通道号\n channel?: number;\n // 清晰度,默认为空,也表示高清\n // hd:高清;sd:流畅\n quality?: \"hd\" | \"sd\" | \"\";\n accessToken: string;\n // 播放器模板ID\n playerTemplate?: string;\n}>();\n\n// 播放器模板ID\n// 可在萤石云控制台查看、修改、获取\n// 位置:云直播-轻应用-特致珈默认模板\nconst PLAYER_TEMPLATE = \"5f295a9341a74d439b5d69374c90d501\";\nconst id = uuid();\nlet playerInstance: any = null;\nlet errorMsg = \"\";\nconst ysRef = shallowRef();\nconst { width, height } = useElementSize(ysRef);\nlet ratio = 16 / 9;\nlet isCurrentFullscreen = false;\n\nonMounted(() => play());\n\nonBeforeUnmount(() => destroy());\n\ndefineExpose({ play, destroy, resize });\n\n// 防抖函数\nfunction debounce(func: Function, wait: number) {\n let timeout: ReturnType<typeof setTimeout> | null = null;\n return function (this: any, ...args: any[]) {\n if (timeout) clearTimeout(timeout);\n timeout = setTimeout(() => func.apply(this, args), wait);\n };\n}\n\n// 加上防抖的 resize 函数\nconst debouncedResize = debounce(resize, 300);\n\nwatch(\n () => [width.value, height.value, ratio],\n () => {\n if (!isCurrentFullscreen) {\n debouncedResize();\n }\n },\n);\n\nfunction play(options?: Record<string, any>) {\n if (!props.accessToken) {\n errorMsg = `params 'accessToken' is not found`;\n } else {\n const url = formatterUrl();\n if (url) {\n createPlayerDom();\n nextTick(() => createPlayer(options));\n }\n }\n}\nfunction destroy() {\n if (playerInstance) {\n playerInstance.destroy();\n playerInstance = null;\n removePlayerDom();\n }\n}\nfunction resize() {\n // 根据播放器宽高比,设置播放器高度\n if (width.value > 0 && height.value > 0) {\n let calculatedWidth = width.value;\n let calculatedHeight = calculatedWidth / ratio;\n if (calculatedHeight > height.value) {\n calculatedHeight = height.value;\n calculatedWidth = calculatedHeight * ratio;\n }\n if (playerInstance?.resize) {\n playerInstance.resize(calculatedWidth, calculatedHeight);\n } else {\n const dom = document.getElementById(id);\n if (dom) {\n dom.style.width = `${calculatedWidth}px`;\n dom.style.height = `${calculatedHeight}px`;\n }\n }\n }\n}\n\n/**\n * 创建萤石云播放器实例,播放萤石云直播流\n */\nfunction createPlayer(options?: Record<string, any>) {\n playerInstance = new EZUIKit.EZUIKitPlayer({\n id,\n url: formatterUrl(),\n accessToken: props.accessToken,\n template: props.playerTemplate || PLAYER_TEMPLATE,\n width: width.value,\n height: height.value,\n audio: 1,\n // @ts-ignore\n loggerOptions: {\n name: \"YSPLAYER\",\n level: \"ERROR\",\n showTime: true,\n },\n staticPath: \"/plugins/ezuikit/ezuikit_static\",\n ...options,\n });\n\n playerInstance.eventEmitter.on(\"fullscreen\", () => {\n isCurrentFullscreen = true;\n });\n playerInstance.eventEmitter.on(\"exitFullscreen\", () => {\n isCurrentFullscreen = false;\n });\n playerInstance.eventEmitter.on(\"videoInfo\", (args: any) => {\n const { width: w, height: h } = args;\n // 计算播放器宽高比\n if (w && h) {\n ratio = w / h;\n }\n debouncedResize();\n });\n}\n\nfunction formatterUrl(): string {\n if (props.url) {\n return props.url;\n } else {\n if (props.deviceSerial && props.channel) {\n const quality =\n props.quality === \"\" || props.quality === \"hd\" ? \"hd.\" : \"\";\n return `ezopen://open.ys7.com/${props.deviceSerial}/${props.channel}.${quality}live`;\n } else {\n errorMsg = `params 'deviceSerial' or 'channel' is not found`;\n return \"\";\n }\n }\n}\n\n// 移除播放器DOM\nfunction removePlayerDom() {\n const dom = document.getElementById(id);\n dom && dom.remove();\n}\n// 创建播放器DOM\nfunction createPlayerDom() {\n if (!errorMsg) {\n removePlayerDom();\n const dom = document.createElement(\"div\");\n dom.id = id;\n dom.style.width = \"100%\";\n dom.style.height = \"100%\";\n ysRef.value?.appendChild(dom);\n }\n}\n</script>\n\n<template>\n <div ref=\"ysRef\" class=\"i-tzj-ysplayer\">\n <div v-if=\"errorMsg\" class=\"i-tzj-player__error\">\n {{ errorMsg }}\n </div>\n </div>\n</template>\n"],"names":["uuid","shallowRef","useElementSize","onMounted","onBeforeUnmount","watch","nextTick","_createElementBlock","_unref","_toDisplayString"],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export declare function sign(headers: Record<string, string | number>, params: Record<string, any>, sk?: string): string;
2
+ export declare function GetYunZhiYanDeviceChannel(deviceId: string): Promise<any>;
3
+ export declare function GetYunZhiYanDeviceVideoUrl(deviceId: string, channelCodeId: string): Promise<any>;
4
+ export declare function GetYunZhiYanOpenVoiceIntercom(deviceId: string): Promise<any>;
5
+ export declare function GetYunZhiYanUserPlaySecretKey(taskId: string): Promise<string | false>;
6
+ export declare function GetYunZhiYanCloseVoiceIntercom(deviceId: string, taskId: string): Promise<any>;
@@ -0,0 +1,166 @@
1
+ 'use strict';
2
+
3
+ var CryptoJS = require('crypto-js');
4
+
5
+ var __defProp = Object.defineProperty;
6
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
7
+ const ACCESS_KEY = localStorage.getItem("YZYAK") || "04564D97CFEA44848DBF710AD51596096697";
8
+ const SECRET_KEY = localStorage.getItem("YZYSK") || "11925B4A833545F998519FE969EA83B36335";
9
+ function sign(headers, params, sk = SECRET_KEY) {
10
+ const obj = Object.assign({}, headers, params);
11
+ const keys = Object.keys(obj).sort();
12
+ let str = "";
13
+ keys.forEach((key, index) => {
14
+ str += `${key}="${obj[key]}"`;
15
+ if (index !== keys.length - 1) {
16
+ str += "&";
17
+ }
18
+ });
19
+ const hash = CryptoJS.HmacSHA256(str, sk);
20
+ return hash.toString(CryptoJS.enc.Hex);
21
+ }
22
+ __name(sign, "sign");
23
+ async function GetYunZhiYanDeviceChannel(deviceId) {
24
+ const headers = {
25
+ algorithm: "HmacSHA256",
26
+ requestTime: Date.now(),
27
+ accessKey: ACCESS_KEY
28
+ };
29
+ const params = { deviceId };
30
+ headers.sign = sign(headers, params, SECRET_KEY);
31
+ const response = await fetch("/vsuap-platform-api/v1/device/queryChannel", {
32
+ method: "POST",
33
+ headers: {
34
+ "Content-Type": "application/json",
35
+ ...headers
36
+ },
37
+ body: JSON.stringify(params)
38
+ });
39
+ const status = response.status;
40
+ const res = await response.json();
41
+ if (status === 200) {
42
+ const { code, data } = res;
43
+ if (code === 200 && Array.isArray(data) && data.length > 0 && data[0].channelCodeId) {
44
+ return data[0].channelCodeId || "";
45
+ }
46
+ }
47
+ return false;
48
+ }
49
+ __name(GetYunZhiYanDeviceChannel, "GetYunZhiYanDeviceChannel");
50
+ async function GetYunZhiYanDeviceVideoUrl(deviceId, channelCodeId) {
51
+ const headers = {
52
+ algorithm: "HmacSHA256",
53
+ requestTime: Date.now(),
54
+ accessKey: ACCESS_KEY
55
+ };
56
+ const params = { deviceId, channelCodeId };
57
+ headers.sign = sign(headers, params, SECRET_KEY);
58
+ const response = await fetch("/vsuap-platform-api/v1/device/playOn", {
59
+ method: "POST",
60
+ headers: {
61
+ "Content-Type": "application/json",
62
+ ...headers
63
+ },
64
+ body: JSON.stringify(params)
65
+ });
66
+ const status = response.status;
67
+ const res = await response.json();
68
+ if (status === 200) {
69
+ const { code, data } = res;
70
+ if (code === 200) {
71
+ return (data == null ? void 0 : data.flv) || "";
72
+ }
73
+ }
74
+ return false;
75
+ }
76
+ __name(GetYunZhiYanDeviceVideoUrl, "GetYunZhiYanDeviceVideoUrl");
77
+ async function GetYunZhiYanOpenVoiceIntercom(deviceId) {
78
+ const headers = {
79
+ algorithm: "HmacSHA256",
80
+ requestTime: Date.now(),
81
+ accessKey: ACCESS_KEY
82
+ };
83
+ const params = { deviceId, deviceType: "1", enableAudioSign: "1" };
84
+ headers.sign = sign(headers, params, SECRET_KEY);
85
+ const response = await fetch("/vsuap-platform-api/v1/device/broadcastOn", {
86
+ method: "POST",
87
+ headers: {
88
+ "Content-Type": "application/json",
89
+ ...headers
90
+ },
91
+ body: JSON.stringify(params)
92
+ });
93
+ const status = response.status;
94
+ const res = await response.json();
95
+ if (status === 200) {
96
+ const { code, data } = res;
97
+ if (code === 200) {
98
+ return data;
99
+ }
100
+ }
101
+ return false;
102
+ }
103
+ __name(GetYunZhiYanOpenVoiceIntercom, "GetYunZhiYanOpenVoiceIntercom");
104
+ async function GetYunZhiYanUserPlaySecretKey(taskId) {
105
+ const headers = {
106
+ algorithm: "HmacSHA256",
107
+ requestTime: Date.now(),
108
+ accessKey: ACCESS_KEY
109
+ };
110
+ const params = {};
111
+ headers.sign = sign(headers, params, SECRET_KEY);
112
+ const response = await fetch(
113
+ "/vsuap-platform-api/v1/user/queryPlaySecretKey",
114
+ {
115
+ method: "POST",
116
+ headers: {
117
+ "Content-Type": "application/json",
118
+ ...headers
119
+ },
120
+ body: JSON.stringify(params)
121
+ }
122
+ );
123
+ const status = response.status;
124
+ const res = await response.json();
125
+ if (status === 200) {
126
+ const { code, data } = res;
127
+ if (code === 200) {
128
+ const playSecretKey = data.playSecretKey;
129
+ return CryptoJS.MD5(taskId + playSecretKey).toString();
130
+ }
131
+ }
132
+ return false;
133
+ }
134
+ __name(GetYunZhiYanUserPlaySecretKey, "GetYunZhiYanUserPlaySecretKey");
135
+ async function GetYunZhiYanCloseVoiceIntercom(deviceId, taskId) {
136
+ const headers = {
137
+ algorithm: "HmacSHA256",
138
+ requestTime: Date.now(),
139
+ accessKey: ACCESS_KEY
140
+ };
141
+ const params = { deviceId, taskId };
142
+ headers.sign = sign(headers, params, SECRET_KEY);
143
+ const response = await fetch("/vsuap-platform-api/v1/device/broadcastOff", {
144
+ method: "POST",
145
+ headers: {
146
+ "Content-Type": "application/json",
147
+ ...headers
148
+ },
149
+ body: JSON.stringify(params)
150
+ });
151
+ const status = response.status;
152
+ const res = await response.json();
153
+ if (status === 200) {
154
+ return res;
155
+ }
156
+ return false;
157
+ }
158
+ __name(GetYunZhiYanCloseVoiceIntercom, "GetYunZhiYanCloseVoiceIntercom");
159
+
160
+ exports.GetYunZhiYanCloseVoiceIntercom = GetYunZhiYanCloseVoiceIntercom;
161
+ exports.GetYunZhiYanDeviceChannel = GetYunZhiYanDeviceChannel;
162
+ exports.GetYunZhiYanDeviceVideoUrl = GetYunZhiYanDeviceVideoUrl;
163
+ exports.GetYunZhiYanOpenVoiceIntercom = GetYunZhiYanOpenVoiceIntercom;
164
+ exports.GetYunZhiYanUserPlaySecretKey = GetYunZhiYanUserPlaySecretKey;
165
+ exports.sign = sign;
166
+ //# sourceMappingURL=yunzhiyan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yunzhiyan.js","sources":["../../../../../../../packages/components/tzj-player/src/yunzhiyan.ts"],"sourcesContent":["import CryptoJS from \"crypto-js\";\n\nconst ACCESS_KEY =\n localStorage.getItem(\"YZYAK\") || \"04564D97CFEA44848DBF710AD51596096697\";\nconst SECRET_KEY =\n localStorage.getItem(\"YZYSK\") || \"11925B4A833545F998519FE969EA83B36335\";\n\n/**\n * 签名函数\n * @param headers 请求头参数\n * @param params 请求参数\n * @param sk 签名密钥\n * @returns string 签名结果\n */\nexport function sign(\n headers: Record<string, string | number>,\n params: Record<string, any>,\n sk: string = SECRET_KEY,\n): string {\n const obj = Object.assign({}, headers, params);\n const keys = Object.keys(obj).sort();\n let str = \"\";\n // 拼接字符串\n keys.forEach((key, index) => {\n str += `${key}=\"${obj[key]}\"`;\n if (index !== keys.length - 1) {\n str += \"&\";\n }\n });\n // console.log(\"未加签的字符串\", str);\n // 加密\n const hash = CryptoJS.HmacSHA256(str, sk);\n // console.log(\"加签后的字符串\", hash.toString(CryptoJS.enc.Hex));\n return hash.toString(CryptoJS.enc.Hex);\n}\n/**\n * 获取云智眼设备通道ID\n * @param deviceId\n */\nexport async function GetYunZhiYanDeviceChannel(deviceId: string) {\n const headers: Record<string, string | number> = {\n algorithm: \"HmacSHA256\",\n requestTime: Date.now(),\n accessKey: ACCESS_KEY,\n };\n const params = { deviceId };\n headers.sign = sign(headers, params, SECRET_KEY);\n const response = await fetch(\"/vsuap-platform-api/v1/device/queryChannel\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n ...headers,\n },\n body: JSON.stringify(params),\n });\n const status = response.status;\n const res = await response.json();\n if (status === 200) {\n const { code, data } = res;\n if (\n code === 200 &&\n Array.isArray(data) &&\n data.length > 0 &&\n data[0].channelCodeId\n ) {\n return data[0].channelCodeId || \"\";\n }\n }\n return false;\n}\n\n/**\n * 获取云智眼设备视频播放地址\n * @param deviceId\n * @param channelCodeId\n */\nexport async function GetYunZhiYanDeviceVideoUrl(\n deviceId: string,\n channelCodeId: string,\n) {\n const headers: Record<string, string | number> = {\n algorithm: \"HmacSHA256\",\n requestTime: Date.now(),\n accessKey: ACCESS_KEY,\n };\n const params = { deviceId, channelCodeId };\n headers.sign = sign(headers, params, SECRET_KEY);\n const response = await fetch(\"/vsuap-platform-api/v1/device/playOn\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n ...headers,\n },\n body: JSON.stringify(params),\n });\n const status = response.status;\n const res = await response.json();\n if (status === 200) {\n const { code, data } = res;\n if (code === 200) {\n return data?.flv || \"\";\n }\n }\n return false;\n}\n\n/**\n * 获取语音对讲地址信息\n */\nexport async function GetYunZhiYanOpenVoiceIntercom(deviceId: string) {\n const headers: Record<string, any> = {\n algorithm: \"HmacSHA256\",\n requestTime: Date.now(),\n accessKey: ACCESS_KEY,\n };\n const params = { deviceId, deviceType: \"1\", enableAudioSign: \"1\" };\n headers.sign = sign(headers, params, SECRET_KEY);\n const response = await fetch(\"/vsuap-platform-api/v1/device/broadcastOn\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n ...headers,\n },\n body: JSON.stringify(params),\n });\n const status = response.status;\n const res = await response.json();\n if (status === 200) {\n const { code, data } = res;\n if (code === 200) {\n return data;\n }\n }\n return false;\n}\n\n/**\n * 获取语音对讲地址\n */\nexport async function GetYunZhiYanUserPlaySecretKey(taskId: string) {\n const headers: Record<string, string | number> = {\n algorithm: \"HmacSHA256\",\n requestTime: Date.now(),\n accessKey: ACCESS_KEY,\n };\n const params = {};\n headers.sign = sign(headers, params, SECRET_KEY);\n const response = await fetch(\n \"/vsuap-platform-api/v1/user/queryPlaySecretKey\",\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n ...headers,\n },\n body: JSON.stringify(params),\n },\n );\n const status = response.status;\n const res = await response.json();\n if (status === 200) {\n const { code, data } = res;\n if (code === 200) {\n const playSecretKey = data.playSecretKey;\n return CryptoJS.MD5(taskId + playSecretKey).toString();\n }\n }\n return false;\n}\n\n/**\n * 关闭语音对讲\n */\nexport async function GetYunZhiYanCloseVoiceIntercom(\n deviceId: string,\n taskId: string,\n) {\n const headers: Record<string, any> = {\n algorithm: \"HmacSHA256\",\n requestTime: Date.now(),\n accessKey: ACCESS_KEY,\n };\n const params = { deviceId, taskId };\n headers.sign = sign(headers, params, SECRET_KEY);\n\n const response = await fetch(\"/vsuap-platform-api/v1/device/broadcastOff\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n ...headers,\n },\n body: JSON.stringify(params),\n });\n const status = response.status;\n const res = await response.json();\n if (status === 200) {\n return res;\n }\n return false;\n}\n"],"names":[],"mappings":"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"}