@remotion/media 4.0.508 → 4.0.509
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/caches.d.ts
CHANGED
|
@@ -90,8 +90,8 @@ export declare const makeMediaCache: () => {
|
|
|
90
90
|
totalSize: number;
|
|
91
91
|
};
|
|
92
92
|
isDisposed: () => boolean;
|
|
93
|
-
queueFrameExtraction: <T>(
|
|
94
|
-
queueAudioExtraction: <T>(
|
|
93
|
+
queueFrameExtraction: <T>(fn: () => T | Promise<T>) => Promise<T>;
|
|
94
|
+
queueAudioExtraction: <T>(fn: () => T | Promise<T>) => Promise<T>;
|
|
95
95
|
dispose: (logLevel: "error" | "info" | "trace" | "verbose" | "warn") => void;
|
|
96
96
|
};
|
|
97
97
|
export type MediaCache = ReturnType<typeof makeMediaCache>;
|
|
@@ -185,8 +185,8 @@ export declare const globalMediaCache: {
|
|
|
185
185
|
totalSize: number;
|
|
186
186
|
};
|
|
187
187
|
isDisposed: () => boolean;
|
|
188
|
-
queueFrameExtraction: <T>(
|
|
189
|
-
queueAudioExtraction: <T>(
|
|
188
|
+
queueFrameExtraction: <T>(fn: () => T | Promise<T>) => Promise<T>;
|
|
189
|
+
queueAudioExtraction: <T>(fn: () => T | Promise<T>) => Promise<T>;
|
|
190
190
|
dispose: (logLevel: "error" | "info" | "trace" | "verbose" | "warn") => void;
|
|
191
191
|
};
|
|
192
192
|
export declare const keyframeManager: {
|
|
@@ -352,8 +352,8 @@ export declare const useRenderMediaCache: (logLevel: "error" | "info" | "trace"
|
|
|
352
352
|
totalSize: number;
|
|
353
353
|
};
|
|
354
354
|
isDisposed: () => boolean;
|
|
355
|
-
queueFrameExtraction: <T>(
|
|
356
|
-
queueAudioExtraction: <T>(
|
|
355
|
+
queueFrameExtraction: <T>(fn: () => T | Promise<T>) => Promise<T>;
|
|
356
|
+
queueAudioExtraction: <T>(fn: () => T | Promise<T>) => Promise<T>;
|
|
357
357
|
dispose: (logLevel: "error" | "info" | "trace" | "verbose" | "warn") => void;
|
|
358
358
|
};
|
|
359
359
|
export { getMaxVideoCacheSize };
|
package/dist/esm/index.mjs
CHANGED
|
@@ -1845,8 +1845,7 @@ class MediaPlayer {
|
|
|
1845
1845
|
this.getEffectChainState = getEffectChainState;
|
|
1846
1846
|
if (canvas) {
|
|
1847
1847
|
const context = canvas.getContext("2d", {
|
|
1848
|
-
alpha: true
|
|
1849
|
-
desynchronized: true
|
|
1848
|
+
alpha: true
|
|
1850
1849
|
});
|
|
1851
1850
|
if (!context) {
|
|
1852
1851
|
throw new Error("Could not get 2D context from canvas");
|
|
@@ -2844,6 +2843,20 @@ import { Internals as Internals15 } from "remotion";
|
|
|
2844
2843
|
// src/audio-extraction/audio-manager.ts
|
|
2845
2844
|
import { Internals as Internals10 } from "remotion";
|
|
2846
2845
|
|
|
2846
|
+
// src/serialized-queue.ts
|
|
2847
|
+
var makeSerializedQueue = () => {
|
|
2848
|
+
let tail = Promise.resolve(undefined);
|
|
2849
|
+
return (fn) => {
|
|
2850
|
+
const result = tail.then(() => fn());
|
|
2851
|
+
tail = result.then(() => {
|
|
2852
|
+
return;
|
|
2853
|
+
}, () => {
|
|
2854
|
+
return;
|
|
2855
|
+
});
|
|
2856
|
+
return result;
|
|
2857
|
+
};
|
|
2858
|
+
};
|
|
2859
|
+
|
|
2847
2860
|
// src/audio-extraction/audio-iterator.ts
|
|
2848
2861
|
import { Internals as Internals9 } from "remotion";
|
|
2849
2862
|
|
|
@@ -3192,7 +3205,7 @@ var makeAudioManager = ({
|
|
|
3192
3205
|
disposed = true;
|
|
3193
3206
|
clearAll();
|
|
3194
3207
|
};
|
|
3195
|
-
|
|
3208
|
+
const enqueue = makeSerializedQueue();
|
|
3196
3209
|
return {
|
|
3197
3210
|
getIterator: ({
|
|
3198
3211
|
src,
|
|
@@ -3203,7 +3216,7 @@ var makeAudioManager = ({
|
|
|
3203
3216
|
logLevel,
|
|
3204
3217
|
maxCacheSize
|
|
3205
3218
|
}) => {
|
|
3206
|
-
|
|
3219
|
+
return enqueue(() => getIterator({
|
|
3207
3220
|
src,
|
|
3208
3221
|
timeInSeconds,
|
|
3209
3222
|
audioSampleSink,
|
|
@@ -3212,7 +3225,6 @@ var makeAudioManager = ({
|
|
|
3212
3225
|
logLevel,
|
|
3213
3226
|
maxCacheSize
|
|
3214
3227
|
}));
|
|
3215
|
-
return queue;
|
|
3216
3228
|
},
|
|
3217
3229
|
getCacheStats,
|
|
3218
3230
|
getIteratorMostInThePast,
|
|
@@ -3634,7 +3646,7 @@ var makeKeyframeBank = async ({
|
|
|
3634
3646
|
const getLastUsed = () => {
|
|
3635
3647
|
return lastUsed;
|
|
3636
3648
|
};
|
|
3637
|
-
|
|
3649
|
+
const enqueue = makeSerializedQueue();
|
|
3638
3650
|
const firstFrame = await sampleIterator.next();
|
|
3639
3651
|
if (!firstFrame.value) {
|
|
3640
3652
|
throw new Error("No first frame found");
|
|
@@ -3699,18 +3711,16 @@ var makeKeyframeBank = async ({
|
|
|
3699
3711
|
const keyframeBank = {
|
|
3700
3712
|
getFrameFromTimestamp: (timestamp, fps) => {
|
|
3701
3713
|
pendingOperations++;
|
|
3702
|
-
|
|
3714
|
+
return enqueue(() => getFrameFromTimestamp(timestamp, fps)).finally(() => {
|
|
3703
3715
|
pendingOperations--;
|
|
3704
3716
|
});
|
|
3705
|
-
return queue;
|
|
3706
3717
|
},
|
|
3707
3718
|
prepareForDeletion,
|
|
3708
3719
|
hasTimestampInSecond: (timestamp, fps) => {
|
|
3709
3720
|
pendingOperations++;
|
|
3710
|
-
|
|
3721
|
+
return enqueue(() => hasTimestampInSecond(timestamp, fps)).finally(() => {
|
|
3711
3722
|
pendingOperations--;
|
|
3712
3723
|
});
|
|
3713
|
-
return queue;
|
|
3714
3724
|
},
|
|
3715
3725
|
addFrame,
|
|
3716
3726
|
deleteFramesBeforeTimestamp,
|
|
@@ -3958,7 +3968,7 @@ var makeKeyframeManager = ({
|
|
|
3958
3968
|
disposed = true;
|
|
3959
3969
|
clearAll(logLevel);
|
|
3960
3970
|
};
|
|
3961
|
-
|
|
3971
|
+
const enqueue = makeSerializedQueue();
|
|
3962
3972
|
return {
|
|
3963
3973
|
requestKeyframeBank: ({
|
|
3964
3974
|
timestamp,
|
|
@@ -3968,7 +3978,7 @@ var makeKeyframeManager = ({
|
|
|
3968
3978
|
maxCacheSize,
|
|
3969
3979
|
fps
|
|
3970
3980
|
}) => {
|
|
3971
|
-
|
|
3981
|
+
return enqueue(() => requestKeyframeBank({
|
|
3972
3982
|
timestamp,
|
|
3973
3983
|
videoSampleSink,
|
|
3974
3984
|
src,
|
|
@@ -3976,7 +3986,6 @@ var makeKeyframeManager = ({
|
|
|
3976
3986
|
maxCacheSize,
|
|
3977
3987
|
fps
|
|
3978
3988
|
}));
|
|
3979
|
-
return queue;
|
|
3980
3989
|
},
|
|
3981
3990
|
getCacheStats,
|
|
3982
3991
|
clearAll,
|
|
@@ -4012,8 +4021,8 @@ var makeMediaCache = () => {
|
|
|
4012
4021
|
});
|
|
4013
4022
|
managerInstances.keyframe = keyframeManagerInstance;
|
|
4014
4023
|
managerInstances.audio = audioManagerInstance;
|
|
4015
|
-
|
|
4016
|
-
|
|
4024
|
+
const queueFrameExtraction = makeSerializedQueue();
|
|
4025
|
+
const queueAudioExtraction = makeSerializedQueue();
|
|
4017
4026
|
let disposed = false;
|
|
4018
4027
|
return {
|
|
4019
4028
|
sinkManager,
|
|
@@ -4021,20 +4030,8 @@ var makeMediaCache = () => {
|
|
|
4021
4030
|
audioManager: audioManagerInstance,
|
|
4022
4031
|
getTotalCacheStats: getCacheStats,
|
|
4023
4032
|
isDisposed: () => disposed,
|
|
4024
|
-
queueFrameExtraction
|
|
4025
|
-
|
|
4026
|
-
frameExtractionQueue = extraction.catch(() => {
|
|
4027
|
-
return;
|
|
4028
|
-
});
|
|
4029
|
-
return extraction;
|
|
4030
|
-
},
|
|
4031
|
-
queueAudioExtraction: (extract) => {
|
|
4032
|
-
const extraction = audioExtractionQueue.then(extract);
|
|
4033
|
-
audioExtractionQueue = extraction.catch(() => {
|
|
4034
|
-
return;
|
|
4035
|
-
});
|
|
4036
|
-
return extraction;
|
|
4037
|
-
},
|
|
4033
|
+
queueFrameExtraction,
|
|
4034
|
+
queueAudioExtraction,
|
|
4038
4035
|
dispose: (logLevel) => {
|
|
4039
4036
|
if (disposed) {
|
|
4040
4037
|
return;
|
|
@@ -5566,8 +5563,7 @@ var VideoForPreviewAssertedShowing = ({
|
|
|
5566
5563
|
canvas.width = cached.width;
|
|
5567
5564
|
canvas.height = cached.height;
|
|
5568
5565
|
const ctx = canvas.getContext("2d", {
|
|
5569
|
-
alpha: true
|
|
5570
|
-
desynchronized: true
|
|
5566
|
+
alpha: true
|
|
5571
5567
|
});
|
|
5572
5568
|
if (!ctx) {
|
|
5573
5569
|
return;
|
|
@@ -106,8 +106,8 @@ export declare const extractFrameAndAudio: ({ src, timeInSeconds, logLevel, dura
|
|
|
106
106
|
totalSize: number;
|
|
107
107
|
};
|
|
108
108
|
isDisposed: () => boolean;
|
|
109
|
-
queueFrameExtraction: <T>(
|
|
110
|
-
queueAudioExtraction: <T>(
|
|
109
|
+
queueFrameExtraction: <T>(fn: () => T | Promise<T>) => Promise<T>;
|
|
110
|
+
queueAudioExtraction: <T>(fn: () => T | Promise<T>) => Promise<T>;
|
|
111
111
|
dispose: (logLevel: "error" | "info" | "trace" | "verbose" | "warn") => void;
|
|
112
112
|
};
|
|
113
113
|
}) => Promise<ExtractFrameViaBroadcastChannelResult>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const makeSerializedQueue: () => <T>(fn: () => T | Promise<T>) => Promise<T>;
|
|
@@ -126,8 +126,8 @@ export declare const extractFrameViaBroadcastChannel: ({ src, timeInSeconds, log
|
|
|
126
126
|
totalSize: number;
|
|
127
127
|
};
|
|
128
128
|
isDisposed: () => boolean;
|
|
129
|
-
queueFrameExtraction: <T>(
|
|
130
|
-
queueAudioExtraction: <T>(
|
|
129
|
+
queueFrameExtraction: <T>(fn: () => T | Promise<T>) => Promise<T>;
|
|
130
|
+
queueAudioExtraction: <T>(fn: () => T | Promise<T>) => Promise<T>;
|
|
131
131
|
dispose: (logLevel: "error" | "info" | "trace" | "verbose" | "warn") => void;
|
|
132
132
|
};
|
|
133
133
|
}) => Promise<ExtractFrameViaBroadcastChannelResult>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@remotion/media",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.509",
|
|
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.50.8",
|
|
26
|
-
"remotion": "4.0.
|
|
26
|
+
"remotion": "4.0.509",
|
|
27
27
|
"zod": "4.4.3"
|
|
28
28
|
},
|
|
29
29
|
"peerDependencies": {
|
|
@@ -31,8 +31,8 @@
|
|
|
31
31
|
"react-dom": ">=16.8.0"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
|
-
"@remotion/eslint-config-internal": "4.0.
|
|
35
|
-
"@remotion/player": "4.0.
|
|
34
|
+
"@remotion/eslint-config-internal": "4.0.509",
|
|
35
|
+
"@remotion/player": "4.0.509",
|
|
36
36
|
"@vitest/browser-webdriverio": "4.0.9",
|
|
37
37
|
"eslint": "9.19.0",
|
|
38
38
|
"react": "19.2.3",
|