@designcombo/video 0.0.2 → 0.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/dist/{SharedSystems-BWe03l6N.js → SharedSystems-Cv0Hv-t_.js} +1 -1
- package/dist/{WebGLRenderer-CKduQ9yw.js → WebGLRenderer-CeXIsNm5.js} +2 -2
- package/dist/{WebGPURenderer-BSX8DZj-.js → WebGPURenderer-CKsFf2P8.js} +2 -2
- package/dist/{browserAll-CwPYLzJJ.js → browserAll-CVO4QZK1.js} +2 -2
- package/dist/clips/audio-clip.d.ts +1 -4
- package/dist/clips/base-clip.d.ts +6 -1
- package/dist/clips/caption-clip.d.ts +10 -9
- package/dist/clips/effect-clip.d.ts +37 -0
- package/dist/clips/iclip.d.ts +22 -0
- package/dist/clips/image-clip.d.ts +2 -1
- package/dist/clips/index.d.ts +2 -0
- package/dist/clips/text-clip.d.ts +53 -52
- package/dist/clips/transition-clip.d.ts +37 -0
- package/dist/clips/video-clip.d.ts +7 -7
- package/dist/effect/glsl/custom-glsl.d.ts +499 -5
- package/dist/{index-C333riU-.js → index-CZk_O50g.js} +15065 -8677
- package/dist/index.d.ts +4 -1
- package/dist/index.es.js +20 -16
- package/dist/index.umd.js +5010 -162
- package/dist/json-serialization.d.ts +32 -4
- package/dist/sprite/base-sprite.d.ts +44 -21
- package/dist/sprite/pixi-sprite-renderer.d.ts +0 -12
- package/dist/studio.d.ts +152 -6
- package/dist/transition/fragment.d.ts +1 -0
- package/dist/transition/glsl/custom-glsl.d.ts +229 -0
- package/dist/transition/glsl/gl-transition.d.ts +14 -0
- package/dist/transition/transition.d.ts +5 -0
- package/dist/transition/types.d.ts +29 -0
- package/dist/transition/uniforms.d.ts +35 -0
- package/dist/transition/vertex.d.ts +1 -0
- package/dist/{webworkerAll-aNnyDpl9.js → webworkerAll-C-9pdN3u.js} +1 -1
- package/package.json +2 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { F as Ie, u as Ee, l as se, M as v, G as De, v as Oe, S as Fe, x as ae, E as u, e as D, y as S, z as Le, H as O, I as b, R as F, J as ne, K as He, t as m, b as f, i as B, w as L, L as K, N as We, c as Y, B as y, j as U, O as ze, Q as C, k as M, V as w, W as Ve, a as Ne, X as ie, Y as oe, Z as le, _ as ue, C as P, $ as je, a0 as A, a1 as J, D as H, a2 as $e, a3 as qe, P as Ke, d as Ye, T as X, a4 as Q, a5 as Je, a6 as Xe, a7 as Qe } from "./index-
|
|
1
|
+
import { F as Ie, u as Ee, l as se, M as v, G as De, v as Oe, S as Fe, x as ae, E as u, e as D, y as S, z as Le, H as O, I as b, R as F, J as ne, K as He, t as m, b as f, i as B, w as L, L as K, N as We, c as Y, B as y, j as U, O as ze, Q as C, k as M, V as w, W as Ve, a as Ne, X as ie, Y as oe, Z as le, _ as ue, C as P, $ as je, a0 as A, a1 as J, D as H, a2 as $e, a3 as qe, P as Ke, d as Ye, T as X, a4 as Q, a5 as Je, a6 as Xe, a7 as Qe } from "./index-CZk_O50g.js";
|
|
2
2
|
import { B as de, c as Ze } from "./colorToUniform-C2jGzNe1.js";
|
|
3
3
|
var et = `in vec2 vMaskCoord;
|
|
4
4
|
in vec2 vTextureCoord;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { S as G, E as d, B as v, w as m, D as S, L as j, v as ve, s as U, t as b, a8 as Be, k as K, a9 as Ae, b as p, V as L, j as B, i as A, l as F, M as $, aa as z, ab as Ne, ac as ye, ad as Y, ae as Ce, A as De, R as Ie, e as T } from "./index-
|
|
1
|
+
import { S as G, E as d, B as v, w as m, D as S, L as j, v as ve, s as U, t as b, a8 as Be, k as K, a9 as Ae, b as p, V as L, j as B, i as A, l as F, M as $, aa as z, ab as Ne, ac as ye, ad as Y, ae as Ce, A as De, R as Ie, e as T } from "./index-CZk_O50g.js";
|
|
2
2
|
import { b as q } from "./colorToUniform-C2jGzNe1.js";
|
|
3
|
-
import { e as Ge, G as Ue, c as Fe, b as Oe, U as Pe, R as Me, B as Z, d as N, f as Le, S as He, a as we } from "./SharedSystems-
|
|
3
|
+
import { e as Ge, G as Ue, c as Fe, b as Oe, U as Pe, R as Me, B as Z, d as N, f as Le, S as He, a as we } from "./SharedSystems-Cv0Hv-t_.js";
|
|
4
4
|
class Q {
|
|
5
5
|
constructor() {
|
|
6
6
|
this._tempState = G.for2d(), this._didUploadHash = {};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { S as E, g as A, E as p, f as ae, D as S, b as C, B as T, c as ue, d as L, h as M, w as v, i as x, j as ce, k as de, l as k, m as w, M as D, n as H, o as he, p as pe, q as z, s as F, t as R, A as le, R as fe, e as B } from "./index-
|
|
1
|
+
import { S as E, g as A, E as p, f as ae, D as S, b as C, B as T, c as ue, d as L, h as M, w as v, i as x, j as ce, k as de, l as k, m as w, M as D, n as H, o as he, p as pe, q as z, s as F, t as R, A as le, R as fe, e as B } from "./index-CZk_O50g.js";
|
|
2
2
|
import { l as ge, a as me } from "./colorToUniform-C2jGzNe1.js";
|
|
3
|
-
import { c as _e, u as be, U as xe, B as ye, G as Ge, e as Se, R as Be, t as Pe, S as Te, a as Ce } from "./SharedSystems-
|
|
3
|
+
import { c as _e, u as be, U as xe, B as ye, G as Ge, e as Se, R as Be, t as Pe, S as Te, a as Ce } from "./SharedSystems-Cv0Hv-t_.js";
|
|
4
4
|
const y = E.for2d();
|
|
5
5
|
class O {
|
|
6
6
|
start(e, t, r) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { T as M, U as Z, P as m, r as te, E as y, a as ie, w as g, e as P, C as V } from "./index-
|
|
2
|
-
import "./webworkerAll-
|
|
1
|
+
import { T as M, U as Z, P as m, r as te, E as y, a as ie, w as g, e as P, C as V } from "./index-CZk_O50g.js";
|
|
2
|
+
import "./webworkerAll-C-9pdN3u.js";
|
|
3
3
|
class q {
|
|
4
4
|
constructor(e) {
|
|
5
5
|
this._lastTransform = "", this._observer = null, this._tickerAttached = !1, this.updateTranslation = () => {
|
|
@@ -21,6 +21,7 @@ interface IAudioClipOpts {
|
|
|
21
21
|
* }),
|
|
22
22
|
*/
|
|
23
23
|
export declare class AudioClip extends BaseClip implements IPlaybackCapable {
|
|
24
|
+
readonly type = "Audio";
|
|
24
25
|
static ctx: AudioContext | null;
|
|
25
26
|
ready: IClip['ready'];
|
|
26
27
|
private _meta;
|
|
@@ -47,10 +48,6 @@ export declare class AudioClip extends BaseClip implements IPlaybackCapable {
|
|
|
47
48
|
* Whether to loop the audio (hybrid JSON structure)
|
|
48
49
|
*/
|
|
49
50
|
loop: boolean;
|
|
50
|
-
/**
|
|
51
|
-
* Audio volume level (0-1) (hybrid JSON structure)
|
|
52
|
-
*/
|
|
53
|
-
volume: number;
|
|
54
51
|
/**
|
|
55
52
|
* Load an audio clip from a URL
|
|
56
53
|
* @param url Audio URL
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BaseSprite } from '../sprite/base-sprite';
|
|
2
|
-
import { IClip, IClipMeta } from './iclip';
|
|
2
|
+
import { IClip, IClipMeta, ITransitionInfo } from './iclip';
|
|
3
3
|
import { ClipJSON } from '../json-serialization';
|
|
4
4
|
/**
|
|
5
5
|
* Base class for all clips that extends BaseSprite
|
|
@@ -7,6 +7,7 @@ import { ClipJSON } from '../json-serialization';
|
|
|
7
7
|
* and frame management
|
|
8
8
|
*/
|
|
9
9
|
export declare abstract class BaseClip extends BaseSprite implements IClip {
|
|
10
|
+
abstract readonly type: string;
|
|
10
11
|
private lastVf;
|
|
11
12
|
protected destroyed: boolean;
|
|
12
13
|
/**
|
|
@@ -14,6 +15,10 @@ export declare abstract class BaseClip extends BaseSprite implements IClip {
|
|
|
14
15
|
* Used for serialization and reloading from JSON
|
|
15
16
|
*/
|
|
16
17
|
src: string;
|
|
18
|
+
/**
|
|
19
|
+
* Transition info (optional)
|
|
20
|
+
*/
|
|
21
|
+
transition?: ITransitionInfo;
|
|
17
22
|
abstract tick(time: number): Promise<{
|
|
18
23
|
video?: VideoFrame | ImageBitmap | null;
|
|
19
24
|
audio?: Float32Array[];
|
|
@@ -29,7 +29,7 @@ export interface ICaptionClipOpts {
|
|
|
29
29
|
* @default '#ffffff'
|
|
30
30
|
*/
|
|
31
31
|
fill?: string | number | {
|
|
32
|
-
type:
|
|
32
|
+
type: 'gradient';
|
|
33
33
|
x0: number;
|
|
34
34
|
y0: number;
|
|
35
35
|
x1: number;
|
|
@@ -104,7 +104,7 @@ export interface ICaptionClipOpts {
|
|
|
104
104
|
stroke?: string | number | {
|
|
105
105
|
color: string | number;
|
|
106
106
|
width: number;
|
|
107
|
-
join?:
|
|
107
|
+
join?: 'miter' | 'round' | 'bevel';
|
|
108
108
|
};
|
|
109
109
|
/**
|
|
110
110
|
* Stroke width in pixels (used when stroke is a simple color)
|
|
@@ -115,7 +115,7 @@ export interface ICaptionClipOpts {
|
|
|
115
115
|
* Text alignment ('left', 'center', 'right')
|
|
116
116
|
* @default 'center'
|
|
117
117
|
*/
|
|
118
|
-
align?:
|
|
118
|
+
align?: 'left' | 'center' | 'right';
|
|
119
119
|
/**
|
|
120
120
|
* Drop shadow configuration
|
|
121
121
|
*/
|
|
@@ -163,7 +163,8 @@ export interface ICaptionClipOpts {
|
|
|
163
163
|
* captionClip.duration = 3e6; // 3 seconds
|
|
164
164
|
*/
|
|
165
165
|
export declare class CaptionClip extends BaseClip implements IClip {
|
|
166
|
-
|
|
166
|
+
readonly type = "Caption";
|
|
167
|
+
ready: IClip['ready'];
|
|
167
168
|
private _meta;
|
|
168
169
|
get meta(): {
|
|
169
170
|
duration: number;
|
|
@@ -208,8 +209,8 @@ export declare class CaptionClip extends BaseClip implements IClip {
|
|
|
208
209
|
color: string | number;
|
|
209
210
|
alpha: number;
|
|
210
211
|
blur: number;
|
|
211
|
-
|
|
212
|
-
|
|
212
|
+
distance: number;
|
|
213
|
+
angle: number;
|
|
213
214
|
} | undefined;
|
|
214
215
|
};
|
|
215
216
|
/**
|
|
@@ -239,7 +240,7 @@ export declare class CaptionClip extends BaseClip implements IClip {
|
|
|
239
240
|
private externalRenderer;
|
|
240
241
|
private pixiApp;
|
|
241
242
|
private originalOpts;
|
|
242
|
-
constructor(text: string, opts?: ICaptionClipOpts, renderer?: Application[
|
|
243
|
+
constructor(text: string, opts?: ICaptionClipOpts, renderer?: Application['renderer']);
|
|
243
244
|
private lastLoggedTime;
|
|
244
245
|
updateState(currentTime: number): void;
|
|
245
246
|
/**
|
|
@@ -252,11 +253,11 @@ export declare class CaptionClip extends BaseClip implements IClip {
|
|
|
252
253
|
/**
|
|
253
254
|
* Set an external renderer (e.g., from Studio) to avoid creating our own Pixi App
|
|
254
255
|
*/
|
|
255
|
-
setRenderer(renderer: Application[
|
|
256
|
+
setRenderer(renderer: Application['renderer']): void;
|
|
256
257
|
private getRenderer;
|
|
257
258
|
tick(time: number): Promise<{
|
|
258
259
|
video: ImageBitmap;
|
|
259
|
-
state:
|
|
260
|
+
state: 'success';
|
|
260
261
|
}>;
|
|
261
262
|
split(_time: number): Promise<[this, this]>;
|
|
262
263
|
addEffect(effect: {
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { BaseClip } from './base-clip';
|
|
2
|
+
import { IClip } from './iclip';
|
|
3
|
+
import { EffectKey } from '../effect/glsl/gl-effect';
|
|
4
|
+
export declare class EffectClip extends BaseClip {
|
|
5
|
+
readonly type = "Effect";
|
|
6
|
+
ready: IClip['ready'];
|
|
7
|
+
private _meta;
|
|
8
|
+
get meta(): {
|
|
9
|
+
duration: number;
|
|
10
|
+
width: number;
|
|
11
|
+
height: number;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Unique identifier for this clip instance
|
|
15
|
+
*/
|
|
16
|
+
id: string;
|
|
17
|
+
/**
|
|
18
|
+
* The effect configuration
|
|
19
|
+
*/
|
|
20
|
+
effect: {
|
|
21
|
+
id: string;
|
|
22
|
+
key: EffectKey;
|
|
23
|
+
name: string;
|
|
24
|
+
};
|
|
25
|
+
constructor(effectKey: EffectKey);
|
|
26
|
+
clone(): Promise<this>;
|
|
27
|
+
tick(_time: number): Promise<{
|
|
28
|
+
video: ImageBitmap | undefined;
|
|
29
|
+
state: 'success';
|
|
30
|
+
}>;
|
|
31
|
+
split(_time: number): Promise<[this, this]>;
|
|
32
|
+
toJSON(main?: boolean): any;
|
|
33
|
+
/**
|
|
34
|
+
* Create an EffectClip instance from a JSON object
|
|
35
|
+
*/
|
|
36
|
+
static fromObject(json: any): Promise<EffectClip>;
|
|
37
|
+
}
|
package/dist/clips/iclip.d.ts
CHANGED
|
@@ -4,6 +4,16 @@ export interface IClipMeta {
|
|
|
4
4
|
height: number;
|
|
5
5
|
duration: number;
|
|
6
6
|
}
|
|
7
|
+
export interface ITransitionInfo {
|
|
8
|
+
name: string;
|
|
9
|
+
duration: number;
|
|
10
|
+
textureUrl?: string;
|
|
11
|
+
prevClipId?: string;
|
|
12
|
+
fromClipId?: string;
|
|
13
|
+
toClipId?: string;
|
|
14
|
+
start?: number;
|
|
15
|
+
end?: number;
|
|
16
|
+
}
|
|
7
17
|
/**
|
|
8
18
|
* Interface that all clips must implement
|
|
9
19
|
*
|
|
@@ -18,6 +28,10 @@ export interface IClipMeta {
|
|
|
18
28
|
export interface IClip extends Omit<BaseSprite, 'destroy' | 'ready'> {
|
|
19
29
|
destroy: () => void;
|
|
20
30
|
readonly ready: Promise<IClipMeta>;
|
|
31
|
+
/**
|
|
32
|
+
* Clip type (e.g., 'video', 'image', 'text', 'audio')
|
|
33
|
+
*/
|
|
34
|
+
readonly type: string;
|
|
21
35
|
/**
|
|
22
36
|
* Extract data from clip at specified time
|
|
23
37
|
* @param time Time in microseconds
|
|
@@ -65,6 +79,14 @@ export interface IClip extends Omit<BaseSprite, 'destroy' | 'ready'> {
|
|
|
65
79
|
* @param renderer The PixiJS renderer to use
|
|
66
80
|
*/
|
|
67
81
|
setRenderer?(renderer: any): void;
|
|
82
|
+
/**
|
|
83
|
+
* Transition info (optional)
|
|
84
|
+
*/
|
|
85
|
+
transition?: ITransitionInfo;
|
|
86
|
+
/**
|
|
87
|
+
* Audio volume level (0-1)
|
|
88
|
+
*/
|
|
89
|
+
volume: number;
|
|
68
90
|
}
|
|
69
91
|
/**
|
|
70
92
|
* Optional interface for clips that support HTML media element playback
|
|
@@ -26,7 +26,8 @@ type AnimateImgType = 'avif' | 'webp' | 'png' | 'gif';
|
|
|
26
26
|
*
|
|
27
27
|
* @see [Video composition](https://webav-tech.github.io/WebAV/demo/2_1-concat-video)
|
|
28
28
|
*/
|
|
29
|
-
export declare class ImageClip extends BaseClip {
|
|
29
|
+
export declare class ImageClip extends BaseClip implements IClip {
|
|
30
|
+
readonly type = "Image";
|
|
30
31
|
ready: IClip['ready'];
|
|
31
32
|
private _meta;
|
|
32
33
|
/**
|
package/dist/clips/index.d.ts
CHANGED
|
@@ -10,7 +10,7 @@ export interface ITextClipOpts {
|
|
|
10
10
|
fontSize?: number;
|
|
11
11
|
/**
|
|
12
12
|
* Font family
|
|
13
|
-
* @default '
|
|
13
|
+
* @default 'Roboto'
|
|
14
14
|
*/
|
|
15
15
|
fontFamily?: string;
|
|
16
16
|
/**
|
|
@@ -28,7 +28,7 @@ export interface ITextClipOpts {
|
|
|
28
28
|
* @default '#ffffff'
|
|
29
29
|
*/
|
|
30
30
|
fill?: string | number | {
|
|
31
|
-
type:
|
|
31
|
+
type: 'gradient';
|
|
32
32
|
x0: number;
|
|
33
33
|
y0: number;
|
|
34
34
|
x1: number;
|
|
@@ -44,8 +44,8 @@ export interface ITextClipOpts {
|
|
|
44
44
|
stroke?: string | number | {
|
|
45
45
|
color: string | number;
|
|
46
46
|
width: number;
|
|
47
|
-
join?:
|
|
48
|
-
cap?:
|
|
47
|
+
join?: 'miter' | 'round' | 'bevel';
|
|
48
|
+
cap?: 'butt' | 'round' | 'square';
|
|
49
49
|
miterLimit?: number;
|
|
50
50
|
};
|
|
51
51
|
/**
|
|
@@ -57,7 +57,16 @@ export interface ITextClipOpts {
|
|
|
57
57
|
* Text alignment ('left', 'center', 'right')
|
|
58
58
|
* @default 'left'
|
|
59
59
|
*/
|
|
60
|
-
align?:
|
|
60
|
+
align?: 'left' | 'center' | 'right';
|
|
61
|
+
/**
|
|
62
|
+
* Alias for align to match UI property naming
|
|
63
|
+
*/
|
|
64
|
+
textAlign?: 'left' | 'center' | 'right';
|
|
65
|
+
/**
|
|
66
|
+
* Vertical alignment ('top', 'center', 'bottom')
|
|
67
|
+
* @default 'top'
|
|
68
|
+
*/
|
|
69
|
+
verticalAlign?: 'top' | 'center' | 'bottom' | 'underline' | 'overline' | 'strikethrough';
|
|
61
70
|
/**
|
|
62
71
|
* Drop shadow configuration
|
|
63
72
|
*/
|
|
@@ -88,6 +97,16 @@ export interface ITextClipOpts {
|
|
|
88
97
|
* @default 0
|
|
89
98
|
*/
|
|
90
99
|
letterSpacing?: number;
|
|
100
|
+
/**
|
|
101
|
+
* Text case transformation
|
|
102
|
+
* @default 'none'
|
|
103
|
+
*/
|
|
104
|
+
textCase?: 'none' | 'uppercase' | 'lowercase' | 'title';
|
|
105
|
+
/**
|
|
106
|
+
* Text decoration ('none', 'underline', 'line-through', 'overline')
|
|
107
|
+
* @default 'none'
|
|
108
|
+
*/
|
|
109
|
+
textDecoration?: 'none' | 'underline' | 'line-through' | 'overline';
|
|
91
110
|
}
|
|
92
111
|
/**
|
|
93
112
|
* Text clip using PixiJS Text for rendering
|
|
@@ -108,63 +127,45 @@ export interface ITextClipOpts {
|
|
|
108
127
|
* textClip.duration = 5e6; // 5 seconds
|
|
109
128
|
*/
|
|
110
129
|
export declare class TextClip extends BaseClip {
|
|
111
|
-
|
|
130
|
+
readonly type = "Text";
|
|
131
|
+
ready: IClip['ready'];
|
|
112
132
|
private _meta;
|
|
113
133
|
get meta(): {
|
|
114
134
|
duration: number;
|
|
115
135
|
width: number;
|
|
116
136
|
height: number;
|
|
117
137
|
};
|
|
138
|
+
get width(): number;
|
|
139
|
+
set width(v: number);
|
|
140
|
+
get height(): number;
|
|
141
|
+
set height(v: number);
|
|
142
|
+
private _text;
|
|
118
143
|
/**
|
|
119
144
|
* Text content (hybrid JSON structure)
|
|
120
145
|
*/
|
|
121
|
-
text: string;
|
|
146
|
+
get text(): string;
|
|
147
|
+
set text(v: string);
|
|
122
148
|
/**
|
|
123
149
|
* Text styling (hybrid JSON structure)
|
|
124
150
|
* Provides direct access to styling properties
|
|
125
151
|
*/
|
|
126
|
-
get style():
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
stroke: {
|
|
144
|
-
color: string | number;
|
|
145
|
-
width: number;
|
|
146
|
-
join: "miter" | "round" | "bevel" | undefined;
|
|
147
|
-
cap: "round" | "butt" | "square" | undefined;
|
|
148
|
-
miterLimit: number | undefined;
|
|
149
|
-
} | {
|
|
150
|
-
color: string | number;
|
|
151
|
-
width: number;
|
|
152
|
-
join?: undefined;
|
|
153
|
-
cap?: undefined;
|
|
154
|
-
miterLimit?: undefined;
|
|
155
|
-
} | undefined;
|
|
156
|
-
shadow: {
|
|
157
|
-
color: string | number;
|
|
158
|
-
alpha: number;
|
|
159
|
-
blur: number;
|
|
160
|
-
offsetX: number;
|
|
161
|
-
offsetY: number;
|
|
162
|
-
} | undefined;
|
|
163
|
-
wordWrap: boolean | undefined;
|
|
164
|
-
wordWrapWidth: number | undefined;
|
|
165
|
-
lineHeight: number | undefined;
|
|
166
|
-
letterSpacing: number | undefined;
|
|
167
|
-
};
|
|
152
|
+
get style(): any;
|
|
153
|
+
set style(opts: Partial<ITextClipOpts>);
|
|
154
|
+
/**
|
|
155
|
+
* Text alignment proxy for compatibility with UI
|
|
156
|
+
*/
|
|
157
|
+
get textAlign(): 'left' | 'center' | 'right';
|
|
158
|
+
set textAlign(v: 'left' | 'center' | 'right');
|
|
159
|
+
/**
|
|
160
|
+
* Vertical alignment or decoration proxy
|
|
161
|
+
*/
|
|
162
|
+
get verticalAlign(): string;
|
|
163
|
+
set verticalAlign(v: string);
|
|
164
|
+
/**
|
|
165
|
+
* Text case proxy
|
|
166
|
+
*/
|
|
167
|
+
get textCase(): string;
|
|
168
|
+
set textCase(v: 'none' | 'uppercase' | 'lowercase' | 'title');
|
|
168
169
|
private pixiText;
|
|
169
170
|
private textStyle;
|
|
170
171
|
private renderTexture;
|
|
@@ -185,13 +186,13 @@ export declare class TextClip extends BaseClip {
|
|
|
185
186
|
startTime: number;
|
|
186
187
|
duration: number;
|
|
187
188
|
}>;
|
|
188
|
-
constructor(text: string, opts?: ITextClipOpts, renderer?: Application[
|
|
189
|
+
constructor(text: string, opts?: ITextClipOpts, renderer?: Application['renderer']);
|
|
189
190
|
/**
|
|
190
191
|
* Set an external renderer (e.g., from Studio) to avoid creating our own Pixi App
|
|
191
192
|
* This is an optimization for Studio preview
|
|
192
193
|
* Can be called before ready() completes
|
|
193
194
|
*/
|
|
194
|
-
setRenderer(renderer: Application[
|
|
195
|
+
setRenderer(renderer: Application['renderer']): void;
|
|
195
196
|
/**
|
|
196
197
|
* Get the renderer for rendering text to RenderTexture
|
|
197
198
|
* Creates a minimal renderer as fallback if no external renderer is provided
|
|
@@ -206,7 +207,7 @@ export declare class TextClip extends BaseClip {
|
|
|
206
207
|
getTexture(): Promise<Texture | null>;
|
|
207
208
|
tick(_time: number): Promise<{
|
|
208
209
|
video: ImageBitmap;
|
|
209
|
-
state:
|
|
210
|
+
state: 'success';
|
|
210
211
|
}>;
|
|
211
212
|
split(_time: number): Promise<[this, this]>;
|
|
212
213
|
addEffect(effect: {
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { BaseClip } from './base-clip';
|
|
2
|
+
import { IClip } from './iclip';
|
|
3
|
+
import { TransitionKey } from '../transition/glsl/gl-transition';
|
|
4
|
+
export declare class TransitionClip extends BaseClip {
|
|
5
|
+
readonly type = "Transition";
|
|
6
|
+
ready: IClip['ready'];
|
|
7
|
+
private _meta;
|
|
8
|
+
get meta(): {
|
|
9
|
+
duration: number;
|
|
10
|
+
width: number;
|
|
11
|
+
height: number;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Unique identifier for this clip instance
|
|
15
|
+
*/
|
|
16
|
+
id: string;
|
|
17
|
+
/**
|
|
18
|
+
* The transition configuration
|
|
19
|
+
*/
|
|
20
|
+
transitionEffect: {
|
|
21
|
+
id: string;
|
|
22
|
+
key: TransitionKey;
|
|
23
|
+
name: string;
|
|
24
|
+
};
|
|
25
|
+
constructor(transitionKey: TransitionKey);
|
|
26
|
+
clone(): Promise<this>;
|
|
27
|
+
tick(_time: number): Promise<{
|
|
28
|
+
video: ImageBitmap | undefined;
|
|
29
|
+
state: 'success';
|
|
30
|
+
}>;
|
|
31
|
+
split(_time: number): Promise<[this, this]>;
|
|
32
|
+
toJSON(main?: boolean): any;
|
|
33
|
+
/**
|
|
34
|
+
* Create a TransitionClip instance from a JSON object
|
|
35
|
+
*/
|
|
36
|
+
static fromObject(json: any): Promise<TransitionClip>;
|
|
37
|
+
}
|
|
@@ -20,7 +20,7 @@ export interface IMP4ClipOpts {
|
|
|
20
20
|
*/
|
|
21
21
|
__unsafe_hardwareAcceleration__?: HardwarePreference;
|
|
22
22
|
}
|
|
23
|
-
type ExtMP4Sample = Omit<MP4Sample,
|
|
23
|
+
type ExtMP4Sample = Omit<MP4Sample, 'data'> & {
|
|
24
24
|
is_idr: boolean;
|
|
25
25
|
deleted?: boolean;
|
|
26
26
|
data: null | Uint8Array;
|
|
@@ -32,7 +32,7 @@ type ExtMP4Sample = Omit<MP4Sample, "data"> & {
|
|
|
32
32
|
*
|
|
33
33
|
* @example
|
|
34
34
|
* // Load video clip asynchronously
|
|
35
|
-
* const videoClip = await VideoClip.fromUrl(
|
|
35
|
+
* const videoClip = await VideoClip.fromUrl('clip.mp4', {
|
|
36
36
|
* x: 0,
|
|
37
37
|
* y: 0,
|
|
38
38
|
* width: 1920,
|
|
@@ -58,9 +58,10 @@ type ExtMP4Sample = Omit<MP4Sample, "data"> & {
|
|
|
58
58
|
* @see [Decode and play video](https://webav-tech.github.io/WebAV/demo/1_1-decode-video)
|
|
59
59
|
*/
|
|
60
60
|
export declare class VideoClip extends BaseClip implements IPlaybackCapable {
|
|
61
|
+
readonly type = "Video";
|
|
61
62
|
private insId;
|
|
62
63
|
private logger;
|
|
63
|
-
ready: IClip[
|
|
64
|
+
ready: IClip['ready'];
|
|
64
65
|
private _meta;
|
|
65
66
|
get meta(): {
|
|
66
67
|
duration: number;
|
|
@@ -81,7 +82,6 @@ export declare class VideoClip extends BaseClip implements IPlaybackCapable {
|
|
|
81
82
|
/** Store video transform and rotation info, currently only restores rotation */
|
|
82
83
|
private parsedMatrix;
|
|
83
84
|
private vfRotater;
|
|
84
|
-
private volume;
|
|
85
85
|
private videoSamples;
|
|
86
86
|
private audioSamples;
|
|
87
87
|
private videoFrameFinder;
|
|
@@ -113,7 +113,7 @@ export declare class VideoClip extends BaseClip implements IPlaybackCapable {
|
|
|
113
113
|
* @returns Promise that resolves to a video clip
|
|
114
114
|
*
|
|
115
115
|
* @example
|
|
116
|
-
* const videoClip = await VideoClip.fromUrl(
|
|
116
|
+
* const videoClip = await VideoClip.fromUrl('clip.mp4', {
|
|
117
117
|
* x: 0,
|
|
118
118
|
* y: 0,
|
|
119
119
|
* width: 1920,
|
|
@@ -134,7 +134,7 @@ export declare class VideoClip extends BaseClip implements IPlaybackCapable {
|
|
|
134
134
|
*
|
|
135
135
|
* @see [Remove video green screen background](https://webav-tech.github.io/WebAV/demo/3_2-chromakey-video)
|
|
136
136
|
*/
|
|
137
|
-
tickInterceptor: <T extends Awaited<ReturnType<VideoClip[
|
|
137
|
+
tickInterceptor: <T extends Awaited<ReturnType<VideoClip['tick']>>>(time: number, tickRet: T) => Promise<T>;
|
|
138
138
|
/**
|
|
139
139
|
* Get image frame and audio data at specified time
|
|
140
140
|
* @param time Time in microseconds
|
|
@@ -142,7 +142,7 @@ export declare class VideoClip extends BaseClip implements IPlaybackCapable {
|
|
|
142
142
|
tick(time: number): Promise<{
|
|
143
143
|
video?: VideoFrame;
|
|
144
144
|
audio: Float32Array[];
|
|
145
|
-
state:
|
|
145
|
+
state: 'success' | 'done';
|
|
146
146
|
}>;
|
|
147
147
|
split(time: number): Promise<[this, this]>;
|
|
148
148
|
addEffect(effect: {
|