@remotion/media 4.0.450 → 4.0.452
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/audio/audio-for-preview.d.ts +0 -1
- package/dist/audio/audio-preview-iterator.d.ts +13 -39
- package/dist/audio/get-scheduled-time.d.ts +17 -0
- package/dist/audio/props.d.ts +0 -1
- package/dist/audio/sort-by-priority.d.ts +10 -0
- package/dist/audio-iterator-manager.d.ts +41 -47
- package/dist/calculate-playbacktime.d.ts +5 -0
- package/dist/debug-overlay/preview-overlay.d.ts +30 -45
- package/dist/esm/index.mjs +742 -852
- package/dist/index.d.ts +0 -1
- package/dist/make-iterator-with-priming.d.ts +9 -2
- package/dist/media-player.d.ts +14 -16
- package/dist/prewarm-iterator-for-looping.d.ts +1 -10
- package/dist/shared-audio-context-for-media-player.d.ts +2 -0
- package/dist/use-common-effects.d.ts +1 -8
- package/dist/video/props.d.ts +0 -1
- package/dist/video/video-for-preview.d.ts +0 -1
- package/dist/video/video.d.ts +0 -1
- package/dist/video-iterator-manager.d.ts +2 -2
- package/package.json +3 -3
- package/dist/audio-decode-scheduler.d.ts +0 -14
- package/dist/draw-with-object-fit.d.ts +0 -14
package/dist/index.d.ts
CHANGED
|
@@ -34,7 +34,6 @@ export declare const experimental_Video: import("react").ComponentType<{
|
|
|
34
34
|
toneFrequency: number;
|
|
35
35
|
showInTimeline: boolean;
|
|
36
36
|
debugOverlay: boolean;
|
|
37
|
-
debugAudioScheduling: boolean;
|
|
38
37
|
headless: boolean;
|
|
39
38
|
onError: import("./on-error").MediaOnError | undefined;
|
|
40
39
|
credentials: RequestCredentials | undefined;
|
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
import type { AudioBufferSink, WrappedAudioBuffer } from 'mediabunny';
|
|
2
|
-
export
|
|
2
|
+
export type BufferWithMediaTimestamp = {
|
|
3
|
+
buffer: WrappedAudioBuffer;
|
|
4
|
+
timestamp: number;
|
|
5
|
+
};
|
|
6
|
+
export declare const makeIteratorWithPriming: ({ audioSink, timeToSeek, maximumTimestamp, loop, playbackRate, sequenceDurationInSeconds, }: {
|
|
3
7
|
audioSink: AudioBufferSink;
|
|
4
8
|
timeToSeek: number;
|
|
5
9
|
maximumTimestamp: number;
|
|
6
|
-
|
|
10
|
+
loop: boolean;
|
|
11
|
+
playbackRate: number;
|
|
12
|
+
sequenceDurationInSeconds: number;
|
|
13
|
+
}) => AsyncGenerator<BufferWithMediaTimestamp, void, unknown>;
|
package/dist/media-player.d.ts
CHANGED
|
@@ -27,16 +27,15 @@ export declare class MediaPlayer {
|
|
|
27
27
|
private sharedAudioContext;
|
|
28
28
|
audioIteratorManager: AudioIteratorManager | null;
|
|
29
29
|
videoIteratorManager: VideoIteratorManager | null;
|
|
30
|
-
private sequenceOffset;
|
|
31
30
|
private playing;
|
|
32
31
|
private loop;
|
|
33
32
|
private fps;
|
|
34
33
|
private trimBefore;
|
|
35
34
|
private trimAfter;
|
|
36
|
-
private
|
|
35
|
+
private sequenceDurationInFrames;
|
|
36
|
+
private sequenceOffset;
|
|
37
37
|
private totalDuration;
|
|
38
38
|
private debugOverlay;
|
|
39
|
-
private debugAudioScheduling;
|
|
40
39
|
private nonceManager;
|
|
41
40
|
private onVideoFrameCallback;
|
|
42
41
|
private initializationPromise;
|
|
@@ -44,7 +43,7 @@ export declare class MediaPlayer {
|
|
|
44
43
|
private isPremounting;
|
|
45
44
|
private isPostmounting;
|
|
46
45
|
private seekPromiseChain;
|
|
47
|
-
constructor({ canvas, src, logLevel, sharedAudioContext, loop, trimBefore, trimAfter, playbackRate, globalPlaybackRate, audioStreamIndex, fps, debugOverlay,
|
|
46
|
+
constructor({ canvas, src, logLevel, sharedAudioContext, loop, trimBefore, trimAfter, playbackRate, globalPlaybackRate, audioStreamIndex, fps, debugOverlay, bufferState, isPremounting, isPostmounting, durationInFrames, onVideoFrameCallback, playing, sequenceOffset, credentials }: {
|
|
48
47
|
canvas: HTMLCanvasElement | OffscreenCanvas | null;
|
|
49
48
|
src: string;
|
|
50
49
|
logLevel: LogLevel;
|
|
@@ -57,7 +56,6 @@ export declare class MediaPlayer {
|
|
|
57
56
|
audioStreamIndex: number;
|
|
58
57
|
fps: number;
|
|
59
58
|
debugOverlay: boolean;
|
|
60
|
-
debugAudioScheduling: boolean;
|
|
61
59
|
bufferState: ReturnType<typeof useBufferState>;
|
|
62
60
|
isPremounting: boolean;
|
|
63
61
|
isPostmounting: boolean;
|
|
@@ -71,35 +69,35 @@ export declare class MediaPlayer {
|
|
|
71
69
|
private isDisposalError;
|
|
72
70
|
initialize(startTimeUnresolved: number, initialMuted: boolean): Promise<MediaPlayerInitResult>;
|
|
73
71
|
private getStartTime;
|
|
74
|
-
private
|
|
72
|
+
private getSequenceEndTimestamp;
|
|
73
|
+
private getSequenceDurationInSeconds;
|
|
74
|
+
private getMediaEndTimestamp;
|
|
75
|
+
private getLoopSegmentMediaEndTimestamp;
|
|
75
76
|
private _initialize;
|
|
76
77
|
private seekToWithQueue;
|
|
77
78
|
seekTo(time: number): Promise<void>;
|
|
78
79
|
private seekToDoNotCallDirectly;
|
|
79
|
-
playAudio(): void;
|
|
80
80
|
play(): void;
|
|
81
81
|
private delayPlaybackHandleIfNotPremounting;
|
|
82
82
|
pause(): void;
|
|
83
83
|
setMuted(muted: boolean): void;
|
|
84
84
|
setVolume(volume: number): void;
|
|
85
85
|
private getTrimmedTime;
|
|
86
|
-
private updateAfterTrimChange;
|
|
87
86
|
setTrimBefore(trimBefore: number | undefined, unloopedTimeInSeconds: number): Promise<void>;
|
|
88
87
|
setTrimAfter(trimAfter: number | undefined, unloopedTimeInSeconds: number): Promise<void>;
|
|
89
88
|
setDebugOverlay(debugOverlay: boolean): void;
|
|
90
|
-
setDebugAudioScheduling(debugAudioScheduling: boolean): void;
|
|
91
|
-
private rescheduleAudioChunks;
|
|
92
89
|
setPlaybackRate(rate: number, unloopedTimeInSeconds: number): Promise<void>;
|
|
93
|
-
setGlobalPlaybackRate(rate: number): void
|
|
94
|
-
setFps(fps: number): void
|
|
90
|
+
setGlobalPlaybackRate(rate: number, unloopedTimeInSeconds: number): Promise<void>;
|
|
91
|
+
setFps(fps: number, unloopedTimeInSeconds: number): Promise<void>;
|
|
95
92
|
setIsPremounting(isPremounting: boolean): void;
|
|
96
93
|
setIsPostmounting(isPostmounting: boolean): void;
|
|
97
|
-
setLoop(loop: boolean): void
|
|
98
|
-
setSequenceOffset(offset: number): void
|
|
99
|
-
|
|
94
|
+
setLoop(loop: boolean, unloopedTimeInSeconds: number): Promise<void>;
|
|
95
|
+
setSequenceOffset(offset: number, unloopedTimeInSeconds: number): Promise<void>;
|
|
96
|
+
setSequenceDurationInFrames(sequenceDurationInFrames: number, unloopedTimeInSeconds: number): Promise<void>;
|
|
100
97
|
dispose(): Promise<void>;
|
|
98
|
+
private getTargetTime;
|
|
101
99
|
private scheduleAudioNode;
|
|
102
|
-
private getAudioPlaybackTime;
|
|
103
100
|
setVideoFrameCallback(callback: null | ((frame: CanvasImageSource) => void)): void;
|
|
104
101
|
private drawDebugOverlay;
|
|
102
|
+
audioSyncAnchorChanged: () => void;
|
|
105
103
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { CanvasSink, WrappedCanvas } from 'mediabunny';
|
|
2
2
|
export declare const makePrewarmedVideoIteratorCache: (videoSink: CanvasSink) => {
|
|
3
3
|
prewarmIteratorForLooping: ({ timeToSeek }: {
|
|
4
4
|
timeToSeek: number;
|
|
@@ -7,12 +7,3 @@ export declare const makePrewarmedVideoIteratorCache: (videoSink: CanvasSink) =>
|
|
|
7
7
|
destroy: () => void;
|
|
8
8
|
};
|
|
9
9
|
export type PrewarmedVideoIteratorCache = ReturnType<typeof makePrewarmedVideoIteratorCache>;
|
|
10
|
-
export declare const makePrewarmedAudioIteratorCache: (audioSink: AudioBufferSink) => {
|
|
11
|
-
prewarmIteratorForLooping: ({ timeToSeek, maximumTimestamp, }: {
|
|
12
|
-
timeToSeek: number;
|
|
13
|
-
maximumTimestamp: number;
|
|
14
|
-
}) => void;
|
|
15
|
-
makeIteratorOrUsePrewarmed: (timeToSeek: number, maximumTimestamp: number) => AsyncGenerator<WrappedAudioBuffer, void, unknown>;
|
|
16
|
-
destroy: () => void;
|
|
17
|
-
};
|
|
18
|
-
export type PrewarmedAudioIteratorCache = ReturnType<typeof makePrewarmedAudioIteratorCache>;
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import type { ScheduleAudioNodeOptions, ScheduleAudioNodeResult } from 'remotion';
|
|
2
2
|
export type SharedAudioContextForMediaPlayer = {
|
|
3
3
|
audioContext: AudioContext;
|
|
4
|
+
gainNode: GainNode;
|
|
4
5
|
audioSyncAnchor: {
|
|
5
6
|
value: number;
|
|
6
7
|
};
|
|
7
8
|
scheduleAudioNode: (options: ScheduleAudioNodeOptions) => ScheduleAudioNodeResult;
|
|
9
|
+
unscheduleAudioNode: (node: AudioBufferSourceNode) => void;
|
|
8
10
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type React from 'react';
|
|
2
2
|
import type { MediaPlayer } from './media-player';
|
|
3
|
-
export declare const useCommonEffects: ({ mediaPlayerRef, mediaPlayerReady, currentTimeRef, playing, isPlayerBuffering, frame, trimBefore, trimAfter, effectiveMuted, userPreferredVolume, playbackRate, globalPlaybackRate, fps, sequenceOffset, loop,
|
|
3
|
+
export declare const useCommonEffects: ({ mediaPlayerRef, mediaPlayerReady, currentTimeRef, playing, isPlayerBuffering, frame, trimBefore, trimAfter, effectiveMuted, userPreferredVolume, playbackRate, globalPlaybackRate, fps, sequenceOffset, loop, durationInFrames, isPremounting, isPostmounting, currentTime, logLevel, label, }: {
|
|
4
4
|
readonly mediaPlayerRef: React.RefObject<MediaPlayer | null>;
|
|
5
5
|
readonly mediaPlayerReady: boolean;
|
|
6
6
|
readonly currentTimeRef: React.RefObject<number>;
|
|
@@ -16,17 +16,10 @@ export declare const useCommonEffects: ({ mediaPlayerRef, mediaPlayerReady, curr
|
|
|
16
16
|
readonly fps: number;
|
|
17
17
|
readonly sequenceOffset: number;
|
|
18
18
|
readonly loop: boolean;
|
|
19
|
-
readonly debugAudioScheduling: boolean;
|
|
20
19
|
readonly durationInFrames: number;
|
|
21
20
|
readonly isPremounting: boolean;
|
|
22
21
|
readonly isPostmounting: boolean;
|
|
23
22
|
readonly currentTime: number;
|
|
24
23
|
readonly logLevel: "error" | "info" | "trace" | "verbose" | "warn";
|
|
25
|
-
readonly sharedAudioContext: {
|
|
26
|
-
readonly audioContext: AudioContext | null;
|
|
27
|
-
readonly audioSyncAnchor: {
|
|
28
|
-
value: number;
|
|
29
|
-
};
|
|
30
|
-
} | null;
|
|
31
24
|
readonly label: string;
|
|
32
25
|
}) => void;
|
package/dist/video/props.d.ts
CHANGED
|
@@ -22,7 +22,6 @@ type VideoForPreviewProps = {
|
|
|
22
22
|
readonly fallbackOffthreadVideoProps: FallbackOffthreadVideoProps;
|
|
23
23
|
readonly audioStreamIndex: number;
|
|
24
24
|
readonly debugOverlay: boolean;
|
|
25
|
-
readonly debugAudioScheduling: boolean;
|
|
26
25
|
readonly headless: boolean;
|
|
27
26
|
readonly onError: MediaOnError | undefined;
|
|
28
27
|
readonly credentials: RequestCredentials | undefined;
|
package/dist/video/video.d.ts
CHANGED
|
@@ -26,7 +26,6 @@ export declare const Video: React.ComponentType<{
|
|
|
26
26
|
toneFrequency: number;
|
|
27
27
|
showInTimeline: boolean;
|
|
28
28
|
debugOverlay: boolean;
|
|
29
|
-
debugAudioScheduling: boolean;
|
|
30
29
|
headless: boolean;
|
|
31
30
|
onError: import("../on-error").MediaOnError | undefined;
|
|
32
31
|
credentials: RequestCredentials | undefined;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { InputVideoTrack, WrappedCanvas } from 'mediabunny';
|
|
2
2
|
import type { DelayPlaybackIfNotPremounting } from './delay-playback-if-not-premounting';
|
|
3
3
|
import type { Nonce } from './nonce-manager';
|
|
4
|
-
export declare const videoIteratorManager: ({ delayPlaybackHandleIfNotPremounting, canvas, context, drawDebugOverlay, logLevel, getOnVideoFrameCallback, videoTrack,
|
|
4
|
+
export declare const videoIteratorManager: ({ delayPlaybackHandleIfNotPremounting, canvas, context, drawDebugOverlay, logLevel, getOnVideoFrameCallback, videoTrack, getLoopSegmentMediaEndTimestamp, getStartTime, getIsLooping, }: {
|
|
5
5
|
videoTrack: InputVideoTrack;
|
|
6
6
|
delayPlaybackHandleIfNotPremounting: () => DelayPlaybackIfNotPremounting;
|
|
7
7
|
context: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D | null;
|
|
@@ -9,7 +9,7 @@ export declare const videoIteratorManager: ({ delayPlaybackHandleIfNotPremountin
|
|
|
9
9
|
getOnVideoFrameCallback: () => ((frame: CanvasImageSource) => void) | null;
|
|
10
10
|
logLevel: "error" | "info" | "trace" | "verbose" | "warn";
|
|
11
11
|
drawDebugOverlay: () => void;
|
|
12
|
-
|
|
12
|
+
getLoopSegmentMediaEndTimestamp: () => number;
|
|
13
13
|
getStartTime: () => number;
|
|
14
14
|
getIsLooping: () => boolean;
|
|
15
15
|
}) => {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@remotion/media",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.452",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"module": "dist/esm/index.mjs",
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
25
|
"mediabunny": "1.39.2",
|
|
26
|
-
"remotion": "4.0.
|
|
26
|
+
"remotion": "4.0.452",
|
|
27
27
|
"zod": "4.3.6"
|
|
28
28
|
},
|
|
29
29
|
"peerDependencies": {
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"react-dom": ">=16.8.0"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
|
-
"@remotion/eslint-config-internal": "4.0.
|
|
34
|
+
"@remotion/eslint-config-internal": "4.0.452",
|
|
35
35
|
"@vitest/browser-webdriverio": "4.0.9",
|
|
36
36
|
"eslint": "9.19.0",
|
|
37
37
|
"react": "19.2.3",
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
export declare class AudioDecodeScheduler {
|
|
2
|
-
private activeTurns;
|
|
3
|
-
private nextId;
|
|
4
|
-
private queue;
|
|
5
|
-
private pendingBatch;
|
|
6
|
-
private batchTimer;
|
|
7
|
-
requestTurn(priority: number): Promise<number>;
|
|
8
|
-
releaseTurn(id: number): void;
|
|
9
|
-
private processBatch;
|
|
10
|
-
private grant;
|
|
11
|
-
private getMinActivePriority;
|
|
12
|
-
private grantEligibleWaiters;
|
|
13
|
-
}
|
|
14
|
-
export declare const getAudioDecodeScheduler: (audioContext: AudioContext) => AudioDecodeScheduler;
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
export type ObjectFitValue = 'fill' | 'contain' | 'cover' | 'none' | 'scale-down';
|
|
2
|
-
/**
|
|
3
|
-
* Draws a source image onto a canvas context with the specified object-fit behavior.
|
|
4
|
-
* This implements object-fit at the canvas drawing level, which is more reliable
|
|
5
|
-
* than CSS object-fit on canvas elements.
|
|
6
|
-
*/
|
|
7
|
-
export declare const drawWithObjectFit: (ctx: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D, source: CanvasImageSource, options: {
|
|
8
|
-
sourceWidth: number;
|
|
9
|
-
sourceHeight: number;
|
|
10
|
-
destWidth: number;
|
|
11
|
-
destHeight: number;
|
|
12
|
-
fit: ObjectFitValue;
|
|
13
|
-
}) => void;
|
|
14
|
-
export declare const parseObjectFit: (value: string | undefined) => ObjectFitValue | null;
|