@cloud-app-dev/vidc 3.0.1 → 3.0.4
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/.umirc.ts +1 -1
- package/es/LoaderApp/utils.d.ts +1 -1
- package/es/Map/AMap.d.ts +6839 -1319
- package/es/Map/BasicMap/AMapInstance.d.ts +4 -3
- package/es/Map/BasicMap/AMapInstance.js +3 -4
- package/es/Map/BasicMap/LeafletInstance.d.ts +3 -3
- package/es/Map/ClusterLayer/hook.d.ts +4 -4
- package/es/Map/ClusterLayer/hook.js +20 -24
- package/es/Map/ClusterLayer/index.d.ts +1 -0
- package/es/Map/ClusterLayer/index.js +1 -0
- package/es/Map/InfoWindow/MakerLikeWindow.d.ts +4 -0
- package/es/Map/InfoWindow/MakerLikeWindow.js +103 -0
- package/es/Map/InfoWindow/demo.js +48 -21
- package/es/Map/InfoWindow/index.d.ts +7 -5
- package/es/Map/InfoWindow/index.js +7 -6
- package/es/Map/interface.d.ts +1 -1
- package/es/Map/useMarker/index.d.ts +2 -2
- package/es/Map/useMarker/index.js +3 -19
- package/es/Player/api/index.d.ts +1 -0
- package/es/Player/api/index.js +2 -0
- package/es/Player/demo.js +8 -3
- package/es/Player/event/errorEvent.js +3 -8
- package/es/Player/frontend_player.d.ts +1 -2
- package/es/Player/frontend_player.js +27 -57
- package/es/Player/frontend_timeline.d.ts +2 -1
- package/es/Player/frontend_timeline.js +14 -4
- package/es/Player/player.d.ts +7 -9
- package/es/Player/segment_player.d.ts +1 -1
- package/es/Player/segment_player.js +74 -36
- package/es/Player/single_player.d.ts +2 -2
- package/es/Player/single_player.js +20 -11
- package/es/ScreenPlayer/Live.js +9 -1
- package/es/ScreenPlayer/LiveTools.d.ts +3 -1
- package/es/ScreenPlayer/LiveTools.js +8 -1
- package/es/ScreenPlayer/PlayerWithExt.js +48 -27
- package/es/ScreenPlayer/Record.d.ts +5 -0
- package/es/ScreenPlayer/Record.js +7 -19
- package/es/ScreenPlayer/TimeSlider.d.ts +1 -1
- package/es/ScreenPlayer/TimeSlider.js +39 -35
- package/es/ScreenPlayer/demo2.js +1 -1
- package/es/ScreenPlayer/index.css +2 -3
- package/es/ScreenPlayer/useVideoFit.d.ts +1 -1
- package/es/ScreenPlayer/useVideoFit.js +4 -2
- package/package.json +1 -1
- package/release-build.sh +29 -4
|
@@ -1,26 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
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."); }
|
|
4
|
-
|
|
5
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
6
|
-
|
|
7
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
8
|
-
|
|
9
|
-
function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
|
10
|
-
|
|
11
|
-
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
12
|
-
|
|
1
|
+
import _useUpdate from "ahooks/es/useUpdate";
|
|
13
2
|
import { __rest } from "tslib";
|
|
14
|
-
import React, { useMemo, useRef
|
|
3
|
+
import React, { useCallback, useMemo, useRef } from 'react';
|
|
15
4
|
import SinglePlayer from './single_player';
|
|
16
5
|
import FrontendTimeLine from './frontend_timeline';
|
|
17
6
|
import Events from './event/eventName';
|
|
7
|
+
|
|
18
8
|
/**
|
|
19
9
|
* @desc 主组件,负责片段整体逻辑控制
|
|
20
|
-
* @
|
|
21
|
-
* @returns
|
|
10
|
+
* @return JSX.Element
|
|
22
11
|
*/
|
|
23
|
-
|
|
24
12
|
function FrontendPlayer(_a) {
|
|
25
13
|
var url = _a.url,
|
|
26
14
|
begin = _a.begin,
|
|
@@ -28,69 +16,51 @@ function FrontendPlayer(_a) {
|
|
|
28
16
|
onSeek = _a.onSeek,
|
|
29
17
|
forwordRef = _a.forwordRef,
|
|
30
18
|
customTimeLine = _a.customTimeLine,
|
|
31
|
-
|
|
19
|
+
onCanPlayerInit = _a.onCanPlayerInit,
|
|
32
20
|
props = __rest(_a, ["url", "begin", "end", "onSeek", "forwordRef", "customTimeLine", "onCanPlayerInit"]);
|
|
33
21
|
|
|
34
|
-
var
|
|
35
|
-
forceKey: Date.now()
|
|
36
|
-
}),
|
|
37
|
-
_useState2 = _slicedToArray(_useState, 2),
|
|
38
|
-
state = _useState2[0],
|
|
39
|
-
setState = _useState2[1];
|
|
22
|
+
var update = _useUpdate();
|
|
40
23
|
|
|
41
24
|
var ref = useRef(null);
|
|
42
25
|
var playRef = forwordRef ? forwordRef : ref;
|
|
43
26
|
|
|
44
27
|
var _ref = playRef.current || {},
|
|
45
28
|
api = _ref.api,
|
|
46
|
-
event = _ref.event; //
|
|
29
|
+
event = _ref.event; // 转换毫秒
|
|
47
30
|
|
|
48
31
|
|
|
49
|
-
var beginTemp = useMemo(function () {
|
|
50
|
-
return begin ? String(begin).length === 10 ? Math.floor(begin * 1000) : begin : begin;
|
|
51
|
-
}, []);
|
|
52
|
-
var endTemp = useMemo(function () {
|
|
53
|
-
return end ? String(end).length === 10 ? Math.floor(end * 1000) : end : end;
|
|
54
|
-
}, []);
|
|
55
32
|
var duration = useMemo(function () {
|
|
56
|
-
return (
|
|
57
|
-
}, [
|
|
33
|
+
return (begin - end) / 1000;
|
|
34
|
+
}, [begin, end]); //单位s 秒
|
|
58
35
|
// 重置reload
|
|
59
36
|
|
|
60
37
|
var reload = function reload() {
|
|
61
38
|
playRef.current.event.emit(Events.RELOAD);
|
|
62
|
-
onSeek && onSeek(
|
|
39
|
+
onSeek && onSeek(begin);
|
|
63
40
|
playRef.current.api.reload();
|
|
64
|
-
setState(function (old) {
|
|
65
|
-
return Object.assign(Object.assign({}, old), {
|
|
66
|
-
forceKey: Date.now()
|
|
67
|
-
});
|
|
68
|
-
});
|
|
69
41
|
};
|
|
70
42
|
|
|
43
|
+
var onInit = useCallback(function () {
|
|
44
|
+
update();
|
|
45
|
+
onCanPlayerInit && onCanPlayerInit(); // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
46
|
+
}, []);
|
|
47
|
+
var hasReady = api && event;
|
|
48
|
+
var timeline = customTimeLine !== null && customTimeLine !== void 0 ? customTimeLine : /*#__PURE__*/React.createElement(FrontendTimeLine, {
|
|
49
|
+
end: end,
|
|
50
|
+
url: url,
|
|
51
|
+
onSeek: onSeek,
|
|
52
|
+
begin: begin,
|
|
53
|
+
api: api,
|
|
54
|
+
event: event,
|
|
55
|
+
duration: duration
|
|
56
|
+
});
|
|
71
57
|
return /*#__PURE__*/React.createElement(SinglePlayer, Object.assign({
|
|
72
58
|
ref: playRef,
|
|
73
59
|
url: url,
|
|
74
|
-
type: "flv",
|
|
75
60
|
reload: reload,
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
forceKey: Date.now()
|
|
80
|
-
});
|
|
81
|
-
_onCanPlayerInit && _onCanPlayerInit({
|
|
82
|
-
reload: reload
|
|
83
|
-
});
|
|
84
|
-
},
|
|
85
|
-
customTimeLine: api && event && (customTimeLine || /*#__PURE__*/React.createElement(FrontendTimeLine, {
|
|
86
|
-
end: endTemp,
|
|
87
|
-
onSeek: onSeek,
|
|
88
|
-
key: state.forceKey,
|
|
89
|
-
begin: beginTemp,
|
|
90
|
-
api: api,
|
|
91
|
-
event: event,
|
|
92
|
-
duration: duration
|
|
93
|
-
}))
|
|
61
|
+
onCanPlayerInit: onInit,
|
|
62
|
+
isLive: false,
|
|
63
|
+
customTimeLine: hasReady ? timeline : /*#__PURE__*/React.createElement(React.Fragment, null)
|
|
94
64
|
}, props));
|
|
95
65
|
}
|
|
96
66
|
|
|
@@ -9,6 +9,7 @@ interface ITimeLineProps {
|
|
|
9
9
|
begin: number;
|
|
10
10
|
end: number;
|
|
11
11
|
onSeek?: (time: number) => void;
|
|
12
|
+
url?: string;
|
|
12
13
|
}
|
|
13
|
-
declare function FrontendTimeLine({ api, event, duration, begin, end, onSeek }: ITimeLineProps): JSX.Element;
|
|
14
|
+
declare function FrontendTimeLine({ api, event, duration, begin, end, onSeek, url }: ITimeLineProps): JSX.Element;
|
|
14
15
|
export default FrontendTimeLine;
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import _useTrackedEffect from "ahooks/es/useTrackedEffect";
|
|
2
|
+
|
|
1
3
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
2
4
|
|
|
3
5
|
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."); }
|
|
@@ -10,7 +12,7 @@ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Sy
|
|
|
10
12
|
|
|
11
13
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
12
14
|
|
|
13
|
-
import React, { useCallback, useEffect, useMemo, useState, startTransition } from 'react';
|
|
15
|
+
import React, { useCallback, useEffect, useMemo, useState, startTransition, useRef } from 'react';
|
|
14
16
|
import useBarStatus from './contraller_bar/useBarStatus';
|
|
15
17
|
import { useTimes } from './timeline';
|
|
16
18
|
import { FMT } from './util';
|
|
@@ -23,7 +25,9 @@ function FrontendTimeLine(_ref) {
|
|
|
23
25
|
duration = _ref.duration,
|
|
24
26
|
begin = _ref.begin,
|
|
25
27
|
end = _ref.end,
|
|
26
|
-
onSeek = _ref.onSeek
|
|
28
|
+
onSeek = _ref.onSeek,
|
|
29
|
+
url = _ref.url;
|
|
30
|
+
var lastSeekCTimeRef = useRef(0); // time 是记录seek时跳了多少
|
|
27
31
|
|
|
28
32
|
var _useState = useState({
|
|
29
33
|
time: 0,
|
|
@@ -35,14 +39,20 @@ function FrontendTimeLine(_ref) {
|
|
|
35
39
|
state = _useState2[0],
|
|
36
40
|
setState = _useState2[1];
|
|
37
41
|
|
|
38
|
-
var status = useBarStatus(event);
|
|
42
|
+
var status = useBarStatus(event); //获取视频当前播放时长单位s
|
|
39
43
|
|
|
40
44
|
var _useTimes = useTimes(api, event),
|
|
41
45
|
_useTimes2 = _slicedToArray(_useTimes, 1),
|
|
42
46
|
currentTime = _useTimes2[0];
|
|
43
47
|
|
|
48
|
+
_useTrackedEffect(function (changes) {
|
|
49
|
+
if (changes.includes(1)) {
|
|
50
|
+
lastSeekCTimeRef.current = currentTime;
|
|
51
|
+
}
|
|
52
|
+
}, [currentTime, url]);
|
|
53
|
+
|
|
44
54
|
var rTime = useMemo(function () {
|
|
45
|
-
return state.time + currentTime;
|
|
55
|
+
return state.time + currentTime + lastSeekCTimeRef.current;
|
|
46
56
|
}, [state.time, currentTime]);
|
|
47
57
|
useEffect(function () {
|
|
48
58
|
return setState(function (old) {
|
package/es/Player/player.d.ts
CHANGED
|
@@ -113,6 +113,11 @@ export interface ISinglePlayerProps {
|
|
|
113
113
|
*/
|
|
114
114
|
reload?: () => void;
|
|
115
115
|
|
|
116
|
+
/**
|
|
117
|
+
* extaction
|
|
118
|
+
*/
|
|
119
|
+
extActions?: { [key: string]: (...args: any) => void };
|
|
120
|
+
|
|
116
121
|
/**
|
|
117
122
|
* 视频可播放时执行钩子
|
|
118
123
|
*/
|
|
@@ -129,7 +134,7 @@ export interface ISinglePlayerProps {
|
|
|
129
134
|
playerEvents?: CustomEvent[];
|
|
130
135
|
}
|
|
131
136
|
|
|
132
|
-
export interface IFrontendPlayerProps extends Omit<ISinglePlayerProps, 'isLive' | 'reload'
|
|
137
|
+
export interface IFrontendPlayerProps extends Omit<ISinglePlayerProps, 'isLive' | 'reload'> {
|
|
133
138
|
/**
|
|
134
139
|
* 前端录像开始时间
|
|
135
140
|
*/
|
|
@@ -146,16 +151,9 @@ export interface IFrontendPlayerProps extends Omit<ISinglePlayerProps, 'isLive'
|
|
|
146
151
|
onSeek?: (time: number) => void;
|
|
147
152
|
|
|
148
153
|
forwordRef?: React.MutableRefObject<ExportPlayerType>;
|
|
149
|
-
|
|
150
|
-
/**
|
|
151
|
-
* 视频可播放时执行钩子
|
|
152
|
-
*/
|
|
153
|
-
onCanPlayerInit?: (data: any) => void;
|
|
154
154
|
}
|
|
155
155
|
|
|
156
|
-
export interface ISegmentPlayerProps extends Omit<ISinglePlayerProps, 'url'
|
|
157
|
-
onCanPlayerInit?: (ext: { [key: string]: any }) => void;
|
|
158
|
-
|
|
156
|
+
export interface ISegmentPlayerProps extends Omit<ISinglePlayerProps, 'url'> {
|
|
159
157
|
/**
|
|
160
158
|
* 云录像片段信息
|
|
161
159
|
*/
|
|
@@ -5,5 +5,5 @@ import type { ISegmentPlayerProps } from './player';
|
|
|
5
5
|
* @param param0
|
|
6
6
|
* @returns
|
|
7
7
|
*/
|
|
8
|
-
declare function SegmentPlayer({ segments, begin, forwordRef,
|
|
8
|
+
declare function SegmentPlayer({ segments, begin, forwordRef, defaultIndex, onCanPlayerInit, customTimeLine, ...props }: ISegmentPlayerProps): JSX.Element;
|
|
9
9
|
export default SegmentPlayer;
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import _useUpdate from "ahooks/es/useUpdate";
|
|
2
|
+
import _useLatest from "ahooks/es/useLatest";
|
|
3
|
+
|
|
1
4
|
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
2
5
|
|
|
3
6
|
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
@@ -19,17 +22,17 @@ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Sy
|
|
|
19
22
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
20
23
|
|
|
21
24
|
import { __rest } from "tslib";
|
|
22
|
-
import React, { useEffect, useMemo, useRef, useState } from 'react';
|
|
25
|
+
import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
23
26
|
import SinglePlayer from './single_player';
|
|
24
27
|
import SegmentTimeLine from './segment_timeline';
|
|
25
28
|
import Events from './event/eventName';
|
|
29
|
+
|
|
26
30
|
/**
|
|
27
31
|
* @desc 计算第一个url
|
|
28
32
|
* @param segments
|
|
29
33
|
* @param defaultIndex
|
|
30
34
|
* @returns
|
|
31
35
|
*/
|
|
32
|
-
|
|
33
36
|
function getFirstUrlIndex(segments) {
|
|
34
37
|
var defaultIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
|
35
38
|
|
|
@@ -60,7 +63,7 @@ function getFirstUrlIndex(segments) {
|
|
|
60
63
|
|
|
61
64
|
function usePlayIndex(event, segments) {
|
|
62
65
|
var defaultIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
|
|
63
|
-
var deps = arguments.length > 3 ? arguments[3] :
|
|
66
|
+
var deps = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];
|
|
64
67
|
|
|
65
68
|
var _useState = useState({
|
|
66
69
|
index: getFirstUrlIndex(segments, defaultIndex)
|
|
@@ -89,7 +92,7 @@ function usePlayIndex(event, segments) {
|
|
|
89
92
|
});
|
|
90
93
|
});
|
|
91
94
|
}
|
|
92
|
-
}, [state.index]); // 监听片段播放状态,自动跳转下一个片段
|
|
95
|
+
}, [segments, state.index]); // 监听片段播放状态,自动跳转下一个片段
|
|
93
96
|
|
|
94
97
|
useEffect(function () {
|
|
95
98
|
if (!event) {
|
|
@@ -98,7 +101,7 @@ function usePlayIndex(event, segments) {
|
|
|
98
101
|
|
|
99
102
|
var fn = function fn() {
|
|
100
103
|
return setState(function (old) {
|
|
101
|
-
return Object.assign(Object.assign({},
|
|
104
|
+
return Object.assign(Object.assign({}, old), {
|
|
102
105
|
index: old.index + 1 < segments.length ? old.index + 1 : old.index
|
|
103
106
|
});
|
|
104
107
|
});
|
|
@@ -107,7 +110,7 @@ function usePlayIndex(event, segments) {
|
|
|
107
110
|
event.addEventListener('ended', fn);
|
|
108
111
|
return function () {
|
|
109
112
|
return event.removeEventListener('ended', fn);
|
|
110
|
-
};
|
|
113
|
+
}; // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
111
114
|
}, [event, segments].concat(_toConsumableArray(deps)));
|
|
112
115
|
return {
|
|
113
116
|
index: state.index,
|
|
@@ -131,10 +134,21 @@ function SegmentPlayer(_a) {
|
|
|
131
134
|
var segments = _a.segments,
|
|
132
135
|
begin = _a.begin,
|
|
133
136
|
forwordRef = _a.forwordRef,
|
|
134
|
-
_onCanPlayerInit = _a.onCanPlayerInit,
|
|
135
137
|
defaultIndex = _a.defaultIndex,
|
|
138
|
+
onCanPlayerInit = _a.onCanPlayerInit,
|
|
136
139
|
customTimeLine = _a.customTimeLine,
|
|
137
|
-
props = __rest(_a, ["segments", "begin", "forwordRef", "
|
|
140
|
+
props = __rest(_a, ["segments", "begin", "forwordRef", "defaultIndex", "onCanPlayerInit", "customTimeLine"]);
|
|
141
|
+
|
|
142
|
+
var _useState3 = useState({
|
|
143
|
+
seekTime: 0
|
|
144
|
+
}),
|
|
145
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
146
|
+
state = _useState4[0],
|
|
147
|
+
setState = _useState4[1];
|
|
148
|
+
|
|
149
|
+
var latestSegmentsRef = _useLatest(segments);
|
|
150
|
+
|
|
151
|
+
var update = _useUpdate();
|
|
138
152
|
|
|
139
153
|
var ref = useRef(null);
|
|
140
154
|
var playRef = forwordRef ? forwordRef : ref;
|
|
@@ -143,13 +157,6 @@ function SegmentPlayer(_a) {
|
|
|
143
157
|
api = _ref.api,
|
|
144
158
|
event = _ref.event;
|
|
145
159
|
|
|
146
|
-
var _useState3 = useState({
|
|
147
|
-
forceKey: Date.now()
|
|
148
|
-
}),
|
|
149
|
-
_useState4 = _slicedToArray(_useState3, 2),
|
|
150
|
-
state = _useState4[0],
|
|
151
|
-
setState = _useState4[1];
|
|
152
|
-
|
|
153
160
|
var duration = useMemo(function () {
|
|
154
161
|
return segments === null || segments === void 0 ? void 0 : segments.map(function (v) {
|
|
155
162
|
return (v.endTime - v.beginTime) / 1000;
|
|
@@ -158,45 +165,76 @@ function SegmentPlayer(_a) {
|
|
|
158
165
|
}, 0);
|
|
159
166
|
}, [segments]);
|
|
160
167
|
|
|
161
|
-
var _usePlayIndex = usePlayIndex(event, segments, defaultIndex, [
|
|
168
|
+
var _usePlayIndex = usePlayIndex(event, segments, defaultIndex, [segments, defaultIndex]),
|
|
162
169
|
index = _usePlayIndex.index,
|
|
163
170
|
setIndex = _usePlayIndex.setIndex;
|
|
164
171
|
|
|
165
172
|
var url = useMemo(function () {
|
|
166
|
-
return segments
|
|
173
|
+
return segments[index] ? segments[index].url : undefined;
|
|
167
174
|
}, [segments, index]); // 重置reload
|
|
168
175
|
|
|
169
176
|
var reload = function reload() {
|
|
170
177
|
playRef.current.event.emit(Events.RELOAD);
|
|
171
178
|
setIndex(0);
|
|
172
179
|
playRef.current.api.reload();
|
|
173
|
-
}; //
|
|
180
|
+
}; // time 毫秒的时间戳
|
|
174
181
|
|
|
175
182
|
|
|
176
|
-
var
|
|
177
|
-
|
|
183
|
+
var seekTo = function seekTo(time) {
|
|
184
|
+
var index = latestSegmentsRef.current.findIndex(function (v) {
|
|
185
|
+
return time >= v.beginTime && time < v.endTime;
|
|
186
|
+
});
|
|
187
|
+
|
|
188
|
+
if (index === -1) {
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
var currentTime = time - latestSegmentsRef.current[index].beginTime;
|
|
193
|
+
setIndex(index);
|
|
194
|
+
setState(function (old) {
|
|
195
|
+
return Object.assign(Object.assign({}, old), {
|
|
196
|
+
seekTime: currentTime / 1000
|
|
197
|
+
});
|
|
198
|
+
});
|
|
199
|
+
}; // 处理seek 后index变化后 cuurenttime变化的过程
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
useEffect(function () {
|
|
203
|
+
if (state.seekTime === 0) {
|
|
204
|
+
return;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
setState(function (old) {
|
|
208
|
+
return Object.assign(Object.assign({}, old), {
|
|
209
|
+
seekTime: 0
|
|
210
|
+
});
|
|
211
|
+
});
|
|
212
|
+
playRef.current.video.currentTime = state.seekTime; // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
213
|
+
}, [state.seekTime]);
|
|
214
|
+
var hasReady = api && event;
|
|
215
|
+
var timeline = customTimeLine !== null && customTimeLine !== void 0 ? customTimeLine : /*#__PURE__*/React.createElement(SegmentTimeLine, {
|
|
216
|
+
begin: begin,
|
|
217
|
+
api: api,
|
|
218
|
+
event: event,
|
|
219
|
+
index: index,
|
|
220
|
+
segments: segments,
|
|
221
|
+
duration: duration,
|
|
222
|
+
setIndex: setIndex
|
|
223
|
+
});
|
|
224
|
+
var onInit = useCallback(function () {
|
|
225
|
+
update();
|
|
226
|
+
onCanPlayerInit && onCanPlayerInit(); // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
178
227
|
}, []);
|
|
179
228
|
return /*#__PURE__*/React.createElement(SinglePlayer, Object.assign({
|
|
180
229
|
ref: playRef,
|
|
181
230
|
url: url,
|
|
231
|
+
onCanPlayerInit: onInit,
|
|
182
232
|
reload: reload,
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
});
|
|
187
|
-
_onCanPlayerInit && _onCanPlayerInit({
|
|
188
|
-
setIndex: setIndex
|
|
189
|
-
});
|
|
233
|
+
extActions: {
|
|
234
|
+
setIndex: setIndex,
|
|
235
|
+
seekTo: seekTo
|
|
190
236
|
},
|
|
191
|
-
customTimeLine:
|
|
192
|
-
begin: beginTemp,
|
|
193
|
-
api: api,
|
|
194
|
-
event: event,
|
|
195
|
-
index: index,
|
|
196
|
-
segments: segments,
|
|
197
|
-
duration: duration,
|
|
198
|
-
setIndex: setIndex
|
|
199
|
-
}))
|
|
237
|
+
customTimeLine: hasReady ? timeline : /*#__PURE__*/React.createElement(React.Fragment, null)
|
|
200
238
|
}, props));
|
|
201
239
|
}
|
|
202
240
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { ISinglePlayerProps, ExportPlayerType } from './player';
|
|
3
3
|
import './style/index.less';
|
|
4
|
-
declare const
|
|
5
|
-
export default
|
|
4
|
+
declare const SinglePlayer: React.ForwardRefExoticComponent<ISinglePlayerProps & React.RefAttributes<ExportPlayerType>>;
|
|
5
|
+
export default SinglePlayer;
|
|
@@ -16,6 +16,7 @@ import { __rest } from "tslib";
|
|
|
16
16
|
import React, { useEffect, useMemo, useRef, useState, useImperativeHandle } from 'react';
|
|
17
17
|
import { usePlayerApi } from './api';
|
|
18
18
|
import { usePlayerEvent, useRegisterPlayerEvents, useVideoEvents } from './event';
|
|
19
|
+
import EventName from './event/eventName';
|
|
19
20
|
import ContrallerBar from './contraller_bar';
|
|
20
21
|
import ContrallerEvent from './contraller_bar/contraller_event';
|
|
21
22
|
import LiveHeart from './live_heart';
|
|
@@ -34,7 +35,9 @@ var SinglePlayer = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
|
|
34
35
|
isLive = _a.isLive,
|
|
35
36
|
errorReloadTimer = _a.errorReloadTimer,
|
|
36
37
|
children = _a.children,
|
|
37
|
-
|
|
38
|
+
onCanPlayerInit = _a.onCanPlayerInit,
|
|
39
|
+
extActions = _a.extActions,
|
|
40
|
+
props = __rest(_a, ["className", "url", "type", "hideContrallerBar", "isLive", "errorReloadTimer", "children", "onCanPlayerInit", "extActions"]);
|
|
38
41
|
|
|
39
42
|
var autoPlay = props.autoPlay,
|
|
40
43
|
preload = props.preload,
|
|
@@ -97,7 +100,11 @@ var SinglePlayer = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
|
|
97
100
|
container: domRef.current
|
|
98
101
|
});
|
|
99
102
|
});
|
|
100
|
-
}, []); //
|
|
103
|
+
}, []); // url 变化清理错误次数
|
|
104
|
+
|
|
105
|
+
useEffect(function () {
|
|
106
|
+
event && event.emit(EventName.CLEAR_ERROR_TIMER); // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
107
|
+
}, [url]); // 特殊接口实现 reload是可能被重写的,但是API只暴露原生的方法
|
|
101
108
|
|
|
102
109
|
var reload = function reload() {
|
|
103
110
|
return playReload(video, event, flv, hls, url);
|
|
@@ -113,11 +120,11 @@ var SinglePlayer = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
|
|
113
120
|
return undefined;
|
|
114
121
|
}
|
|
115
122
|
|
|
116
|
-
var map = {
|
|
123
|
+
var map = Object.assign({
|
|
117
124
|
reload: reload,
|
|
118
125
|
unload: unload,
|
|
119
126
|
toggleFit: toggle
|
|
120
|
-
};
|
|
127
|
+
}, extActions);
|
|
121
128
|
return new Proxy(api, {
|
|
122
129
|
get: function get(target, key) {
|
|
123
130
|
var _a;
|
|
@@ -127,7 +134,7 @@ var SinglePlayer = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
|
|
127
134
|
set: function set() {
|
|
128
135
|
return true;
|
|
129
136
|
}
|
|
130
|
-
});
|
|
137
|
+
}); // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
131
138
|
}, [api]); // 代理Event
|
|
132
139
|
|
|
133
140
|
var playEvent = useMemo(function () {
|
|
@@ -154,11 +161,12 @@ var SinglePlayer = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
|
|
154
161
|
plugins: [flv, hls],
|
|
155
162
|
fit: fit
|
|
156
163
|
};
|
|
157
|
-
}, [
|
|
164
|
+
}, [video, state.container, playApi, playEvent, flv, hls, fit]);
|
|
158
165
|
useEffect(function () {
|
|
159
166
|
if (api && event && video) {
|
|
160
|
-
|
|
161
|
-
}
|
|
167
|
+
onCanPlayerInit && onCanPlayerInit();
|
|
168
|
+
} // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
169
|
+
|
|
162
170
|
}, [api, event, video]);
|
|
163
171
|
return /*#__PURE__*/React.createElement("div", {
|
|
164
172
|
className: "lm-player-container ".concat(className),
|
|
@@ -193,7 +201,7 @@ var SinglePlayer = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
|
|
193
201
|
leftMidExtContents: leftMidExtContents,
|
|
194
202
|
reload: (_b = props.reload) !== null && _b !== void 0 ? _b : reload,
|
|
195
203
|
hideTimeProgress: !!customTimeLine
|
|
196
|
-
})),
|
|
204
|
+
})), customTimeLine ? customTimeLine : !hideContrallerBar ? /*#__PURE__*/React.createElement(Timeline, {
|
|
197
205
|
api: playApi,
|
|
198
206
|
event: event
|
|
199
207
|
}) : null, /*#__PURE__*/React.createElement(ErrorEvent, {
|
|
@@ -222,6 +230,7 @@ SinglePlayer.defaultProps = {
|
|
|
222
230
|
mediaDataSource: {},
|
|
223
231
|
config: {}
|
|
224
232
|
},
|
|
225
|
-
hlsConfig: {}
|
|
233
|
+
hlsConfig: {},
|
|
234
|
+
extActions: {}
|
|
226
235
|
};
|
|
227
|
-
export default
|
|
236
|
+
export default SinglePlayer;
|
package/es/ScreenPlayer/Live.js
CHANGED
|
@@ -14,6 +14,7 @@ import React, { useMemo, useRef, useState } from 'react';
|
|
|
14
14
|
import { ScreenType, mergeFill } from './utils';
|
|
15
15
|
import { LivePlayerWithExt } from './PlayerWithExt';
|
|
16
16
|
import Tools from './LiveTools';
|
|
17
|
+
import useVideoFit from './useVideoFit';
|
|
17
18
|
import "./index.css";
|
|
18
19
|
|
|
19
20
|
function LivePlayer(_ref) {
|
|
@@ -30,7 +31,12 @@ function LivePlayer(_ref) {
|
|
|
30
31
|
state = _useState2[0],
|
|
31
32
|
setState = _useState2[1];
|
|
32
33
|
|
|
33
|
-
var domRef = useRef(null);
|
|
34
|
+
var domRef = useRef(null);
|
|
35
|
+
|
|
36
|
+
var _useVideoFit = useVideoFit(domRef, []),
|
|
37
|
+
fit = _useVideoFit.fit,
|
|
38
|
+
toggleFit = _useVideoFit.toggleFit; // 缓存所有player对象
|
|
39
|
+
|
|
34
40
|
|
|
35
41
|
var playerRef = useRef([]);
|
|
36
42
|
var screenType = useMemo(function () {
|
|
@@ -96,6 +102,8 @@ function LivePlayer(_ref) {
|
|
|
96
102
|
}
|
|
97
103
|
}));
|
|
98
104
|
})), /*#__PURE__*/React.createElement(Tools, {
|
|
105
|
+
fit: fit,
|
|
106
|
+
toggleFit: toggleFit,
|
|
99
107
|
getPlayerItem: getPlayerItem,
|
|
100
108
|
screenNum: state.screenNum,
|
|
101
109
|
mode: state.mode,
|
|
@@ -10,6 +10,8 @@ interface IToolsProps {
|
|
|
10
10
|
screenNum: number;
|
|
11
11
|
mode: PlayModeType;
|
|
12
12
|
getPlayerItem: () => ExportPlayerType | undefined;
|
|
13
|
+
fit?: string;
|
|
14
|
+
toggleFit?: () => void;
|
|
13
15
|
}
|
|
14
|
-
declare function LiveTools({ containerRef, updateState, screenNum, getPlayerItem, mode }: IToolsProps): JSX.Element;
|
|
16
|
+
declare function LiveTools({ containerRef, updateState, screenNum, getPlayerItem, mode, toggleFit, fit }: IToolsProps): JSX.Element;
|
|
15
17
|
export default LiveTools;
|
|
@@ -20,7 +20,9 @@ function LiveTools(_ref) {
|
|
|
20
20
|
updateState = _ref.updateState,
|
|
21
21
|
screenNum = _ref.screenNum,
|
|
22
22
|
getPlayerItem = _ref.getPlayerItem,
|
|
23
|
-
mode = _ref.mode
|
|
23
|
+
mode = _ref.mode,
|
|
24
|
+
toggleFit = _ref.toggleFit,
|
|
25
|
+
fit = _ref.fit;
|
|
24
26
|
|
|
25
27
|
var _useFullscreen = _useFullscreen3(containerRef),
|
|
26
28
|
_useFullscreen2 = _slicedToArray(_useFullscreen, 2),
|
|
@@ -85,6 +87,11 @@ function LiveTools(_ref) {
|
|
|
85
87
|
},
|
|
86
88
|
onClick: reload
|
|
87
89
|
}, "\u91CD\u8FDE"), /*#__PURE__*/React.createElement("span", {
|
|
90
|
+
style: {
|
|
91
|
+
padding: 6
|
|
92
|
+
},
|
|
93
|
+
onClick: toggleFit
|
|
94
|
+
}, fit === 'fill' ? '自适应' : '填充'), /*#__PURE__*/React.createElement("span", {
|
|
88
95
|
style: {
|
|
89
96
|
padding: 6
|
|
90
97
|
},
|