@remotion/renderer 4.0.170 → 4.0.172
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/client.d.ts +3 -3
- package/dist/get-available-memory.d.ts +1 -0
- package/dist/get-available-memory.js +14 -3
- package/dist/get-compositions.js +1 -0
- package/dist/index.d.ts +7 -6
- package/dist/options/gl.d.ts +3 -3
- package/dist/options/index.d.ts +3 -3
- package/dist/preprocess-audio-track.js +1 -1
- package/dist/render-frames.js +6 -0
- package/dist/render-media.js +1 -0
- package/dist/render-still.js +1 -0
- package/dist/select-composition.d.ts +1 -0
- package/dist/select-composition.js +5 -2
- package/dist/set-props-and-env.d.ts +1 -0
- package/dist/set-props-and-env.js +3 -1
- package/dist/stringify-ffmpeg-filter.d.ts +1 -0
- package/dist/stringify-ffmpeg-filter.js +1 -0
- package/package.json +10 -10
package/dist/client.d.ts
CHANGED
|
@@ -467,19 +467,19 @@ export declare const BrowserSafeApis: {
|
|
|
467
467
|
cliFlag: "gl";
|
|
468
468
|
docLink: string;
|
|
469
469
|
name: string;
|
|
470
|
-
type: "
|
|
470
|
+
type: "swangle" | "angle" | "egl" | "swiftshader" | "vulkan" | "angle-egl" | null;
|
|
471
471
|
ssrName: string;
|
|
472
472
|
description: () => import("react/jsx-runtime").JSX.Element;
|
|
473
473
|
getValue: ({ commandLine }: {
|
|
474
474
|
commandLine: Record<string, unknown>;
|
|
475
475
|
}) => {
|
|
476
|
-
value: "
|
|
476
|
+
value: "swangle" | "angle" | "egl" | "swiftshader" | "vulkan" | "angle-egl";
|
|
477
477
|
source: string;
|
|
478
478
|
} | {
|
|
479
479
|
value: null;
|
|
480
480
|
source: string;
|
|
481
481
|
};
|
|
482
|
-
setConfig: (value: "
|
|
482
|
+
setConfig: (value: "swangle" | "angle" | "egl" | "swiftshader" | "vulkan" | "angle-egl" | null) => void;
|
|
483
483
|
};
|
|
484
484
|
enableLambdaInsights: {
|
|
485
485
|
name: string;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getAvailableMemory = void 0;
|
|
3
|
+
exports.getAvailableMemory = exports.maxLambdaMemory = void 0;
|
|
4
4
|
const node_fs_1 = require("node:fs");
|
|
5
5
|
const node_os_1 = require("node:os");
|
|
6
6
|
const logger_1 = require("./logger");
|
|
@@ -32,16 +32,27 @@ const getFreeMemoryFromProcMeminfo = () => {
|
|
|
32
32
|
throw new Error(`Unknown unit: ${unit}`);
|
|
33
33
|
}
|
|
34
34
|
};
|
|
35
|
+
const maxLambdaMemory = () => {
|
|
36
|
+
if (process.env.AWS_LAMBDA_FUNCTION_MEMORY_SIZE) {
|
|
37
|
+
return (parseInt(process.env.AWS_LAMBDA_FUNCTION_MEMORY_SIZE, 10) * 1024 * 1024);
|
|
38
|
+
}
|
|
39
|
+
return Infinity;
|
|
40
|
+
};
|
|
41
|
+
exports.maxLambdaMemory = maxLambdaMemory;
|
|
35
42
|
const getAvailableMemory = (logLevel) => {
|
|
43
|
+
const maxMemory = (0, exports.maxLambdaMemory)();
|
|
36
44
|
if ((0, node_fs_1.existsSync)('/proc/meminfo')) {
|
|
37
45
|
try {
|
|
38
|
-
getFreeMemoryFromProcMeminfo();
|
|
46
|
+
const val = getFreeMemoryFromProcMeminfo();
|
|
47
|
+
if (val !== null) {
|
|
48
|
+
return Math.min(val, maxMemory);
|
|
49
|
+
}
|
|
39
50
|
}
|
|
40
51
|
catch (err) {
|
|
41
52
|
logger_1.Log.warn({ indent: false, logLevel }, 'Tried to get available memory from /proc/meminfo but failed. Falling back to os.freemem(). Error:');
|
|
42
53
|
logger_1.Log.warn({ indent: false, logLevel }, err);
|
|
43
54
|
}
|
|
44
55
|
}
|
|
45
|
-
return (0, node_os_1.freemem)();
|
|
56
|
+
return Math.min((0, node_os_1.freemem)(), maxMemory);
|
|
46
57
|
};
|
|
47
58
|
exports.getAvailableMemory = getAvailableMemory;
|
package/dist/get-compositions.js
CHANGED
package/dist/index.d.ts
CHANGED
|
@@ -140,8 +140,8 @@ export declare const RenderInternals: {
|
|
|
140
140
|
validPixelFormats: readonly ["yuv420p", "yuva420p", "yuv422p", "yuv444p", "yuv420p10le", "yuv422p10le", "yuv444p10le", "yuva444p10le"];
|
|
141
141
|
DEFAULT_BROWSER: "chrome";
|
|
142
142
|
validateFrameRange: (frameRange: import("./frame-range").FrameRange | null) => void;
|
|
143
|
-
DEFAULT_OPENGL_RENDERER: "
|
|
144
|
-
validateOpenGlRenderer: (option: unknown) => "
|
|
143
|
+
DEFAULT_OPENGL_RENDERER: "swangle" | "angle" | "egl" | "swiftshader" | "vulkan" | "angle-egl" | null;
|
|
144
|
+
validateOpenGlRenderer: (option: unknown) => "swangle" | "angle" | "egl" | "swiftshader" | "vulkan" | "angle-egl" | null;
|
|
145
145
|
validCodecs: readonly ["h264", "h265", "vp8", "vp9", "mp3", "aac", "wav", "prores", "h264-mkv", "h264-ts", "gif"];
|
|
146
146
|
DEFAULT_PIXEL_FORMAT: "yuv420p" | "yuva420p" | "yuv422p" | "yuv444p" | "yuv420p10le" | "yuv422p10le" | "yuv444p10le" | "yuva444p10le";
|
|
147
147
|
validateJpegQuality: (q: unknown) => void;
|
|
@@ -337,7 +337,7 @@ export declare const RenderInternals: {
|
|
|
337
337
|
makeFileExtensionMap: () => Record<string, ("h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "h264-ts" | "gif")[]>;
|
|
338
338
|
defaultCodecsForFileExtension: Record<import("./file-extensions").FileExtension, "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "h264-ts" | "gif">;
|
|
339
339
|
getExecutablePath: ({ indent, logLevel, type, binariesDirectory, }: {
|
|
340
|
-
type: "
|
|
340
|
+
type: "compositor" | "ffmpeg" | "ffprobe";
|
|
341
341
|
indent: boolean;
|
|
342
342
|
logLevel: "verbose" | "info" | "warn" | "error";
|
|
343
343
|
binariesDirectory: string | null;
|
|
@@ -353,8 +353,8 @@ export declare const RenderInternals: {
|
|
|
353
353
|
}) => execa.ExecaChildProcess<string>;
|
|
354
354
|
validStillImageFormats: readonly ["png", "jpeg", "pdf", "webp"];
|
|
355
355
|
validVideoImageFormats: readonly ["png", "jpeg", "none"];
|
|
356
|
-
DEFAULT_STILL_IMAGE_FORMAT: "
|
|
357
|
-
DEFAULT_VIDEO_IMAGE_FORMAT: "
|
|
356
|
+
DEFAULT_STILL_IMAGE_FORMAT: "png" | "jpeg" | "pdf" | "webp";
|
|
357
|
+
DEFAULT_VIDEO_IMAGE_FORMAT: "png" | "jpeg" | "none";
|
|
358
358
|
DEFAULT_JPEG_QUALITY: number;
|
|
359
359
|
chalk: {
|
|
360
360
|
enabled: () => boolean;
|
|
@@ -453,7 +453,7 @@ export declare const RenderInternals: {
|
|
|
453
453
|
frame: number;
|
|
454
454
|
serializedInputPropsWithCustomSchema: string;
|
|
455
455
|
serializedResolvedPropsWithCustomSchema: string;
|
|
456
|
-
imageFormat: "
|
|
456
|
+
imageFormat: "png" | "jpeg" | "pdf" | "webp";
|
|
457
457
|
jpegQuality: number;
|
|
458
458
|
puppeteerInstance: HeadlessBrowser | null;
|
|
459
459
|
envVariables: Record<string, string>;
|
|
@@ -583,6 +583,7 @@ export declare const RenderInternals: {
|
|
|
583
583
|
server: import("./prepare-server").RemotionServer | undefined;
|
|
584
584
|
serveUrl: string;
|
|
585
585
|
id: string;
|
|
586
|
+
onServeUrlVisited: () => void;
|
|
586
587
|
} & import("./options/option").ToOptions<{
|
|
587
588
|
readonly offthreadVideoCacheSizeInBytes: {
|
|
588
589
|
name: string;
|
package/dist/options/gl.d.ts
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
export declare const validOpenGlRenderers: readonly ["swangle", "angle", "egl", "swiftshader", "vulkan", "angle-egl"];
|
|
2
2
|
export type OpenGlRenderer = (typeof validOpenGlRenderers)[number];
|
|
3
3
|
export declare const DEFAULT_OPENGL_RENDERER: OpenGlRenderer | null;
|
|
4
|
-
export declare const getChromiumOpenGlRenderer: () => "
|
|
4
|
+
export declare const getChromiumOpenGlRenderer: () => "swangle" | "angle" | "egl" | "swiftshader" | "vulkan" | "angle-egl" | null;
|
|
5
5
|
export declare const setChromiumOpenGlRenderer: (renderer: OpenGlRenderer) => void;
|
|
6
6
|
export declare const glOption: {
|
|
7
7
|
cliFlag: "gl";
|
|
8
8
|
docLink: string;
|
|
9
9
|
name: string;
|
|
10
|
-
type: "
|
|
10
|
+
type: "swangle" | "angle" | "egl" | "swiftshader" | "vulkan" | "angle-egl" | null;
|
|
11
11
|
ssrName: string;
|
|
12
12
|
description: () => import("react/jsx-runtime").JSX.Element;
|
|
13
13
|
getValue: ({ commandLine }: {
|
|
14
14
|
commandLine: Record<string, unknown>;
|
|
15
15
|
}) => {
|
|
16
|
-
value: "
|
|
16
|
+
value: "swangle" | "angle" | "egl" | "swiftshader" | "vulkan" | "angle-egl";
|
|
17
17
|
source: string;
|
|
18
18
|
} | {
|
|
19
19
|
value: null;
|
package/dist/options/index.d.ts
CHANGED
|
@@ -245,19 +245,19 @@ export declare const allOptions: {
|
|
|
245
245
|
cliFlag: "gl";
|
|
246
246
|
docLink: string;
|
|
247
247
|
name: string;
|
|
248
|
-
type: "
|
|
248
|
+
type: "swangle" | "angle" | "egl" | "swiftshader" | "vulkan" | "angle-egl" | null;
|
|
249
249
|
ssrName: string;
|
|
250
250
|
description: () => import("react/jsx-runtime").JSX.Element;
|
|
251
251
|
getValue: ({ commandLine }: {
|
|
252
252
|
commandLine: Record<string, unknown>;
|
|
253
253
|
}) => {
|
|
254
|
-
value: "
|
|
254
|
+
value: "swangle" | "angle" | "egl" | "swiftshader" | "vulkan" | "angle-egl";
|
|
255
255
|
source: string;
|
|
256
256
|
} | {
|
|
257
257
|
value: null;
|
|
258
258
|
source: string;
|
|
259
259
|
};
|
|
260
|
-
setConfig: (value: "
|
|
260
|
+
setConfig: (value: "swangle" | "angle" | "egl" | "swiftshader" | "vulkan" | "angle-egl" | null) => void;
|
|
261
261
|
};
|
|
262
262
|
enableLambdaInsights: {
|
|
263
263
|
name: string;
|
|
@@ -61,7 +61,7 @@ const preprocessAudioTrackUnlimited = async ({ outName, asset, fps, downloadMap,
|
|
|
61
61
|
const utf8 = data.toString('utf8');
|
|
62
62
|
const parsed = (0, parse_ffmpeg_progress_1.parseFfmpegProgress)(utf8, fps);
|
|
63
63
|
if (parsed !== undefined) {
|
|
64
|
-
onProgress(parsed / (chunkLengthInSeconds * fps));
|
|
64
|
+
onProgress((parsed - filter.actualTrimLeft * fps) / (chunkLengthInSeconds * fps));
|
|
65
65
|
}
|
|
66
66
|
});
|
|
67
67
|
await task;
|
package/dist/render-frames.js
CHANGED
|
@@ -91,6 +91,7 @@ const innerRenderFrames = async ({ onFrameUpdate, outputDir, onStart, serialized
|
|
|
91
91
|
videoEnabled: imageFormat !== 'none',
|
|
92
92
|
indent,
|
|
93
93
|
logLevel,
|
|
94
|
+
onServeUrlVisited: () => undefined,
|
|
94
95
|
});
|
|
95
96
|
await (0, puppeteer_evaluate_1.puppeteerEvaluateWithCatch)({
|
|
96
97
|
// eslint-disable-next-line max-params
|
|
@@ -483,6 +484,11 @@ const internalRenderFramesRaw = ({ browserExecutable, cancelSignal, chromiumOpti
|
|
|
483
484
|
}),
|
|
484
485
|
])
|
|
485
486
|
.then((res) => {
|
|
487
|
+
server === null || server === void 0 ? void 0 : server.compositor.executeCommand('CloseAllVideos', {}).then(() => {
|
|
488
|
+
logger_1.Log.verbose({ indent, logLevel }, 'Freed memory from compositor');
|
|
489
|
+
}).catch((err) => {
|
|
490
|
+
logger_1.Log.verbose({ indent, logLevel }, 'Could not close compositor', err);
|
|
491
|
+
});
|
|
486
492
|
return resolve(res);
|
|
487
493
|
})
|
|
488
494
|
.catch((err) => reject(err))
|
package/dist/render-media.js
CHANGED
|
@@ -239,6 +239,7 @@ const internalRenderMediaRaw = ({ proResProfile, x264Preset, crf, composition, s
|
|
|
239
239
|
throw new Error(preStitcher === null || preStitcher === void 0 ? void 0 : preStitcher.getLogs());
|
|
240
240
|
}
|
|
241
241
|
}
|
|
242
|
+
return { usesParallelEncoding: Boolean(stitcherFfmpeg) };
|
|
242
243
|
};
|
|
243
244
|
const mediaSupport = (0, codec_supports_media_1.codecSupportsMedia)(codec);
|
|
244
245
|
const disableAudio = !mediaSupport.audio || muted;
|
package/dist/render-still.js
CHANGED
|
@@ -149,6 +149,7 @@ const innerRenderStill = async ({ composition, imageFormat = image_format_1.DEFA
|
|
|
149
149
|
videoEnabled: true,
|
|
150
150
|
indent,
|
|
151
151
|
logLevel,
|
|
152
|
+
onServeUrlVisited: () => undefined,
|
|
152
153
|
});
|
|
153
154
|
await (0, puppeteer_evaluate_1.puppeteerEvaluateWithCatch)({
|
|
154
155
|
// eslint-disable-next-line max-params
|
|
@@ -19,6 +19,7 @@ type InternalSelectCompositionsConfig = {
|
|
|
19
19
|
server: RemotionServer | undefined;
|
|
20
20
|
serveUrl: string;
|
|
21
21
|
id: string;
|
|
22
|
+
onServeUrlVisited: () => void;
|
|
22
23
|
} & ToOptions<typeof optionsMap.selectComposition>;
|
|
23
24
|
export type SelectCompositionOptions = RequiredInputPropsInV5 & {
|
|
24
25
|
envVariables?: Record<string, string>;
|
|
@@ -14,7 +14,7 @@ const seek_to_frame_1 = require("./seek-to-frame");
|
|
|
14
14
|
const set_props_and_env_1 = require("./set-props-and-env");
|
|
15
15
|
const validate_puppeteer_timeout_1 = require("./validate-puppeteer-timeout");
|
|
16
16
|
const wrap_with_error_handling_1 = require("./wrap-with-error-handling");
|
|
17
|
-
const innerSelectComposition = async ({ page, onBrowserLog, serializedInputPropsWithCustomSchema, envVariables, serveUrl, timeoutInMilliseconds, port, id, indent, logLevel, }) => {
|
|
17
|
+
const innerSelectComposition = async ({ page, onBrowserLog, serializedInputPropsWithCustomSchema, envVariables, serveUrl, timeoutInMilliseconds, port, id, indent, logLevel, onServeUrlVisited, }) => {
|
|
18
18
|
if (onBrowserLog) {
|
|
19
19
|
page.on('console', (log) => {
|
|
20
20
|
onBrowserLog({
|
|
@@ -38,6 +38,7 @@ const innerSelectComposition = async ({ page, onBrowserLog, serializedInputProps
|
|
|
38
38
|
videoEnabled: false,
|
|
39
39
|
indent,
|
|
40
40
|
logLevel,
|
|
41
|
+
onServeUrlVisited,
|
|
41
42
|
});
|
|
42
43
|
await (0, puppeteer_evaluate_1.puppeteerEvaluateWithCatch)({
|
|
43
44
|
page,
|
|
@@ -95,7 +96,7 @@ const innerSelectComposition = async ({ page, onBrowserLog, serializedInputProps
|
|
|
95
96
|
};
|
|
96
97
|
const internalSelectCompositionRaw = async (options) => {
|
|
97
98
|
const cleanup = [];
|
|
98
|
-
const { puppeteerInstance, browserExecutable, chromiumOptions, serveUrl: serveUrlOrWebpackUrl, logLevel, indent, port, envVariables, id, serializedInputPropsWithCustomSchema, onBrowserLog, server, timeoutInMilliseconds, offthreadVideoCacheSizeInBytes, binariesDirectory, onBrowserDownload, } = options;
|
|
99
|
+
const { puppeteerInstance, browserExecutable, chromiumOptions, serveUrl: serveUrlOrWebpackUrl, logLevel, indent, port, envVariables, id, serializedInputPropsWithCustomSchema, onBrowserLog, server, timeoutInMilliseconds, offthreadVideoCacheSizeInBytes, binariesDirectory, onBrowserDownload, onServeUrlVisited, } = options;
|
|
99
100
|
const { page, cleanup: cleanupPage } = await (0, get_browser_instance_1.getPageAndCleanupFn)({
|
|
100
101
|
passedInInstance: puppeteerInstance,
|
|
101
102
|
browserExecutable,
|
|
@@ -148,6 +149,7 @@ const internalSelectCompositionRaw = async (options) => {
|
|
|
148
149
|
offthreadVideoCacheSizeInBytes,
|
|
149
150
|
binariesDirectory,
|
|
150
151
|
onBrowserDownload,
|
|
152
|
+
onServeUrlVisited,
|
|
151
153
|
});
|
|
152
154
|
})
|
|
153
155
|
.then((data) => {
|
|
@@ -202,6 +204,7 @@ const selectComposition = async (options) => {
|
|
|
202
204
|
logLevel,
|
|
203
205
|
api: 'selectComposition()',
|
|
204
206
|
}),
|
|
207
|
+
onServeUrlVisited: () => undefined,
|
|
205
208
|
});
|
|
206
209
|
return data.metadata;
|
|
207
210
|
};
|
|
@@ -8,7 +8,7 @@ const normalize_serve_url_1 = require("./normalize-serve-url");
|
|
|
8
8
|
const puppeteer_evaluate_1 = require("./puppeteer-evaluate");
|
|
9
9
|
const redirect_status_codes_1 = require("./redirect-status-codes");
|
|
10
10
|
const validate_puppeteer_timeout_1 = require("./validate-puppeteer-timeout");
|
|
11
|
-
const innerSetPropsAndEnv = async ({ serializedInputPropsWithCustomSchema, envVariables, page, serveUrl, initialFrame, timeoutInMilliseconds, proxyPort, retriesRemaining, audioEnabled, videoEnabled, indent, logLevel, }) => {
|
|
11
|
+
const innerSetPropsAndEnv = async ({ serializedInputPropsWithCustomSchema, envVariables, page, serveUrl, initialFrame, timeoutInMilliseconds, proxyPort, retriesRemaining, audioEnabled, videoEnabled, indent, logLevel, onServeUrlVisited, }) => {
|
|
12
12
|
(0, validate_puppeteer_timeout_1.validatePuppeteerTimeout)(timeoutInMilliseconds);
|
|
13
13
|
const actualTimeout = timeoutInMilliseconds !== null && timeoutInMilliseconds !== void 0 ? timeoutInMilliseconds : TimeoutSettings_1.DEFAULT_TIMEOUT;
|
|
14
14
|
page.setDefaultTimeout(actualTimeout);
|
|
@@ -92,6 +92,7 @@ const innerSetPropsAndEnv = async ({ serializedInputPropsWithCustomSchema, envVa
|
|
|
92
92
|
videoEnabled,
|
|
93
93
|
indent,
|
|
94
94
|
logLevel,
|
|
95
|
+
onServeUrlVisited,
|
|
95
96
|
});
|
|
96
97
|
};
|
|
97
98
|
// S3 in rare occasions returns a 500 or 503 error code for GET operations.
|
|
@@ -102,6 +103,7 @@ const innerSetPropsAndEnv = async ({ serializedInputPropsWithCustomSchema, envVa
|
|
|
102
103
|
if (!redirect_status_codes_1.redirectStatusCodes.every((code) => code !== status)) {
|
|
103
104
|
throw new Error(`Error while getting compositions: Tried to go to ${urlToVisit} but the status code was ${status} instead of 200. Does the site you specified exist?`);
|
|
104
105
|
}
|
|
106
|
+
onServeUrlVisited();
|
|
105
107
|
const { value: isRemotionFn } = await (0, puppeteer_evaluate_1.puppeteerEvaluateWithCatch)({
|
|
106
108
|
pageFunction: () => {
|
|
107
109
|
return window.getStaticCompositions;
|
|
@@ -2,6 +2,7 @@ import type { AssetVolume, MediaAsset } from './assets/types';
|
|
|
2
2
|
import type { LogLevel } from './log-level';
|
|
3
3
|
export type FilterWithoutPaddingApplied = ProcessedTrack & {
|
|
4
4
|
filter: string;
|
|
5
|
+
actualTrimLeft: number;
|
|
5
6
|
};
|
|
6
7
|
export type ProcessedTrack = {
|
|
7
8
|
pad_start: string | null;
|
|
@@ -167,6 +167,7 @@ const stringifyFfmpegFilter = ({ channels, volume, fps, assetDuration, chunkLeng
|
|
|
167
167
|
: `adelay=${new Array(channels + 1)
|
|
168
168
|
.fill((startInVideoSeconds * 1000).toFixed(0))
|
|
169
169
|
.join('|')}`,
|
|
170
|
+
actualTrimLeft,
|
|
170
171
|
};
|
|
171
172
|
};
|
|
172
173
|
exports.stringifyFfmpegFilter = stringifyFfmpegFilter;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@remotion/renderer",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.172",
|
|
4
4
|
"description": "Renderer for Remotion",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"extract-zip": "2.0.1",
|
|
19
19
|
"source-map": "^0.8.0-beta.0",
|
|
20
20
|
"ws": "8.7.0",
|
|
21
|
-
"remotion": "4.0.
|
|
21
|
+
"remotion": "4.0.172"
|
|
22
22
|
},
|
|
23
23
|
"peerDependencies": {
|
|
24
24
|
"react": ">=16.8.0",
|
|
@@ -41,16 +41,16 @@
|
|
|
41
41
|
"react-dom": "18.3.1",
|
|
42
42
|
"vitest": "0.31.1",
|
|
43
43
|
"@types/ws": "8.5.10",
|
|
44
|
-
"@remotion/streaming": "4.0.
|
|
44
|
+
"@remotion/streaming": "4.0.172"
|
|
45
45
|
},
|
|
46
46
|
"optionalDependencies": {
|
|
47
|
-
"@remotion/compositor-
|
|
48
|
-
"@remotion/compositor-
|
|
49
|
-
"@remotion/compositor-
|
|
50
|
-
"@remotion/compositor-
|
|
51
|
-
"@remotion/compositor-linux-
|
|
52
|
-
"@remotion/compositor-linux-x64-musl": "4.0.
|
|
53
|
-
"@remotion/compositor-win32-x64-msvc": "4.0.
|
|
47
|
+
"@remotion/compositor-linux-arm64-gnu": "4.0.172",
|
|
48
|
+
"@remotion/compositor-darwin-arm64": "4.0.172",
|
|
49
|
+
"@remotion/compositor-linux-arm64-musl": "4.0.172",
|
|
50
|
+
"@remotion/compositor-darwin-x64": "4.0.172",
|
|
51
|
+
"@remotion/compositor-linux-x64-gnu": "4.0.172",
|
|
52
|
+
"@remotion/compositor-linux-x64-musl": "4.0.172",
|
|
53
|
+
"@remotion/compositor-win32-x64-msvc": "4.0.172"
|
|
54
54
|
},
|
|
55
55
|
"keywords": [
|
|
56
56
|
"remotion",
|