@cloud-app-dev/vidc 2.2.0-alpha.4 → 2.2.0-alpha.5
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/es/Player/api/index.js +1 -1
- package/es/Player/single_player.js +4 -3
- package/es/PlayerExt/demo.js +20 -82
- package/es/PlayerExt/index.d.ts +7 -1
- package/es/PlayerExt/index.js +46 -21
- package/package.json +1 -1
package/es/Player/api/index.js
CHANGED
|
@@ -256,7 +256,7 @@ export function useTypeAndPlay(url, type, isLive, container, segments, flvConfig
|
|
|
256
256
|
video.removeAttribute('src');
|
|
257
257
|
setState({});
|
|
258
258
|
};
|
|
259
|
-
}, [url, container, segments]);
|
|
259
|
+
}, [url, container, segments, type]);
|
|
260
260
|
return [state.type, state.flv, state.hls];
|
|
261
261
|
} //创建Api
|
|
262
262
|
|
|
@@ -55,11 +55,12 @@ var SinglePlayer = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
|
|
55
55
|
}),
|
|
56
56
|
_useState2 = _slicedToArray(_useState, 2),
|
|
57
57
|
state = _useState2[0],
|
|
58
|
-
setState = _useState2[1];
|
|
58
|
+
setState = _useState2[1]; // 视频格式判断,外部可以强制指定,也可以通过url自动判断
|
|
59
|
+
|
|
59
60
|
|
|
60
61
|
var vType = useMemo(function () {
|
|
61
62
|
return type || getVideoType(url);
|
|
62
|
-
}, [url]);
|
|
63
|
+
}, [url, type]);
|
|
63
64
|
var domRef = useRef(null);
|
|
64
65
|
var video = useMemo(function () {
|
|
65
66
|
return state.container ? state.container.querySelector('video') : undefined;
|
|
@@ -81,7 +82,7 @@ var SinglePlayer = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
|
|
81
82
|
|
|
82
83
|
var hasLink = useMemo(function () {
|
|
83
84
|
return !!url || !!flvConfig.mediaDataSource.segments && vType === 'flv';
|
|
84
|
-
}, [url, flvConfig.mediaDataSource.segments]); // 存储容器
|
|
85
|
+
}, [url, flvConfig.mediaDataSource.segments, vType]); // 存储容器
|
|
85
86
|
|
|
86
87
|
useEffect(function () {
|
|
87
88
|
setState(function (old) {
|
package/es/PlayerExt/demo.js
CHANGED
|
@@ -38,14 +38,15 @@ var options2 = [{
|
|
|
38
38
|
}, {
|
|
39
39
|
value: 0,
|
|
40
40
|
label: '录像'
|
|
41
|
-
}];
|
|
41
|
+
}]; //http://192.168.101.162:14088/flv/live/1853e2a5c3308bd62/2.flv?device_id=&channel_id=1853e2a5c3308bd62&stream_index=2&ip=0
|
|
42
42
|
|
|
43
|
-
function
|
|
43
|
+
function Demo() {
|
|
44
44
|
var _useState = useState({
|
|
45
45
|
type: undefined,
|
|
46
46
|
isLive: 1,
|
|
47
47
|
url: '',
|
|
48
|
-
tempUrl: ''
|
|
48
|
+
tempUrl: '',
|
|
49
|
+
mode: 1
|
|
49
50
|
}),
|
|
50
51
|
_useState2 = _slicedToArray(_useState, 2),
|
|
51
52
|
state = _useState2[0],
|
|
@@ -56,7 +57,7 @@ function Demo1() {
|
|
|
56
57
|
width: '100%',
|
|
57
58
|
height: 800
|
|
58
59
|
}
|
|
59
|
-
}, /*#__PURE__*/React.createElement("h3", null, "\
|
|
60
|
+
}, /*#__PURE__*/React.createElement("h3", null, "\u63D2\u4EF6\u89C6\u9891\u64AD\u653E"), /*#__PURE__*/React.createElement("div", {
|
|
60
61
|
style: {
|
|
61
62
|
marginBottom: 10,
|
|
62
63
|
display: 'flex'
|
|
@@ -103,96 +104,32 @@ function Demo1() {
|
|
|
103
104
|
key: v.label,
|
|
104
105
|
value: v.value
|
|
105
106
|
}, v.label);
|
|
106
|
-
})), /*#__PURE__*/React.createElement(
|
|
107
|
-
|
|
108
|
-
width: 60,
|
|
109
|
-
height: 32
|
|
110
|
-
},
|
|
111
|
-
onClick: function onClick(e) {
|
|
112
|
-
return setState(function (old) {
|
|
113
|
-
return Object.assign(Object.assign({}, old), {
|
|
114
|
-
url: state.tempUrl
|
|
115
|
-
});
|
|
116
|
-
});
|
|
117
|
-
}
|
|
118
|
-
}, "\u64AD\u653E")), /*#__PURE__*/React.createElement("div", {
|
|
119
|
-
style: {
|
|
120
|
-
height: 600
|
|
121
|
-
}
|
|
122
|
-
}, /*#__PURE__*/React.createElement(ExtModel, {
|
|
123
|
-
url: state.url,
|
|
124
|
-
mode: 1
|
|
125
|
-
}, /*#__PURE__*/React.createElement(Player, {
|
|
126
|
-
type: state.type,
|
|
127
|
-
url: state.url,
|
|
128
|
-
isLive: !!state.isLive
|
|
129
|
-
}))));
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
function Demo2() {
|
|
133
|
-
var _useState3 = useState({
|
|
134
|
-
type: undefined,
|
|
135
|
-
isLive: 1,
|
|
136
|
-
url: '',
|
|
137
|
-
tempUrl: ''
|
|
138
|
-
}),
|
|
139
|
-
_useState4 = _slicedToArray(_useState3, 2),
|
|
140
|
-
state = _useState4[0],
|
|
141
|
-
setState = _useState4[1];
|
|
142
|
-
|
|
143
|
-
return /*#__PURE__*/React.createElement("div", {
|
|
144
|
-
style: {
|
|
145
|
-
width: '100%',
|
|
146
|
-
height: 800
|
|
147
|
-
}
|
|
148
|
-
}, /*#__PURE__*/React.createElement("h3", null, "\u63D2\u4EF6\u89C6\u9891\u64AD\u653E"), /*#__PURE__*/React.createElement("div", {
|
|
149
|
-
style: {
|
|
150
|
-
marginBottom: 10,
|
|
151
|
-
display: 'flex'
|
|
152
|
-
}
|
|
153
|
-
}, /*#__PURE__*/React.createElement(_Select, {
|
|
154
|
-
value: state.type || '',
|
|
107
|
+
})), /*#__PURE__*/React.createElement(_Select, {
|
|
108
|
+
value: state.mode,
|
|
155
109
|
onChange: function onChange(val) {
|
|
156
110
|
return setState(function (old) {
|
|
157
111
|
return Object.assign(Object.assign({}, old), {
|
|
158
|
-
|
|
112
|
+
mode: val
|
|
159
113
|
});
|
|
160
114
|
});
|
|
161
115
|
}
|
|
162
|
-
},
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
})), /*#__PURE__*/React.createElement(_Input, {
|
|
116
|
+
}, /*#__PURE__*/React.createElement(_Select.Option, {
|
|
117
|
+
value: 1
|
|
118
|
+
}, "\u6D4F\u89C8\u5668\u6A21\u5F0F"), /*#__PURE__*/React.createElement(_Select.Option, {
|
|
119
|
+
value: 2
|
|
120
|
+
}, "\u63D2\u4EF6\u6A21\u5F0F")), /*#__PURE__*/React.createElement(_Button, {
|
|
168
121
|
style: {
|
|
169
|
-
|
|
122
|
+
width: 60,
|
|
170
123
|
height: 32
|
|
171
124
|
},
|
|
172
|
-
|
|
173
|
-
placeholder: "\u8BF7\u8F93\u5165\u89C6\u9891\u5730\u5740",
|
|
174
|
-
onChange: function onChange(e) {
|
|
175
|
-
return setState(function (old) {
|
|
176
|
-
return Object.assign(Object.assign({}, old), {
|
|
177
|
-
tempUrl: e.target.value
|
|
178
|
-
});
|
|
179
|
-
});
|
|
180
|
-
}
|
|
181
|
-
}), /*#__PURE__*/React.createElement(_Select, {
|
|
182
|
-
value: state.isLive,
|
|
183
|
-
onChange: function onChange(val) {
|
|
125
|
+
onClick: function onClick(e) {
|
|
184
126
|
return setState(function (old) {
|
|
185
127
|
return Object.assign(Object.assign({}, old), {
|
|
186
|
-
|
|
128
|
+
url: ''
|
|
187
129
|
});
|
|
188
130
|
});
|
|
189
131
|
}
|
|
190
|
-
},
|
|
191
|
-
return /*#__PURE__*/React.createElement(_Select.Option, {
|
|
192
|
-
key: v.label,
|
|
193
|
-
value: v.value
|
|
194
|
-
}, v.label);
|
|
195
|
-
})), /*#__PURE__*/React.createElement(_Button, {
|
|
132
|
+
}, "\u5173\u95ED"), /*#__PURE__*/React.createElement(_Button, {
|
|
196
133
|
style: {
|
|
197
134
|
width: 60,
|
|
198
135
|
height: 32
|
|
@@ -210,7 +147,8 @@ function Demo2() {
|
|
|
210
147
|
}
|
|
211
148
|
}, /*#__PURE__*/React.createElement(ExtModel, {
|
|
212
149
|
url: state.url,
|
|
213
|
-
mode:
|
|
150
|
+
mode: state.mode,
|
|
151
|
+
pluginDownloadUrl: "http://192.168.101.162:19999/plugins/ZVPlayer.exe"
|
|
214
152
|
}, /*#__PURE__*/React.createElement(Player, {
|
|
215
153
|
type: state.type,
|
|
216
154
|
url: state.url,
|
|
@@ -221,7 +159,7 @@ function Demo2() {
|
|
|
221
159
|
var App = function App() {
|
|
222
160
|
return /*#__PURE__*/React.createElement(_ConfigProvider, {
|
|
223
161
|
prefixCls: "cloudapp"
|
|
224
|
-
}, /*#__PURE__*/React.createElement(
|
|
162
|
+
}, /*#__PURE__*/React.createElement(Demo, null));
|
|
225
163
|
};
|
|
226
164
|
|
|
227
165
|
export default App;
|
package/es/PlayerExt/index.d.ts
CHANGED
|
@@ -28,8 +28,14 @@ export declare const LOCAL_PORT: string[];
|
|
|
28
28
|
* @returns
|
|
29
29
|
*/
|
|
30
30
|
export declare function getLocalPort(): string;
|
|
31
|
+
/**
|
|
32
|
+
* @desc 转码插件模式下的url
|
|
33
|
+
* @param url
|
|
34
|
+
* @param params
|
|
35
|
+
* @returns
|
|
36
|
+
*/
|
|
31
37
|
export declare function getLocalPlayPath(url: string, params?: string): string;
|
|
32
|
-
export declare function usePlugin(mode: PlayModeType): {
|
|
38
|
+
export declare function usePlugin(mode: PlayModeType, key: any): {
|
|
33
39
|
needInstall: boolean;
|
|
34
40
|
};
|
|
35
41
|
export declare function ExtModel({ url, children, mode, pluginDownloadUrl, pluginParams }: IPluginProps): JSX.Element;
|
package/es/PlayerExt/index.js
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import _useMount from "ahooks/es/useMount";
|
|
2
|
-
|
|
3
1
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
4
2
|
|
|
5
3
|
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
@@ -12,7 +10,7 @@ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Sy
|
|
|
12
10
|
|
|
13
11
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
14
12
|
|
|
15
|
-
import React, { useMemo, useState } from 'react';
|
|
13
|
+
import React, { useEffect, useMemo, useState } from 'react';
|
|
16
14
|
import IconFont from '../Player/iconfont';
|
|
17
15
|
import "./index.css";
|
|
18
16
|
/**
|
|
@@ -28,6 +26,13 @@ export var LOCAL_PORT = ['15080', '15081', '15082', '15083', '15084', '15085', '
|
|
|
28
26
|
export function getLocalPort() {
|
|
29
27
|
return LOCAL_PORT[Math.floor(Math.random() * LOCAL_PORT.length)];
|
|
30
28
|
}
|
|
29
|
+
/**
|
|
30
|
+
* @desc 转码插件模式下的url
|
|
31
|
+
* @param url
|
|
32
|
+
* @param params
|
|
33
|
+
* @returns
|
|
34
|
+
*/
|
|
35
|
+
|
|
31
36
|
export function getLocalPlayPath(url) {
|
|
32
37
|
var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
|
|
33
38
|
var URL_TEMPLATE = "http://127.0.0.1:<port>/video/v1/transcoding?uri=<pull_uri>";
|
|
@@ -35,7 +40,7 @@ export function getLocalPlayPath(url) {
|
|
|
35
40
|
var pull_uri = window.btoa(url).replaceAll('=', '').replaceAll('/', '_').replaceAll('+', '-');
|
|
36
41
|
return URL_TEMPLATE.replace('<port>', port).replace('<pull_uri>', pull_uri) + params;
|
|
37
42
|
}
|
|
38
|
-
export function usePlugin(mode) {
|
|
43
|
+
export function usePlugin(mode, key) {
|
|
39
44
|
var _useState = useState({
|
|
40
45
|
installed: false
|
|
41
46
|
}),
|
|
@@ -43,27 +48,28 @@ export function usePlugin(mode) {
|
|
|
43
48
|
state = _useState2[0],
|
|
44
49
|
setState = _useState2[1];
|
|
45
50
|
|
|
46
|
-
|
|
51
|
+
useEffect(function () {
|
|
47
52
|
if (mode !== 2) {
|
|
48
53
|
return undefined;
|
|
49
54
|
}
|
|
50
55
|
|
|
51
56
|
var port = getLocalPort();
|
|
52
|
-
|
|
53
|
-
if (res.status === 200) {
|
|
54
|
-
setState({
|
|
55
|
-
installed: true
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
|
-
}).catch(function (e) {
|
|
59
|
-
console.error('插件未安装');
|
|
60
|
-
});
|
|
61
|
-
});
|
|
57
|
+
var url = "http://127.0.0.1:".concat(port, "/video/v1/state");
|
|
62
58
|
|
|
59
|
+
var thenFn = function thenFn(res) {
|
|
60
|
+
return res.status === 200 ? setState({
|
|
61
|
+
installed: true
|
|
62
|
+
}) : undefined;
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
fetch(url).then(thenFn).catch(function (e) {
|
|
66
|
+
return console.error('插件未安装', e);
|
|
67
|
+
});
|
|
68
|
+
}, [mode, key]);
|
|
63
69
|
return {
|
|
64
70
|
needInstall: useMemo(function () {
|
|
65
71
|
return mode === 2 && !state.installed;
|
|
66
|
-
}, [state.installed])
|
|
72
|
+
}, [state.installed, mode])
|
|
67
73
|
};
|
|
68
74
|
}
|
|
69
75
|
export function ExtModel(_ref) {
|
|
@@ -72,16 +78,24 @@ export function ExtModel(_ref) {
|
|
|
72
78
|
mode = _ref.mode,
|
|
73
79
|
pluginDownloadUrl = _ref.pluginDownloadUrl,
|
|
74
80
|
pluginParams = _ref.pluginParams;
|
|
81
|
+
|
|
82
|
+
var _useState3 = useState({
|
|
83
|
+
forceKey: Date.now()
|
|
84
|
+
}),
|
|
85
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
86
|
+
state = _useState4[0],
|
|
87
|
+
setState = _useState4[1];
|
|
88
|
+
|
|
75
89
|
var hasUrl = useMemo(function () {
|
|
76
90
|
return !!url;
|
|
77
91
|
}, [url]);
|
|
78
92
|
|
|
79
|
-
var _usePlugin = usePlugin(mode),
|
|
93
|
+
var _usePlugin = usePlugin(mode, state.forceKey),
|
|
80
94
|
needInstall = _usePlugin.needInstall;
|
|
81
95
|
|
|
82
96
|
var playUrl = useMemo(function () {
|
|
83
|
-
return
|
|
84
|
-
}, [url]);
|
|
97
|
+
return mode === 2 && url ? getLocalPlayPath(url, pluginParams) : url;
|
|
98
|
+
}, [url, mode]);
|
|
85
99
|
|
|
86
100
|
if (needInstall) {
|
|
87
101
|
return /*#__PURE__*/React.createElement("div", {
|
|
@@ -93,7 +107,7 @@ export function ExtModel(_ref) {
|
|
|
93
107
|
}
|
|
94
108
|
}, /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(IconFont, {
|
|
95
109
|
type: "lm-player-PlaySource"
|
|
96
|
-
})), /*#__PURE__*/React.createElement("div", null, "\u8BF7", /*#__PURE__*/React.createElement("a", {
|
|
110
|
+
})), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("span", null, "\u8BF7", /*#__PURE__*/React.createElement("a", {
|
|
97
111
|
target: "_blank",
|
|
98
112
|
href: pluginDownloadUrl,
|
|
99
113
|
style: {
|
|
@@ -102,7 +116,18 @@ export function ExtModel(_ref) {
|
|
|
102
116
|
},
|
|
103
117
|
download: "PlayerPlugin.exe",
|
|
104
118
|
rel: "noopener noreferrer"
|
|
105
|
-
}, "\u4E0B\u8F7D"), "\u64AD\u653E\u63D2\u4EF6")
|
|
119
|
+
}, "\u4E0B\u8F7D"), "\u64AD\u653E\u63D2\u4EF6\uFF0C"), /*#__PURE__*/React.createElement("span", null, "\u82E5\u5DF2\u5B89\u88C5\u8BF7\u70B9\u51FB", /*#__PURE__*/React.createElement("a", {
|
|
120
|
+
style: {
|
|
121
|
+
padding: '0 4px'
|
|
122
|
+
},
|
|
123
|
+
onClick: function onClick() {
|
|
124
|
+
return setState(function (old) {
|
|
125
|
+
return Object.assign(Object.assign({}, old), {
|
|
126
|
+
forceKey: Date.now()
|
|
127
|
+
});
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
}, "\u91CD\u8BD5")))));
|
|
106
131
|
}
|
|
107
132
|
|
|
108
133
|
if (!hasUrl) {
|