@remotion/renderer 4.0.513 → 4.0.515
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 +78 -0
- package/dist/compositor/compositor.d.ts +7 -0
- package/dist/compositor/compositor.js +45 -1
- package/dist/ensure-browser.d.ts +2 -0
- package/dist/esm/client.mjs +978 -839
- package/dist/esm/index.mjs +104 -11
- package/dist/index.d.ts +13 -1
- package/dist/offthread-video-server.js +3 -8
- package/dist/options/ask-ai.d.ts +2 -0
- package/dist/options/ask-ai.js +7 -0
- package/dist/options/beep-on-finish.d.ts +2 -0
- package/dist/options/beep-on-finish.js +7 -0
- package/dist/options/cross-site-isolation.d.ts +2 -0
- package/dist/options/cross-site-isolation.js +7 -0
- package/dist/options/enable-cancellation.d.ts +16 -0
- package/dist/options/enable-cancellation.js +31 -0
- package/dist/options/index.d.ts +50 -0
- package/dist/options/index.js +4 -0
- package/dist/options/interactivity.d.ts +2 -0
- package/dist/options/interactivity.js +7 -0
- package/dist/options/keyboard-shortcuts.d.ts +2 -0
- package/dist/options/keyboard-shortcuts.js +7 -0
- package/dist/options/latency-hint.d.ts +2 -0
- package/dist/options/latency-hint.js +4 -0
- package/dist/options/log-level.d.ts +2 -0
- package/dist/options/log-level.js +7 -0
- package/dist/options/number-of-shared-audio-tags.d.ts +2 -0
- package/dist/options/number-of-shared-audio-tags.js +7 -0
- package/dist/options/option.d.ts +1 -0
- package/dist/options/options-map.d.ts +28 -0
- package/dist/options/rspack.d.ts +2 -0
- package/dist/options/rspack.js +7 -0
- package/dist/prestitcher-memory-usage.d.ts +4 -0
- package/dist/prestitcher-memory-usage.js +10 -3
- package/dist/render-frame-and-retry-target-close.d.ts +1 -1
- package/dist/render-frame-with-option-to-reject.d.ts +1 -1
- package/dist/render-frame-with-option-to-reject.js +1 -1
- package/dist/render-frame.d.ts +1 -1
- package/dist/render-frames.d.ts +3 -3
- package/dist/render-frames.js +8 -2
- package/dist/render-media.js +7 -3
- package/dist/write-with-backpressure.d.ts +5 -0
- package/dist/write-with-backpressure.js +34 -0
- package/package.json +13 -13
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.numberOfSharedAudioTagsOption = void 0;
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
5
|
let numberOfSharedAudioTags = 0;
|
|
6
|
+
let configuredNumberOfSharedAudioTags = null;
|
|
6
7
|
const cliFlag = 'number-of-shared-audio-tags';
|
|
7
8
|
exports.numberOfSharedAudioTagsOption = {
|
|
8
9
|
name: 'Number of shared audio tags',
|
|
@@ -25,6 +26,12 @@ exports.numberOfSharedAudioTagsOption = {
|
|
|
25
26
|
},
|
|
26
27
|
setConfig(value) {
|
|
27
28
|
numberOfSharedAudioTags = value;
|
|
29
|
+
configuredNumberOfSharedAudioTags = value;
|
|
30
|
+
},
|
|
31
|
+
getConfigValue: () => configuredNumberOfSharedAudioTags,
|
|
32
|
+
reset: () => {
|
|
33
|
+
numberOfSharedAudioTags = 0;
|
|
34
|
+
configuredNumberOfSharedAudioTags = null;
|
|
28
35
|
},
|
|
29
36
|
id: cliFlag,
|
|
30
37
|
};
|
package/dist/options/option.d.ts
CHANGED
|
@@ -301,6 +301,8 @@ export declare const optionsMap: {
|
|
|
301
301
|
source: string;
|
|
302
302
|
};
|
|
303
303
|
setConfig: (newLogLevel: "error" | "info" | "trace" | "verbose" | "warn") => void;
|
|
304
|
+
getConfigValue: () => "error" | "info" | "trace" | "verbose" | "warn" | null;
|
|
305
|
+
reset: () => void;
|
|
304
306
|
type: "error" | "info" | "trace" | "verbose" | "warn";
|
|
305
307
|
id: "log";
|
|
306
308
|
};
|
|
@@ -593,6 +595,8 @@ export declare const optionsMap: {
|
|
|
593
595
|
source: string;
|
|
594
596
|
};
|
|
595
597
|
setConfig: (newLogLevel: "error" | "info" | "trace" | "verbose" | "warn") => void;
|
|
598
|
+
getConfigValue: () => "error" | "info" | "trace" | "verbose" | "warn" | null;
|
|
599
|
+
reset: () => void;
|
|
596
600
|
type: "error" | "info" | "trace" | "verbose" | "warn";
|
|
597
601
|
id: "log";
|
|
598
602
|
};
|
|
@@ -759,6 +763,8 @@ export declare const optionsMap: {
|
|
|
759
763
|
source: string;
|
|
760
764
|
};
|
|
761
765
|
setConfig: (newLogLevel: "error" | "info" | "trace" | "verbose" | "warn") => void;
|
|
766
|
+
getConfigValue: () => "error" | "info" | "trace" | "verbose" | "warn" | null;
|
|
767
|
+
reset: () => void;
|
|
762
768
|
type: "error" | "info" | "trace" | "verbose" | "warn";
|
|
763
769
|
id: "log";
|
|
764
770
|
};
|
|
@@ -893,6 +899,8 @@ export declare const optionsMap: {
|
|
|
893
899
|
source: string;
|
|
894
900
|
};
|
|
895
901
|
setConfig: (newLogLevel: "error" | "info" | "trace" | "verbose" | "warn") => void;
|
|
902
|
+
getConfigValue: () => "error" | "info" | "trace" | "verbose" | "warn" | null;
|
|
903
|
+
reset: () => void;
|
|
896
904
|
type: "error" | "info" | "trace" | "verbose" | "warn";
|
|
897
905
|
id: "log";
|
|
898
906
|
};
|
|
@@ -1062,6 +1070,8 @@ export declare const optionsMap: {
|
|
|
1062
1070
|
source: string;
|
|
1063
1071
|
};
|
|
1064
1072
|
setConfig: (newLogLevel: "error" | "info" | "trace" | "verbose" | "warn") => void;
|
|
1073
|
+
getConfigValue: () => "error" | "info" | "trace" | "verbose" | "warn" | null;
|
|
1074
|
+
reset: () => void;
|
|
1065
1075
|
type: "error" | "info" | "trace" | "verbose" | "warn";
|
|
1066
1076
|
id: "log";
|
|
1067
1077
|
};
|
|
@@ -1427,6 +1437,8 @@ export declare const optionsMap: {
|
|
|
1427
1437
|
source: string;
|
|
1428
1438
|
};
|
|
1429
1439
|
setConfig: (newLogLevel: "error" | "info" | "trace" | "verbose" | "warn") => void;
|
|
1440
|
+
getConfigValue: () => "error" | "info" | "trace" | "verbose" | "warn" | null;
|
|
1441
|
+
reset: () => void;
|
|
1430
1442
|
type: "error" | "info" | "trace" | "verbose" | "warn";
|
|
1431
1443
|
id: "log";
|
|
1432
1444
|
};
|
|
@@ -1582,6 +1594,8 @@ export declare const optionsMap: {
|
|
|
1582
1594
|
source: string;
|
|
1583
1595
|
};
|
|
1584
1596
|
setConfig: (newLogLevel: "error" | "info" | "trace" | "verbose" | "warn") => void;
|
|
1597
|
+
getConfigValue: () => "error" | "info" | "trace" | "verbose" | "warn" | null;
|
|
1598
|
+
reset: () => void;
|
|
1585
1599
|
type: "error" | "info" | "trace" | "verbose" | "warn";
|
|
1586
1600
|
id: "log";
|
|
1587
1601
|
};
|
|
@@ -1721,6 +1735,8 @@ export declare const optionsMap: {
|
|
|
1721
1735
|
source: string;
|
|
1722
1736
|
};
|
|
1723
1737
|
setConfig: (newLogLevel: "error" | "info" | "trace" | "verbose" | "warn") => void;
|
|
1738
|
+
getConfigValue: () => "error" | "info" | "trace" | "verbose" | "warn" | null;
|
|
1739
|
+
reset: () => void;
|
|
1724
1740
|
type: "error" | "info" | "trace" | "verbose" | "warn";
|
|
1725
1741
|
id: "log";
|
|
1726
1742
|
};
|
|
@@ -1991,6 +2007,8 @@ export declare const optionsMap: {
|
|
|
1991
2007
|
source: string;
|
|
1992
2008
|
};
|
|
1993
2009
|
setConfig: (newLogLevel: "error" | "info" | "trace" | "verbose" | "warn") => void;
|
|
2010
|
+
getConfigValue: () => "error" | "info" | "trace" | "verbose" | "warn" | null;
|
|
2011
|
+
reset: () => void;
|
|
1994
2012
|
type: "error" | "info" | "trace" | "verbose" | "warn";
|
|
1995
2013
|
id: "log";
|
|
1996
2014
|
};
|
|
@@ -2165,6 +2183,8 @@ export declare const optionsMap: {
|
|
|
2165
2183
|
source: string;
|
|
2166
2184
|
};
|
|
2167
2185
|
setConfig: (newLogLevel: "error" | "info" | "trace" | "verbose" | "warn") => void;
|
|
2186
|
+
getConfigValue: () => "error" | "info" | "trace" | "verbose" | "warn" | null;
|
|
2187
|
+
reset: () => void;
|
|
2168
2188
|
type: "error" | "info" | "trace" | "verbose" | "warn";
|
|
2169
2189
|
id: "log";
|
|
2170
2190
|
};
|
|
@@ -2231,6 +2251,8 @@ export declare const optionsMap: {
|
|
|
2231
2251
|
source: string;
|
|
2232
2252
|
};
|
|
2233
2253
|
setConfig: (newLogLevel: "error" | "info" | "trace" | "verbose" | "warn") => void;
|
|
2254
|
+
getConfigValue: () => "error" | "info" | "trace" | "verbose" | "warn" | null;
|
|
2255
|
+
reset: () => void;
|
|
2234
2256
|
type: "error" | "info" | "trace" | "verbose" | "warn";
|
|
2235
2257
|
id: "log";
|
|
2236
2258
|
};
|
|
@@ -2276,6 +2298,8 @@ export declare const optionsMap: {
|
|
|
2276
2298
|
source: string;
|
|
2277
2299
|
};
|
|
2278
2300
|
setConfig: (newLogLevel: "error" | "info" | "trace" | "verbose" | "warn") => void;
|
|
2301
|
+
getConfigValue: () => "error" | "info" | "trace" | "verbose" | "warn" | null;
|
|
2302
|
+
reset: () => void;
|
|
2279
2303
|
type: "error" | "info" | "trace" | "verbose" | "warn";
|
|
2280
2304
|
id: "log";
|
|
2281
2305
|
};
|
|
@@ -2321,6 +2345,8 @@ export declare const optionsMap: {
|
|
|
2321
2345
|
source: string;
|
|
2322
2346
|
};
|
|
2323
2347
|
setConfig: (newLogLevel: "error" | "info" | "trace" | "verbose" | "warn") => void;
|
|
2348
|
+
getConfigValue: () => "error" | "info" | "trace" | "verbose" | "warn" | null;
|
|
2349
|
+
reset: () => void;
|
|
2324
2350
|
type: "error" | "info" | "trace" | "verbose" | "warn";
|
|
2325
2351
|
id: "log";
|
|
2326
2352
|
};
|
|
@@ -2355,6 +2381,8 @@ export declare const optionsMap: {
|
|
|
2355
2381
|
source: string;
|
|
2356
2382
|
};
|
|
2357
2383
|
setConfig: (newLogLevel: "error" | "info" | "trace" | "verbose" | "warn") => void;
|
|
2384
|
+
getConfigValue: () => "error" | "info" | "trace" | "verbose" | "warn" | null;
|
|
2385
|
+
reset: () => void;
|
|
2358
2386
|
type: "error" | "info" | "trace" | "verbose" | "warn";
|
|
2359
2387
|
id: "log";
|
|
2360
2388
|
};
|
package/dist/options/rspack.d.ts
CHANGED
package/dist/options/rspack.js
CHANGED
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.rspackOption = void 0;
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
5
|
let rspackEnabled = false;
|
|
6
|
+
let configuredRspackEnabled = null;
|
|
6
7
|
const cliFlag = 'rspack';
|
|
7
8
|
exports.rspackOption = {
|
|
8
9
|
name: 'Rspack',
|
|
@@ -25,6 +26,12 @@ exports.rspackOption = {
|
|
|
25
26
|
},
|
|
26
27
|
setConfig(value) {
|
|
27
28
|
rspackEnabled = value;
|
|
29
|
+
configuredRspackEnabled = value;
|
|
30
|
+
},
|
|
31
|
+
getConfigValue: () => configuredRspackEnabled,
|
|
32
|
+
reset: () => {
|
|
33
|
+
rspackEnabled = false;
|
|
34
|
+
configuredRspackEnabled = null;
|
|
28
35
|
},
|
|
29
36
|
id: cliFlag,
|
|
30
37
|
};
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
export declare const hasEnoughMemoryForParallelEncoding: ({ freeMemory, estimatedUsage, }: {
|
|
2
|
+
freeMemory: number;
|
|
3
|
+
estimatedUsage: number;
|
|
4
|
+
}) => boolean;
|
|
1
5
|
export declare const shouldUseParallelEncoding: ({ width, height, logLevel, }: {
|
|
2
6
|
width: number;
|
|
3
7
|
height: number;
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.shouldUseParallelEncoding = void 0;
|
|
3
|
+
exports.shouldUseParallelEncoding = exports.hasEnoughMemoryForParallelEncoding = void 0;
|
|
4
4
|
const get_available_memory_1 = require("./memory/get-available-memory");
|
|
5
|
+
const MINIMUM_MEMORY_LEFT = 2000000000;
|
|
6
|
+
const hasEnoughMemoryForParallelEncoding = ({ freeMemory, estimatedUsage, }) => {
|
|
7
|
+
return freeMemory - estimatedUsage > MINIMUM_MEMORY_LEFT;
|
|
8
|
+
};
|
|
9
|
+
exports.hasEnoughMemoryForParallelEncoding = hasEnoughMemoryForParallelEncoding;
|
|
5
10
|
const estimateMemoryUsageForPrestitcher = ({ width, height, }) => {
|
|
6
11
|
// Empirically we detected that per 1 million pixels, FFMPEG uses around 1GB of memory, relatively independent of
|
|
7
12
|
// the duration of the video.
|
|
@@ -15,8 +20,10 @@ const shouldUseParallelEncoding = ({ width, height, logLevel, }) => {
|
|
|
15
20
|
height,
|
|
16
21
|
width,
|
|
17
22
|
});
|
|
18
|
-
const hasEnoughMemory =
|
|
19
|
-
estimatedUsage
|
|
23
|
+
const hasEnoughMemory = (0, exports.hasEnoughMemoryForParallelEncoding)({
|
|
24
|
+
estimatedUsage,
|
|
25
|
+
freeMemory,
|
|
26
|
+
});
|
|
20
27
|
return {
|
|
21
28
|
hasEnoughMemory,
|
|
22
29
|
freeMemory,
|
|
@@ -41,7 +41,7 @@ export declare const renderFrameAndRetryTargetClose: ({ retriesLeft, attempt, as
|
|
|
41
41
|
framesRenderedObj: {
|
|
42
42
|
count: number;
|
|
43
43
|
};
|
|
44
|
-
onFrameBuffer: ((buffer: Buffer, frame: number) => void) | null | undefined;
|
|
44
|
+
onFrameBuffer: ((buffer: Buffer, frame: number) => void | Promise<void>) | null | undefined;
|
|
45
45
|
onFrameUpdate: ((framesRendered: number, frameIndex: number, timeToRenderInMilliseconds: number) => void) | null;
|
|
46
46
|
nextFrameToRender: {
|
|
47
47
|
getNextFrame: (_pageIndex: number) => number;
|
|
@@ -17,7 +17,7 @@ export declare const renderFrameWithOptionToReject: ({ reject, width, height, co
|
|
|
17
17
|
indent: boolean;
|
|
18
18
|
logLevel: "error" | "info" | "trace" | "verbose" | "warn";
|
|
19
19
|
outputDir: string | null;
|
|
20
|
-
onFrameBuffer: ((buffer: Buffer, frame: number) => void) | null | undefined;
|
|
20
|
+
onFrameBuffer: ((buffer: Buffer, frame: number) => void | Promise<void>) | null | undefined;
|
|
21
21
|
imageFormat: "jpeg" | "none" | "png";
|
|
22
22
|
onError: (err: Error) => void;
|
|
23
23
|
lastFrame: number;
|
|
@@ -83,7 +83,7 @@ const renderFrameWithOptionToReject = async ({ reject, width, height, compId, at
|
|
|
83
83
|
if (!buffer) {
|
|
84
84
|
throw new Error('unexpected null buffer');
|
|
85
85
|
}
|
|
86
|
-
onFrameBuffer(buffer, frame);
|
|
86
|
+
await onFrameBuffer(buffer, frame);
|
|
87
87
|
}
|
|
88
88
|
const onlyAvailableAssets = assets.filter(truthy_1.truthy);
|
|
89
89
|
const previousAudioRenderAssets = onlyAvailableAssets
|
package/dist/render-frame.d.ts
CHANGED
|
@@ -28,7 +28,7 @@ export declare const renderFrame: ({ attempt, binariesDirectory, cancelSignal, i
|
|
|
28
28
|
};
|
|
29
29
|
timeoutInMilliseconds: number;
|
|
30
30
|
outputDir: string | null;
|
|
31
|
-
onFrameBuffer: ((buffer: Buffer, frame: number) => void) | null | undefined;
|
|
31
|
+
onFrameBuffer: ((buffer: Buffer, frame: number) => void | Promise<void>) | null | undefined;
|
|
32
32
|
lastFrame: number;
|
|
33
33
|
onFrameUpdate: ((framesRendered: number, frameIndex: number, timeToRenderInMilliseconds: number) => void) | null;
|
|
34
34
|
framesRenderedObj: {
|
package/dist/render-frames.d.ts
CHANGED
|
@@ -28,7 +28,7 @@ type InternalRenderFramesOptions = {
|
|
|
28
28
|
puppeteerInstance: HeadlessBrowser | undefined;
|
|
29
29
|
browserExecutable: BrowserExecutable | null;
|
|
30
30
|
onBrowserLog: null | ((log: BrowserLog) => void);
|
|
31
|
-
onFrameBuffer: null | ((buffer: Buffer, frame: number) => void);
|
|
31
|
+
onFrameBuffer: null | ((buffer: Buffer, frame: number) => void | Promise<void>);
|
|
32
32
|
onDownload: RenderMediaOnDownload | null;
|
|
33
33
|
chromiumOptions: ChromiumOptions;
|
|
34
34
|
scale: number;
|
|
@@ -85,7 +85,7 @@ export type RenderFramesOptions = Prettify<{
|
|
|
85
85
|
puppeteerInstance?: HeadlessBrowser;
|
|
86
86
|
browserExecutable?: BrowserExecutable;
|
|
87
87
|
onBrowserLog?: (log: BrowserLog) => void;
|
|
88
|
-
onFrameBuffer?: (buffer: Buffer, frame: number) => void
|
|
88
|
+
onFrameBuffer?: (buffer: Buffer, frame: number) => void | Promise<void>;
|
|
89
89
|
onDownload?: RenderMediaOnDownload;
|
|
90
90
|
timeoutInMilliseconds?: number;
|
|
91
91
|
chromiumOptions?: ChromiumOptions;
|
|
@@ -126,7 +126,7 @@ export declare const renderFrames: (options: {
|
|
|
126
126
|
puppeteerInstance?: HeadlessBrowser | undefined;
|
|
127
127
|
browserExecutable?: BrowserExecutable | undefined;
|
|
128
128
|
onBrowserLog?: ((log: BrowserLog) => void) | undefined;
|
|
129
|
-
onFrameBuffer?: ((buffer: Buffer, frame: number) => void) | undefined;
|
|
129
|
+
onFrameBuffer?: ((buffer: Buffer, frame: number) => void | Promise<void>) | undefined;
|
|
130
130
|
onDownload?: RenderMediaOnDownload | undefined;
|
|
131
131
|
timeoutInMilliseconds?: number | undefined;
|
|
132
132
|
chromiumOptions?: ChromiumOptions | undefined;
|
package/dist/render-frames.js
CHANGED
|
@@ -330,9 +330,15 @@ const internalRenderFramesRaw = ({ browserExecutable, cancelSignal, chromiumOpti
|
|
|
330
330
|
}),
|
|
331
331
|
])
|
|
332
332
|
.then((res) => {
|
|
333
|
-
server
|
|
333
|
+
if (!server || server.compositor.pid === null) {
|
|
334
|
+
return resolve(res);
|
|
335
|
+
}
|
|
336
|
+
server.compositor
|
|
337
|
+
.executeCommand('CloseAllVideos', {})
|
|
338
|
+
.then(() => {
|
|
334
339
|
logger_1.Log.verbose({ indent, logLevel, tag: 'compositor' }, 'Freed memory from compositor');
|
|
335
|
-
})
|
|
340
|
+
})
|
|
341
|
+
.catch((err) => {
|
|
336
342
|
logger_1.Log.verbose({ indent, logLevel }, 'Could not close compositor', err);
|
|
337
343
|
});
|
|
338
344
|
return resolve(res);
|
package/dist/render-media.js
CHANGED
|
@@ -54,6 +54,7 @@ const validate_output_filename_1 = require("./validate-output-filename");
|
|
|
54
54
|
const validate_scale_1 = require("./validate-scale");
|
|
55
55
|
const validate_videobitrate_1 = require("./validate-videobitrate");
|
|
56
56
|
const wrap_with_error_handling_1 = require("./wrap-with-error-handling");
|
|
57
|
+
const write_with_backpressure_1 = require("./write-with-backpressure");
|
|
57
58
|
const SLOWEST_FRAME_COUNT = 10;
|
|
58
59
|
const MAX_RECENT_FRAME_TIMINGS = 150;
|
|
59
60
|
const internalRenderMediaRaw = ({ proResProfile, x264Preset, gopSize, crf, composition: compositionWithPossibleUnevenDimensions, serializedInputPropsWithCustomSchema, pixelFormat: userPixelFormat, codec, envVariables, frameRange, puppeteerInstance, outputLocation, onProgress, overwrite, onDownload, onBrowserLog, onStart, timeoutInMilliseconds, chromiumOptions, scale, browserExecutable, port, cancelSignal, muted, enforceAudioTrack, ffmpegOverride, audioBitrate, videoBitrate, encodingMaxRate, encodingBufferSize, audioCodec, concurrency, disallowParallelEncoding, everyNthFrame, imageFormat: provisionalImageFormat, indent, jpegQuality, numberOfGifLoops, onCtrlCExit, preferLossless, serveUrl, server: reusedServer, logLevel, serializedResolvedPropsWithCustomSchema, offthreadVideoCacheSizeInBytes, colorSpace, repro, binariesDirectory, separateAudioTo, forSeamlessAacConcatenation, compositionStart, onBrowserDownload, onArtifact, metadata, hardwareAcceleration, chromeMode, offthreadVideoThreads, mediaCacheSizeInBytes, onLog, licenseKey, isProduction, sampleRate, }) => {
|
|
@@ -361,7 +362,6 @@ const internalRenderMediaRaw = ({ proResProfile, x264Preset, gopSize, crf, compo
|
|
|
361
362
|
onFrameBuffer: parallelEncoding
|
|
362
363
|
? async (buffer, frame) => {
|
|
363
364
|
var _a;
|
|
364
|
-
var _b;
|
|
365
365
|
await waitForRightTimeOfFrameToBeInserted(frame);
|
|
366
366
|
if (cancelled) {
|
|
367
367
|
return;
|
|
@@ -374,10 +374,14 @@ const internalRenderMediaRaw = ({ proResProfile, x264Preset, gopSize, crf, compo
|
|
|
374
374
|
if ((exitStatus === null || exitStatus === void 0 ? void 0 : exitStatus.type) === 'quit-with-error') {
|
|
375
375
|
throw new Error(`FFmpeg quit with code ${exitStatus.exitCode}${exitStatus.signal ? ` (signal ${exitStatus.signal})` : ''} while piping frame ${frame}. Stderr: ${exitStatus.stderr}`);
|
|
376
376
|
}
|
|
377
|
-
|
|
377
|
+
const stdin = stitcherFfmpeg === null || stitcherFfmpeg === void 0 ? void 0 : stitcherFfmpeg.stdin;
|
|
378
|
+
if (!stdin) {
|
|
379
|
+
throw new Error(`FFmpeg stdin is not available while trying to pipe frame ${frame} to it.`);
|
|
380
|
+
}
|
|
381
|
+
await (0, write_with_backpressure_1.writeWithBackpressure)({ data: buffer, writable: stdin });
|
|
378
382
|
(0, perf_1.stopPerfMeasure)(id);
|
|
379
383
|
const frameIndex = framesToRender.indexOf(frame);
|
|
380
|
-
setFrameToStitch((
|
|
384
|
+
setFrameToStitch((_a = framesToRender[frameIndex + 1]) !== null && _a !== void 0 ? _a : lastFrameToRender + 1);
|
|
381
385
|
}
|
|
382
386
|
: null,
|
|
383
387
|
webpackBundleOrServeUrl: serveUrl,
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.writeWithBackpressure = void 0;
|
|
4
|
+
const writeWithBackpressure = ({ data, writable, }) => {
|
|
5
|
+
if (writable.write(data)) {
|
|
6
|
+
return Promise.resolve();
|
|
7
|
+
}
|
|
8
|
+
return new Promise((resolve, reject) => {
|
|
9
|
+
const cleanup = () => {
|
|
10
|
+
writable.off('close', onClose);
|
|
11
|
+
writable.off('drain', onDrain);
|
|
12
|
+
writable.off('error', onError);
|
|
13
|
+
};
|
|
14
|
+
const onClose = () => {
|
|
15
|
+
cleanup();
|
|
16
|
+
reject(new Error('The writable stream closed before it accepted all data.'));
|
|
17
|
+
};
|
|
18
|
+
const onDrain = () => {
|
|
19
|
+
cleanup();
|
|
20
|
+
resolve();
|
|
21
|
+
};
|
|
22
|
+
const onError = (error) => {
|
|
23
|
+
cleanup();
|
|
24
|
+
reject(error);
|
|
25
|
+
};
|
|
26
|
+
writable.once('close', onClose);
|
|
27
|
+
writable.once('drain', onDrain);
|
|
28
|
+
writable.once('error', onError);
|
|
29
|
+
if (writable.destroyed) {
|
|
30
|
+
onClose();
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
exports.writeWithBackpressure = writeWithBackpressure;
|
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.515",
|
|
7
7
|
"description": "Render Remotion videos using Node.js or Bun",
|
|
8
8
|
"main": "dist/index.js",
|
|
9
9
|
"types": "dist/index.d.ts",
|
|
@@ -22,11 +22,11 @@
|
|
|
22
22
|
},
|
|
23
23
|
"dependencies": {
|
|
24
24
|
"execa": "5.1.1",
|
|
25
|
-
"remotion": "4.0.
|
|
26
|
-
"@remotion/streaming": "4.0.
|
|
25
|
+
"remotion": "4.0.515",
|
|
26
|
+
"@remotion/streaming": "4.0.515",
|
|
27
27
|
"source-map": "0.8.0",
|
|
28
28
|
"ws": "8.21.0",
|
|
29
|
-
"@remotion/licensing": "4.0.
|
|
29
|
+
"@remotion/licensing": "4.0.515"
|
|
30
30
|
},
|
|
31
31
|
"peerDependencies": {
|
|
32
32
|
"react": ">=16.8.0",
|
|
@@ -40,19 +40,19 @@
|
|
|
40
40
|
"react-dom": "19.2.3",
|
|
41
41
|
"@typescript/native-preview": "7.0.0-dev.20260217.1",
|
|
42
42
|
"@types/ws": "8.5.10",
|
|
43
|
-
"@remotion/example-videos": "4.0.
|
|
44
|
-
"@remotion/eslint-config-internal": "4.0.
|
|
43
|
+
"@remotion/example-videos": "4.0.515",
|
|
44
|
+
"@remotion/eslint-config-internal": "4.0.515",
|
|
45
45
|
"eslint": "9.19.0",
|
|
46
46
|
"@types/node": "20.12.14"
|
|
47
47
|
},
|
|
48
48
|
"optionalDependencies": {
|
|
49
|
-
"@remotion/compositor-darwin-arm64": "4.0.
|
|
50
|
-
"@remotion/compositor-darwin-x64": "4.0.
|
|
51
|
-
"@remotion/compositor-linux-arm64-gnu": "4.0.
|
|
52
|
-
"@remotion/compositor-linux-arm64-musl": "4.0.
|
|
53
|
-
"@remotion/compositor-linux-x64-gnu": "4.0.
|
|
54
|
-
"@remotion/compositor-linux-x64-musl": "4.0.
|
|
55
|
-
"@remotion/compositor-win32-x64-msvc": "4.0.
|
|
49
|
+
"@remotion/compositor-darwin-arm64": "4.0.515",
|
|
50
|
+
"@remotion/compositor-darwin-x64": "4.0.515",
|
|
51
|
+
"@remotion/compositor-linux-arm64-gnu": "4.0.515",
|
|
52
|
+
"@remotion/compositor-linux-arm64-musl": "4.0.515",
|
|
53
|
+
"@remotion/compositor-linux-x64-gnu": "4.0.515",
|
|
54
|
+
"@remotion/compositor-linux-x64-musl": "4.0.515",
|
|
55
|
+
"@remotion/compositor-win32-x64-msvc": "4.0.515"
|
|
56
56
|
},
|
|
57
57
|
"keywords": [
|
|
58
58
|
"remotion",
|