melies-video-editor 0.1.3 → 0.1.5
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 +44 -44
- package/dist/index.cjs +8 -8
- package/dist/index.js +2440 -1754
- package/dist/style.css +1 -1
- package/package.json +74 -74
- package/dist/types/App.d.ts +0 -33
- package/dist/types/audioControl.d.ts +0 -29
- package/dist/types/custom.d.ts +0 -14
- package/dist/types/dev/DevRoot.d.ts +0 -4
- package/dist/types/dev/HostApp.d.ts +0 -8
- package/dist/types/dev/opfs.d.ts +0 -23
- package/dist/types/footageBin.d.ts +0 -12
- package/dist/types/index.d.ts +0 -1
- package/dist/types/lib/index.d.ts +0 -3
- package/dist/types/lottieControl.d.ts +0 -28
- package/dist/types/mediaCache.d.ts +0 -41
- package/dist/types/mock.d.ts +0 -25
- package/dist/types/player.d.ts +0 -18
- package/dist/types/useCoarsePointer.d.ts +0 -1
- package/dist/types/videoControl.d.ts +0 -44
package/package.json
CHANGED
|
@@ -1,74 +1,74 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "melies-video-editor",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "A React video timeline editor GUI built on @xzdarcy/react-timeline-editor.",
|
|
5
|
-
"type": "module",
|
|
6
|
-
"license": "MIT",
|
|
7
|
-
"keywords": [
|
|
8
|
-
"timeline",
|
|
9
|
-
"video",
|
|
10
|
-
"editor",
|
|
11
|
-
"react",
|
|
12
|
-
"base44"
|
|
13
|
-
],
|
|
14
|
-
"main": "./dist/index.cjs",
|
|
15
|
-
"module": "./dist/index.js",
|
|
16
|
-
"types": "./dist/types/lib/index.d.ts",
|
|
17
|
-
"exports": {
|
|
18
|
-
".": {
|
|
19
|
-
"types": "./dist/types/lib/index.d.ts",
|
|
20
|
-
"import": "./dist/index.js",
|
|
21
|
-
"require": "./dist/index.cjs"
|
|
22
|
-
},
|
|
23
|
-
"./style.css": "./dist/style.css"
|
|
24
|
-
},
|
|
25
|
-
"files": [
|
|
26
|
-
"dist",
|
|
27
|
-
"README.md",
|
|
28
|
-
"LICENSE"
|
|
29
|
-
],
|
|
30
|
-
"sideEffects": [
|
|
31
|
-
"**/*.css"
|
|
32
|
-
],
|
|
33
|
-
"scripts": {
|
|
34
|
-
"dev": "vite --host",
|
|
35
|
-
"dev:server": "node server/index.mjs",
|
|
36
|
-
"build": "tsc -b && vite build && tsc -p tsconfig.types.json",
|
|
37
|
-
"lint": "eslint .",
|
|
38
|
-
"preview": "vite preview"
|
|
39
|
-
},
|
|
40
|
-
"dependencies": {
|
|
41
|
-
"@ant-design/icons": "4.7.0",
|
|
42
|
-
"@dnd-kit/core": "^6.3.1",
|
|
43
|
-
"@xzdarcy/react-timeline-editor": "0.1.8",
|
|
44
|
-
"antd": "4.21.6",
|
|
45
|
-
"howler": "2.2.3",
|
|
46
|
-
"lodash": "4.17.21",
|
|
47
|
-
"lottie-web": "5.10.0"
|
|
48
|
-
},
|
|
49
|
-
"peerDependencies": {
|
|
50
|
-
"react": "^18.0.0",
|
|
51
|
-
"react-dom": "^18.0.0"
|
|
52
|
-
},
|
|
53
|
-
"devDependencies": {
|
|
54
|
-
"@eslint/js": "^9.39.1",
|
|
55
|
-
"@types/node": "^24.10.1",
|
|
56
|
-
"@types/howler": "^2.2.12",
|
|
57
|
-
"@types/react": "^18.3.18",
|
|
58
|
-
"@types/react-dom": "^18.3.5",
|
|
59
|
-
"@vitejs/plugin-react": "^5.1.1",
|
|
60
|
-
"eslint": "^9.39.1",
|
|
61
|
-
"eslint-plugin-react-hooks": "^7.0.1",
|
|
62
|
-
"eslint-plugin-react-refresh": "^0.4.24",
|
|
63
|
-
"express": "^4.21.2",
|
|
64
|
-
"globals": "^16.5.0",
|
|
65
|
-
"less": "^4.5.1",
|
|
66
|
-
"multer": "^2.0.2",
|
|
67
|
-
"react": "^18.2.0",
|
|
68
|
-
"react-dom": "^18.2.0",
|
|
69
|
-
"typescript": "~5.9.3",
|
|
70
|
-
"typescript-eslint": "^8.46.4",
|
|
71
|
-
"vite": "^7.2.4"
|
|
72
|
-
},
|
|
73
|
-
"packageManager": "pnpm@8.7.1+sha1.cb9fb56ca170a718619cd9bc669d99ddadc1afb5"
|
|
74
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "melies-video-editor",
|
|
3
|
+
"version": "0.1.5",
|
|
4
|
+
"description": "A React video timeline editor GUI built on @xzdarcy/react-timeline-editor.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"keywords": [
|
|
8
|
+
"timeline",
|
|
9
|
+
"video",
|
|
10
|
+
"editor",
|
|
11
|
+
"react",
|
|
12
|
+
"base44"
|
|
13
|
+
],
|
|
14
|
+
"main": "./dist/index.cjs",
|
|
15
|
+
"module": "./dist/index.js",
|
|
16
|
+
"types": "./dist/types/lib/index.d.ts",
|
|
17
|
+
"exports": {
|
|
18
|
+
".": {
|
|
19
|
+
"types": "./dist/types/lib/index.d.ts",
|
|
20
|
+
"import": "./dist/index.js",
|
|
21
|
+
"require": "./dist/index.cjs"
|
|
22
|
+
},
|
|
23
|
+
"./style.css": "./dist/style.css"
|
|
24
|
+
},
|
|
25
|
+
"files": [
|
|
26
|
+
"dist",
|
|
27
|
+
"README.md",
|
|
28
|
+
"LICENSE"
|
|
29
|
+
],
|
|
30
|
+
"sideEffects": [
|
|
31
|
+
"**/*.css"
|
|
32
|
+
],
|
|
33
|
+
"scripts": {
|
|
34
|
+
"dev": "vite --host",
|
|
35
|
+
"dev:server": "node server/index.mjs",
|
|
36
|
+
"build": "tsc -b && vite build && tsc -p tsconfig.types.json",
|
|
37
|
+
"lint": "eslint .",
|
|
38
|
+
"preview": "vite preview"
|
|
39
|
+
},
|
|
40
|
+
"dependencies": {
|
|
41
|
+
"@ant-design/icons": "4.7.0",
|
|
42
|
+
"@dnd-kit/core": "^6.3.1",
|
|
43
|
+
"@xzdarcy/react-timeline-editor": "0.1.8",
|
|
44
|
+
"antd": "4.21.6",
|
|
45
|
+
"howler": "2.2.3",
|
|
46
|
+
"lodash": "4.17.21",
|
|
47
|
+
"lottie-web": "5.10.0"
|
|
48
|
+
},
|
|
49
|
+
"peerDependencies": {
|
|
50
|
+
"react": "^18.0.0",
|
|
51
|
+
"react-dom": "^18.0.0"
|
|
52
|
+
},
|
|
53
|
+
"devDependencies": {
|
|
54
|
+
"@eslint/js": "^9.39.1",
|
|
55
|
+
"@types/node": "^24.10.1",
|
|
56
|
+
"@types/howler": "^2.2.12",
|
|
57
|
+
"@types/react": "^18.3.18",
|
|
58
|
+
"@types/react-dom": "^18.3.5",
|
|
59
|
+
"@vitejs/plugin-react": "^5.1.1",
|
|
60
|
+
"eslint": "^9.39.1",
|
|
61
|
+
"eslint-plugin-react-hooks": "^7.0.1",
|
|
62
|
+
"eslint-plugin-react-refresh": "^0.4.24",
|
|
63
|
+
"express": "^4.21.2",
|
|
64
|
+
"globals": "^16.5.0",
|
|
65
|
+
"less": "^4.5.1",
|
|
66
|
+
"multer": "^2.0.2",
|
|
67
|
+
"react": "^18.2.0",
|
|
68
|
+
"react-dom": "^18.2.0",
|
|
69
|
+
"typescript": "~5.9.3",
|
|
70
|
+
"typescript-eslint": "^8.46.4",
|
|
71
|
+
"vite": "^7.2.4"
|
|
72
|
+
},
|
|
73
|
+
"packageManager": "pnpm@8.7.1+sha1.cb9fb56ca170a718619cd9bc669d99ddadc1afb5"
|
|
74
|
+
}
|
package/dist/types/App.d.ts
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import './index.less';
|
|
2
|
-
export type MeliesVideoEditorProps = {
|
|
3
|
-
/**
|
|
4
|
-
* URLs (often blob: URLs) to show in the footage bin.
|
|
5
|
-
* When omitted or empty, the footage bin will be empty.
|
|
6
|
-
*/
|
|
7
|
-
footageUrls?: string[];
|
|
8
|
-
/**
|
|
9
|
-
* Local Files to show in the footage bin.
|
|
10
|
-
*
|
|
11
|
-
* This is ideal for OPFS (Base44 can load from OPFS and pass `File`s here).
|
|
12
|
-
*/
|
|
13
|
-
footageFiles?: File[];
|
|
14
|
-
/**
|
|
15
|
-
* Handle-like objects (e.g. `FileSystemFileHandle`) that can yield `File`s.
|
|
16
|
-
*
|
|
17
|
-
* We intentionally avoid depending on `FileSystemFileHandle` directly so
|
|
18
|
-
* consumers without that DOM lib type can still compile.
|
|
19
|
-
*/
|
|
20
|
-
footageFileHandles?: Array<{
|
|
21
|
-
getFile: () => Promise<File>;
|
|
22
|
-
name?: string;
|
|
23
|
-
}>;
|
|
24
|
-
/**
|
|
25
|
-
* When true, automatically place `footageUrls` onto the timeline on first initialization
|
|
26
|
-
* (one after another, starting at t=0).
|
|
27
|
-
*
|
|
28
|
-
* Defaults to false.
|
|
29
|
-
*/
|
|
30
|
-
autoPlaceFootage?: boolean;
|
|
31
|
-
};
|
|
32
|
-
declare const MeliesVideoEditor: ({ footageUrls, footageFiles, footageFileHandles, autoPlaceFootage, }: MeliesVideoEditorProps) => import("react/jsx-runtime").JSX.Element;
|
|
33
|
-
export default MeliesVideoEditor;
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import type { TimelineEngine } from '@xzdarcy/react-timeline-editor';
|
|
2
|
-
declare class AudioControl {
|
|
3
|
-
private howlBySrc;
|
|
4
|
-
private activeByActionId;
|
|
5
|
-
private getHowl;
|
|
6
|
-
/**
|
|
7
|
-
* Ensure the underlying WebAudio context is resumed.
|
|
8
|
-
*
|
|
9
|
-
* Some browsers (notably iOS Safari) block audio playback until a user gesture
|
|
10
|
-
* resumes the AudioContext. Timeline engine callbacks may occur outside the
|
|
11
|
-
* original gesture call stack, so we explicitly unlock in the toolbar handler.
|
|
12
|
-
*/
|
|
13
|
-
unlock(): void;
|
|
14
|
-
warm(src: string): void;
|
|
15
|
-
private seekForEngineTime;
|
|
16
|
-
start(data: {
|
|
17
|
-
actionId: string;
|
|
18
|
-
engine: TimelineEngine;
|
|
19
|
-
src: string;
|
|
20
|
-
startTime: number;
|
|
21
|
-
time: number;
|
|
22
|
-
offset?: number;
|
|
23
|
-
}): void;
|
|
24
|
-
stop(data: {
|
|
25
|
-
actionId: string;
|
|
26
|
-
}): void;
|
|
27
|
-
}
|
|
28
|
-
declare const _default: AudioControl;
|
|
29
|
-
export default _default;
|
package/dist/types/custom.d.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import type { FC } from 'react';
|
|
2
|
-
import type { CustomTimelineAction, CusTomTimelineRow } from './mock';
|
|
3
|
-
export declare const CustomRender0: FC<{
|
|
4
|
-
action: CustomTimelineAction;
|
|
5
|
-
row: CusTomTimelineRow;
|
|
6
|
-
}>;
|
|
7
|
-
export declare const CustomRender1: FC<{
|
|
8
|
-
action: CustomTimelineAction;
|
|
9
|
-
row: CusTomTimelineRow;
|
|
10
|
-
}>;
|
|
11
|
-
export declare const CustomRender2: FC<{
|
|
12
|
-
action: CustomTimelineAction;
|
|
13
|
-
row: CusTomTimelineRow;
|
|
14
|
-
}>;
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export default function HostApp({ footageUrls, footageFiles, footageFileHandles, }: {
|
|
2
|
-
footageUrls?: string[];
|
|
3
|
-
footageFiles?: File[];
|
|
4
|
-
footageFileHandles?: Array<{
|
|
5
|
-
getFile: () => Promise<File>;
|
|
6
|
-
name?: string;
|
|
7
|
-
}>;
|
|
8
|
-
}): import("react/jsx-runtime").JSX.Element;
|
package/dist/types/dev/opfs.d.ts
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
type OpfsRoot = FileSystemDirectoryHandle;
|
|
2
|
-
type Maybe<T> = T | null | undefined;
|
|
3
|
-
export declare const ensureOpfsRoot: () => Promise<OpfsRoot>;
|
|
4
|
-
export declare const ensureDir: (root: OpfsRoot, path: string) => Promise<FileSystemDirectoryHandle>;
|
|
5
|
-
export declare const writeBlobToOpfs: (opts: {
|
|
6
|
-
root: OpfsRoot;
|
|
7
|
-
dirPath: string;
|
|
8
|
-
fileName: string;
|
|
9
|
-
blob: Blob;
|
|
10
|
-
}) => Promise<{
|
|
11
|
-
fileHandle: FileSystemFileHandle;
|
|
12
|
-
path: string;
|
|
13
|
-
}>;
|
|
14
|
-
export declare const clearDir: (opts: {
|
|
15
|
-
root: OpfsRoot;
|
|
16
|
-
dirPath: string;
|
|
17
|
-
}) => Promise<void>;
|
|
18
|
-
export declare const listFiles: (opts: {
|
|
19
|
-
root: OpfsRoot;
|
|
20
|
-
dirPath: string;
|
|
21
|
-
}) => Promise<FileSystemFileHandle[]>;
|
|
22
|
-
export declare const getFileFromPublicUrl: (url: string, fallbackName?: Maybe<string>) => Promise<File>;
|
|
23
|
-
export {};
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
export type FootageItem = {
|
|
2
|
-
id: string;
|
|
3
|
-
kind: 'video' | 'audio';
|
|
4
|
-
name: string;
|
|
5
|
-
src: string;
|
|
6
|
-
/** Optional lower-res/proxy source for smooth preview playback. */
|
|
7
|
-
previewSrc?: string;
|
|
8
|
-
defaultDuration?: number;
|
|
9
|
-
};
|
|
10
|
-
export declare const FOOTAGE_BIN: FootageItem[];
|
|
11
|
-
export declare const VIDEO_ITEMS: FootageItem[];
|
|
12
|
-
export declare const AUDIO_ITEMS: FootageItem[];
|
package/dist/types/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import 'antd/dist/antd.css';
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { type AnimationItem } from 'lottie-web';
|
|
2
|
-
declare class LottieControl {
|
|
3
|
-
cacheMap: Record<string, AnimationItem>;
|
|
4
|
-
private _goToAndStop;
|
|
5
|
-
enter(data: {
|
|
6
|
-
id: string;
|
|
7
|
-
src: string;
|
|
8
|
-
startTime: number;
|
|
9
|
-
endTime: number;
|
|
10
|
-
time: number;
|
|
11
|
-
}): void;
|
|
12
|
-
update(data: {
|
|
13
|
-
id: string;
|
|
14
|
-
src: string;
|
|
15
|
-
startTime: number;
|
|
16
|
-
endTime: number;
|
|
17
|
-
time: number;
|
|
18
|
-
}): void;
|
|
19
|
-
leave(data: {
|
|
20
|
-
id: string;
|
|
21
|
-
startTime: number;
|
|
22
|
-
endTime: number;
|
|
23
|
-
time: number;
|
|
24
|
-
}): void;
|
|
25
|
-
destroy(): void;
|
|
26
|
-
}
|
|
27
|
-
declare const _default: LottieControl;
|
|
28
|
-
export default _default;
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
type MediaKind = 'video' | 'audio' | 'other';
|
|
2
|
-
declare const guessKind: (src: string) => MediaKind;
|
|
3
|
-
declare class MediaCache {
|
|
4
|
-
private blobUrlBySrc;
|
|
5
|
-
private pendingBySrc;
|
|
6
|
-
private metaBySrc;
|
|
7
|
-
registerSrcMeta(src: string, meta: {
|
|
8
|
-
name?: string;
|
|
9
|
-
mimeType?: string;
|
|
10
|
-
}): void;
|
|
11
|
-
getSrcMeta(src: string): {
|
|
12
|
-
name?: string;
|
|
13
|
-
mimeType?: string;
|
|
14
|
-
} | undefined;
|
|
15
|
-
/**
|
|
16
|
-
* Preloads a URL into memory and returns a blob: URL.
|
|
17
|
-
* Useful to avoid runtime buffering/stalls when seeking frequently.
|
|
18
|
-
*/
|
|
19
|
-
preloadToBlobUrl(src: string): Promise<string>;
|
|
20
|
-
/** Returns a blob URL if available, otherwise the original `src`. */
|
|
21
|
-
resolve(src: string): string;
|
|
22
|
-
/** Starts preload in background (non-blocking). */
|
|
23
|
-
warm(src: string): void;
|
|
24
|
-
/**
|
|
25
|
-
* Preload a list of srcs with bounded concurrency.
|
|
26
|
-
*
|
|
27
|
-
* This is useful when you know ahead of time which assets will be scrubbed/seeked,
|
|
28
|
-
* so we can eliminate network stalls during interaction.
|
|
29
|
-
*/
|
|
30
|
-
warmAll(srcs: Iterable<string>, opts?: {
|
|
31
|
-
/** Maximum number of concurrent fetches. Defaults to 3. */
|
|
32
|
-
concurrency?: number;
|
|
33
|
-
/** Yield back to the event loop between items. Defaults to true. */
|
|
34
|
-
yieldBetween?: boolean;
|
|
35
|
-
}): Promise<void>;
|
|
36
|
-
/** Convenience: preload all unique action.data.src from editor data. */
|
|
37
|
-
warmFromEditorData(editorData: unknown): void;
|
|
38
|
-
}
|
|
39
|
-
declare const mediaCache: MediaCache;
|
|
40
|
-
export default mediaCache;
|
|
41
|
-
export { guessKind };
|
package/dist/types/mock.d.ts
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import type { TimelineAction, TimelineEffect, TimelineRow } from '@xzdarcy/react-timeline-editor';
|
|
2
|
-
export declare const scaleWidth = 160;
|
|
3
|
-
export declare const scale = 5;
|
|
4
|
-
export declare const startLeft = 20;
|
|
5
|
-
export interface CustomTimelineAction extends TimelineAction {
|
|
6
|
-
data: {
|
|
7
|
-
src: string;
|
|
8
|
-
previewSrc?: string;
|
|
9
|
-
name: string;
|
|
10
|
-
/** Video lane index (0=V1, 1=V2). Higher value wins when overlapping. */
|
|
11
|
-
videoLayer?: number;
|
|
12
|
-
/** Shared id for clips that should move/trim together (e.g. video + its embedded audio). */
|
|
13
|
-
linkId?: string;
|
|
14
|
-
/**
|
|
15
|
-
* In-point offset into the underlying media (seconds).
|
|
16
|
-
* Used for split clips so the right segment continues from the correct time.
|
|
17
|
-
*/
|
|
18
|
-
offset?: number;
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
export interface CusTomTimelineRow extends TimelineRow {
|
|
22
|
-
actions: CustomTimelineAction[];
|
|
23
|
-
}
|
|
24
|
-
export declare const mockEffect: Record<string, TimelineEffect>;
|
|
25
|
-
export declare const mockData: CusTomTimelineRow[];
|
package/dist/types/player.d.ts
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import type { TimelineState } from '@xzdarcy/react-timeline-editor';
|
|
2
|
-
export declare const Rates: number[];
|
|
3
|
-
declare const TimelinePlayer: ({ timelineState, autoScrollWhenPlay, scale, scaleWidth, startLeft, editorData, selectedActionId, onDeleteSelectedClip, onSplitSelectedClip, canUndo, canRedo, onUndo, onRedo, }: {
|
|
4
|
-
timelineState: React.MutableRefObject<TimelineState | null>;
|
|
5
|
-
autoScrollWhenPlay: React.MutableRefObject<boolean>;
|
|
6
|
-
scale: number;
|
|
7
|
-
scaleWidth: number;
|
|
8
|
-
startLeft: number;
|
|
9
|
-
editorData: any[];
|
|
10
|
-
selectedActionId: string | null;
|
|
11
|
-
onDeleteSelectedClip: () => void;
|
|
12
|
-
onSplitSelectedClip: () => void;
|
|
13
|
-
canUndo: boolean;
|
|
14
|
-
canRedo: boolean;
|
|
15
|
-
onUndo: () => void;
|
|
16
|
-
onRedo: () => void;
|
|
17
|
-
}) => import("react/jsx-runtime").JSX.Element;
|
|
18
|
-
export default TimelinePlayer;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function useCoarsePointer(): boolean;
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import type { TimelineEngine } from '@xzdarcy/react-timeline-editor';
|
|
2
|
-
declare class VideoControl {
|
|
3
|
-
private videoEl;
|
|
4
|
-
private currentSrc;
|
|
5
|
-
private lastSeekAtMs;
|
|
6
|
-
private lastRate;
|
|
7
|
-
private videoClaims;
|
|
8
|
-
private activeVideoActionId;
|
|
9
|
-
private lastEngineTime;
|
|
10
|
-
private boundEngine;
|
|
11
|
-
private boundActionStart;
|
|
12
|
-
private vfcHandle;
|
|
13
|
-
private rafHandle;
|
|
14
|
-
attach(el: HTMLVideoElement | null): void;
|
|
15
|
-
setActive(active: boolean): void;
|
|
16
|
-
claimVideo(data: {
|
|
17
|
-
actionId: string;
|
|
18
|
-
layer: number;
|
|
19
|
-
src: string;
|
|
20
|
-
engine: TimelineEngine;
|
|
21
|
-
isPlaying: boolean;
|
|
22
|
-
time: number;
|
|
23
|
-
actionStart: number;
|
|
24
|
-
offset?: number;
|
|
25
|
-
}): void;
|
|
26
|
-
releaseVideo(actionIdRaw: string): void;
|
|
27
|
-
bindEngine(engine: TimelineEngine, actionStart: number): void;
|
|
28
|
-
unbindEngine(): void;
|
|
29
|
-
private tickFromVideo;
|
|
30
|
-
setSource(src: string): void;
|
|
31
|
-
warm(src: string): void;
|
|
32
|
-
setRate(rate: number): void;
|
|
33
|
-
/**
|
|
34
|
-
* Sync the video to a desired timeline time.
|
|
35
|
-
* To avoid buffering/stutters, we only seek when drift is large or when paused/scrubbing.
|
|
36
|
-
*/
|
|
37
|
-
seek(time: number, opts?: {
|
|
38
|
-
force?: boolean;
|
|
39
|
-
}): void;
|
|
40
|
-
play(): Promise<void>;
|
|
41
|
-
pause(): void;
|
|
42
|
-
}
|
|
43
|
-
declare const _default: VideoControl;
|
|
44
|
-
export default _default;
|