@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.
- package/cdn/index.cdn.js +30 -17
- package/cdn/index.cdn.js.map +1 -1
- package/cdn/index.cdn.mjs +26 -13
- package/cdn/index.cdn.mjs.map +1 -1
- package/cdn/index.css +1 -1
- package/es/components/tenant-enterprise/src/tenant-enterprise.vue2.mjs +12 -3
- package/es/components/tenant-enterprise/src/tenant-enterprise.vue2.mjs.map +1 -1
- package/es/components/tzj-player/index.d.ts +5066 -3
- package/es/components/tzj-player/src/easyPlayer.vue.d.ts +103 -7
- package/es/components/tzj-player/src/easyPlayer.vue2.mjs +125 -21
- package/es/components/tzj-player/src/easyPlayer.vue2.mjs.map +1 -1
- package/es/components/tzj-player/src/tzj-player.d.ts +19 -2
- package/es/components/tzj-player/src/tzj-player.mjs +47 -1
- package/es/components/tzj-player/src/tzj-player.mjs.map +1 -1
- package/es/components/tzj-player/src/tzj-player.vue.d.ts +5066 -3
- package/es/components/tzj-player/src/tzj-player.vue2.mjs +129 -36
- package/es/components/tzj-player/src/tzj-player.vue2.mjs.map +1 -1
- package/es/components/tzj-player/src/ysPlayer.vue2.mjs +3 -2
- package/es/components/tzj-player/src/ysPlayer.vue2.mjs.map +1 -1
- package/es/components/tzj-player/src/yunzhiyan.d.ts +6 -0
- package/es/components/tzj-player/src/yunzhiyan.mjs +159 -0
- package/es/components/tzj-player/src/yunzhiyan.mjs.map +1 -0
- package/es/components/tzj-player/src/yunzhiyanPlayer.vue.d.ts +1519 -0
- package/es/components/tzj-player/src/yunzhiyanPlayer.vue.mjs +6 -0
- package/es/components/tzj-player/src/yunzhiyanPlayer.vue.mjs.map +1 -0
- package/es/components/tzj-player/src/yunzhiyanPlayer.vue2.mjs +630 -0
- package/es/components/tzj-player/src/yunzhiyanPlayer.vue2.mjs.map +1 -0
- package/es/utils/provide.d.ts +3 -3
- package/es/utils/provide.mjs.map +1 -1
- package/lib/components/tenant-enterprise/src/tenant-enterprise.vue2.js +12 -3
- package/lib/components/tenant-enterprise/src/tenant-enterprise.vue2.js.map +1 -1
- package/lib/components/tzj-player/index.d.ts +5066 -3
- package/lib/components/tzj-player/src/easyPlayer.vue.d.ts +103 -7
- package/lib/components/tzj-player/src/easyPlayer.vue2.js +123 -19
- package/lib/components/tzj-player/src/easyPlayer.vue2.js.map +1 -1
- package/lib/components/tzj-player/src/tzj-player.d.ts +19 -2
- package/lib/components/tzj-player/src/tzj-player.js +47 -0
- package/lib/components/tzj-player/src/tzj-player.js.map +1 -1
- package/lib/components/tzj-player/src/tzj-player.vue.d.ts +5066 -3
- package/lib/components/tzj-player/src/tzj-player.vue2.js +125 -32
- package/lib/components/tzj-player/src/tzj-player.vue2.js.map +1 -1
- package/lib/components/tzj-player/src/ysPlayer.vue2.js +3 -2
- package/lib/components/tzj-player/src/ysPlayer.vue2.js.map +1 -1
- package/lib/components/tzj-player/src/yunzhiyan.d.ts +6 -0
- package/lib/components/tzj-player/src/yunzhiyan.js +166 -0
- package/lib/components/tzj-player/src/yunzhiyan.js.map +1 -0
- package/lib/components/tzj-player/src/yunzhiyanPlayer.vue.d.ts +1519 -0
- package/lib/components/tzj-player/src/yunzhiyanPlayer.vue.js +10 -0
- package/lib/components/tzj-player/src/yunzhiyanPlayer.vue.js.map +1 -0
- package/lib/components/tzj-player/src/yunzhiyanPlayer.vue2.js +634 -0
- package/lib/components/tzj-player/src/yunzhiyanPlayer.vue2.js.map +1 -0
- package/lib/utils/provide.d.ts +3 -3
- package/lib/utils/provide.js.map +1 -1
- package/package.json +5 -3
- package/theme-default/i-tzj-player.css +1 -1
- 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
|
|
27
|
+
const { url, platformTypeName, accessToken } = vue.toRefs(props);
|
|
32
28
|
const compRef = vue.shallowRef();
|
|
33
|
-
const
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
if (
|
|
42
|
-
|
|
43
|
-
}
|
|
44
|
-
|
|
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
|
-
|
|
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
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
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 {
|
|
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":"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"}
|
|
@@ -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
|
|
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-
|
|
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
|
|
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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"}
|