@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.
@@ -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) {
@@ -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 Demo1() {
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, "\u6807\u51C6\u89C6\u9891\u64AD\u653E"), /*#__PURE__*/React.createElement("div", {
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(_Button, {
107
- style: {
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
- type: val
112
+ mode: val
159
113
  });
160
114
  });
161
115
  }
162
- }, options.map(function (v) {
163
- return /*#__PURE__*/React.createElement(_Select.Option, {
164
- key: v.label,
165
- value: v.value
166
- }, v.label);
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
- flex: 1,
122
+ width: 60,
170
123
  height: 32
171
124
  },
172
- type: "text",
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
- isLive: val
128
+ url: ''
187
129
  });
188
130
  });
189
131
  }
190
- }, options2.map(function (v) {
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: 2
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(Demo1, null), /*#__PURE__*/React.createElement(Demo2, null));
162
+ }, /*#__PURE__*/React.createElement(Demo, null));
225
163
  };
226
164
 
227
165
  export default App;
@@ -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;
@@ -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
- _useMount(function () {
51
+ useEffect(function () {
47
52
  if (mode !== 2) {
48
53
  return undefined;
49
54
  }
50
55
 
51
56
  var port = getLocalPort();
52
- fetch("http://127.0.0.1:".concat(port, "/video/v1/state")).then(function (res) {
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 needInstall && url ? getLocalPlayPath(url, pluginParams) : url;
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) {
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "private": false,
3
3
  "name": "@cloud-app-dev/vidc",
4
4
  "description": "Video Image Data Componennts",
5
- "version": "2.2.0-alpha.4",
5
+ "version": "2.2.0-alpha.5",
6
6
  "scripts": {
7
7
  "start": "dumi dev",
8
8
  "docs:build": "dumi build",