@remotion/media 4.0.506 → 4.0.507

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.
@@ -1,5 +1,10 @@
1
1
  import type { AudioSampleSink } from 'mediabunny';
2
- export declare const makeAudioManager: () => {
2
+ export declare const makeAudioManager: ({ getTotalCacheStats, }: {
3
+ getTotalCacheStats: () => {
4
+ count: number;
5
+ totalSize: number;
6
+ };
7
+ }) => {
3
8
  getIterator: ({ src, timeInSeconds, audioSampleSink, isMatroska, actualMatroskaTimestamps, logLevel, maxCacheSize, }: {
4
9
  src: string;
5
10
  timeInSeconds: number;
@@ -51,4 +56,6 @@ export declare const makeAudioManager: () => {
51
56
  } | null;
52
57
  logOpenFrames: () => void;
53
58
  deleteDuplicateIterators: (logLevel: "error" | "info" | "trace" | "verbose" | "warn") => void;
59
+ clearAll: () => void;
60
+ dispose: () => void;
54
61
  };
@@ -1,4 +1,5 @@
1
1
  import { type LogLevel } from 'remotion';
2
+ import type { MediaCache } from '../caches';
2
3
  import type { PcmS16AudioData } from '../convert-audiodata/convert-audiodata';
3
4
  import type { MediaRequestInit } from '../request-init';
4
5
  type ExtractAudioParams = {
@@ -15,6 +16,7 @@ type ExtractAudioParams = {
15
16
  maxCacheSize: number;
16
17
  credentials: RequestCredentials | undefined;
17
18
  requestInit?: MediaRequestInit;
19
+ mediaCache: MediaCache;
18
20
  };
19
21
  export declare const extractAudio: (params: ExtractAudioParams) => Promise<"cannot-decode" | "network-error" | "unknown-container-format" | {
20
22
  data: PcmS16AudioData | null;
package/dist/caches.d.ts CHANGED
@@ -1,4 +1,193 @@
1
1
  export declare const getSafeWindowOfMonotonicity: (fps: number) => number;
2
+ export declare const makeMediaCache: () => {
3
+ sinkManager: {
4
+ getSink: (src: string, logLevel: "error" | "info" | "trace" | "verbose" | "warn", credentials: RequestCredentials | undefined, requestInit: import("./request-init").MediaRequestInit | undefined) => Promise<{
5
+ getVideo: () => Promise<import("./video-extraction/get-frames-since-keyframe").VideoSinkResult>;
6
+ getAudio: (index: number | null) => Promise<import("./video-extraction/get-frames-since-keyframe").AudioSinkResult>;
7
+ actualMatroskaTimestamps: {
8
+ observeTimestamp: (startTime: number) => void;
9
+ getRealTimestamp: (observedTimestamp: number) => number | null;
10
+ };
11
+ isMatroska: boolean;
12
+ getDuration: () => Promise<number>;
13
+ }>;
14
+ dispose: () => void;
15
+ };
16
+ keyframeManager: {
17
+ requestKeyframeBank: ({ timestamp, videoSampleSink, src, logLevel, maxCacheSize, fps, }: {
18
+ timestamp: number;
19
+ videoSampleSink: import("mediabunny").VideoSampleSink;
20
+ src: string;
21
+ logLevel: "error" | "info" | "trace" | "verbose" | "warn";
22
+ maxCacheSize: number;
23
+ fps: number;
24
+ }) => Promise<import("./video-extraction/keyframe-bank").KeyframeBank | null>;
25
+ getCacheStats: () => {
26
+ count: number;
27
+ totalSize: number;
28
+ };
29
+ clearAll: (logLevel: "error" | "info" | "trace" | "verbose" | "warn") => void;
30
+ dispose: (logLevel: "error" | "info" | "trace" | "verbose" | "warn") => void;
31
+ };
32
+ audioManager: {
33
+ getIterator: ({ src, timeInSeconds, audioSampleSink, isMatroska, actualMatroskaTimestamps, logLevel, maxCacheSize, }: {
34
+ src: string;
35
+ timeInSeconds: number;
36
+ audioSampleSink: import("mediabunny").AudioSampleSink;
37
+ isMatroska: boolean;
38
+ actualMatroskaTimestamps: {
39
+ observeTimestamp: (startTime: number) => void;
40
+ getRealTimestamp: (observedTimestamp: number) => number | null;
41
+ };
42
+ logLevel: "error" | "info" | "trace" | "verbose" | "warn";
43
+ maxCacheSize: number;
44
+ }) => Promise<{
45
+ src: string;
46
+ getSamples: (ts: number, dur: number) => Promise<import("mediabunny").AudioSample[]>;
47
+ waitForCompletion: () => Promise<boolean>;
48
+ canSatisfyRequestedTime: (timestamp: number) => boolean;
49
+ logOpenFrames: () => void;
50
+ getCacheStats: () => {
51
+ count: number;
52
+ size: number;
53
+ };
54
+ getLastUsed: () => number;
55
+ prepareForDeletion: () => void;
56
+ startTimestamp: number;
57
+ clearBeforeThreshold: (threshold: number) => void;
58
+ getOldestTimestamp: () => number;
59
+ getNewestTimestamp: () => number | null;
60
+ }>;
61
+ getCacheStats: () => {
62
+ count: number;
63
+ totalSize: number;
64
+ };
65
+ getIteratorMostInThePast: () => {
66
+ src: string;
67
+ getSamples: (ts: number, dur: number) => Promise<import("mediabunny").AudioSample[]>;
68
+ waitForCompletion: () => Promise<boolean>;
69
+ canSatisfyRequestedTime: (timestamp: number) => boolean;
70
+ logOpenFrames: () => void;
71
+ getCacheStats: () => {
72
+ count: number;
73
+ size: number;
74
+ };
75
+ getLastUsed: () => number;
76
+ prepareForDeletion: () => void;
77
+ startTimestamp: number;
78
+ clearBeforeThreshold: (threshold: number) => void;
79
+ getOldestTimestamp: () => number;
80
+ getNewestTimestamp: () => number | null;
81
+ } | null;
82
+ logOpenFrames: () => void;
83
+ deleteDuplicateIterators: (logLevel: "error" | "info" | "trace" | "verbose" | "warn") => void;
84
+ clearAll: () => void;
85
+ dispose: () => void;
86
+ };
87
+ getTotalCacheStats: () => {
88
+ count: number;
89
+ totalSize: number;
90
+ };
91
+ isDisposed: () => boolean;
92
+ queueFrameExtraction: <T>(extract: () => Promise<T>) => Promise<T>;
93
+ queueAudioExtraction: <T>(extract: () => Promise<T>) => Promise<T>;
94
+ dispose: (logLevel: "error" | "info" | "trace" | "verbose" | "warn") => void;
95
+ };
96
+ export type MediaCache = ReturnType<typeof makeMediaCache>;
97
+ export declare const globalMediaCache: {
98
+ sinkManager: {
99
+ getSink: (src: string, logLevel: "error" | "info" | "trace" | "verbose" | "warn", credentials: RequestCredentials | undefined, requestInit: import("./request-init").MediaRequestInit | undefined) => Promise<{
100
+ getVideo: () => Promise<import("./video-extraction/get-frames-since-keyframe").VideoSinkResult>;
101
+ getAudio: (index: number | null) => Promise<import("./video-extraction/get-frames-since-keyframe").AudioSinkResult>;
102
+ actualMatroskaTimestamps: {
103
+ observeTimestamp: (startTime: number) => void;
104
+ getRealTimestamp: (observedTimestamp: number) => number | null;
105
+ };
106
+ isMatroska: boolean;
107
+ getDuration: () => Promise<number>;
108
+ }>;
109
+ dispose: () => void;
110
+ };
111
+ keyframeManager: {
112
+ requestKeyframeBank: ({ timestamp, videoSampleSink, src, logLevel, maxCacheSize, fps, }: {
113
+ timestamp: number;
114
+ videoSampleSink: import("mediabunny").VideoSampleSink;
115
+ src: string;
116
+ logLevel: "error" | "info" | "trace" | "verbose" | "warn";
117
+ maxCacheSize: number;
118
+ fps: number;
119
+ }) => Promise<import("./video-extraction/keyframe-bank").KeyframeBank | null>;
120
+ getCacheStats: () => {
121
+ count: number;
122
+ totalSize: number;
123
+ };
124
+ clearAll: (logLevel: "error" | "info" | "trace" | "verbose" | "warn") => void;
125
+ dispose: (logLevel: "error" | "info" | "trace" | "verbose" | "warn") => void;
126
+ };
127
+ audioManager: {
128
+ getIterator: ({ src, timeInSeconds, audioSampleSink, isMatroska, actualMatroskaTimestamps, logLevel, maxCacheSize, }: {
129
+ src: string;
130
+ timeInSeconds: number;
131
+ audioSampleSink: import("mediabunny").AudioSampleSink;
132
+ isMatroska: boolean;
133
+ actualMatroskaTimestamps: {
134
+ observeTimestamp: (startTime: number) => void;
135
+ getRealTimestamp: (observedTimestamp: number) => number | null;
136
+ };
137
+ logLevel: "error" | "info" | "trace" | "verbose" | "warn";
138
+ maxCacheSize: number;
139
+ }) => Promise<{
140
+ src: string;
141
+ getSamples: (ts: number, dur: number) => Promise<import("mediabunny").AudioSample[]>;
142
+ waitForCompletion: () => Promise<boolean>;
143
+ canSatisfyRequestedTime: (timestamp: number) => boolean;
144
+ logOpenFrames: () => void;
145
+ getCacheStats: () => {
146
+ count: number;
147
+ size: number;
148
+ };
149
+ getLastUsed: () => number;
150
+ prepareForDeletion: () => void;
151
+ startTimestamp: number;
152
+ clearBeforeThreshold: (threshold: number) => void;
153
+ getOldestTimestamp: () => number;
154
+ getNewestTimestamp: () => number | null;
155
+ }>;
156
+ getCacheStats: () => {
157
+ count: number;
158
+ totalSize: number;
159
+ };
160
+ getIteratorMostInThePast: () => {
161
+ src: string;
162
+ getSamples: (ts: number, dur: number) => Promise<import("mediabunny").AudioSample[]>;
163
+ waitForCompletion: () => Promise<boolean>;
164
+ canSatisfyRequestedTime: (timestamp: number) => boolean;
165
+ logOpenFrames: () => void;
166
+ getCacheStats: () => {
167
+ count: number;
168
+ size: number;
169
+ };
170
+ getLastUsed: () => number;
171
+ prepareForDeletion: () => void;
172
+ startTimestamp: number;
173
+ clearBeforeThreshold: (threshold: number) => void;
174
+ getOldestTimestamp: () => number;
175
+ getNewestTimestamp: () => number | null;
176
+ } | null;
177
+ logOpenFrames: () => void;
178
+ deleteDuplicateIterators: (logLevel: "error" | "info" | "trace" | "verbose" | "warn") => void;
179
+ clearAll: () => void;
180
+ dispose: () => void;
181
+ };
182
+ getTotalCacheStats: () => {
183
+ count: number;
184
+ totalSize: number;
185
+ };
186
+ isDisposed: () => boolean;
187
+ queueFrameExtraction: <T>(extract: () => Promise<T>) => Promise<T>;
188
+ queueAudioExtraction: <T>(extract: () => Promise<T>) => Promise<T>;
189
+ dispose: (logLevel: "error" | "info" | "trace" | "verbose" | "warn") => void;
190
+ };
2
191
  export declare const keyframeManager: {
3
192
  requestKeyframeBank: ({ timestamp, videoSampleSink, src, logLevel, maxCacheSize, fps, }: {
4
193
  timestamp: number;
@@ -7,14 +196,14 @@ export declare const keyframeManager: {
7
196
  logLevel: "error" | "info" | "trace" | "verbose" | "warn";
8
197
  maxCacheSize: number;
9
198
  fps: number;
10
- }) => Promise<import("./video-extraction/keyframe-bank").KeyframeBank>;
199
+ }) => Promise<import("./video-extraction/keyframe-bank").KeyframeBank | null>;
11
200
  getCacheStats: () => {
12
201
  count: number;
13
202
  totalSize: number;
14
203
  };
15
204
  clearAll: (logLevel: "error" | "info" | "trace" | "verbose" | "warn") => void;
16
- };
17
- export declare const audioManager: {
205
+ dispose: (logLevel: "error" | "info" | "trace" | "verbose" | "warn") => void;
206
+ }, audioManager: {
18
207
  getIterator: ({ src, timeInSeconds, audioSampleSink, isMatroska, actualMatroskaTimestamps, logLevel, maxCacheSize, }: {
19
208
  src: string;
20
209
  timeInSeconds: number;
@@ -66,10 +255,105 @@ export declare const audioManager: {
66
255
  } | null;
67
256
  logOpenFrames: () => void;
68
257
  deleteDuplicateIterators: (logLevel: "error" | "info" | "trace" | "verbose" | "warn") => void;
69
- };
70
- export declare const getTotalCacheStats: () => {
258
+ clearAll: () => void;
259
+ dispose: () => void;
260
+ }, getTotalCacheStats: () => {
71
261
  count: number;
72
262
  totalSize: number;
73
263
  };
264
+ export declare const useRenderMediaCache: (logLevel: "error" | "info" | "trace" | "verbose" | "warn") => {
265
+ sinkManager: {
266
+ getSink: (src: string, logLevel: "error" | "info" | "trace" | "verbose" | "warn", credentials: RequestCredentials | undefined, requestInit: import("./request-init").MediaRequestInit | undefined) => Promise<{
267
+ getVideo: () => Promise<import("./video-extraction/get-frames-since-keyframe").VideoSinkResult>;
268
+ getAudio: (index: number | null) => Promise<import("./video-extraction/get-frames-since-keyframe").AudioSinkResult>;
269
+ actualMatroskaTimestamps: {
270
+ observeTimestamp: (startTime: number) => void;
271
+ getRealTimestamp: (observedTimestamp: number) => number | null;
272
+ };
273
+ isMatroska: boolean;
274
+ getDuration: () => Promise<number>;
275
+ }>;
276
+ dispose: () => void;
277
+ };
278
+ keyframeManager: {
279
+ requestKeyframeBank: ({ timestamp, videoSampleSink, src, logLevel, maxCacheSize, fps, }: {
280
+ timestamp: number;
281
+ videoSampleSink: import("mediabunny").VideoSampleSink;
282
+ src: string;
283
+ logLevel: "error" | "info" | "trace" | "verbose" | "warn";
284
+ maxCacheSize: number;
285
+ fps: number;
286
+ }) => Promise<import("./video-extraction/keyframe-bank").KeyframeBank | null>;
287
+ getCacheStats: () => {
288
+ count: number;
289
+ totalSize: number;
290
+ };
291
+ clearAll: (logLevel: "error" | "info" | "trace" | "verbose" | "warn") => void;
292
+ dispose: (logLevel: "error" | "info" | "trace" | "verbose" | "warn") => void;
293
+ };
294
+ audioManager: {
295
+ getIterator: ({ src, timeInSeconds, audioSampleSink, isMatroska, actualMatroskaTimestamps, logLevel, maxCacheSize, }: {
296
+ src: string;
297
+ timeInSeconds: number;
298
+ audioSampleSink: import("mediabunny").AudioSampleSink;
299
+ isMatroska: boolean;
300
+ actualMatroskaTimestamps: {
301
+ observeTimestamp: (startTime: number) => void;
302
+ getRealTimestamp: (observedTimestamp: number) => number | null;
303
+ };
304
+ logLevel: "error" | "info" | "trace" | "verbose" | "warn";
305
+ maxCacheSize: number;
306
+ }) => Promise<{
307
+ src: string;
308
+ getSamples: (ts: number, dur: number) => Promise<import("mediabunny").AudioSample[]>;
309
+ waitForCompletion: () => Promise<boolean>;
310
+ canSatisfyRequestedTime: (timestamp: number) => boolean;
311
+ logOpenFrames: () => void;
312
+ getCacheStats: () => {
313
+ count: number;
314
+ size: number;
315
+ };
316
+ getLastUsed: () => number;
317
+ prepareForDeletion: () => void;
318
+ startTimestamp: number;
319
+ clearBeforeThreshold: (threshold: number) => void;
320
+ getOldestTimestamp: () => number;
321
+ getNewestTimestamp: () => number | null;
322
+ }>;
323
+ getCacheStats: () => {
324
+ count: number;
325
+ totalSize: number;
326
+ };
327
+ getIteratorMostInThePast: () => {
328
+ src: string;
329
+ getSamples: (ts: number, dur: number) => Promise<import("mediabunny").AudioSample[]>;
330
+ waitForCompletion: () => Promise<boolean>;
331
+ canSatisfyRequestedTime: (timestamp: number) => boolean;
332
+ logOpenFrames: () => void;
333
+ getCacheStats: () => {
334
+ count: number;
335
+ size: number;
336
+ };
337
+ getLastUsed: () => number;
338
+ prepareForDeletion: () => void;
339
+ startTimestamp: number;
340
+ clearBeforeThreshold: (threshold: number) => void;
341
+ getOldestTimestamp: () => number;
342
+ getNewestTimestamp: () => number | null;
343
+ } | null;
344
+ logOpenFrames: () => void;
345
+ deleteDuplicateIterators: (logLevel: "error" | "info" | "trace" | "verbose" | "warn") => void;
346
+ clearAll: () => void;
347
+ dispose: () => void;
348
+ };
349
+ getTotalCacheStats: () => {
350
+ count: number;
351
+ totalSize: number;
352
+ };
353
+ isDisposed: () => boolean;
354
+ queueFrameExtraction: <T>(extract: () => Promise<T>) => Promise<T>;
355
+ queueAudioExtraction: <T>(extract: () => Promise<T>) => Promise<T>;
356
+ dispose: (logLevel: "error" | "info" | "trace" | "verbose" | "warn") => void;
357
+ };
74
358
  export declare const getMaxVideoCacheSize: (logLevel: "error" | "info" | "trace" | "verbose" | "warn") => number;
75
359
  export declare const useMaxMediaCacheSize: (logLevel: "error" | "info" | "trace" | "verbose" | "warn") => number;