@remotion/renderer 4.0.420 → 4.0.422
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/assets/inline-audio-mixing.js +19 -3
- package/dist/client.d.ts +45 -0
- package/dist/esm/client.mjs +376 -274
- package/dist/esm/error-handling.mjs +1 -1
- package/dist/esm/index.mjs +74 -28
- 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/get-port.d.ts +7 -1
- package/dist/get-port.js +27 -7
- package/dist/index.d.ts +7 -1
- package/dist/options/force-new-studio.d.ts +15 -0
- package/dist/options/force-new-studio.js +29 -0
- package/dist/options/index.d.ts +45 -0
- package/dist/options/index.js +6 -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/print-useful-error-message.js +1 -1
- package/package.json +13 -13
|
@@ -297,7 +297,7 @@ var printUsefulErrorMessage = (err, logLevel, indent) => {
|
|
|
297
297
|
Log.warn({
|
|
298
298
|
indent,
|
|
299
299
|
logLevel
|
|
300
|
-
}, '\uD83D\uDCA1 You might need to set the OpenGL renderer to "angle
|
|
300
|
+
}, '\uD83D\uDCA1 You might need to set the OpenGL renderer to "angle". Learn why at https://www.remotion.dev/docs/three');
|
|
301
301
|
Log.warn({
|
|
302
302
|
indent,
|
|
303
303
|
logLevel
|
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
|
}
|
|
@@ -15338,6 +15351,13 @@ var numberTo32BiIntLittleEndian = (num) => {
|
|
|
15338
15351
|
var numberTo16BitLittleEndian = (num) => {
|
|
15339
15352
|
return new Uint8Array([num & 255, num >> 8 & 255]);
|
|
15340
15353
|
};
|
|
15354
|
+
var correctFloatingPointError = (value) => {
|
|
15355
|
+
const rounded = Math.round(value);
|
|
15356
|
+
if (Math.abs(value - rounded) < 0.00001) {
|
|
15357
|
+
return rounded;
|
|
15358
|
+
}
|
|
15359
|
+
return value;
|
|
15360
|
+
};
|
|
15341
15361
|
var BIT_DEPTH = 16;
|
|
15342
15362
|
var BYTES_PER_SAMPLE = BIT_DEPTH / 8;
|
|
15343
15363
|
var NUMBER_OF_CHANNELS = 2;
|
|
@@ -15442,13 +15462,13 @@ var makeInlineAudioMixing = (dir) => {
|
|
|
15442
15462
|
const samplesToShaveFromStart = trimLeftOffset * DEFAULT_SAMPLE_RATE;
|
|
15443
15463
|
const samplesToShaveFromEnd = trimRightOffset * DEFAULT_SAMPLE_RATE;
|
|
15444
15464
|
if (isFirst) {
|
|
15445
|
-
arr = arr.slice(Math.floor(samplesToShaveFromStart) * NUMBER_OF_CHANNELS);
|
|
15465
|
+
arr = arr.slice(Math.floor(correctFloatingPointError(samplesToShaveFromStart)) * NUMBER_OF_CHANNELS);
|
|
15446
15466
|
}
|
|
15447
15467
|
if (isLast) {
|
|
15448
|
-
arr = arr.slice(0, arr.length + Math.ceil(samplesToShaveFromEnd) * NUMBER_OF_CHANNELS);
|
|
15468
|
+
arr = arr.slice(0, arr.length + Math.ceil(correctFloatingPointError(samplesToShaveFromEnd)) * NUMBER_OF_CHANNELS);
|
|
15449
15469
|
}
|
|
15450
15470
|
const positionInSeconds = (asset.frame - firstFrame) / fps - (isFirst ? 0 : trimLeftOffset);
|
|
15451
|
-
const position = Math.floor(positionInSeconds * DEFAULT_SAMPLE_RATE) * NUMBER_OF_CHANNELS * BYTES_PER_SAMPLE;
|
|
15471
|
+
const position = Math.floor(correctFloatingPointError(positionInSeconds * DEFAULT_SAMPLE_RATE)) * NUMBER_OF_CHANNELS * BYTES_PER_SAMPLE;
|
|
15452
15472
|
writeSync(fileDescriptor, arr, 0, arr.byteLength, 44 + position);
|
|
15453
15473
|
};
|
|
15454
15474
|
return {
|
|
@@ -15633,7 +15653,8 @@ var testPortAvailableOnMultipleHosts = async ({
|
|
|
15633
15653
|
var getPort = async ({
|
|
15634
15654
|
from,
|
|
15635
15655
|
to,
|
|
15636
|
-
hostsToTest
|
|
15656
|
+
hostsToTest,
|
|
15657
|
+
onPortUnavailable
|
|
15637
15658
|
}) => {
|
|
15638
15659
|
const ports = makeRange(from, to);
|
|
15639
15660
|
for (const port of ports) {
|
|
@@ -15641,7 +15662,13 @@ var getPort = async ({
|
|
|
15641
15662
|
port,
|
|
15642
15663
|
hosts: hostsToTest
|
|
15643
15664
|
}) === "available") {
|
|
15644
|
-
return port;
|
|
15665
|
+
return { port, didUsePort: false };
|
|
15666
|
+
}
|
|
15667
|
+
if (onPortUnavailable) {
|
|
15668
|
+
const action = await onPortUnavailable(port);
|
|
15669
|
+
if (action === "stop") {
|
|
15670
|
+
return { port, didUsePort: true };
|
|
15671
|
+
}
|
|
15645
15672
|
}
|
|
15646
15673
|
}
|
|
15647
15674
|
throw new Error("No available ports found");
|
|
@@ -15651,7 +15678,8 @@ var getDesiredPort = async ({
|
|
|
15651
15678
|
desiredPort,
|
|
15652
15679
|
from,
|
|
15653
15680
|
hostsToTry,
|
|
15654
|
-
to
|
|
15681
|
+
to,
|
|
15682
|
+
onPortUnavailable
|
|
15655
15683
|
}) => {
|
|
15656
15684
|
await portLocks.waitForAllToBeDone();
|
|
15657
15685
|
const lockPortSelection = portLocks.lock();
|
|
@@ -15660,14 +15688,28 @@ var getDesiredPort = async ({
|
|
|
15660
15688
|
port: desiredPort,
|
|
15661
15689
|
hosts: hostsToTry
|
|
15662
15690
|
}) === "available") {
|
|
15663
|
-
return { port: desiredPort, unlockPort };
|
|
15691
|
+
return { port: desiredPort, unlockPort, didUsePort: false };
|
|
15692
|
+
}
|
|
15693
|
+
if (typeof desiredPort !== "undefined" && onPortUnavailable) {
|
|
15694
|
+
const action = await onPortUnavailable(desiredPort);
|
|
15695
|
+
if (action === "stop") {
|
|
15696
|
+
return { port: desiredPort, unlockPort, didUsePort: true };
|
|
15697
|
+
}
|
|
15664
15698
|
}
|
|
15665
|
-
const
|
|
15666
|
-
|
|
15699
|
+
const result = await getPort({
|
|
15700
|
+
from,
|
|
15701
|
+
to,
|
|
15702
|
+
hostsToTest: hostsToTry,
|
|
15703
|
+
onPortUnavailable
|
|
15704
|
+
});
|
|
15705
|
+
if (result.didUsePort) {
|
|
15706
|
+
return { port: result.port, unlockPort, didUsePort: true };
|
|
15707
|
+
}
|
|
15708
|
+
if (desiredPort && desiredPort !== result.port) {
|
|
15667
15709
|
unlockPort();
|
|
15668
15710
|
throw new Error(`You specified port ${desiredPort} to be used for the HTTP server, but it is not available. Choose a different port or remove the setting to let Remotion automatically select a free port.`);
|
|
15669
15711
|
}
|
|
15670
|
-
return { port:
|
|
15712
|
+
return { port: result.port, unlockPort, didUsePort: false };
|
|
15671
15713
|
};
|
|
15672
15714
|
var makeRange = (from, to) => {
|
|
15673
15715
|
if (!Number.isInteger(from) || !Number.isInteger(to)) {
|
|
@@ -16832,7 +16874,7 @@ var printUsefulErrorMessage = (err, logLevel, indent) => {
|
|
|
16832
16874
|
Log.warn({
|
|
16833
16875
|
indent,
|
|
16834
16876
|
logLevel
|
|
16835
|
-
}, '\uD83D\uDCA1 You might need to set the OpenGL renderer to "angle
|
|
16877
|
+
}, '\uD83D\uDCA1 You might need to set the OpenGL renderer to "angle". Learn why at https://www.remotion.dev/docs/three');
|
|
16836
16878
|
Log.warn({
|
|
16837
16879
|
indent,
|
|
16838
16880
|
logLevel
|
|
@@ -17347,10 +17389,14 @@ var getRealFrameRange = (durationInFrames, frameRange) => {
|
|
|
17347
17389
|
}
|
|
17348
17390
|
return [frameRange, frameRange];
|
|
17349
17391
|
}
|
|
17350
|
-
|
|
17351
|
-
|
|
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}`);
|
|
17352
17398
|
}
|
|
17353
|
-
return
|
|
17399
|
+
return resolved;
|
|
17354
17400
|
};
|
|
17355
17401
|
|
|
17356
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/get-port.d.ts
CHANGED
|
@@ -3,13 +3,19 @@ export declare const testPortAvailableOnMultipleHosts: ({ hosts, port, }: {
|
|
|
3
3
|
port: number;
|
|
4
4
|
hosts: string[];
|
|
5
5
|
}) => Promise<PortStatus>;
|
|
6
|
-
export declare const getDesiredPort: ({ desiredPort, from, hostsToTry, to, }: {
|
|
6
|
+
export declare const getDesiredPort: ({ desiredPort, from, hostsToTry, to, onPortUnavailable, }: {
|
|
7
7
|
desiredPort: number | undefined;
|
|
8
8
|
from: number;
|
|
9
9
|
to: number;
|
|
10
10
|
hostsToTry: string[];
|
|
11
|
+
onPortUnavailable?: ((port: number) => Promise<"continue" | "stop">) | undefined;
|
|
11
12
|
}) => Promise<{
|
|
12
13
|
port: number;
|
|
13
14
|
unlockPort: () => void;
|
|
15
|
+
didUsePort: false;
|
|
16
|
+
} | {
|
|
17
|
+
port: number;
|
|
18
|
+
unlockPort: () => void;
|
|
19
|
+
didUsePort: true;
|
|
14
20
|
}>;
|
|
15
21
|
export {};
|
package/dist/get-port.js
CHANGED
|
@@ -34,20 +34,26 @@ const testPortAvailableOnMultipleHosts = async ({ hosts, port, }) => {
|
|
|
34
34
|
return results.every((r) => r === 'available') ? 'available' : 'unavailable';
|
|
35
35
|
};
|
|
36
36
|
exports.testPortAvailableOnMultipleHosts = testPortAvailableOnMultipleHosts;
|
|
37
|
-
const getPort = async ({ from, to, hostsToTest, }) => {
|
|
37
|
+
const getPort = async ({ from, to, hostsToTest, onPortUnavailable, }) => {
|
|
38
38
|
const ports = makeRange(from, to);
|
|
39
39
|
for (const port of ports) {
|
|
40
40
|
if ((await (0, exports.testPortAvailableOnMultipleHosts)({
|
|
41
41
|
port,
|
|
42
42
|
hosts: hostsToTest,
|
|
43
43
|
})) === 'available') {
|
|
44
|
-
return port;
|
|
44
|
+
return { port, didUsePort: false };
|
|
45
|
+
}
|
|
46
|
+
if (onPortUnavailable) {
|
|
47
|
+
const action = await onPortUnavailable(port);
|
|
48
|
+
if (action === 'stop') {
|
|
49
|
+
return { port, didUsePort: true };
|
|
50
|
+
}
|
|
45
51
|
}
|
|
46
52
|
}
|
|
47
53
|
throw new Error('No available ports found');
|
|
48
54
|
};
|
|
49
55
|
const portLocks = (0, locks_1.createLock)({ timeout: 10000 });
|
|
50
|
-
const getDesiredPort = async ({ desiredPort, from, hostsToTry, to, }) => {
|
|
56
|
+
const getDesiredPort = async ({ desiredPort, from, hostsToTry, to, onPortUnavailable, }) => {
|
|
51
57
|
await portLocks.waitForAllToBeDone();
|
|
52
58
|
const lockPortSelection = portLocks.lock();
|
|
53
59
|
const unlockPort = () => portLocks.unlock(lockPortSelection);
|
|
@@ -56,15 +62,29 @@ const getDesiredPort = async ({ desiredPort, from, hostsToTry, to, }) => {
|
|
|
56
62
|
port: desiredPort,
|
|
57
63
|
hosts: hostsToTry,
|
|
58
64
|
})) === 'available') {
|
|
59
|
-
return { port: desiredPort, unlockPort };
|
|
65
|
+
return { port: desiredPort, unlockPort, didUsePort: false };
|
|
66
|
+
}
|
|
67
|
+
if (typeof desiredPort !== 'undefined' && onPortUnavailable) {
|
|
68
|
+
const action = await onPortUnavailable(desiredPort);
|
|
69
|
+
if (action === 'stop') {
|
|
70
|
+
return { port: desiredPort, unlockPort, didUsePort: true };
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
const result = await getPort({
|
|
74
|
+
from,
|
|
75
|
+
to,
|
|
76
|
+
hostsToTest: hostsToTry,
|
|
77
|
+
onPortUnavailable,
|
|
78
|
+
});
|
|
79
|
+
if (result.didUsePort) {
|
|
80
|
+
return { port: result.port, unlockPort, didUsePort: true };
|
|
60
81
|
}
|
|
61
|
-
const actualPort = await getPort({ from, to, hostsToTest: hostsToTry });
|
|
62
82
|
// If did specify a port but did not get that one, fail hard.
|
|
63
|
-
if (desiredPort && desiredPort !==
|
|
83
|
+
if (desiredPort && desiredPort !== result.port) {
|
|
64
84
|
unlockPort();
|
|
65
85
|
throw new Error(`You specified port ${desiredPort} to be used for the HTTP server, but it is not available. Choose a different port or remove the setting to let Remotion automatically select a free port.`);
|
|
66
86
|
}
|
|
67
|
-
return { port:
|
|
87
|
+
return { port: result.port, unlockPort, didUsePort: false };
|
|
68
88
|
};
|
|
69
89
|
exports.getDesiredPort = getDesiredPort;
|
|
70
90
|
const makeRange = (from, to) => {
|
package/dist/index.d.ts
CHANGED
|
@@ -106,14 +106,20 @@ export declare const RenderInternals: {
|
|
|
106
106
|
SymbolicateableError: typeof SymbolicateableError;
|
|
107
107
|
getFramesToRender: (frameRange: [number, number], everyNthFrame: number) => number[];
|
|
108
108
|
getExtensionOfFilename: (filename: string | null) => string | null;
|
|
109
|
-
getDesiredPort: ({ desiredPort, from, hostsToTry, to, }: {
|
|
109
|
+
getDesiredPort: ({ desiredPort, from, hostsToTry, to, onPortUnavailable, }: {
|
|
110
110
|
desiredPort: number | undefined;
|
|
111
111
|
from: number;
|
|
112
112
|
to: number;
|
|
113
113
|
hostsToTry: string[];
|
|
114
|
+
onPortUnavailable?: ((port: number) => Promise<"continue" | "stop">) | undefined;
|
|
114
115
|
}) => Promise<{
|
|
115
116
|
port: number;
|
|
116
117
|
unlockPort: () => void;
|
|
118
|
+
didUsePort: false;
|
|
119
|
+
} | {
|
|
120
|
+
port: number;
|
|
121
|
+
unlockPort: () => void;
|
|
122
|
+
didUsePort: true;
|
|
117
123
|
}>;
|
|
118
124
|
isPathInside: (thePath: string, potentialParent: string) => boolean;
|
|
119
125
|
execa: {
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare const forceNewStudioOption: {
|
|
2
|
+
name: string;
|
|
3
|
+
cliFlag: "force-new";
|
|
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.forceNewStudioOption = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
let forceNewEnabled = false;
|
|
6
|
+
const cliFlag = 'force-new';
|
|
7
|
+
exports.forceNewStudioOption = {
|
|
8
|
+
name: 'Force New Studio',
|
|
9
|
+
cliFlag,
|
|
10
|
+
description: () => (jsx_runtime_1.jsx(jsx_runtime_1.Fragment, { children: "Forces starting a new Studio instance even if one is already running on the same port for the same project." })),
|
|
11
|
+
ssrName: null,
|
|
12
|
+
docLink: 'https://www.remotion.dev/docs/config#setforcenewstudioenabled',
|
|
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: forceNewEnabled,
|
|
23
|
+
source: 'config',
|
|
24
|
+
};
|
|
25
|
+
},
|
|
26
|
+
setConfig(value) {
|
|
27
|
+
forceNewEnabled = value;
|
|
28
|
+
},
|
|
29
|
+
};
|
package/dist/options/index.d.ts
CHANGED
|
@@ -847,6 +847,51 @@ export declare const allOptions: {
|
|
|
847
847
|
};
|
|
848
848
|
setConfig(value: boolean): void;
|
|
849
849
|
};
|
|
850
|
+
forceNewStudioOption: {
|
|
851
|
+
name: string;
|
|
852
|
+
cliFlag: "force-new";
|
|
853
|
+
description: () => import("react/jsx-runtime").JSX.Element;
|
|
854
|
+
ssrName: null;
|
|
855
|
+
docLink: string;
|
|
856
|
+
type: boolean;
|
|
857
|
+
getValue: ({ commandLine }: {
|
|
858
|
+
commandLine: Record<string, unknown>;
|
|
859
|
+
}) => {
|
|
860
|
+
value: boolean;
|
|
861
|
+
source: string;
|
|
862
|
+
};
|
|
863
|
+
setConfig(value: boolean): void;
|
|
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
|
+
};
|
|
850
895
|
};
|
|
851
896
|
export type AvailableOptions = keyof typeof allOptions;
|
|
852
897
|
export type TypeOfOption<Type> = Type extends AnyRemotionOption<infer X> ? X : never;
|
package/dist/options/index.js
CHANGED
|
@@ -23,10 +23,12 @@ const enforce_audio_1 = require("./enforce-audio");
|
|
|
23
23
|
const experimental_client_side_rendering_1 = require("./experimental-client-side-rendering");
|
|
24
24
|
const folder_expiry_1 = require("./folder-expiry");
|
|
25
25
|
const for_seamless_aac_concatenation_1 = require("./for-seamless-aac-concatenation");
|
|
26
|
+
const force_new_studio_1 = require("./force-new-studio");
|
|
26
27
|
const gl_1 = require("./gl");
|
|
27
28
|
const hardware_acceleration_1 = require("./hardware-acceleration");
|
|
28
29
|
const headless_1 = require("./headless");
|
|
29
30
|
const image_sequence_pattern_1 = require("./image-sequence-pattern");
|
|
31
|
+
const ipv4_1 = require("./ipv4");
|
|
30
32
|
const is_production_1 = require("./is-production");
|
|
31
33
|
const jpeg_quality_1 = require("./jpeg-quality");
|
|
32
34
|
const keyboard_shortcuts_1 = require("./keyboard-shortcuts");
|
|
@@ -36,6 +38,7 @@ const log_level_1 = require("./log-level");
|
|
|
36
38
|
const metadata_1 = require("./metadata");
|
|
37
39
|
const mute_1 = require("./mute");
|
|
38
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");
|
|
39
42
|
const offthreadvideo_cache_size_1 = require("./offthreadvideo-cache-size");
|
|
40
43
|
const offthreadvideo_threads_1 = require("./offthreadvideo-threads");
|
|
41
44
|
const on_browser_download_1 = require("./on-browser-download");
|
|
@@ -108,4 +111,7 @@ exports.allOptions = {
|
|
|
108
111
|
askAIOption: ask_ai_1.askAIOption,
|
|
109
112
|
experimentalClientSideRenderingOption: experimental_client_side_rendering_1.experimentalClientSideRenderingOption,
|
|
110
113
|
keyboardShortcutsOption: keyboard_shortcuts_1.keyboardShortcutsOption,
|
|
114
|
+
forceNewStudioOption: force_new_studio_1.forceNewStudioOption,
|
|
115
|
+
numberOfSharedAudioTagsOption: number_of_shared_audio_tags_1.numberOfSharedAudioTagsOption,
|
|
116
|
+
ipv4Option: ipv4_1.ipv4Option,
|
|
111
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
|
+
};
|
|
@@ -58,7 +58,7 @@ const printUsefulErrorMessage = (err, logLevel, indent) => {
|
|
|
58
58
|
logger_1.Log.warn({
|
|
59
59
|
indent,
|
|
60
60
|
logLevel,
|
|
61
|
-
}, '💡 You might need to set the OpenGL renderer to "angle
|
|
61
|
+
}, '💡 You might need to set the OpenGL renderer to "angle". Learn why at https://www.remotion.dev/docs/three');
|
|
62
62
|
logger_1.Log.warn({
|
|
63
63
|
indent,
|
|
64
64
|
logLevel,
|
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.422",
|
|
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.422",
|
|
27
|
+
"@remotion/streaming": "4.0.422",
|
|
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.422"
|
|
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.422",
|
|
45
|
+
"@remotion/eslint-config-internal": "4.0.422",
|
|
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.422",
|
|
51
|
+
"@remotion/compositor-darwin-x64": "4.0.422",
|
|
52
|
+
"@remotion/compositor-linux-arm64-gnu": "4.0.422",
|
|
53
|
+
"@remotion/compositor-linux-arm64-musl": "4.0.422",
|
|
54
|
+
"@remotion/compositor-linux-x64-gnu": "4.0.422",
|
|
55
|
+
"@remotion/compositor-linux-x64-musl": "4.0.422",
|
|
56
|
+
"@remotion/compositor-win32-x64-msvc": "4.0.422"
|
|
57
57
|
},
|
|
58
58
|
"keywords": [
|
|
59
59
|
"remotion",
|