alpha-video-player-js 1.1.0 → 1.2.0
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/README.md +30 -3
- package/dist/alpha-video-player-js.d.ts +3 -1
- package/dist/react.d.ts +21 -15
- package/dist/vue2.d.ts +77 -1
- package/dist/vue3.d.ts +74 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -27,6 +27,32 @@ import AlphaVideoPlayerJs from 'alpha-video-player-js'
|
|
|
27
27
|
const player = new AlphaVideoPlayerJs(config)
|
|
28
28
|
```
|
|
29
29
|
|
|
30
|
+
### TypeScript 类型
|
|
31
|
+
|
|
32
|
+
主包与框架子路径会导出下列类型,便于标注 `ref`、`getPlayer()` 返回值等。
|
|
33
|
+
|
|
34
|
+
**从 v1.2.0 起**:命令式 ref 类型统一为 **`IAlphaVideoPlayerRef`**;React 组件 props 为 **`IAlphaVideoPlayerProps`**(原 `AlphaVideoPlayerExpose` / 无 `I` 前缀的 `AlphaVideoPlayerRef`、`AlphaVideoPlayerProps` 已更名,升级时请全局替换)。
|
|
35
|
+
|
|
36
|
+
| 包路径 | 导出类型 | 说明 |
|
|
37
|
+
|--------|----------|------|
|
|
38
|
+
| `alpha-video-player-js` | `IAlphaVideoPlayer` | 核心类实例(`new` 后的类型) |
|
|
39
|
+
| | `IConfig`、`IOptionalConfig` | 构造 / `play()` 可选参数 |
|
|
40
|
+
| | `IOrientation`、`ISide` | 拼合方向与 RGB 区域位置 |
|
|
41
|
+
| `alpha-video-player-js/vue3`、`.../vue2` | `IAlphaVideoPlayer`、`IAlphaVideoPlayerRef` | 核心实例类型与组件 ref;**若同时用到二者,请从同一子路径导入**,避免与主包各有一份 `.d.ts` 时类型不兼容 |
|
|
42
|
+
| `alpha-video-player-js/react` | `IAlphaVideoPlayerProps`、`IAlphaVideoPlayerRef` | 组件 props 与 ref |
|
|
43
|
+
|
|
44
|
+
```ts
|
|
45
|
+
import AlphaVideoPlayer from 'alpha-video-player-js/vue3'
|
|
46
|
+
import type { IAlphaVideoPlayer, IAlphaVideoPlayerRef } from 'alpha-video-player-js/vue3'
|
|
47
|
+
|
|
48
|
+
const playerRef = ref<IAlphaVideoPlayerRef | null>(null)
|
|
49
|
+
|
|
50
|
+
let core: IAlphaVideoPlayer | null = null
|
|
51
|
+
const onCanPlay = () => {
|
|
52
|
+
core = playerRef.value?.getPlayer() ?? null
|
|
53
|
+
}
|
|
54
|
+
```
|
|
55
|
+
|
|
30
56
|
### 实例参数
|
|
31
57
|
|
|
32
58
|
| 参数 | 含义 | 默认值 | 是否必传 |
|
|
@@ -139,8 +165,9 @@ import AlphaVideoPlayer from 'alpha-video-player-js/vue3'
|
|
|
139
165
|
<script setup lang="ts">
|
|
140
166
|
import { ref } from 'vue'
|
|
141
167
|
import AlphaVideoPlayer from 'alpha-video-player-js/vue3'
|
|
168
|
+
import type { IAlphaVideoPlayerRef } from 'alpha-video-player-js/vue3'
|
|
142
169
|
|
|
143
|
-
const playerRef = ref()
|
|
170
|
+
const playerRef = ref<IAlphaVideoPlayerRef | null>(null)
|
|
144
171
|
const playbackRate = ref(1)
|
|
145
172
|
|
|
146
173
|
const onReady = () => {
|
|
@@ -194,10 +221,10 @@ export default {
|
|
|
194
221
|
```tsx
|
|
195
222
|
import { useRef } from 'react'
|
|
196
223
|
import AlphaVideoPlayer from 'alpha-video-player-js/react'
|
|
197
|
-
import type {
|
|
224
|
+
import type { IAlphaVideoPlayerRef } from 'alpha-video-player-js/react'
|
|
198
225
|
|
|
199
226
|
function App() {
|
|
200
|
-
const playerRef = useRef<
|
|
227
|
+
const playerRef = useRef<IAlphaVideoPlayerRef>(null)
|
|
201
228
|
|
|
202
229
|
return (
|
|
203
230
|
<AlphaVideoPlayer
|
|
@@ -55,5 +55,7 @@ declare class Render {
|
|
|
55
55
|
setLoop(loop: boolean): void;
|
|
56
56
|
setPlaybackRate(playbackRate: number): void;
|
|
57
57
|
}
|
|
58
|
+
/** 核心类实例类型(`new Render(...)` 的实例),便于业务侧标注 ref / getPlayer() 等 */
|
|
59
|
+
type IAlphaVideoPlayer = InstanceType<typeof Render>;
|
|
58
60
|
|
|
59
|
-
export { type IConfig, Render as default };
|
|
61
|
+
export { type IAlphaVideoPlayer, type IConfig, type IOptionalConfig, type IOrientation, type ISide, Render as default };
|
package/dist/react.d.ts
CHANGED
|
@@ -57,8 +57,26 @@ declare class Render {
|
|
|
57
57
|
setLoop(loop: boolean): void;
|
|
58
58
|
setPlaybackRate(playbackRate: number): void;
|
|
59
59
|
}
|
|
60
|
+
/** 核心类实例类型(`new Render(...)` 的实例),便于业务侧标注 ref / getPlayer() 等 */
|
|
61
|
+
type IAlphaVideoPlayer = InstanceType<typeof Render>;
|
|
60
62
|
|
|
61
|
-
|
|
63
|
+
/**
|
|
64
|
+
* Vue 2 / Vue 3 的 template ref、React 的 `useRef` 所指向的命令式 API 形状(与 `expose` / `useImperativeHandle` 一致)。
|
|
65
|
+
*/
|
|
66
|
+
type IAlphaVideoPlayerRef = {
|
|
67
|
+
play: () => Promise<void> | undefined;
|
|
68
|
+
pause: () => void;
|
|
69
|
+
destroy: () => void;
|
|
70
|
+
reset: () => void;
|
|
71
|
+
setSrc: (src: string) => void;
|
|
72
|
+
setCurrentTime: (time: number) => void;
|
|
73
|
+
setMute: (muted: boolean) => void;
|
|
74
|
+
setLoop: (loop: boolean) => void;
|
|
75
|
+
setPlaybackRate: (rate: number) => void;
|
|
76
|
+
getPlayer: () => IAlphaVideoPlayer | null;
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
interface IAlphaVideoPlayerProps {
|
|
62
80
|
src?: string;
|
|
63
81
|
width?: number;
|
|
64
82
|
height?: number;
|
|
@@ -88,18 +106,6 @@ interface AlphaVideoPlayerProps {
|
|
|
88
106
|
className?: string;
|
|
89
107
|
style?: React.CSSProperties;
|
|
90
108
|
}
|
|
91
|
-
|
|
92
|
-
play: () => Promise<void> | undefined;
|
|
93
|
-
pause: () => void;
|
|
94
|
-
destroy: () => void;
|
|
95
|
-
reset: () => void;
|
|
96
|
-
setSrc: (src: string) => void;
|
|
97
|
-
setCurrentTime: (time: number) => void;
|
|
98
|
-
setMute: (muted: boolean) => void;
|
|
99
|
-
setLoop: (loop: boolean) => void;
|
|
100
|
-
setPlaybackRate: (rate: number) => void;
|
|
101
|
-
getPlayer: () => Render | null;
|
|
102
|
-
}
|
|
103
|
-
declare const AlphaVideoPlayer: React.ForwardRefExoticComponent<AlphaVideoPlayerProps & React.RefAttributes<AlphaVideoPlayerRef>>;
|
|
109
|
+
declare const AlphaVideoPlayer: React.ForwardRefExoticComponent<IAlphaVideoPlayerProps & React.RefAttributes<IAlphaVideoPlayerRef>>;
|
|
104
110
|
|
|
105
|
-
export { type
|
|
111
|
+
export { type IAlphaVideoPlayerProps, type IAlphaVideoPlayerRef, AlphaVideoPlayer as default };
|
package/dist/vue2.d.ts
CHANGED
|
@@ -1,3 +1,79 @@
|
|
|
1
1
|
declare const AlphaVideoPlayer: any;
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
interface IConfig {
|
|
4
|
+
container: HTMLElement;
|
|
5
|
+
width?: number;
|
|
6
|
+
height?: number;
|
|
7
|
+
src?: string;
|
|
8
|
+
/** 跨域视频资源;默认 anonymous */
|
|
9
|
+
crossOrigin?: 'anonymous' | 'use-credentials';
|
|
10
|
+
muted?: boolean;
|
|
11
|
+
loop?: boolean;
|
|
12
|
+
playbackRate?: number;
|
|
13
|
+
fps?: number;
|
|
14
|
+
orientation?: IOrientation;
|
|
15
|
+
side?: ISide;
|
|
16
|
+
videoFrame?: boolean;
|
|
17
|
+
debug?: boolean;
|
|
18
|
+
autoShow?: boolean;
|
|
19
|
+
autoClear?: boolean;
|
|
20
|
+
autoDestroy?: boolean;
|
|
21
|
+
/**
|
|
22
|
+
* 视频加载后按比例自适应 canvas 尺寸(默认 'contain')。
|
|
23
|
+
* - 'contain':自动判断,确保视频完整填入 canvas 盒子(类似 object-fit: contain)
|
|
24
|
+
* - 'width':固定宽度,按视频比例自动调整高度
|
|
25
|
+
* - 'height':固定高度,按视频比例自动调整宽度
|
|
26
|
+
* - false:不自适应,canvas 保持初始尺寸
|
|
27
|
+
*/
|
|
28
|
+
autoResize?: 'width' | 'height' | 'contain' | false;
|
|
29
|
+
onInitSuccess?: () => void;
|
|
30
|
+
onInitError?: (e: ErrorEvent) => void;
|
|
31
|
+
onLoad?: () => void;
|
|
32
|
+
onCanPlay?: () => void;
|
|
33
|
+
onPlay?: () => void;
|
|
34
|
+
onLoop?: () => void;
|
|
35
|
+
onPause?: () => void;
|
|
36
|
+
onEnded?: () => void;
|
|
37
|
+
/** 媒体 error 事件或 play() 拒绝等,原样传入 */
|
|
38
|
+
onError?: (e: unknown) => void;
|
|
39
|
+
onDestroy?: () => void;
|
|
40
|
+
}
|
|
41
|
+
type IOptionalConfig = Omit<IConfig, 'container' | 'src'> & Partial<Pick<IConfig, 'container' | 'src'>>;
|
|
42
|
+
type IOrientation = 'landscape' | 'portrait';
|
|
43
|
+
type ISide = 'front' | 'back';
|
|
44
|
+
|
|
45
|
+
declare class Render {
|
|
46
|
+
private render;
|
|
47
|
+
constructor(config: IConfig);
|
|
48
|
+
get playing(): boolean;
|
|
49
|
+
get loop(): boolean;
|
|
50
|
+
play(config?: IOptionalConfig): Promise<void>;
|
|
51
|
+
pause(): void;
|
|
52
|
+
destroy(): void;
|
|
53
|
+
reset(): void;
|
|
54
|
+
setSrc(src: string): void;
|
|
55
|
+
setCurrentTime(time: number): void;
|
|
56
|
+
setMute(muted: boolean): void;
|
|
57
|
+
setLoop(loop: boolean): void;
|
|
58
|
+
setPlaybackRate(playbackRate: number): void;
|
|
59
|
+
}
|
|
60
|
+
/** 核心类实例类型(`new Render(...)` 的实例),便于业务侧标注 ref / getPlayer() 等 */
|
|
61
|
+
type IAlphaVideoPlayer = InstanceType<typeof Render>;
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Vue 2 / Vue 3 的 template ref、React 的 `useRef` 所指向的命令式 API 形状(与 `expose` / `useImperativeHandle` 一致)。
|
|
65
|
+
*/
|
|
66
|
+
type IAlphaVideoPlayerRef = {
|
|
67
|
+
play: () => Promise<void> | undefined;
|
|
68
|
+
pause: () => void;
|
|
69
|
+
destroy: () => void;
|
|
70
|
+
reset: () => void;
|
|
71
|
+
setSrc: (src: string) => void;
|
|
72
|
+
setCurrentTime: (time: number) => void;
|
|
73
|
+
setMute: (muted: boolean) => void;
|
|
74
|
+
setLoop: (loop: boolean) => void;
|
|
75
|
+
setPlaybackRate: (rate: number) => void;
|
|
76
|
+
getPlayer: () => IAlphaVideoPlayer | null;
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
export { type IAlphaVideoPlayer, type IAlphaVideoPlayerRef, AlphaVideoPlayer as default };
|
package/dist/vue3.d.ts
CHANGED
|
@@ -1,6 +1,45 @@
|
|
|
1
1
|
import * as vue from 'vue';
|
|
2
2
|
import { PropType } from 'vue';
|
|
3
3
|
|
|
4
|
+
interface IConfig {
|
|
5
|
+
container: HTMLElement;
|
|
6
|
+
width?: number;
|
|
7
|
+
height?: number;
|
|
8
|
+
src?: string;
|
|
9
|
+
/** 跨域视频资源;默认 anonymous */
|
|
10
|
+
crossOrigin?: 'anonymous' | 'use-credentials';
|
|
11
|
+
muted?: boolean;
|
|
12
|
+
loop?: boolean;
|
|
13
|
+
playbackRate?: number;
|
|
14
|
+
fps?: number;
|
|
15
|
+
orientation?: IOrientation;
|
|
16
|
+
side?: ISide;
|
|
17
|
+
videoFrame?: boolean;
|
|
18
|
+
debug?: boolean;
|
|
19
|
+
autoShow?: boolean;
|
|
20
|
+
autoClear?: boolean;
|
|
21
|
+
autoDestroy?: boolean;
|
|
22
|
+
/**
|
|
23
|
+
* 视频加载后按比例自适应 canvas 尺寸(默认 'contain')。
|
|
24
|
+
* - 'contain':自动判断,确保视频完整填入 canvas 盒子(类似 object-fit: contain)
|
|
25
|
+
* - 'width':固定宽度,按视频比例自动调整高度
|
|
26
|
+
* - 'height':固定高度,按视频比例自动调整宽度
|
|
27
|
+
* - false:不自适应,canvas 保持初始尺寸
|
|
28
|
+
*/
|
|
29
|
+
autoResize?: 'width' | 'height' | 'contain' | false;
|
|
30
|
+
onInitSuccess?: () => void;
|
|
31
|
+
onInitError?: (e: ErrorEvent) => void;
|
|
32
|
+
onLoad?: () => void;
|
|
33
|
+
onCanPlay?: () => void;
|
|
34
|
+
onPlay?: () => void;
|
|
35
|
+
onLoop?: () => void;
|
|
36
|
+
onPause?: () => void;
|
|
37
|
+
onEnded?: () => void;
|
|
38
|
+
/** 媒体 error 事件或 play() 拒绝等,原样传入 */
|
|
39
|
+
onError?: (e: unknown) => void;
|
|
40
|
+
onDestroy?: () => void;
|
|
41
|
+
}
|
|
42
|
+
type IOptionalConfig = Omit<IConfig, 'container' | 'src'> & Partial<Pick<IConfig, 'container' | 'src'>>;
|
|
4
43
|
type IOrientation = 'landscape' | 'portrait';
|
|
5
44
|
type ISide = 'front' | 'back';
|
|
6
45
|
|
|
@@ -166,4 +205,38 @@ declare const _default: vue.DefineComponent<vue.ExtractPropTypes<{
|
|
|
166
205
|
autoResize: false | "width" | "height" | "contain";
|
|
167
206
|
}, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
|
|
168
207
|
|
|
169
|
-
|
|
208
|
+
declare class Render {
|
|
209
|
+
private render;
|
|
210
|
+
constructor(config: IConfig);
|
|
211
|
+
get playing(): boolean;
|
|
212
|
+
get loop(): boolean;
|
|
213
|
+
play(config?: IOptionalConfig): Promise<void>;
|
|
214
|
+
pause(): void;
|
|
215
|
+
destroy(): void;
|
|
216
|
+
reset(): void;
|
|
217
|
+
setSrc(src: string): void;
|
|
218
|
+
setCurrentTime(time: number): void;
|
|
219
|
+
setMute(muted: boolean): void;
|
|
220
|
+
setLoop(loop: boolean): void;
|
|
221
|
+
setPlaybackRate(playbackRate: number): void;
|
|
222
|
+
}
|
|
223
|
+
/** 核心类实例类型(`new Render(...)` 的实例),便于业务侧标注 ref / getPlayer() 等 */
|
|
224
|
+
type IAlphaVideoPlayer = InstanceType<typeof Render>;
|
|
225
|
+
|
|
226
|
+
/**
|
|
227
|
+
* Vue 2 / Vue 3 的 template ref、React 的 `useRef` 所指向的命令式 API 形状(与 `expose` / `useImperativeHandle` 一致)。
|
|
228
|
+
*/
|
|
229
|
+
type IAlphaVideoPlayerRef = {
|
|
230
|
+
play: () => Promise<void> | undefined;
|
|
231
|
+
pause: () => void;
|
|
232
|
+
destroy: () => void;
|
|
233
|
+
reset: () => void;
|
|
234
|
+
setSrc: (src: string) => void;
|
|
235
|
+
setCurrentTime: (time: number) => void;
|
|
236
|
+
setMute: (muted: boolean) => void;
|
|
237
|
+
setLoop: (loop: boolean) => void;
|
|
238
|
+
setPlaybackRate: (rate: number) => void;
|
|
239
|
+
getPlayer: () => IAlphaVideoPlayer | null;
|
|
240
|
+
};
|
|
241
|
+
|
|
242
|
+
export { type IAlphaVideoPlayer, type IAlphaVideoPlayerRef, _default as default };
|