@remotion/renderer 4.0.421 → 4.0.423
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 +30 -0
- package/dist/esm/client.mjs +296 -225
- package/dist/esm/index.mjs +34 -17
- package/dist/frame-range.d.ts +1 -1
- package/dist/frame-range.js +27 -14
- package/dist/get-frame-to-render.js +9 -3
- package/dist/options/index.d.ts +30 -0
- package/dist/options/index.js +4 -0
- package/dist/options/ipv4.d.ts +15 -0
- package/dist/options/ipv4.js +29 -0
- package/dist/options/number-of-shared-audio-tags.d.ts +15 -0
- package/dist/options/number-of-shared-audio-tags.js +29 -0
- package/dist/options/private-license-key.d.ts +15 -0
- package/dist/options/private-license-key.js +35 -0
- package/package.json +13 -13
package/dist/esm/index.mjs
CHANGED
|
@@ -4645,21 +4645,34 @@ var validateFrameRange = (frameRange) => {
|
|
|
4645
4645
|
if (frameRange.length !== 2) {
|
|
4646
4646
|
throw new TypeError("Frame range must be a tuple, got an array with length " + frameRange.length);
|
|
4647
4647
|
}
|
|
4648
|
-
for (const value of frameRange) {
|
|
4649
|
-
if (typeof value !== "number") {
|
|
4650
|
-
throw new Error(`Each value of frame range must be a number, but got ${typeof value} (${JSON.stringify(value)})`);
|
|
4651
|
-
}
|
|
4652
|
-
if (!Number.isFinite(value)) {
|
|
4653
|
-
throw new TypeError("Each value of frame range must be finite, but got " + value);
|
|
4654
|
-
}
|
|
4655
|
-
if (!Number.isInteger(value)) {
|
|
4656
|
-
throw new Error(`Each value of frame range must be an integer, but got a float (${value})`);
|
|
4657
|
-
}
|
|
4658
|
-
if (value < 0) {
|
|
4659
|
-
throw new Error(`Each value of frame range must be non-negative, but got ${value}`);
|
|
4660
|
-
}
|
|
4661
|
-
}
|
|
4662
4648
|
const [first, second] = frameRange;
|
|
4649
|
+
if (typeof first !== "number") {
|
|
4650
|
+
throw new Error(`The first value of frame range must be a number, but got ${typeof first} (${JSON.stringify(first)})`);
|
|
4651
|
+
}
|
|
4652
|
+
if (!Number.isFinite(first)) {
|
|
4653
|
+
throw new TypeError("The first value of frame range must be finite, but got " + first);
|
|
4654
|
+
}
|
|
4655
|
+
if (!Number.isInteger(first)) {
|
|
4656
|
+
throw new Error(`The first value of frame range must be an integer, but got a float (${first})`);
|
|
4657
|
+
}
|
|
4658
|
+
if (first < 0) {
|
|
4659
|
+
throw new Error(`The first value of frame range must be non-negative, but got ${first}`);
|
|
4660
|
+
}
|
|
4661
|
+
if (second === null) {
|
|
4662
|
+
return;
|
|
4663
|
+
}
|
|
4664
|
+
if (typeof second !== "number") {
|
|
4665
|
+
throw new Error(`The second value of frame range must be a number or null, but got ${typeof second} (${JSON.stringify(second)})`);
|
|
4666
|
+
}
|
|
4667
|
+
if (!Number.isFinite(second)) {
|
|
4668
|
+
throw new TypeError("The second value of frame range must be finite, but got " + second);
|
|
4669
|
+
}
|
|
4670
|
+
if (!Number.isInteger(second)) {
|
|
4671
|
+
throw new Error(`The second value of frame range must be an integer, but got a float (${second})`);
|
|
4672
|
+
}
|
|
4673
|
+
if (second < 0) {
|
|
4674
|
+
throw new Error(`The second value of frame range must be non-negative, but got ${second}`);
|
|
4675
|
+
}
|
|
4663
4676
|
if (second < first) {
|
|
4664
4677
|
throw new Error("The second value of frame range must be not smaller than the first one, but got " + frameRange.join("-"));
|
|
4665
4678
|
}
|
|
@@ -17376,10 +17389,14 @@ var getRealFrameRange = (durationInFrames, frameRange) => {
|
|
|
17376
17389
|
}
|
|
17377
17390
|
return [frameRange, frameRange];
|
|
17378
17391
|
}
|
|
17379
|
-
|
|
17380
|
-
|
|
17392
|
+
const resolved = [
|
|
17393
|
+
frameRange[0],
|
|
17394
|
+
frameRange[1] === null ? durationInFrames - 1 : frameRange[1]
|
|
17395
|
+
];
|
|
17396
|
+
if (resolved[0] < 0 || resolved[1] >= durationInFrames || resolved[0] > resolved[1]) {
|
|
17397
|
+
throw new Error(`The "durationInFrames" of the <Composition /> was evaluated to be ${durationInFrames}, but frame range ${resolved.join("-")} is not inbetween 0-${durationInFrames - 1}`);
|
|
17381
17398
|
}
|
|
17382
|
-
return
|
|
17399
|
+
return resolved;
|
|
17383
17400
|
};
|
|
17384
17401
|
|
|
17385
17402
|
// src/image-format.ts
|
package/dist/frame-range.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export type FrameRange = number | [number, number];
|
|
1
|
+
export type FrameRange = number | [number, number] | [number, null];
|
|
2
2
|
export declare const validateFrameRange: (frameRange: FrameRange | null) => void;
|
package/dist/frame-range.js
CHANGED
|
@@ -22,21 +22,34 @@ const validateFrameRange = (frameRange) => {
|
|
|
22
22
|
throw new TypeError('Frame range must be a tuple, got an array with length ' +
|
|
23
23
|
frameRange.length);
|
|
24
24
|
}
|
|
25
|
-
for (const value of frameRange) {
|
|
26
|
-
if (typeof value !== 'number') {
|
|
27
|
-
throw new Error(`Each value of frame range must be a number, but got ${typeof value} (${JSON.stringify(value)})`);
|
|
28
|
-
}
|
|
29
|
-
if (!Number.isFinite(value)) {
|
|
30
|
-
throw new TypeError('Each value of frame range must be finite, but got ' + value);
|
|
31
|
-
}
|
|
32
|
-
if (!Number.isInteger(value)) {
|
|
33
|
-
throw new Error(`Each value of frame range must be an integer, but got a float (${value})`);
|
|
34
|
-
}
|
|
35
|
-
if (value < 0) {
|
|
36
|
-
throw new Error(`Each value of frame range must be non-negative, but got ${value}`);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
25
|
const [first, second] = frameRange;
|
|
26
|
+
if (typeof first !== 'number') {
|
|
27
|
+
throw new Error(`The first value of frame range must be a number, but got ${typeof first} (${JSON.stringify(first)})`);
|
|
28
|
+
}
|
|
29
|
+
if (!Number.isFinite(first)) {
|
|
30
|
+
throw new TypeError('The first value of frame range must be finite, but got ' + first);
|
|
31
|
+
}
|
|
32
|
+
if (!Number.isInteger(first)) {
|
|
33
|
+
throw new Error(`The first value of frame range must be an integer, but got a float (${first})`);
|
|
34
|
+
}
|
|
35
|
+
if (first < 0) {
|
|
36
|
+
throw new Error(`The first value of frame range must be non-negative, but got ${first}`);
|
|
37
|
+
}
|
|
38
|
+
if (second === null) {
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
if (typeof second !== 'number') {
|
|
42
|
+
throw new Error(`The second value of frame range must be a number or null, but got ${typeof second} (${JSON.stringify(second)})`);
|
|
43
|
+
}
|
|
44
|
+
if (!Number.isFinite(second)) {
|
|
45
|
+
throw new TypeError('The second value of frame range must be finite, but got ' + second);
|
|
46
|
+
}
|
|
47
|
+
if (!Number.isInteger(second)) {
|
|
48
|
+
throw new Error(`The second value of frame range must be an integer, but got a float (${second})`);
|
|
49
|
+
}
|
|
50
|
+
if (second < 0) {
|
|
51
|
+
throw new Error(`The second value of frame range must be non-negative, but got ${second}`);
|
|
52
|
+
}
|
|
40
53
|
if (second < first) {
|
|
41
54
|
throw new Error('The second value of frame range must be not smaller than the first one, but got ' +
|
|
42
55
|
frameRange.join('-'));
|
|
@@ -11,9 +11,15 @@ const getRealFrameRange = (durationInFrames, frameRange) => {
|
|
|
11
11
|
}
|
|
12
12
|
return [frameRange, frameRange];
|
|
13
13
|
}
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
const resolved = [
|
|
15
|
+
frameRange[0],
|
|
16
|
+
frameRange[1] === null ? durationInFrames - 1 : frameRange[1],
|
|
17
|
+
];
|
|
18
|
+
if (resolved[0] < 0 ||
|
|
19
|
+
resolved[1] >= durationInFrames ||
|
|
20
|
+
resolved[0] > resolved[1]) {
|
|
21
|
+
throw new Error(`The "durationInFrames" of the <Composition /> was evaluated to be ${durationInFrames}, but frame range ${resolved.join('-')} is not inbetween 0-${durationInFrames - 1}`);
|
|
16
22
|
}
|
|
17
|
-
return
|
|
23
|
+
return resolved;
|
|
18
24
|
};
|
|
19
25
|
exports.getRealFrameRange = getRealFrameRange;
|
package/dist/options/index.d.ts
CHANGED
|
@@ -862,6 +862,36 @@ export declare const allOptions: {
|
|
|
862
862
|
};
|
|
863
863
|
setConfig(value: boolean): void;
|
|
864
864
|
};
|
|
865
|
+
numberOfSharedAudioTagsOption: {
|
|
866
|
+
name: string;
|
|
867
|
+
cliFlag: "number-of-shared-audio-tags";
|
|
868
|
+
description: () => import("react/jsx-runtime").JSX.Element;
|
|
869
|
+
ssrName: null;
|
|
870
|
+
docLink: string;
|
|
871
|
+
type: number;
|
|
872
|
+
getValue: ({ commandLine }: {
|
|
873
|
+
commandLine: Record<string, unknown>;
|
|
874
|
+
}) => {
|
|
875
|
+
value: number;
|
|
876
|
+
source: string;
|
|
877
|
+
};
|
|
878
|
+
setConfig(value: number): void;
|
|
879
|
+
};
|
|
880
|
+
ipv4Option: {
|
|
881
|
+
name: string;
|
|
882
|
+
cliFlag: "ipv4";
|
|
883
|
+
description: () => import("react/jsx-runtime").JSX.Element;
|
|
884
|
+
ssrName: null;
|
|
885
|
+
docLink: string;
|
|
886
|
+
type: boolean;
|
|
887
|
+
getValue: ({ commandLine }: {
|
|
888
|
+
commandLine: Record<string, unknown>;
|
|
889
|
+
}) => {
|
|
890
|
+
value: boolean;
|
|
891
|
+
source: string;
|
|
892
|
+
};
|
|
893
|
+
setConfig(value: boolean): void;
|
|
894
|
+
};
|
|
865
895
|
};
|
|
866
896
|
export type AvailableOptions = keyof typeof allOptions;
|
|
867
897
|
export type TypeOfOption<Type> = Type extends AnyRemotionOption<infer X> ? X : never;
|
package/dist/options/index.js
CHANGED
|
@@ -28,6 +28,7 @@ const gl_1 = require("./gl");
|
|
|
28
28
|
const hardware_acceleration_1 = require("./hardware-acceleration");
|
|
29
29
|
const headless_1 = require("./headless");
|
|
30
30
|
const image_sequence_pattern_1 = require("./image-sequence-pattern");
|
|
31
|
+
const ipv4_1 = require("./ipv4");
|
|
31
32
|
const is_production_1 = require("./is-production");
|
|
32
33
|
const jpeg_quality_1 = require("./jpeg-quality");
|
|
33
34
|
const keyboard_shortcuts_1 = require("./keyboard-shortcuts");
|
|
@@ -37,6 +38,7 @@ const log_level_1 = require("./log-level");
|
|
|
37
38
|
const metadata_1 = require("./metadata");
|
|
38
39
|
const mute_1 = require("./mute");
|
|
39
40
|
const number_of_gif_loops_1 = require("./number-of-gif-loops");
|
|
41
|
+
const number_of_shared_audio_tags_1 = require("./number-of-shared-audio-tags");
|
|
40
42
|
const offthreadvideo_cache_size_1 = require("./offthreadvideo-cache-size");
|
|
41
43
|
const offthreadvideo_threads_1 = require("./offthreadvideo-threads");
|
|
42
44
|
const on_browser_download_1 = require("./on-browser-download");
|
|
@@ -110,4 +112,6 @@ exports.allOptions = {
|
|
|
110
112
|
experimentalClientSideRenderingOption: experimental_client_side_rendering_1.experimentalClientSideRenderingOption,
|
|
111
113
|
keyboardShortcutsOption: keyboard_shortcuts_1.keyboardShortcutsOption,
|
|
112
114
|
forceNewStudioOption: force_new_studio_1.forceNewStudioOption,
|
|
115
|
+
numberOfSharedAudioTagsOption: number_of_shared_audio_tags_1.numberOfSharedAudioTagsOption,
|
|
116
|
+
ipv4Option: ipv4_1.ipv4Option,
|
|
113
117
|
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare const ipv4Option: {
|
|
2
|
+
name: string;
|
|
3
|
+
cliFlag: "ipv4";
|
|
4
|
+
description: () => import("react/jsx-runtime").JSX.Element;
|
|
5
|
+
ssrName: null;
|
|
6
|
+
docLink: string;
|
|
7
|
+
type: boolean;
|
|
8
|
+
getValue: ({ commandLine }: {
|
|
9
|
+
commandLine: Record<string, unknown>;
|
|
10
|
+
}) => {
|
|
11
|
+
value: boolean;
|
|
12
|
+
source: string;
|
|
13
|
+
};
|
|
14
|
+
setConfig(value: boolean): void;
|
|
15
|
+
};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ipv4Option = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
let forceIPv4 = false;
|
|
6
|
+
const cliFlag = 'ipv4';
|
|
7
|
+
exports.ipv4Option = {
|
|
8
|
+
name: 'IPv4',
|
|
9
|
+
cliFlag,
|
|
10
|
+
description: () => (jsx_runtime_1.jsx(jsx_runtime_1.Fragment, { children: "Forces Remotion to bind to an IPv4 interface for the Studio server." })),
|
|
11
|
+
ssrName: null,
|
|
12
|
+
docLink: 'https://www.remotion.dev/docs/cli/studio',
|
|
13
|
+
type: false,
|
|
14
|
+
getValue: ({ commandLine }) => {
|
|
15
|
+
if (commandLine[cliFlag] !== undefined) {
|
|
16
|
+
return {
|
|
17
|
+
value: commandLine[cliFlag],
|
|
18
|
+
source: 'cli',
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
return {
|
|
22
|
+
value: forceIPv4,
|
|
23
|
+
source: 'config',
|
|
24
|
+
};
|
|
25
|
+
},
|
|
26
|
+
setConfig(value) {
|
|
27
|
+
forceIPv4 = value;
|
|
28
|
+
},
|
|
29
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare const numberOfSharedAudioTagsOption: {
|
|
2
|
+
name: string;
|
|
3
|
+
cliFlag: "number-of-shared-audio-tags";
|
|
4
|
+
description: () => import("react/jsx-runtime").JSX.Element;
|
|
5
|
+
ssrName: null;
|
|
6
|
+
docLink: string;
|
|
7
|
+
type: number;
|
|
8
|
+
getValue: ({ commandLine }: {
|
|
9
|
+
commandLine: Record<string, unknown>;
|
|
10
|
+
}) => {
|
|
11
|
+
value: number;
|
|
12
|
+
source: string;
|
|
13
|
+
};
|
|
14
|
+
setConfig(value: number): void;
|
|
15
|
+
};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.numberOfSharedAudioTagsOption = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
let numberOfSharedAudioTags = 0;
|
|
6
|
+
const cliFlag = 'number-of-shared-audio-tags';
|
|
7
|
+
exports.numberOfSharedAudioTagsOption = {
|
|
8
|
+
name: 'Number of shared audio tags',
|
|
9
|
+
cliFlag,
|
|
10
|
+
description: () => (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: ["Set number of shared audio tags. See", ' ', jsx_runtime_1.jsx("a", { href: "https://www.remotion.dev/docs/player/autoplay#using-the-numberofsharedaudiotags-prop", children: "Using the numberOfSharedAudioTags prop" }), ' ', "for more information."] })),
|
|
11
|
+
ssrName: null,
|
|
12
|
+
docLink: 'https://www.remotion.dev/docs/config#setnumberofsharedaudiotags',
|
|
13
|
+
type: 0,
|
|
14
|
+
getValue: ({ commandLine }) => {
|
|
15
|
+
if (commandLine[cliFlag] !== undefined) {
|
|
16
|
+
return {
|
|
17
|
+
value: commandLine[cliFlag],
|
|
18
|
+
source: 'cli',
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
return {
|
|
22
|
+
value: numberOfSharedAudioTags,
|
|
23
|
+
source: 'config',
|
|
24
|
+
};
|
|
25
|
+
},
|
|
26
|
+
setConfig(value) {
|
|
27
|
+
numberOfSharedAudioTags = value;
|
|
28
|
+
},
|
|
29
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare const privateLicenseKeyOption: {
|
|
2
|
+
name: string;
|
|
3
|
+
cliFlag: "private-license-key";
|
|
4
|
+
description: () => import("react/jsx-runtime").JSX.Element;
|
|
5
|
+
ssrName: "privateLicenseKey";
|
|
6
|
+
docLink: string;
|
|
7
|
+
getValue: ({ commandLine }: {
|
|
8
|
+
commandLine: Record<string, unknown>;
|
|
9
|
+
}) => {
|
|
10
|
+
source: string;
|
|
11
|
+
value: string | null;
|
|
12
|
+
};
|
|
13
|
+
setConfig: (value: string | null) => void;
|
|
14
|
+
type: string | null;
|
|
15
|
+
};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.privateLicenseKeyOption = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const cliFlag = 'private-license-key';
|
|
6
|
+
let currentPrivateLicenseKey = null;
|
|
7
|
+
exports.privateLicenseKeyOption = {
|
|
8
|
+
name: 'Private License Key',
|
|
9
|
+
cliFlag,
|
|
10
|
+
description: () => ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: ["The private license key for your company license, obtained from the \"Usage\" tab on ", (0, jsx_runtime_1.jsx)("a", { href: "https://remotion.pro/dashboard", children: "remotion.pro" }), ". If you are eligible for the free license, pass \"free-license\"."] })),
|
|
11
|
+
ssrName: 'privateLicenseKey',
|
|
12
|
+
docLink: 'https://www.remotion.dev/docs/licensing',
|
|
13
|
+
getValue: ({ commandLine }) => {
|
|
14
|
+
if (commandLine[cliFlag] !== undefined) {
|
|
15
|
+
return {
|
|
16
|
+
source: 'cli',
|
|
17
|
+
value: commandLine[cliFlag],
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
if (currentPrivateLicenseKey !== null) {
|
|
21
|
+
return {
|
|
22
|
+
source: 'config',
|
|
23
|
+
value: currentPrivateLicenseKey,
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
return {
|
|
27
|
+
source: 'default',
|
|
28
|
+
value: null,
|
|
29
|
+
};
|
|
30
|
+
},
|
|
31
|
+
setConfig: (value) => {
|
|
32
|
+
currentPrivateLicenseKey = value;
|
|
33
|
+
},
|
|
34
|
+
type: null,
|
|
35
|
+
};
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"url": "https://github.com/remotion-dev/remotion/tree/main/packages/renderer"
|
|
4
4
|
},
|
|
5
5
|
"name": "@remotion/renderer",
|
|
6
|
-
"version": "4.0.
|
|
6
|
+
"version": "4.0.423",
|
|
7
7
|
"description": "Render Remotion videos using Node.js or Bun",
|
|
8
8
|
"main": "dist/index.js",
|
|
9
9
|
"types": "dist/index.d.ts",
|
|
@@ -23,11 +23,11 @@
|
|
|
23
23
|
"dependencies": {
|
|
24
24
|
"execa": "5.1.1",
|
|
25
25
|
"extract-zip": "2.0.1",
|
|
26
|
-
"remotion": "4.0.
|
|
27
|
-
"@remotion/streaming": "4.0.
|
|
26
|
+
"remotion": "4.0.423",
|
|
27
|
+
"@remotion/streaming": "4.0.423",
|
|
28
28
|
"source-map": "^0.8.0-beta.0",
|
|
29
29
|
"ws": "8.17.1",
|
|
30
|
-
"@remotion/licensing": "4.0.
|
|
30
|
+
"@remotion/licensing": "4.0.423"
|
|
31
31
|
},
|
|
32
32
|
"peerDependencies": {
|
|
33
33
|
"react": ">=16.8.0",
|
|
@@ -41,19 +41,19 @@
|
|
|
41
41
|
"react-dom": "19.2.3",
|
|
42
42
|
"@typescript/native-preview": "7.0.0-dev.20260105.1",
|
|
43
43
|
"@types/ws": "8.5.10",
|
|
44
|
-
"@remotion/example-videos": "4.0.
|
|
45
|
-
"@remotion/eslint-config-internal": "4.0.
|
|
44
|
+
"@remotion/example-videos": "4.0.423",
|
|
45
|
+
"@remotion/eslint-config-internal": "4.0.423",
|
|
46
46
|
"eslint": "9.19.0",
|
|
47
47
|
"@types/node": "20.12.14"
|
|
48
48
|
},
|
|
49
49
|
"optionalDependencies": {
|
|
50
|
-
"@remotion/compositor-darwin-arm64": "4.0.
|
|
51
|
-
"@remotion/compositor-darwin-x64": "4.0.
|
|
52
|
-
"@remotion/compositor-linux-arm64-gnu": "4.0.
|
|
53
|
-
"@remotion/compositor-linux-arm64-musl": "4.0.
|
|
54
|
-
"@remotion/compositor-linux-x64-gnu": "4.0.
|
|
55
|
-
"@remotion/compositor-linux-x64-musl": "4.0.
|
|
56
|
-
"@remotion/compositor-win32-x64-msvc": "4.0.
|
|
50
|
+
"@remotion/compositor-darwin-arm64": "4.0.423",
|
|
51
|
+
"@remotion/compositor-darwin-x64": "4.0.423",
|
|
52
|
+
"@remotion/compositor-linux-arm64-gnu": "4.0.423",
|
|
53
|
+
"@remotion/compositor-linux-arm64-musl": "4.0.423",
|
|
54
|
+
"@remotion/compositor-linux-x64-gnu": "4.0.423",
|
|
55
|
+
"@remotion/compositor-linux-x64-musl": "4.0.423",
|
|
56
|
+
"@remotion/compositor-win32-x64-msvc": "4.0.423"
|
|
57
57
|
},
|
|
58
58
|
"keywords": [
|
|
59
59
|
"remotion",
|