@cloud-app-dev/vidc 3.0.16 → 3.0.18
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/DisableMark/index.d.ts +2 -1
- package/es/DisableMark/index.js +6 -2
- package/es/Map/BasicMap/AMapInstance.d.ts +3 -0
- package/es/Map/BasicMap/AMapInstance.js +16 -1
- package/es/Map/BasicMap/LeafletInstance.d.ts +4 -1
- package/es/Map/BasicMap/LeafletInstance.js +17 -2
- package/es/Map/LevelCenter/index.d.ts +3 -0
- package/es/Map/LevelCenter/index.js +29 -9
- package/es/Map/SinglePoint/index.js +8 -5
- package/es/Map/hook/useMapEvent.d.ts +2 -0
- package/es/Map/hook/useMapEvent.js +23 -0
- package/es/Map/interface.d.ts +3 -0
- package/es/Player/api/index.d.ts +3 -1
- package/es/Player/api/index.js +27 -24
- package/es/Player/context.d.ts +21 -0
- package/es/Player/context.js +16 -0
- package/es/Player/contraller_bar/contraller_event.d.ts +1 -4
- package/es/Player/contraller_bar/contraller_event.js +37 -28
- package/es/Player/contraller_bar/index.d.ts +2 -7
- package/es/Player/contraller_bar/index.js +4 -12
- package/es/Player/contraller_bar/left_bar.d.ts +2 -7
- package/es/Player/contraller_bar/left_bar.js +26 -23
- package/es/Player/contraller_bar/right_bar.d.ts +1 -6
- package/es/Player/contraller_bar/right_bar.js +6 -3
- package/es/Player/contraller_bar/useBarStatus.js +17 -24
- package/es/Player/demo.js +5 -1
- package/es/Player/event/errorEvent.d.ts +3 -3
- package/es/Player/event/errorEvent.js +39 -40
- package/es/Player/event/eventName.d.ts +17 -2
- package/es/Player/event/eventName.js +5 -1
- package/es/Player/event/index.d.ts +2 -0
- package/es/Player/event/index.js +55 -3
- package/es/Player/fps_play.d.ts +10 -0
- package/es/Player/fps_play.js +80 -0
- package/es/Player/frontend_player.js +0 -2
- package/es/Player/frontend_timeline.d.ts +1 -5
- package/es/Player/frontend_timeline.js +8 -4
- package/es/Player/live_heart.d.ts +4 -4
- package/es/Player/live_heart.js +10 -7
- package/es/Player/message.js +69 -84
- package/es/Player/player.d.ts +10 -15
- package/es/Player/segment_player.js +13 -29
- package/es/Player/segment_timeline.d.ts +1 -6
- package/es/Player/segment_timeline.js +11 -7
- package/es/Player/single_player.js +94 -49
- package/es/Player/style/bar.css +1 -0
- package/es/Player/style/index.css +8 -0
- package/es/Player/timeline.d.ts +1 -1
- package/es/Player/timeline.js +26 -37
- package/es/Player/util.d.ts +1 -1
- package/es/Player/util.js +2 -5
- package/es/ScreenPlayer/Live.d.ts +1 -1
- package/es/ScreenPlayer/Live.js +6 -3
- package/es/ScreenPlayer/LiveTools.d.ts +9 -1
- package/es/ScreenPlayer/LiveTools.js +6 -3
- package/es/ScreenPlayer/PlayerWithExt.d.ts +1 -1
- package/es/ScreenPlayer/PlayerWithExt.js +2 -4
- package/es/ScreenPlayer/Record.d.ts +1 -1
- package/es/ScreenPlayer/Record.js +8 -4
- package/es/ScreenPlayer/RecordTools.d.ts +9 -1
- package/es/ScreenPlayer/RecordTools.js +5 -3
- package/es/ScreenPlayer/demo2.js +1 -1
- package/es/ScreenPlayer/interface.d.ts +51 -0
- package/es/index.d.ts +1 -0
- package/es/index.js +1 -0
- package/es/useRafInterval/index.d.ts +5 -0
- package/es/useRafInterval/index.js +94 -0
- package/package.json +1 -1
- package/es/Player/event/browserTabEvent.d.ts +0 -9
- package/es/Player/event/browserTabEvent.js +0 -57
package/es/Player/live_heart.js
CHANGED
|
@@ -1,18 +1,23 @@
|
|
|
1
1
|
import _useRafInterval from "ahooks/es/useRafInterval";
|
|
2
2
|
import _useUpdateEffect from "ahooks/es/useUpdateEffect";
|
|
3
3
|
import _useDocumentVisibility from "ahooks/es/useDocumentVisibility";
|
|
4
|
-
import
|
|
4
|
+
import { useRef } from 'react';
|
|
5
5
|
import Events from './event/eventName';
|
|
6
6
|
|
|
7
|
-
function
|
|
7
|
+
function useLiveHeart(_ref) {
|
|
8
8
|
var api = _ref.api,
|
|
9
|
-
event = _ref.event
|
|
9
|
+
event = _ref.event,
|
|
10
|
+
isLive = _ref.isLive;
|
|
10
11
|
|
|
11
12
|
var documentVisibility = _useDocumentVisibility();
|
|
12
13
|
|
|
13
14
|
var cTimeRef = useRef(null);
|
|
14
15
|
|
|
15
16
|
var run = function run() {
|
|
17
|
+
if (!isLive || documentVisibility !== 'visible') {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
|
|
16
21
|
var current = api.getCurrentTime();
|
|
17
22
|
var buffered = api.getSecondsLoaded();
|
|
18
23
|
|
|
@@ -38,12 +43,10 @@ function LiveHeart(_ref) {
|
|
|
38
43
|
_useRafInterval(function () {
|
|
39
44
|
var cuurentTime = api.getCurrentTime();
|
|
40
45
|
|
|
41
|
-
if (!api.video.paused && cuurentTime === cTimeRef.current) {
|
|
46
|
+
if (!!isLive && !api.video.paused && cuurentTime === cTimeRef.current) {
|
|
42
47
|
event.emit(Events.ERROR);
|
|
43
48
|
}
|
|
44
49
|
}, 20 * 1000);
|
|
45
|
-
|
|
46
|
-
return /*#__PURE__*/React.createElement(React.Fragment, null);
|
|
47
50
|
}
|
|
48
51
|
|
|
49
|
-
export default
|
|
52
|
+
export default useLiveHeart;
|
package/es/Player/message.js
CHANGED
|
@@ -10,8 +10,9 @@ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Sy
|
|
|
10
10
|
|
|
11
11
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
12
12
|
|
|
13
|
-
import React, {
|
|
13
|
+
import React, { useState, useMemo, useRef } from 'react';
|
|
14
14
|
import IconFont from './iconfont';
|
|
15
|
+
import { useRegisterPlayerEvent, useVideoEvent } from './event';
|
|
15
16
|
import EventName from './event/eventName';
|
|
16
17
|
import "./style/message.css";
|
|
17
18
|
|
|
@@ -42,99 +43,83 @@ function VideoMessage(_ref) {
|
|
|
42
43
|
|
|
43
44
|
return '';
|
|
44
45
|
}, [state.errorTimer, state.status]);
|
|
45
|
-
useEffect(function () {
|
|
46
|
-
var openLoading = function openLoading() {
|
|
47
|
-
clearTimeout(timeRef.current);
|
|
48
|
-
timeRef.current = setTimeout(function () {
|
|
49
|
-
return setState(function (old) {
|
|
50
|
-
return Object.assign(Object.assign({}, old), {
|
|
51
|
-
loading: true
|
|
52
|
-
});
|
|
53
|
-
});
|
|
54
|
-
}, 200);
|
|
55
|
-
};
|
|
56
46
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
47
|
+
var openLoading = function openLoading() {
|
|
48
|
+
clearTimeout(timeRef.current);
|
|
49
|
+
timeRef.current = setTimeout(function () {
|
|
50
|
+
return setState(function (old) {
|
|
60
51
|
return Object.assign(Object.assign({}, old), {
|
|
61
|
-
loading:
|
|
52
|
+
loading: true
|
|
62
53
|
});
|
|
63
54
|
});
|
|
64
|
-
};
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
loading: true
|
|
73
|
-
};
|
|
55
|
+
}, 200);
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
var closeLoading = function closeLoading() {
|
|
59
|
+
clearTimeout(timeRef.current);
|
|
60
|
+
setState(function (old) {
|
|
61
|
+
return Object.assign(Object.assign({}, old), {
|
|
62
|
+
loading: false
|
|
74
63
|
});
|
|
75
|
-
};
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
64
|
+
});
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
var errorReload = function errorReload(timer) {
|
|
68
|
+
clearTimeout(timeRef.current);
|
|
69
|
+
setState(function () {
|
|
70
|
+
return {
|
|
71
|
+
status: 'reload',
|
|
72
|
+
errorTimer: timer,
|
|
73
|
+
loading: true
|
|
74
|
+
};
|
|
75
|
+
});
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
var reloadFail = function reloadFail() {
|
|
79
|
+
return setState(function (old) {
|
|
80
|
+
return Object.assign(Object.assign({}, old), {
|
|
81
|
+
status: 'fail'
|
|
82
82
|
});
|
|
83
|
-
};
|
|
83
|
+
});
|
|
84
|
+
};
|
|
84
85
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
});
|
|
86
|
+
var reloadSuccess = function reloadSuccess() {
|
|
87
|
+
return setState(function (old) {
|
|
88
|
+
return Object.assign(Object.assign({}, old), {
|
|
89
|
+
status: null
|
|
90
90
|
});
|
|
91
|
-
};
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
91
|
+
});
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
var reload = function reload() {
|
|
95
|
+
return setState(function (old) {
|
|
96
|
+
return Object.assign(Object.assign({}, old), {
|
|
97
|
+
status: 'reload',
|
|
98
|
+
loading: true
|
|
99
99
|
});
|
|
100
|
-
};
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
100
|
+
});
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
var playEnd = function playEnd() {
|
|
104
|
+
clearTimeout(timeRef.current);
|
|
105
|
+
setState(function (old) {
|
|
106
|
+
return Object.assign(Object.assign({}, old), {
|
|
107
|
+
status: null,
|
|
108
|
+
loading: false
|
|
109
109
|
});
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
event.on(EventName.CLEAR_ERROR_TIMER, reloadSuccess);
|
|
124
|
-
return function () {
|
|
125
|
-
event.removeEventListener('loadstart', openLoading); // event.removeEventListener('waiting', openLoading);
|
|
126
|
-
// event.removeEventListener('seeking', openLoading)
|
|
127
|
-
|
|
128
|
-
event.removeEventListener('loadeddata', closeLoading);
|
|
129
|
-
event.removeEventListener('canplay', closeLoading);
|
|
130
|
-
event.off(EventName.ERROR_RELOAD, errorReload);
|
|
131
|
-
event.off(EventName.RELOAD_FAIL, reloadFail);
|
|
132
|
-
event.off(EventName.RELOAD_SUCCESS, reloadSuccess);
|
|
133
|
-
event.off(EventName.RELOAD, reload);
|
|
134
|
-
event.off(EventName.HISTORY_PLAY_END, playEnd);
|
|
135
|
-
event.off(EventName.CLEAR_ERROR_TIMER, reloadSuccess);
|
|
136
|
-
};
|
|
137
|
-
}, [event]);
|
|
110
|
+
});
|
|
111
|
+
api.pause();
|
|
112
|
+
};
|
|
113
|
+
|
|
114
|
+
useVideoEvent('loadstart', openLoading);
|
|
115
|
+
useVideoEvent('loadeddata', closeLoading);
|
|
116
|
+
useVideoEvent('canplay', closeLoading);
|
|
117
|
+
useRegisterPlayerEvent(EventName.ERROR_RELOAD, errorReload);
|
|
118
|
+
useRegisterPlayerEvent(EventName.RELOAD_FAIL, reloadFail);
|
|
119
|
+
useRegisterPlayerEvent(EventName.RELOAD_SUCCESS, reloadSuccess);
|
|
120
|
+
useRegisterPlayerEvent(EventName.RELOAD, reload);
|
|
121
|
+
useRegisterPlayerEvent(EventName.HISTORY_PLAY_END, playEnd);
|
|
122
|
+
useRegisterPlayerEvent(EventName.CLEAR_ERROR_TIMER, reloadSuccess);
|
|
138
123
|
var loading = state.loading,
|
|
139
124
|
status = state.status;
|
|
140
125
|
return /*#__PURE__*/React.createElement("div", {
|
package/es/Player/player.d.ts
CHANGED
|
@@ -132,6 +132,16 @@ export interface ISinglePlayerProps {
|
|
|
132
132
|
* 自定义播放器的事件
|
|
133
133
|
*/
|
|
134
134
|
playerEvents?: CustomEvent[];
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* 开启单帧播放
|
|
138
|
+
*/
|
|
139
|
+
oneFpsPlay?: boolean;
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* 获取视频针的频次 (ms)
|
|
143
|
+
*/
|
|
144
|
+
fpsDelay?: number;
|
|
135
145
|
}
|
|
136
146
|
|
|
137
147
|
export interface IFrontendPlayerProps extends Omit<ISinglePlayerProps, 'isLive' | 'reload'> {
|
|
@@ -173,21 +183,6 @@ export const SinglePlayer: React.FunctionComponent<ISinglePlayerProps>;
|
|
|
173
183
|
export const FrontendPlayer: React.FunctionComponent<IFrontendPlayerProps>;
|
|
174
184
|
export const SegmentPlayer: React.FunctionComponent<ISegmentPlayerProps>;
|
|
175
185
|
|
|
176
|
-
export interface EventName {
|
|
177
|
-
RELOAD: 'reload'; //手动视频重载
|
|
178
|
-
RELOAD_FAIL: 'reloadFail'; // 视频出错,重连失败
|
|
179
|
-
RELOAD_SUCCESS: 'reloadSuccess'; //视频出错,重连成功
|
|
180
|
-
ERROR: 'error'; //视频出错
|
|
181
|
-
ERROR_RELOAD: 'errorRload'; //视频出错,自动重连
|
|
182
|
-
HISTORY_PLAY_END: 'historyPlayEnd'; //历史视频列表播放结束
|
|
183
|
-
SEEK: 'seek'; //跳跃播放时间
|
|
184
|
-
TRANSFORM: 'transform'; //视频容器缩放
|
|
185
|
-
CHANGE_PLAY_INDEX: 'changePlayIndex'; //历史视频列表播放索引改变
|
|
186
|
-
HIDE_CONTRALLER: 'hideContraller';
|
|
187
|
-
SHOW_CONTRALLER: 'showContraller';
|
|
188
|
-
CLEAR_ERROR_TIMER: 'clearErrorTimer';
|
|
189
|
-
}
|
|
190
|
-
|
|
191
186
|
export type EventInfo = {
|
|
192
187
|
type: string;
|
|
193
188
|
listener: ((...args: any) => void)[];
|
|
@@ -1,14 +1,6 @@
|
|
|
1
1
|
import _useUpdate from "ahooks/es/useUpdate";
|
|
2
2
|
import _useLatest from "ahooks/es/useLatest";
|
|
3
3
|
|
|
4
|
-
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
5
|
-
|
|
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."); }
|
|
7
|
-
|
|
8
|
-
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
9
|
-
|
|
10
|
-
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
11
|
-
|
|
12
4
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
13
5
|
|
|
14
6
|
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."); }
|
|
@@ -26,13 +18,14 @@ import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'
|
|
|
26
18
|
import SinglePlayer from './single_player';
|
|
27
19
|
import SegmentTimeLine from './segment_timeline';
|
|
28
20
|
import Events from './event/eventName';
|
|
29
|
-
|
|
21
|
+
import { useRegisterPlayerEvent, useVideoEvent } from './event';
|
|
30
22
|
/**
|
|
31
23
|
* @desc 计算第一个url
|
|
32
24
|
* @param segments
|
|
33
25
|
* @param defaultIndex
|
|
34
26
|
* @returns
|
|
35
27
|
*/
|
|
28
|
+
|
|
36
29
|
function getFirstUrlIndex(segments) {
|
|
37
30
|
var defaultIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
|
38
31
|
|
|
@@ -94,24 +87,16 @@ function usePlayIndex(event, segments) {
|
|
|
94
87
|
}
|
|
95
88
|
}, [segments, state.index]); // 监听片段播放状态,自动跳转下一个片段
|
|
96
89
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
return
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
var fn = function fn() {
|
|
103
|
-
return setState(function (old) {
|
|
104
|
-
return Object.assign(Object.assign({}, old), {
|
|
105
|
-
index: old.index + 1 < segments.length ? old.index + 1 : old.index
|
|
106
|
-
});
|
|
90
|
+
var endHandle = function endHandle() {
|
|
91
|
+
return setState(function (old) {
|
|
92
|
+
return Object.assign(Object.assign({}, old), {
|
|
93
|
+
index: old.index + 1 < segments.length ? old.index + 1 : old.index
|
|
107
94
|
});
|
|
108
|
-
};
|
|
95
|
+
});
|
|
96
|
+
};
|
|
109
97
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
return event.removeEventListener('ended', fn);
|
|
113
|
-
}; // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
114
|
-
}, [event, segments].concat(_toConsumableArray(deps)));
|
|
98
|
+
useVideoEvent('ended', endHandle, event);
|
|
99
|
+
useRegisterPlayerEvent(Events.PLAY_ENDED, endHandle, event);
|
|
115
100
|
return {
|
|
116
101
|
index: state.index,
|
|
117
102
|
setIndex: function setIndex(i) {
|
|
@@ -214,21 +199,20 @@ function SegmentPlayer(_a) {
|
|
|
214
199
|
var hasReady = api && event;
|
|
215
200
|
var timeline = customTimeLine !== null && customTimeLine !== void 0 ? customTimeLine : /*#__PURE__*/React.createElement(SegmentTimeLine, {
|
|
216
201
|
begin: begin,
|
|
217
|
-
api: api,
|
|
218
|
-
event: event,
|
|
219
202
|
seekTo: seekTo,
|
|
220
203
|
index: index,
|
|
221
204
|
segments: segments,
|
|
222
|
-
duration: duration
|
|
223
|
-
setIndex: setIndex
|
|
205
|
+
duration: duration
|
|
224
206
|
});
|
|
225
207
|
var onInit = useCallback(function () {
|
|
226
208
|
update();
|
|
227
209
|
onCanPlayerInit === null || onCanPlayerInit === void 0 ? void 0 : onCanPlayerInit(); // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
228
210
|
}, []);
|
|
211
|
+
console.log(playRef);
|
|
229
212
|
return /*#__PURE__*/React.createElement(SinglePlayer, Object.assign({
|
|
230
213
|
ref: playRef,
|
|
231
214
|
url: url,
|
|
215
|
+
isLive: false,
|
|
232
216
|
onCanPlayerInit: onInit,
|
|
233
217
|
reload: reload,
|
|
234
218
|
extActions: {
|
|
@@ -1,17 +1,12 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import type Api from './api';
|
|
3
|
-
import type VideoEventInstance from './event';
|
|
4
2
|
import type { ISegmentType } from './player';
|
|
5
3
|
import './style/timeline.less';
|
|
6
4
|
interface ITimeLineProps {
|
|
7
|
-
api: Api;
|
|
8
|
-
event: VideoEventInstance;
|
|
9
5
|
index: number;
|
|
10
6
|
segments: ISegmentType[];
|
|
11
7
|
duration: number;
|
|
12
|
-
setIndex: (i: number) => void;
|
|
13
8
|
begin: number;
|
|
14
9
|
seekTo: (time: number) => void;
|
|
15
10
|
}
|
|
16
|
-
declare function SegmentTimeLine({
|
|
11
|
+
declare function SegmentTimeLine({ index, segments, duration, begin, seekTo }: ITimeLineProps): JSX.Element;
|
|
17
12
|
export default SegmentTimeLine;
|
|
@@ -13,25 +13,29 @@ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Sy
|
|
|
13
13
|
|
|
14
14
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
15
15
|
|
|
16
|
-
import React, { useCallback, useMemo } from 'react';
|
|
16
|
+
import React, { useCallback, useContext, useMemo } from 'react';
|
|
17
17
|
import { useTimes } from './timeline';
|
|
18
18
|
import useBarStatus from './contraller_bar/useBarStatus';
|
|
19
19
|
import moment from 'moment';
|
|
20
20
|
import { FMT } from './util';
|
|
21
|
+
import { Context } from './context';
|
|
21
22
|
import "./style/timeline.css";
|
|
22
23
|
|
|
23
24
|
function SegmentTimeLine(_ref) {
|
|
24
|
-
var
|
|
25
|
-
event = _ref.event,
|
|
26
|
-
index = _ref.index,
|
|
25
|
+
var index = _ref.index,
|
|
27
26
|
segments = _ref.segments,
|
|
28
27
|
duration = _ref.duration,
|
|
29
28
|
begin = _ref.begin,
|
|
30
|
-
setIndex = _ref.setIndex,
|
|
31
29
|
seekTo = _ref.seekTo;
|
|
30
|
+
|
|
31
|
+
var _useContext = useContext(Context),
|
|
32
|
+
api = _useContext.api,
|
|
33
|
+
event = _useContext.event,
|
|
34
|
+
isFpsPlay = _useContext.isFpsPlay;
|
|
35
|
+
|
|
32
36
|
var status = useBarStatus(event);
|
|
33
37
|
|
|
34
|
-
var _useTimes = useTimes(api, event),
|
|
38
|
+
var _useTimes = useTimes(api, event, isFpsPlay),
|
|
35
39
|
_useTimes2 = _slicedToArray(_useTimes, 2),
|
|
36
40
|
currentTime = _useTimes2[0],
|
|
37
41
|
buffered = _useTimes2[1];
|
|
@@ -62,7 +66,7 @@ function SegmentTimeLine(_ref) {
|
|
|
62
66
|
var duration = segments[i].endTime - segments[i].beginTime;
|
|
63
67
|
var currentTime = current / rect.width * duration;
|
|
64
68
|
seekTo(Math.round(currentTime + pTime));
|
|
65
|
-
}, [segments,
|
|
69
|
+
}, [segments, begin, seekTo]);
|
|
66
70
|
return /*#__PURE__*/React.createElement("div", {
|
|
67
71
|
className: "player-timeline-layout player-segment-timeline-layout ".concat(status === 0 ? 'hide-time-line' : '')
|
|
68
72
|
}, /*#__PURE__*/React.createElement("div", {
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import _useUpdateEffect from "ahooks/es/useUpdateEffect";
|
|
1
2
|
import _useToggle3 from "ahooks/es/useToggle";
|
|
2
3
|
|
|
3
4
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
@@ -19,11 +20,13 @@ import { usePlayerEvent, useRegisterPlayerEvents, useVideoEvents } from './event
|
|
|
19
20
|
import EventName from './event/eventName';
|
|
20
21
|
import ContrallerBar from './contraller_bar';
|
|
21
22
|
import ContrallerEvent from './contraller_bar/contraller_event';
|
|
22
|
-
import
|
|
23
|
+
import useLiveHeart from './live_heart';
|
|
23
24
|
import VideoMessage from './message';
|
|
24
|
-
import
|
|
25
|
+
import useErrorEvent from './event/errorEvent';
|
|
25
26
|
import { getVideoType, playReload, playUnload } from './util';
|
|
26
27
|
import Timeline from './timeline';
|
|
28
|
+
import FPSPlay from './fps_play';
|
|
29
|
+
import { Provider } from './context';
|
|
27
30
|
import "./style/index.css";
|
|
28
31
|
var SinglePlayer = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
|
29
32
|
var _b;
|
|
@@ -53,10 +56,13 @@ var SinglePlayer = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
|
|
53
56
|
var flvConfig = props.flvConfig,
|
|
54
57
|
hlsConfig = props.hlsConfig,
|
|
55
58
|
videoEvents = props.videoEvents,
|
|
56
|
-
playerEvents = props.playerEvents
|
|
59
|
+
playerEvents = props.playerEvents,
|
|
60
|
+
oneFpsPlay = props.oneFpsPlay,
|
|
61
|
+
fpsDelay = props.fpsDelay;
|
|
57
62
|
|
|
58
63
|
var _useState = useState({
|
|
59
|
-
container: null
|
|
64
|
+
container: null,
|
|
65
|
+
isFpsPlay: false
|
|
60
66
|
}),
|
|
61
67
|
_useState2 = _slicedToArray(_useState, 2),
|
|
62
68
|
state = _useState2[0],
|
|
@@ -85,7 +91,6 @@ var SinglePlayer = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
|
|
85
91
|
_usePlayerApi2 = _slicedToArray(_usePlayerApi, 2),
|
|
86
92
|
api = _usePlayerApi2[0],
|
|
87
93
|
_usePlayerApi2$ = _slicedToArray(_usePlayerApi2[1], 3),
|
|
88
|
-
_ = _usePlayerApi2$[0],
|
|
89
94
|
flv = _usePlayerApi2$[1],
|
|
90
95
|
hls = _usePlayerApi2$[2]; // 判断是否有链接传入
|
|
91
96
|
|
|
@@ -112,6 +117,23 @@ var SinglePlayer = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
|
|
112
117
|
|
|
113
118
|
var unload = function unload() {
|
|
114
119
|
return playUnload(video, flv, hls);
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
var openFpsPlay = function openFpsPlay() {
|
|
123
|
+
setState(function (old) {
|
|
124
|
+
return Object.assign(Object.assign({}, old), {
|
|
125
|
+
isFpsPlay: true
|
|
126
|
+
});
|
|
127
|
+
});
|
|
128
|
+
api.pause();
|
|
129
|
+
};
|
|
130
|
+
|
|
131
|
+
var closeFpsPlay = function closeFpsPlay() {
|
|
132
|
+
return setState(function (old) {
|
|
133
|
+
return Object.assign(Object.assign({}, old), {
|
|
134
|
+
isFpsPlay: false
|
|
135
|
+
});
|
|
136
|
+
});
|
|
115
137
|
}; // 合并api,加上代理
|
|
116
138
|
|
|
117
139
|
|
|
@@ -123,7 +145,9 @@ var SinglePlayer = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
|
|
123
145
|
var map = Object.assign({
|
|
124
146
|
reload: reload,
|
|
125
147
|
unload: unload,
|
|
126
|
-
toggleFit: toggle
|
|
148
|
+
toggleFit: toggle,
|
|
149
|
+
openFpsPlay: openFpsPlay,
|
|
150
|
+
closeFpsPlay: closeFpsPlay
|
|
127
151
|
}, extActions);
|
|
128
152
|
return new Proxy(api, {
|
|
129
153
|
get: function get(target, key) {
|
|
@@ -162,61 +186,80 @@ var SinglePlayer = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
|
|
162
186
|
fit: fit
|
|
163
187
|
};
|
|
164
188
|
}, [video, state.container, playApi, playEvent, flv, hls, fit]);
|
|
165
|
-
useEffect(function () {
|
|
166
|
-
if (api && event && video) {
|
|
167
|
-
onCanPlayerInit === null || onCanPlayerInit === void 0 ? void 0 : onCanPlayerInit();
|
|
168
|
-
} // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
169
189
|
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
},
|
|
180
|
-
autoPlay: autoPlay,
|
|
181
|
-
preload: preload,
|
|
182
|
-
muted: muted,
|
|
183
|
-
poster: poster,
|
|
184
|
-
controls: false,
|
|
185
|
-
playsInline: playsInline,
|
|
186
|
-
loop: loop
|
|
187
|
-
})), api && event && hasLink && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(VideoMessage, {
|
|
190
|
+
_useUpdateEffect(function () {
|
|
191
|
+
return api && event && video ? onCanPlayerInit === null || onCanPlayerInit === void 0 ? void 0 : onCanPlayerInit() : undefined;
|
|
192
|
+
}, [api, event, video]); // 补货视频错误,自定义处理
|
|
193
|
+
|
|
194
|
+
|
|
195
|
+
useErrorEvent({
|
|
196
|
+
unload: unload,
|
|
197
|
+
flv: flv,
|
|
198
|
+
hls: hls,
|
|
188
199
|
api: playApi,
|
|
189
|
-
event: event
|
|
190
|
-
}), !hideContrallerBar && /*#__PURE__*/React.createElement(ContrallerEvent, {
|
|
191
200
|
event: event,
|
|
192
|
-
|
|
193
|
-
|
|
201
|
+
reload: reload,
|
|
202
|
+
errorReloadTimer: errorReloadTimer
|
|
203
|
+
}); // 直播缓冲追回
|
|
204
|
+
|
|
205
|
+
useLiveHeart({
|
|
194
206
|
api: playApi,
|
|
195
207
|
event: event,
|
|
196
|
-
isLive: isLive
|
|
197
|
-
|
|
208
|
+
isLive: isLive
|
|
209
|
+
});
|
|
210
|
+
var videoProps = {
|
|
211
|
+
autoPlay: state.isFpsPlay ? false : autoPlay,
|
|
212
|
+
preload: preload,
|
|
213
|
+
muted: state.isFpsPlay ? false : muted,
|
|
214
|
+
poster: poster,
|
|
215
|
+
controls: false,
|
|
216
|
+
playsInline: playsInline,
|
|
217
|
+
loop: state.isFpsPlay ? false : loop
|
|
218
|
+
};
|
|
219
|
+
var contrallerProps = {
|
|
198
220
|
rightExtContents: rightExtContents,
|
|
199
221
|
rightMidExtContents: rightMidExtContents,
|
|
200
|
-
leftExtContents: leftExtContents,
|
|
201
222
|
leftMidExtContents: leftMidExtContents,
|
|
223
|
+
leftExtContents: leftExtContents,
|
|
202
224
|
reload: (_b = props.reload) !== null && _b !== void 0 ? _b : reload,
|
|
203
|
-
hideTimeProgress: !!customTimeLine
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
}) : null, /*#__PURE__*/React.createElement(ErrorEvent, {
|
|
208
|
-
unload: unload,
|
|
209
|
-
flv: flv,
|
|
210
|
-
hls: hls,
|
|
225
|
+
hideTimeProgress: !!customTimeLine,
|
|
226
|
+
oneFpsPlay: oneFpsPlay
|
|
227
|
+
};
|
|
228
|
+
return /*#__PURE__*/React.createElement(Provider, {
|
|
211
229
|
api: playApi,
|
|
212
230
|
event: event,
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
231
|
+
container: state.container,
|
|
232
|
+
isLive: isLive,
|
|
233
|
+
isFpsPlay: state.isFpsPlay
|
|
234
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
235
|
+
className: "lm-player-container ".concat(className),
|
|
236
|
+
ref: domRef
|
|
237
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
238
|
+
className: "player-mask-layout"
|
|
239
|
+
}, /*#__PURE__*/React.createElement("video", Object.assign({}, videoProps, {
|
|
240
|
+
style: {
|
|
241
|
+
objectFit: fit,
|
|
242
|
+
visibility: state.isFpsPlay ? 'hidden' : 'unset'
|
|
243
|
+
}
|
|
244
|
+
})), api && event && hasLink && state.isFpsPlay ? /*#__PURE__*/React.createElement(FPSPlay, {
|
|
245
|
+
event: event,
|
|
246
|
+
api: playApi,
|
|
247
|
+
fpsDelay: fpsDelay
|
|
248
|
+
}) : /*#__PURE__*/React.createElement(Empty, null)), api && event && hasLink ? /*#__PURE__*/React.createElement(VideoMessage, {
|
|
249
|
+
api: playApi,
|
|
250
|
+
event: event
|
|
251
|
+
}) : /*#__PURE__*/React.createElement(Empty, null), api && event && hasLink && !hideContrallerBar ? /*#__PURE__*/React.createElement(ContrallerEvent, {
|
|
252
|
+
children: /*#__PURE__*/React.createElement(ContrallerBar, Object.assign({}, contrallerProps))
|
|
253
|
+
}) : /*#__PURE__*/React.createElement(Empty, null), customTimeLine ? customTimeLine : !hideContrallerBar ? /*#__PURE__*/React.createElement(Timeline, {
|
|
216
254
|
api: playApi,
|
|
217
|
-
event:
|
|
218
|
-
})), children);
|
|
255
|
+
event: event
|
|
256
|
+
}) : /*#__PURE__*/React.createElement(Empty, null), children));
|
|
219
257
|
});
|
|
258
|
+
|
|
259
|
+
function Empty() {
|
|
260
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null);
|
|
261
|
+
}
|
|
262
|
+
|
|
220
263
|
SinglePlayer.defaultProps = {
|
|
221
264
|
isLive: true,
|
|
222
265
|
errorReloadTimer: 5,
|
|
@@ -232,6 +275,8 @@ SinglePlayer.defaultProps = {
|
|
|
232
275
|
config: {}
|
|
233
276
|
},
|
|
234
277
|
hlsConfig: {},
|
|
235
|
-
extActions: {}
|
|
278
|
+
extActions: {},
|
|
279
|
+
oneFpsPlay: false,
|
|
280
|
+
fpsDelay: 100
|
|
236
281
|
};
|
|
237
282
|
export default SinglePlayer;
|
package/es/Player/style/bar.css
CHANGED
|
@@ -8,6 +8,14 @@
|
|
|
8
8
|
.lm-player-container .lm-player-iconfont {
|
|
9
9
|
color: #fff;
|
|
10
10
|
}
|
|
11
|
+
.lm-player-container .fps-play-canvas {
|
|
12
|
+
width: 100%;
|
|
13
|
+
height: 100%;
|
|
14
|
+
position: absolute;
|
|
15
|
+
left: 0;
|
|
16
|
+
top: 0;
|
|
17
|
+
background-color: #000;
|
|
18
|
+
}
|
|
11
19
|
.lm-player-container .player-mask-layout {
|
|
12
20
|
width: 100%;
|
|
13
21
|
height: 100%;
|
package/es/Player/timeline.d.ts
CHANGED
|
@@ -6,6 +6,6 @@ interface ITimeLineProps {
|
|
|
6
6
|
api: Api;
|
|
7
7
|
event: VideoEventInstance;
|
|
8
8
|
}
|
|
9
|
-
export declare function useTimes(api: Api, event: VideoEventInstance,
|
|
9
|
+
export declare function useTimes(api: Api, event: VideoEventInstance, isFpsPlay?: boolean): number[];
|
|
10
10
|
declare function TimeLine({ api, event }: ITimeLineProps): JSX.Element;
|
|
11
11
|
export default TimeLine;
|