@realsee/vreo 2.6.4-alpha.5 → 3.0.0-webgpu-react18.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/CHANGELOG.md +7 -0
- package/README.md +6 -6
- package/lib/PlayController/createHTMLAudioElement.d.ts +1 -0
- package/lib/PlayController/createHTMLAudioElement.d.ts.map +1 -0
- package/lib/PlayController/index.d.ts +14 -24
- package/lib/PlayController/index.d.ts.map +1 -0
- package/lib/PlayController/index.js +74 -210
- package/lib/PlayController/index.js.map +1 -0
- package/lib/Player/App.d.ts +2 -2
- package/lib/Player/App.d.ts.map +1 -0
- package/lib/Player/Controller.d.ts +11 -6
- package/lib/Player/Controller.d.ts.map +1 -0
- package/lib/Player/PlaybackLifecycle.d.ts +1 -0
- package/lib/Player/PlaybackLifecycle.d.ts.map +1 -0
- package/lib/Player/custom/SpatialScenePanel/index.d.ts +2 -2
- package/lib/Player/custom/SpatialScenePanel/index.d.ts.map +1 -0
- package/lib/Player/hooks.d.ts +3 -2
- package/lib/Player/hooks.d.ts.map +1 -0
- package/lib/Player/index.d.ts +3 -2
- package/lib/Player/index.d.ts.map +1 -0
- package/lib/Player/index.js +1769 -430
- package/lib/Player/index.js.map +1 -0
- package/lib/Player/modules/Drawer/index.d.ts +2 -2
- package/lib/Player/modules/Drawer/index.d.ts.map +1 -0
- package/lib/Player/modules/PopUp/index.d.ts +2 -2
- package/lib/Player/modules/PopUp/index.d.ts.map +1 -0
- package/lib/Player/modules/ResizeObserver/index.d.ts +2 -2
- package/lib/Player/modules/ResizeObserver/index.d.ts.map +1 -0
- package/lib/Player/modules/VideoAgent/VideoAgentMesh.d.ts +5 -2
- package/lib/Player/modules/VideoAgent/VideoAgentMesh.d.ts.map +1 -0
- package/lib/Player/modules/VideoAgent/VideoAgentScene.d.ts +8 -5
- package/lib/Player/modules/VideoAgent/VideoAgentScene.d.ts.map +1 -0
- package/lib/Player/modules/VideoAgent/index.d.ts +11 -2
- package/lib/Player/modules/VideoAgent/index.d.ts.map +1 -0
- package/lib/Player/modules/Wave/index.d.ts +2 -2
- package/lib/Player/modules/Wave/index.d.ts.map +1 -0
- package/lib/Player/modules/keyframes/BgMusic/index.d.ts +2 -2
- package/lib/Player/modules/keyframes/BgMusic/index.d.ts.map +1 -0
- package/lib/Player/modules/keyframes/CameraMovement/index.d.ts +2 -2
- package/lib/Player/modules/keyframes/CameraMovement/index.d.ts.map +1 -0
- package/lib/Player/modules/keyframes/InfoPanel/index.d.ts +2 -2
- package/lib/Player/modules/keyframes/InfoPanel/index.d.ts.map +1 -0
- package/lib/Player/modules/keyframes/ModelVideo/index.d.ts +2 -2
- package/lib/Player/modules/keyframes/ModelVideo/index.d.ts.map +1 -0
- package/lib/Player/modules/keyframes/PanoEffect/index.d.ts +2 -2
- package/lib/Player/modules/keyframes/PanoEffect/index.d.ts.map +1 -0
- package/lib/Player/modules/keyframes/PanoEffect/lineAnime.d.ts +3 -2
- package/lib/Player/modules/keyframes/PanoEffect/lineAnime.d.ts.map +1 -0
- package/lib/Player/modules/keyframes/PanoTag/index.d.ts +1 -0
- package/lib/Player/modules/keyframes/PanoTag/index.d.ts.map +1 -0
- package/lib/Player/modules/keyframes/PanoTextLabel/index.d.ts +2 -2
- package/lib/Player/modules/keyframes/PanoTextLabel/index.d.ts.map +1 -0
- package/lib/Player/modules/keyframes/Prompter/index.d.ts +2 -2
- package/lib/Player/modules/keyframes/Prompter/index.d.ts.map +1 -0
- package/lib/Player/modules/keyframes/UpdateVRPanorama/index.d.ts +2 -2
- package/lib/Player/modules/keyframes/UpdateVRPanorama/index.d.ts.map +1 -0
- package/lib/Player/modules/keyframes/VideoEffect/index.d.ts +2 -2
- package/lib/Player/modules/keyframes/VideoEffect/index.d.ts.map +1 -0
- package/lib/Player/playback-types.d.ts +1 -0
- package/lib/Player/playback-types.d.ts.map +1 -0
- package/lib/Player/typings.d.ts +2 -1
- package/lib/Player/typings.d.ts.map +1 -0
- package/lib/chunks/index-BgPSzRSs.js +93 -0
- package/lib/chunks/index-BgPSzRSs.js.map +1 -0
- package/lib/chunks/index-CunyJn6H.js +51 -0
- package/lib/chunks/index-CunyJn6H.js.map +1 -0
- package/lib/fivePlugins/CSS3DRenderPlugin/centerPoint.d.ts +2 -1
- package/lib/fivePlugins/CSS3DRenderPlugin/centerPoint.d.ts.map +1 -0
- package/lib/fivePlugins/CSS3DRenderPlugin/createResizeObserver.d.ts +5 -6
- package/lib/fivePlugins/CSS3DRenderPlugin/createResizeObserver.d.ts.map +1 -0
- package/lib/fivePlugins/CSS3DRenderPlugin/evenNumber.d.ts +1 -0
- package/lib/fivePlugins/CSS3DRenderPlugin/evenNumber.d.ts.map +1 -0
- package/lib/fivePlugins/CSS3DRenderPlugin/index.d.ts +5 -22
- package/lib/fivePlugins/CSS3DRenderPlugin/index.d.ts.map +1 -0
- package/lib/fivePlugins/CSS3DRenderPlugin/transformPositionToVector3.d.ts +2 -1
- package/lib/fivePlugins/CSS3DRenderPlugin/transformPositionToVector3.d.ts.map +1 -0
- package/lib/fivePlugins/CameraMovementPlugin/index.d.ts +2 -1
- package/lib/fivePlugins/CameraMovementPlugin/index.d.ts.map +1 -0
- package/lib/fivePlugins/CameraMovementPlugin/typings.d.ts +2 -1
- package/lib/fivePlugins/CameraMovementPlugin/typings.d.ts.map +1 -0
- package/lib/fivePlugins/ModelTVVideoPlugin/index.d.ts +2 -1
- package/lib/fivePlugins/ModelTVVideoPlugin/index.d.ts.map +1 -0
- package/lib/index.d.ts +3 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +12 -1
- package/lib/index.js.map +1 -0
- package/lib/plugins/CSS3DRenderPlugin.js +115 -0
- package/lib/plugins/CSS3DRenderPlugin.js.map +1 -0
- package/lib/plugins/CameraMovementPlugin.js +6 -0
- package/lib/plugins/CameraMovementPlugin.js.map +1 -0
- package/lib/plugins/ModelTVVideoPlugin.js +162 -0
- package/lib/plugins/ModelTVVideoPlugin.js.map +1 -0
- package/lib/react/index.d.ts +5 -4
- package/lib/react/index.d.ts.map +1 -0
- package/lib/react/index.js +39 -226
- package/lib/react/index.js.map +1 -0
- package/lib/shared-utils/Audio.d.ts +3 -1
- package/lib/shared-utils/Audio.d.ts.map +1 -0
- package/lib/shared-utils/AudioLike.d.ts +2 -1
- package/lib/shared-utils/AudioLike.d.ts.map +1 -0
- package/lib/shared-utils/Preloader.d.ts +1 -0
- package/lib/shared-utils/Preloader.d.ts.map +1 -0
- package/lib/shared-utils/addResizeListener.d.ts +2 -1
- package/lib/shared-utils/addResizeListener.d.ts.map +1 -0
- package/lib/shared-utils/animationFrame/BetterTween.d.ts +1 -0
- package/lib/shared-utils/animationFrame/BetterTween.d.ts.map +1 -0
- package/lib/shared-utils/animationFrame/index.d.ts +5 -14
- package/lib/shared-utils/animationFrame/index.d.ts.map +1 -0
- package/lib/shared-utils/animationFrame/tween.d.ts +1 -0
- package/lib/shared-utils/animationFrame/tween.d.ts.map +1 -0
- package/lib/shared-utils/createTransMatrix.d.ts +3 -1
- package/lib/shared-utils/createTransMatrix.d.ts.map +1 -0
- package/lib/shared-utils/getFileExpandedName.d.ts +1 -0
- package/lib/shared-utils/getFileExpandedName.d.ts.map +1 -0
- package/lib/shared-utils/getMediaInfo.d.ts +1 -0
- package/lib/shared-utils/getMediaInfo.d.ts.map +1 -0
- package/lib/shared-utils/setElementDataset.d.ts +1 -0
- package/lib/shared-utils/setElementDataset.d.ts.map +1 -0
- package/lib/timeline/index.d.ts +18 -0
- package/lib/timeline/index.d.ts.map +1 -0
- package/lib/types/index.js +10 -0
- package/lib/types/index.js.map +1 -0
- package/lib/typings/VreoUnit.d.ts +2 -1
- package/lib/typings/VreoUnit.d.ts.map +1 -0
- package/lib/typings/index.d.ts +1 -0
- package/lib/typings/index.d.ts.map +1 -0
- package/package.json +51 -71
- package/lib/PlayController/createHTMLAudioElement.js +0 -30
- package/lib/Player/App.js +0 -52
- package/lib/Player/Controller.js +0 -530
- package/lib/Player/PlaybackLifecycle.js +0 -117
- package/lib/Player/custom/SpatialScenePanel/index.js +0 -263
- package/lib/Player/hooks.js +0 -22
- package/lib/Player/modules/Drawer/index.js +0 -39
- package/lib/Player/modules/PopUp/index.js +0 -23
- package/lib/Player/modules/ResizeObserver/index.js +0 -22
- package/lib/Player/modules/VideoAgent/VideoAgentMesh.js +0 -445
- package/lib/Player/modules/VideoAgent/VideoAgentScene.js +0 -53
- package/lib/Player/modules/VideoAgent/index.js +0 -72
- package/lib/Player/modules/Wave/index.js +0 -171
- package/lib/Player/modules/keyframes/BgMusic/index.js +0 -65
- package/lib/Player/modules/keyframes/CameraMovement/index.js +0 -73
- package/lib/Player/modules/keyframes/InfoPanel/index.js +0 -170
- package/lib/Player/modules/keyframes/ModelVideo/index.js +0 -126
- package/lib/Player/modules/keyframes/PanoEffect/index.js +0 -99
- package/lib/Player/modules/keyframes/PanoEffect/lineAnime.js +0 -30
- package/lib/Player/modules/keyframes/PanoTag/index.js +0 -110
- package/lib/Player/modules/keyframes/PanoTextLabel/index.js +0 -122
- package/lib/Player/modules/keyframes/Prompter/index.js +0 -56
- package/lib/Player/modules/keyframes/UpdateVRPanorama/index.js +0 -98
- package/lib/Player/modules/keyframes/VideoEffect/index.js +0 -152
- package/lib/Player/playback-types.js +0 -1
- package/lib/Player/typings.js +0 -1
- package/lib/fivePlugins/CSS3DRenderPlugin/centerPoint.js +0 -4
- package/lib/fivePlugins/CSS3DRenderPlugin/createResizeObserver.js +0 -25
- package/lib/fivePlugins/CSS3DRenderPlugin/evenNumber.js +0 -4
- package/lib/fivePlugins/CSS3DRenderPlugin/index.js +0 -226
- package/lib/fivePlugins/CSS3DRenderPlugin/transformPositionToVector3.js +0 -8
- package/lib/fivePlugins/CameraMovementPlugin/index.js +0 -238
- package/lib/fivePlugins/CameraMovementPlugin/typings.js +0 -15
- package/lib/fivePlugins/ModelTVVideoPlugin/index.js +0 -347
- package/lib/shared-utils/Audio.js +0 -147
- package/lib/shared-utils/AudioLike.js +0 -120
- package/lib/shared-utils/Preloader.js +0 -37
- package/lib/shared-utils/addResizeListener.js +0 -39
- package/lib/shared-utils/animationFrame/BetterTween.js +0 -56
- package/lib/shared-utils/animationFrame/index.js +0 -52
- package/lib/shared-utils/animationFrame/tween.js +0 -56
- package/lib/shared-utils/createTransMatrix.js +0 -12
- package/lib/shared-utils/getFileExpandedName.js +0 -6
- package/lib/shared-utils/getMediaInfo.js +0 -54
- package/lib/shared-utils/setElementDataset.js +0 -16
- package/lib/typings/VreoUnit.js +0 -171
- package/lib/typings/index.js +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
# CHANGELOG
|
|
2
|
+
|
|
3
|
+
## 2.6.4
|
|
4
|
+
|
|
5
|
+
- feat: 讲解支持应用侧 PlaybackManager,一段讲解共享播放任务,保留内部音轨混音。
|
|
6
|
+
- fix: 暂停、抢占和销毁同步停止成员媒体,取消延迟加载与关键帧,避免旧任务复播。
|
|
7
|
+
- chore: dnalogel peer/dev 依赖统一为正式版 3.81.10。
|
|
8
|
+
|
|
2
9
|
# 2.0.0
|
|
3
10
|
- fix: 重新实现了运镜功能,修复了运镜掉帧的问题
|
|
4
11
|
- break-change:修复了模型态切换全景态时的目标点位为0时,有可能不会真正移动到目标位置的问题。该问题的修复会导致之前的一些基于此bug制作的导览出现问题,需要重新制作。
|
package/README.md
CHANGED
|
@@ -31,12 +31,12 @@
|
|
|
31
31
|
|
|
32
32
|
```css
|
|
33
33
|
/* @file xxx.css */
|
|
34
|
-
@import '@realsee/vreo/
|
|
34
|
+
@import '@realsee/vreo/styles/default.css';
|
|
35
35
|
```
|
|
36
36
|
或
|
|
37
37
|
```jsx
|
|
38
38
|
/* @file xxx.tsx | xxx.jsx */
|
|
39
|
-
import '@realsee/vreo/
|
|
39
|
+
import '@realsee/vreo/styles/default.css';
|
|
40
40
|
```
|
|
41
41
|
examples:
|
|
42
42
|
```tsx
|
|
@@ -44,7 +44,7 @@ examples:
|
|
|
44
44
|
import * as React from 'react'
|
|
45
45
|
import { Five } from '@realsee/five'
|
|
46
46
|
import { Player } from '@realsee/vreo'
|
|
47
|
-
import '@realsee/vreo/
|
|
47
|
+
import '@realsee/vreo/styles/default.css';
|
|
48
48
|
|
|
49
49
|
// 创建 Five 实例
|
|
50
50
|
const five = new Five({
|
|
@@ -75,10 +75,10 @@ vreoPlayer.pause()
|
|
|
75
75
|
/* @file App.tsx */
|
|
76
76
|
|
|
77
77
|
import * as React from 'react'
|
|
78
|
-
import
|
|
78
|
+
import { createRoot } from 'react-dom/client'
|
|
79
79
|
import { Five, Work, parseWork } from '@realsee/five'
|
|
80
80
|
import { createFiveProvider, FiveCanvas } from '@realsee/five/react'
|
|
81
|
-
import { VreoProvider, useVreoAction } from '@realsee/vreo/
|
|
81
|
+
import { VreoProvider, useVreoAction } from '@realsee/vreo/react'
|
|
82
82
|
|
|
83
83
|
// 创建 FiveProvider
|
|
84
84
|
const FiveProvider = createFiveProvider({
|
|
@@ -120,7 +120,7 @@ const App: React.FC = () => {
|
|
|
120
120
|
)
|
|
121
121
|
}
|
|
122
122
|
|
|
123
|
-
|
|
123
|
+
createRoot(document.getElementById('app')!).render(<App />)
|
|
124
124
|
```
|
|
125
125
|
|
|
126
126
|
## 剧本数据结构
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createHTMLAudioElement.d.ts","sourceRoot":"","sources":["../../resources/PlayController/createHTMLAudioElement.ts"],"names":[],"mappings":"AAmCA,wBAAgB,sBAAsB,IAAI,gBAAgB,CAWzD"}
|
|
@@ -1,38 +1,28 @@
|
|
|
1
|
-
import { Subscribe } from '@realsee/five';
|
|
2
|
-
import {
|
|
1
|
+
import { Subscribe } from '@realsee/five-webgpu';
|
|
2
|
+
import { VreoKeyframeEvent, VreoUnit } from '../typings/VreoUnit';
|
|
3
3
|
export interface PlayControllerConfig {
|
|
4
4
|
audio?: HTMLAudioElement;
|
|
5
5
|
}
|
|
6
6
|
export declare class PlayController extends Subscribe<VreoKeyframeEvent> {
|
|
7
7
|
vreoUnit?: VreoUnit;
|
|
8
|
-
config: PlayControllerConfig;
|
|
9
|
-
|
|
8
|
+
readonly config: PlayControllerConfig;
|
|
9
|
+
private readonly timeline;
|
|
10
|
+
private readonly ownsAudio;
|
|
11
|
+
private readonly stopInterval;
|
|
12
|
+
private playPromise?;
|
|
13
|
+
private disposed;
|
|
14
|
+
private readonly onPlaying;
|
|
15
|
+
private readonly onPaused;
|
|
16
|
+
private readonly onEnded;
|
|
10
17
|
get paused(): boolean;
|
|
11
18
|
get audioInstance(): HTMLAudioElement;
|
|
12
19
|
get currentTime(): number;
|
|
13
|
-
get currentKeyframes(): VreoKeyframe[];
|
|
14
|
-
/**
|
|
15
|
-
* 音频时长 不一定能获取得到,建议以 VreoUnit 配置的时长为准。
|
|
16
|
-
*/
|
|
20
|
+
get currentKeyframes(): import("..").VreoKeyframe[];
|
|
17
21
|
get duration(): number;
|
|
18
22
|
constructor(config?: PlayControllerConfig);
|
|
19
|
-
/**
|
|
20
|
-
* 载入数据
|
|
21
|
-
*/
|
|
22
23
|
load(vreoUnit: VreoUnit): Promise<boolean>;
|
|
23
|
-
|
|
24
|
-
* 播放
|
|
25
|
-
*/
|
|
26
|
-
play(): Promise<void>;
|
|
27
|
-
/**
|
|
28
|
-
* 暂停
|
|
29
|
-
*/
|
|
24
|
+
play(): Promise<boolean>;
|
|
30
25
|
pause(): Promise<void>;
|
|
31
|
-
/**
|
|
32
|
-
* 销毁资源
|
|
33
|
-
* @notice 一旦销毁,创建的实例将不可用:需重新创建实例。
|
|
34
|
-
*
|
|
35
|
-
* @deprecated **慎重执行**
|
|
36
|
-
*/
|
|
37
26
|
dispose(): void;
|
|
38
27
|
}
|
|
28
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../resources/PlayController/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAGhD,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAGjE,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,gBAAgB,CAAA;CACzB;AAED,qBAAa,cAAe,SAAQ,SAAS,CAAC,iBAAiB,CAAC;IAC9D,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAA;IACrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgD;IACzE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAY;IACzC,OAAO,CAAC,WAAW,CAAC,CAAe;IACnC,OAAO,CAAC,QAAQ,CAAQ;IAExB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA6B;IACvD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA4B;IACrD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkC;IAE1D,IAAI,MAAM,YAAuC;IACjD,IAAI,aAAa,qBAAgC;IACjD,IAAI,WAAW,WAAmD;IAClE,IAAI,gBAAgB,gCAAuD;IAC3E,IAAI,QAAQ,WAAgD;gBAEhD,MAAM,GAAE,oBAAyB;IAmBvC,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;IAoB1C,IAAI;IAOJ,KAAK;IASX,OAAO;CAWR"}
|
|
@@ -1,213 +1,77 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
return _this.emit('paused');
|
|
32
|
-
};
|
|
33
|
-
closures.onEnded = function () {
|
|
34
|
-
return _this.emit('paused', true);
|
|
35
|
-
};
|
|
36
|
-
_this.audioInstance.addEventListener('play', closures.onPlaying);
|
|
37
|
-
_this.audioInstance.addEventListener('pause', closures.onPaused);
|
|
38
|
-
_this.audioInstance.addEventListener('ended', closures.onEnded);
|
|
39
|
-
_this.stopInterval = requestAnimationFrameInterval(function () {
|
|
40
|
-
if (_this.audioInstance.paused) {
|
|
41
|
-
return;
|
|
42
|
-
}
|
|
43
|
-
if (!_this.vreoUnit) {
|
|
44
|
-
return;
|
|
45
|
-
}
|
|
46
|
-
var keyframes = _this.vreoUnit.keyframes;
|
|
47
|
-
var currentTime = _this.currentTime;
|
|
48
|
-
// 没有被解析过且开始时间低于当前时间戳 100ms
|
|
49
|
-
var currentKeyframes = keyframes.filter(function (keyframe) {
|
|
50
|
-
if (keyframe.parsed) return false;
|
|
51
|
-
var dur = currentTime - keyframe.start;
|
|
52
|
-
return dur <= 60 && dur >= 0;
|
|
53
|
-
});
|
|
54
|
-
currentKeyframes.forEach(function (keyframe) {
|
|
55
|
-
if (keyframe.parsed) return;
|
|
56
|
-
keyframe.parsed = true;
|
|
57
|
-
_this.emit(keyframe.type, keyframe, _this.currentTime);
|
|
58
|
-
});
|
|
1
|
+
var d = Object.defineProperty;
|
|
2
|
+
var u = (V, t, A) => t in V ? d(V, t, { enumerable: !0, configurable: !0, writable: !0, value: A }) : V[t] = A;
|
|
3
|
+
var e = (V, t, A) => u(V, typeof t != "symbol" ? t + "" : t, A);
|
|
4
|
+
import { Subscribe as h } from "@realsee/five-webgpu";
|
|
5
|
+
import { T as c, r as q } from "../chunks/index-CunyJn6H.js";
|
|
6
|
+
const m = "data:audio/mpeg;base64,//uQxAAAAAAAAAAAAAAAAAAAAAAASW5mbwAAAA8AAAADAAAGhgBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqr///////////////////////////////////////////8AAAA5TEFNRTMuOThyAc0AAAAAAAAAABSAJAiqQgAAgAAABobxtI73AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//uQxAACFEII9ACZ/sJZwWEoEb8w/////N//////JcxjHjf+7/v/H2PzCCFAiDtGeyBCIx7bJJ1mmEEMy6g8mm2c8nrGABB4h2Mkmn//4z/73u773R5qHHu/j/w7Kxkzh5lWRWdsifCkNAnY9Zc1HvDAhjhSHdFkHFzLmabt/AQxSg2wwzLhHIJOBnAWwVY4zrhIYhhc2kvhYDfQ4hDi2Gmh5KyFn8EcGIrHAngNgIwVIEMf5bzbAiTRoAD///8z/KVhkkWEle6IX+d/z4fvH3BShK1e5kmjkCMoxVmXhd4ROlTKo3iipasvTilY21q19ta30/v/0/idPX1v8PNxJL6ramnOVsdvMv2akO0iSYIzdJFirtzWXCZicS9vHqvSKyqm5XJBdqBwPxyfJdykhWTZ0G0ZyTZGpLKxsNwwoRhsx3tZfhwmeOBVISm3impAC/IT/8hP/EKEM1KMdVdVKM2rHV4x7HVXZvbVVKN/qq8CiV9VL9jjH/6l6qf7MBCjZmOqsAibjcP+qqqv0oxqpa/NVW286hPo1nz2L/h8+jXt//uSxCmDU2IK/ECN98KKtE5IYzNoCfbw+u9i5r8PoadUMFPKqWL4LK3T/LCraMSHGkW4bpLXR/E6LlHOVQxmslKVJ8IULktMN06N0FKCpHCoYsjC4F+Z0NVqdNFoGSTjSiyjzLdnZ2fNqTi2eHKONONKLMPMKLONKLMPQRJGlFxZRoKcJFAYEeIFiRQkUWUeYfef//Ko04soswso40UJAgMw8wosososy0EalnZyjQUGBRQGIFggOWUacWUeYmuadrZziQKKEgQsQLAhQkUJAgMQDghltLO1onp0cpkNInSFMqlYeSEJ5AHsqFdOwy1DA2sRmRJKxdKRfLhfLw5BzUxBTUUzLjk4LjJVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUxBTUUzLjk4LjJVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVf/7ksRRA8AAAaQAAAAgAAA0gAAABFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVU=";
|
|
7
|
+
function l() {
|
|
8
|
+
const V = document.createElement("audio");
|
|
9
|
+
return V.style.display = "none", V.controls = !1, document.body.appendChild(V), V.src = m, V.play().catch(() => {
|
|
10
|
+
}), V;
|
|
11
|
+
}
|
|
12
|
+
class v extends h {
|
|
13
|
+
constructor(A = {}) {
|
|
14
|
+
super();
|
|
15
|
+
e(this, "vreoUnit");
|
|
16
|
+
e(this, "config");
|
|
17
|
+
e(this, "timeline", new c());
|
|
18
|
+
e(this, "ownsAudio");
|
|
19
|
+
e(this, "stopInterval");
|
|
20
|
+
e(this, "playPromise");
|
|
21
|
+
e(this, "disposed", !1);
|
|
22
|
+
e(this, "onPlaying", () => this.emit("playing"));
|
|
23
|
+
e(this, "onPaused", () => this.emit("paused"));
|
|
24
|
+
e(this, "onEnded", () => this.emit("paused", !0));
|
|
25
|
+
const i = A.audio ?? l();
|
|
26
|
+
this.ownsAudio = !A.audio, this.config = { ...A, audio: i }, i.addEventListener("play", this.onPlaying), i.addEventListener("pause", this.onPaused), i.addEventListener("ended", this.onEnded), this.stopInterval = q(() => {
|
|
27
|
+
if (i.paused) return;
|
|
28
|
+
const n = this.currentTime;
|
|
29
|
+
for (const s of this.timeline.take(n))
|
|
30
|
+
this.emit(s.type, s, n);
|
|
59
31
|
});
|
|
60
|
-
return _this;
|
|
61
32
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
* 音频时长 不一定能获取得到,建议以 VreoUnit 配置的时长为准。
|
|
98
|
-
*/
|
|
99
|
-
}, {
|
|
100
|
-
key: "duration",
|
|
101
|
-
get: function get() {
|
|
102
|
-
return this.audioInstance.duration * 1000;
|
|
103
|
-
}
|
|
104
|
-
}, {
|
|
105
|
-
key: "load",
|
|
106
|
-
value: (function () {
|
|
107
|
-
var _load = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(vreoUnit) {
|
|
108
|
-
var _this3 = this;
|
|
109
|
-
return _regenerator().w(function (_context) {
|
|
110
|
-
while (1) switch (_context.n) {
|
|
111
|
-
case 0:
|
|
112
|
-
this.vreoUnit = vreoUnit;
|
|
113
|
-
_context.n = 1;
|
|
114
|
-
return this.pause();
|
|
115
|
-
case 1:
|
|
116
|
-
_context.n = 2;
|
|
117
|
-
return new Promise(function (resolve, reject) {
|
|
118
|
-
if (vreoUnit.video.url === _this3.audioInstance.src) {
|
|
119
|
-
return resolve(true);
|
|
120
|
-
}
|
|
121
|
-
_this3.audioInstance.src = vreoUnit.video.url;
|
|
122
|
-
var _canplaythrough = function canplaythrough() {
|
|
123
|
-
resolve(true);
|
|
124
|
-
_this3.audioInstance.removeEventListener('canplaythrough', _canplaythrough);
|
|
125
|
-
};
|
|
126
|
-
var _error = function error(err) {
|
|
127
|
-
reject(err);
|
|
128
|
-
_this3.audioInstance.removeEventListener('error', _error);
|
|
129
|
-
};
|
|
130
|
-
_this3.audioInstance.addEventListener('canplaythrough', _canplaythrough);
|
|
131
|
-
_this3.audioInstance.addEventListener('error', _error);
|
|
132
|
-
});
|
|
133
|
-
case 2:
|
|
134
|
-
return _context.a(2, _context.v);
|
|
135
|
-
}
|
|
136
|
-
}, _callee, this);
|
|
137
|
-
}));
|
|
138
|
-
function load(_x) {
|
|
139
|
-
return _load.apply(this, arguments);
|
|
140
|
-
}
|
|
141
|
-
return load;
|
|
142
|
-
}()
|
|
143
|
-
/**
|
|
144
|
-
* 播放
|
|
145
|
-
*/
|
|
146
|
-
)
|
|
147
|
-
}, {
|
|
148
|
-
key: "play",
|
|
149
|
-
value: (function () {
|
|
150
|
-
var _play = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2() {
|
|
151
|
-
return _regenerator().w(function (_context2) {
|
|
152
|
-
while (1) switch (_context2.n) {
|
|
153
|
-
case 0:
|
|
154
|
-
closures.playPromise = this.audioInstance.play();
|
|
155
|
-
case 1:
|
|
156
|
-
return _context2.a(2);
|
|
157
|
-
}
|
|
158
|
-
}, _callee2, this);
|
|
159
|
-
}));
|
|
160
|
-
function play() {
|
|
161
|
-
return _play.apply(this, arguments);
|
|
162
|
-
}
|
|
163
|
-
return play;
|
|
164
|
-
}()
|
|
165
|
-
/**
|
|
166
|
-
* 暂停
|
|
167
|
-
*/
|
|
168
|
-
)
|
|
169
|
-
}, {
|
|
170
|
-
key: "pause",
|
|
171
|
-
value: (function () {
|
|
172
|
-
var _pause = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3() {
|
|
173
|
-
return _regenerator().w(function (_context3) {
|
|
174
|
-
while (1) switch (_context3.n) {
|
|
175
|
-
case 0:
|
|
176
|
-
if (!closures.playPromise) {
|
|
177
|
-
_context3.n = 1;
|
|
178
|
-
break;
|
|
179
|
-
}
|
|
180
|
-
_context3.n = 1;
|
|
181
|
-
return closures.playPromise;
|
|
182
|
-
case 1:
|
|
183
|
-
this.audioInstance.pause();
|
|
184
|
-
case 2:
|
|
185
|
-
return _context3.a(2);
|
|
186
|
-
}
|
|
187
|
-
}, _callee3, this);
|
|
188
|
-
}));
|
|
189
|
-
function pause() {
|
|
190
|
-
return _pause.apply(this, arguments);
|
|
191
|
-
}
|
|
192
|
-
return pause;
|
|
193
|
-
}()
|
|
194
|
-
/**
|
|
195
|
-
* 销毁资源
|
|
196
|
-
* @notice 一旦销毁,创建的实例将不可用:需重新创建实例。
|
|
197
|
-
*
|
|
198
|
-
* @deprecated **慎重执行**
|
|
199
|
-
*/
|
|
200
|
-
)
|
|
201
|
-
}, {
|
|
202
|
-
key: "dispose",
|
|
203
|
-
value: function dispose() {
|
|
204
|
-
// 清理事件监听
|
|
205
|
-
this.audioInstance.removeEventListener('play', closures.onPlaying);
|
|
206
|
-
this.audioInstance.removeEventListener('pasue', closures.onPaused);
|
|
207
|
-
this.audioInstance.removeEventListener('ended', closures.onEnded);
|
|
208
|
-
if (this.stopInterval) {
|
|
209
|
-
this.stopInterval();
|
|
210
|
-
}
|
|
33
|
+
get paused() {
|
|
34
|
+
return this.audioInstance.paused;
|
|
35
|
+
}
|
|
36
|
+
get audioInstance() {
|
|
37
|
+
return this.config.audio;
|
|
38
|
+
}
|
|
39
|
+
get currentTime() {
|
|
40
|
+
return this.audioInstance.currentTime * 1e3;
|
|
41
|
+
}
|
|
42
|
+
get currentKeyframes() {
|
|
43
|
+
return this.timeline.pendingAt(this.currentTime);
|
|
44
|
+
}
|
|
45
|
+
get duration() {
|
|
46
|
+
return this.audioInstance.duration * 1e3;
|
|
47
|
+
}
|
|
48
|
+
async load(A) {
|
|
49
|
+
return this.disposed ? !1 : (await this.pause(), this.vreoUnit = A, this.timeline.load(A.keyframes), A.video.url === this.audioInstance.src ? !0 : new Promise((i, n) => {
|
|
50
|
+
const s = () => {
|
|
51
|
+
this.audioInstance.removeEventListener("canplaythrough", a), this.audioInstance.removeEventListener("error", o);
|
|
52
|
+
}, a = () => {
|
|
53
|
+
s(), i(!0);
|
|
54
|
+
}, o = (r) => {
|
|
55
|
+
s(), n(r);
|
|
56
|
+
};
|
|
57
|
+
this.audioInstance.addEventListener("canplaythrough", a), this.audioInstance.addEventListener("error", o), this.audioInstance.src = A.video.url;
|
|
58
|
+
}));
|
|
59
|
+
}
|
|
60
|
+
async play() {
|
|
61
|
+
return this.disposed ? !1 : (this.playPromise = this.audioInstance.play(), await this.playPromise, !0);
|
|
62
|
+
}
|
|
63
|
+
async pause() {
|
|
64
|
+
try {
|
|
65
|
+
await this.playPromise;
|
|
66
|
+
} finally {
|
|
67
|
+
this.playPromise = void 0, this.audioInstance.pause();
|
|
211
68
|
}
|
|
212
|
-
}
|
|
213
|
-
|
|
69
|
+
}
|
|
70
|
+
dispose() {
|
|
71
|
+
this.disposed || (this.disposed = !0, this.stopInterval(), this.audioInstance.removeEventListener("play", this.onPlaying), this.audioInstance.removeEventListener("pause", this.onPaused), this.audioInstance.removeEventListener("ended", this.onEnded), this.audioInstance.pause(), this.ownsAudio && this.audioInstance.remove(), this.timeline.clear());
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
export {
|
|
75
|
+
v as PlayController
|
|
76
|
+
};
|
|
77
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../resources/PlayController/createHTMLAudioElement.ts","../../resources/PlayController/index.ts"],"sourcesContent":["\nconst BLANK_AUDIO = ''\n+ 'data:audio/mpeg;base64,'\n+ '//uQxAAAAAAAAAAAAAAAAAAAAAAASW5mbwAAAA8AAAADAAAGhgBVVVVVVVVVVVVVVVVVVVVVVVV'\n+ 'VVVVVVVVVVVVVVVVVVVWqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqr///////////'\n+ '////////////////////////////////8AAAA5TEFNRTMuOThyAc0AAAAAAAAAABSAJAiqQgAAg'\n+ 'AAABobxtI73AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'\n+ 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'\n+ 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'\n+ 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'\n+ 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//uQxAACFEII9ACZ/sJZwWEoEb8w/////N//////Jcxj'\n+ 'Hjf+7/v/H2PzCCFAiDtGeyBCIx7bJJ1mmEEMy6g8mm2c8nrGABB4h2Mkmn//4z/73u773R5qHHu'\n+ '/j/w7Kxkzh5lWRWdsifCkNAnY9Zc1HvDAhjhSHdFkHFzLmabt/AQxSg2wwzLhHIJOBnAWwVY4zr'\n+ 'hIYhhc2kvhYDfQ4hDi2Gmh5KyFn8EcGIrHAngNgIwVIEMf5bzbAiTRoAD///8z/KVhkkWEle6IX'\n+ '+d/z4fvH3BShK1e5kmjkCMoxVmXhd4ROlTKo3iipasvTilY21q19ta30/v/0/idPX1v8PNxJL6r'\n+ 'amnOVsdvMv2akO0iSYIzdJFirtzWXCZicS9vHqvSKyqm5XJBdqBwPxyfJdykhWTZ0G0ZyTZGpLK'\n+ 'xsNwwoRhsx3tZfhwmeOBVISm3impAC/IT/8hP/EKEM1KMdVdVKM2rHV4x7HVXZvbVVKN/qq8CiV'\n+ '9VL9jjH/6l6qf7MBCjZmOqsAibjcP+qqqv0oxqpa/NVW286hPo1nz2L/h8+jXt//uSxCmDU2IK/'\n+ 'ECN98KKtE5IYzNoCfbw+u9i5r8PoadUMFPKqWL4LK3T/LCraMSHGkW4bpLXR/E6LlHOVQxmslKV'\n+ 'J8IULktMN06N0FKCpHCoYsjC4F+Z0NVqdNFoGSTjSiyjzLdnZ2fNqTi2eHKONONKLMPMKLONKLM'\n+ 'PQRJGlFxZRoKcJFAYEeIFiRQkUWUeYfef//Ko04soswso40UJAgMw8wosososy0EalnZyjQUGBR'\n+ 'QGIFggOWUacWUeYmuadrZziQKKEgQsQLAhQkUJAgMQDghltLO1onp0cpkNInSFMqlYeSEJ5AHsq'\n+ 'FdOwy1DA2sRmRJKxdKRfLhfLw5BzUxBTUUzLjk4LjJVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV'\n+ 'VVVVVVVVVVVVVVVVVUxBTUUzLjk4LjJVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV'\n+ 'VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV'\n+ 'VVVVVVVVVVVVVVVVVVVf/7ksRRA8AAAaQAAAAgAAA0gAAABFVVVVVVVVVVVVVVVVVVVVVVVVVVV'\n+ 'VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV'\n+ 'VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV'\n+ 'VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV'\n+ 'VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV'\n+ 'VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV'\n+ 'VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV'\n+ 'VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVU=';\n\n\nexport function createHTMLAudioElement(): HTMLAudioElement {\n const audio = document.createElement('audio')\n audio.style.display = 'none'\n audio.controls = false\n document.body.appendChild(audio)\n audio.src = BLANK_AUDIO\n\n // 触发一次播放\n void audio.play().catch(() => { /* Browser autoplay policy; the real play remains user-driven. */ })\n\n return audio\n}\n","import { Subscribe } from '@realsee/five-webgpu'\nimport { requestAnimationFrameInterval } from '../shared-utils/animationFrame'\nimport { Timeline } from '../timeline'\nimport { VreoKeyframeEvent, VreoUnit } from '../typings/VreoUnit'\nimport { createHTMLAudioElement } from './createHTMLAudioElement'\n\nexport interface PlayControllerConfig {\n audio?: HTMLAudioElement\n}\n\nexport class PlayController extends Subscribe<VreoKeyframeEvent> {\n vreoUnit?: VreoUnit\n readonly config: PlayControllerConfig\n private readonly timeline = new Timeline<VreoUnit['keyframes'][number]>()\n private readonly ownsAudio: boolean\n private readonly stopInterval: () => void\n private playPromise?: Promise<void>\n private disposed = false\n\n private readonly onPlaying = () => this.emit('playing')\n private readonly onPaused = () => this.emit('paused')\n private readonly onEnded = () => this.emit('paused', true)\n\n get paused() { return this.audioInstance.paused }\n get audioInstance() { return this.config.audio! }\n get currentTime() { return this.audioInstance.currentTime * 1000 }\n get currentKeyframes() { return this.timeline.pendingAt(this.currentTime) }\n get duration() { return this.audioInstance.duration * 1000 }\n\n constructor(config: PlayControllerConfig = {}) {\n super()\n const audio = config.audio ?? createHTMLAudioElement()\n this.ownsAudio = !config.audio\n this.config = { ...config, audio }\n\n audio.addEventListener('play', this.onPlaying)\n audio.addEventListener('pause', this.onPaused)\n audio.addEventListener('ended', this.onEnded)\n\n this.stopInterval = requestAnimationFrameInterval(() => {\n if (audio.paused) return\n const currentTime = this.currentTime\n for (const keyframe of this.timeline.take(currentTime)) {\n this.emit(keyframe.type, keyframe, currentTime)\n }\n })\n }\n\n async load(vreoUnit: VreoUnit): Promise<boolean> {\n if (this.disposed) return false\n await this.pause()\n this.vreoUnit = vreoUnit\n this.timeline.load(vreoUnit.keyframes)\n if (vreoUnit.video.url === this.audioInstance.src) return true\n\n return new Promise((resolve, reject) => {\n const clean = () => {\n this.audioInstance.removeEventListener('canplaythrough', ready)\n this.audioInstance.removeEventListener('error', error)\n }\n const ready = () => { clean(); resolve(true) }\n const error = (event: Event) => { clean(); reject(event) }\n this.audioInstance.addEventListener('canplaythrough', ready)\n this.audioInstance.addEventListener('error', error)\n this.audioInstance.src = vreoUnit.video.url\n })\n }\n\n async play() {\n if (this.disposed) return false\n this.playPromise = this.audioInstance.play()\n await this.playPromise\n return true\n }\n\n async pause() {\n try {\n await this.playPromise\n } finally {\n this.playPromise = undefined\n this.audioInstance.pause()\n }\n }\n\n dispose() {\n if (this.disposed) return\n this.disposed = true\n this.stopInterval()\n this.audioInstance.removeEventListener('play', this.onPlaying)\n this.audioInstance.removeEventListener('pause', this.onPaused)\n this.audioInstance.removeEventListener('ended', this.onEnded)\n this.audioInstance.pause()\n if (this.ownsAudio) this.audioInstance.remove()\n this.timeline.clear()\n }\n}\n"],"names":["BLANK_AUDIO","createHTMLAudioElement","audio","PlayController","Subscribe","config","__publicField","Timeline","requestAnimationFrameInterval","currentTime","keyframe","vreoUnit","resolve","reject","clean","ready","error","event"],"mappings":"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"}
|
package/lib/Player/App.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
export declare function App(): import("react/jsx-runtime").JSX.Element;
|
|
2
|
+
//# sourceMappingURL=App.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../resources/Player/App.tsx"],"names":[],"mappings":"AAkDA,wBAAgB,GAAG,4CAmBlB"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { PlaybackLifecycle } from './PlaybackLifecycle';
|
|
2
|
-
import { Five, Subscribe } from '@realsee/five';
|
|
2
|
+
import { Five, Subscribe } from '@realsee/five-webgpu';
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import { VreoKeyframe, VreoKeyframeEnum, VreoKeyframeEvent, VreoUnit, VreoVideo } from '../typings/VreoUnit';
|
|
5
5
|
import { VideoAgentScene } from './modules/VideoAgent/VideoAgentScene';
|
|
@@ -57,19 +57,19 @@ export declare class Controller extends Subscribe<VreoKeyframeEvent> {
|
|
|
57
57
|
* @returns 'video' | 'avatar' | 'none' - 媒体类型
|
|
58
58
|
*/
|
|
59
59
|
get agentType(): "none" | "video" | "avatar";
|
|
60
|
-
popUp: string |
|
|
60
|
+
popUp: string | React.ReactElement | null;
|
|
61
61
|
/**
|
|
62
62
|
* 打开或关闭弹窗
|
|
63
63
|
* @param popUp - 弹窗内容,可以是字符串、JSX元素或false(关闭弹窗)
|
|
64
64
|
*/
|
|
65
|
-
openPopUp(popUp: string |
|
|
65
|
+
openPopUp(popUp: string | React.ReactElement | false): void;
|
|
66
66
|
/**
|
|
67
67
|
* 设置加载状态
|
|
68
68
|
* @param loading - 加载状态:true(加载中)、false(加载完成)、null(加载失败)
|
|
69
69
|
*/
|
|
70
70
|
setLoading(loading: boolean | null): void;
|
|
71
71
|
drawerConfig: {
|
|
72
|
-
content: string |
|
|
72
|
+
content: string | React.ReactElement;
|
|
73
73
|
height?: number | string;
|
|
74
74
|
} | null;
|
|
75
75
|
/**
|
|
@@ -113,7 +113,7 @@ export declare class Controller extends Subscribe<VreoKeyframeEvent> {
|
|
|
113
113
|
* @param drawerConfig - 抽屉配置对象,false表示关闭抽屉
|
|
114
114
|
*/
|
|
115
115
|
openDrawer(drawerConfig?: false | {
|
|
116
|
-
content: string |
|
|
116
|
+
content: string | React.ReactElement;
|
|
117
117
|
height?: number | string;
|
|
118
118
|
}): void;
|
|
119
119
|
/**
|
|
@@ -127,6 +127,7 @@ export declare class Controller extends Subscribe<VreoKeyframeEvent> {
|
|
|
127
127
|
private resuming;
|
|
128
128
|
private disposers;
|
|
129
129
|
readonly playback: PlaybackLifecycle;
|
|
130
|
+
private readonly timeline;
|
|
130
131
|
constructor({ five, container, configs }: {
|
|
131
132
|
five: Five;
|
|
132
133
|
container: Element;
|
|
@@ -146,12 +147,15 @@ export declare class Controller extends Subscribe<VreoKeyframeEvent> {
|
|
|
146
147
|
* 获取当前时间点应该触发的关键帧
|
|
147
148
|
* @returns 当前应该执行的关键帧数组
|
|
148
149
|
*/
|
|
150
|
+
loadTimeline(keyframes: readonly VreoKeyframe[]): void;
|
|
151
|
+
seekTimeline(currentTime: number): void;
|
|
152
|
+
resetTimeline(type?: VreoKeyframeEnum): void;
|
|
149
153
|
get currentKeyframes(): VreoKeyframe[];
|
|
150
154
|
/**
|
|
151
155
|
* 获取当前媒体实例(音频或视频元素)
|
|
152
156
|
* @returns HTML媒体元素实例
|
|
153
157
|
*/
|
|
154
|
-
get mediaInstance():
|
|
158
|
+
get mediaInstance(): import("../shared-utils/AudioLike").AudioLike | HTMLVideoElement | HTMLAudioElement | undefined;
|
|
155
159
|
/**
|
|
156
160
|
* 逐帧任务循环处理
|
|
157
161
|
*
|
|
@@ -182,3 +186,4 @@ export declare class Controller extends Subscribe<VreoKeyframeEvent> {
|
|
|
182
186
|
}
|
|
183
187
|
declare const ControllerContext: React.Context<Controller | null>;
|
|
184
188
|
export { ControllerContext };
|
|
189
|
+
//# sourceMappingURL=Controller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Controller.d.ts","sourceRoot":"","sources":["../../resources/Player/Controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlaybackLifecycle.d.ts","sourceRoot":"","sources":["../../resources/Player/PlaybackLifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAsB,eAAe,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAE7G,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,eAAe,CAAA;IAClC,QAAQ,CAAC,YAAY,CAAC,EAAE,eAAe,CAAA;IACvC,KAAK,IAAI,OAAO,CAAA;IAChB,IAAI,CAAC,OAAO,EAAE,gBAAgB,GAAG,eAAe,CAAA;CACjD;AAED,0FAA0F;AAC1F,qBAAa,iBAAiB;IAMsB,OAAO,CAAC,MAAM;IALhE,OAAO,CAAC,UAAU,CAAC,CAAoB;IACvC,OAAO,CAAC,GAAG,CAAC,CAAa;IACzB,OAAO,CAAC,UAAU,CAAI;IACtB,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,OAAO,CAAwB;gBAC3B,OAAO,EAAE,eAAe,GAAG,SAAS,EAAU,MAAM,EAAE,MAAM,IAAI;IAG5E,IAAI,MAAM,YAAiC;IAC3C,OAAO;IACP,KAAK,CAAC,UAAU,EAAE,OAAO;IAczB,GAAG,CAAC,IAAI,EAAE,MAAM,IAAI;IACpB,OAAO,CAAC,IAAI;IAQZ,MAAM;IAKN,MAAM;IACN,OAAO;CAQR"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
1
|
import { CustomVreoKeyframeProps } from '../../typings';
|
|
3
2
|
export interface SpatialScenePanelData {
|
|
4
3
|
customType: 'SpatialScenePanel';
|
|
@@ -19,4 +18,5 @@ export interface SpatialScenePanelData {
|
|
|
19
18
|
* 空间场景面板
|
|
20
19
|
* @returns
|
|
21
20
|
*/
|
|
22
|
-
export declare function SpatialScenePanel(props: CustomVreoKeyframeProps):
|
|
21
|
+
export declare function SpatialScenePanel(props: CustomVreoKeyframeProps): import("react/jsx-runtime").JSX.Element;
|
|
22
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../resources/Player/custom/SpatialScenePanel/index.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAA;AA2BvD,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,mBAAmB,CAAA;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE;QACT,IAAI,EAAE,MAAM,CAAA;QACZ,IAAI,EAAE,MAAM,CAAA;KACb,EAAE,CAAA;IACH,QAAQ,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC9C,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;CAC9C;AAsDD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,uBAAuB,2CAkF/D"}
|
package/lib/Player/hooks.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { Vector3 } from 'three';
|
|
1
|
+
import { Vector3 } from 'three/webgpu';
|
|
2
2
|
export declare function useController(): import("./Controller").Controller;
|
|
3
|
-
export declare function useFiveInstance(): import("@realsee/five").Five;
|
|
3
|
+
export declare function useFiveInstance(): import("@realsee/five-webgpu").Five;
|
|
4
4
|
export declare function useFiveProject2d(): (vector: Vector3) => import("three").Vector2 | null;
|
|
5
|
+
//# sourceMappingURL=hooks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../resources/Player/hooks.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAGtC,wBAAgB,aAAa,sCAO5B;AAED,wBAAgB,eAAe,wCAO9B;AAED,wBAAgB,gBAAgB,aAEd,OAAO,oCACxB"}
|
package/lib/Player/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Five, Subscribe } from '@realsee/five';
|
|
1
|
+
import { Five, Subscribe } from '@realsee/five-webgpu';
|
|
2
2
|
import { VreoKeyframeEvent, VreoUnit } from '../typings/VreoUnit';
|
|
3
3
|
import { Appearance, PlayerConfigs } from './typings';
|
|
4
4
|
/**
|
|
@@ -9,7 +9,7 @@ import { Appearance, PlayerConfigs } from './typings';
|
|
|
9
9
|
*
|
|
10
10
|
* @example
|
|
11
11
|
* ```typescript
|
|
12
|
-
* import { Five } from '@realsee/five'
|
|
12
|
+
* import { Five } from '@realsee/five-webgpu'
|
|
13
13
|
* import { Player } from '@realsee/vreo'
|
|
14
14
|
*
|
|
15
15
|
* const five = new Five({
|
|
@@ -125,3 +125,4 @@ export declare class Player extends Subscribe<VreoKeyframeEvent> {
|
|
|
125
125
|
dispose(): void;
|
|
126
126
|
}
|
|
127
127
|
export { SpatialScenePanel } from './custom/SpatialScenePanel';
|
|
128
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../resources/Player/index.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAItD,OAAO,EAAwC,iBAAiB,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAGvG,OAAO,EAAE,UAAU,EAAE,aAAa,EAAkB,MAAM,WAAW,CAAA;AAerE;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,MAAO,SAAQ,SAAS,CAAC,iBAAiB,CAAC;IACpD,kBAAkB;IAClB,KAAK,EAAE,IAAI,CAAA;IACX,YAAY;IACZ,OAAO,CAAC,UAAU,CAAY;IAC9B,OAAO,CAAC,IAAI,CAAM;IAClB,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,cAAc,CAAI;IAC1B,OAAO,CAAC,QAAQ,CAAQ;IACxB,eAAe;IACf,gBAAgB;IAChB,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAA;IAEhC;;;;;OAKG;gBACS,IAAI,EAAE,IAAI,EAAE,OAAO,GAAE,OAAO,CAAC,aAAa,CAAM;IA0E5D;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACG,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,SAAI,EAAE,OAAO,UAAQ,EAAE,KAAK,UAAQ,EAAE,UAAU,UAAQ;IA4GlG;;;OAGG;IACH,IAAI,MAAM,YAET;IAED;;;;;;;;;;;;;;OAcG;IACH,IAAI,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,UAAU,UAAQ;IAiB7C;;;;;;;;;;OAUG;IACH,aAAa,CAAC,UAAU,EAAE,UAAU;IAIpC;;OAEG;IACH,KAAK;IAML;;OAEG;IACH,IAAI;IAIJ;;OAEG;IACH,IAAI;IAIJ;;;OAGG;IACH,cAAc;IAId;;;;OAIG;IACH,OAAO;CAWV;AAGD,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA"}
|