@remotion/renderer 4.0.179 → 4.0.180
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/convert-assets-to-file-urls.d.ts +2 -1
- package/dist/assets/convert-assets-to-file-urls.js +4 -1
- package/dist/assets/download-and-map-assets-to-file.d.ts +9 -2
- package/dist/assets/download-and-map-assets-to-file.js +16 -2
- package/dist/assets/get-audio-channels.js +23 -15
- package/dist/browser/should-log-message.js +3 -0
- package/dist/client.d.ts +70 -70
- package/dist/compositor/compositor.js +1 -1
- package/dist/create-audio.js +1 -0
- package/dist/create-ffmpeg-complex-filter.d.ts +1 -4
- package/dist/get-concurrency.d.ts +1 -1
- package/dist/get-concurrency.js +3 -3
- package/dist/get-extension-from-codec.d.ts +2 -2
- package/dist/goto-page-or-throw.d.ts +3 -0
- package/dist/goto-page-or-throw.js +16 -0
- package/dist/index.d.ts +40 -40
- package/dist/index.js +1 -1
- package/dist/offthread-video-server.js +9 -1
- package/dist/options/audio-codec.d.ts +5 -5
- package/dist/options/color-space.d.ts +3 -3
- package/dist/options/gl.d.ts +3 -3
- package/dist/options/index.d.ts +14 -14
- package/dist/options/options-map.d.ts +17 -17
- package/dist/options/video-codec.d.ts +1 -1
- package/dist/pixel-format.d.ts +1 -1
- package/dist/port-config.d.ts +1 -1
- package/dist/pure.d.ts +3 -3
- package/dist/render-frames.js +11 -7
- package/dist/render-media.js +3 -3
- package/dist/set-props-and-env.js +10 -5
- package/dist/types.d.ts +1 -0
- package/dist/validate-output-filename.d.ts +1 -1
- package/package.json +10 -10
package/dist/render-frames.js
CHANGED
|
@@ -41,7 +41,7 @@ const validate_1 = require("./validate");
|
|
|
41
41
|
const validate_scale_1 = require("./validate-scale");
|
|
42
42
|
const wrap_with_error_handling_1 = require("./wrap-with-error-handling");
|
|
43
43
|
const MAX_RETRIES_PER_FRAME = 1;
|
|
44
|
-
const innerRenderFrames = async ({ onFrameUpdate, outputDir, onStart, serializedInputPropsWithCustomSchema, serializedResolvedPropsWithCustomSchema, jpegQuality, imageFormat, frameRange, onError, envVariables, onBrowserLog, onFrameBuffer, onDownload, pagesArray, serveUrl, composition, timeoutInMilliseconds, scale,
|
|
44
|
+
const innerRenderFrames = async ({ onFrameUpdate, outputDir, onStart, serializedInputPropsWithCustomSchema, serializedResolvedPropsWithCustomSchema, jpegQuality, imageFormat, frameRange, onError, envVariables, onBrowserLog, onFrameBuffer, onDownload, pagesArray, serveUrl, composition, timeoutInMilliseconds, scale, resolvedConcurrency, everyNthFrame, proxyPort, cancelSignal, downloadMap, muted, makeBrowser, browserReplacer, compositor, sourceMapGetter, logLevel, indent, parallelEncodingEnabled, compositionStart, forSeamlessAacConcatenation, onArtifact, binariesDirectory, }) => {
|
|
45
45
|
if (outputDir) {
|
|
46
46
|
if (!node_fs_1.default.existsSync(outputDir)) {
|
|
47
47
|
node_fs_1.default.mkdirSync(outputDir, {
|
|
@@ -124,11 +124,11 @@ const innerRenderFrames = async ({ onFrameUpdate, outputDir, onStart, serialized
|
|
|
124
124
|
page.off('console', logCallback);
|
|
125
125
|
return page;
|
|
126
126
|
};
|
|
127
|
-
const concurrencyOrFramesToRender = Math.min(framesToRender.length,
|
|
127
|
+
const concurrencyOrFramesToRender = Math.min(framesToRender.length, resolvedConcurrency);
|
|
128
128
|
const getPool = async (context) => {
|
|
129
129
|
const pages = new Array(concurrencyOrFramesToRender)
|
|
130
130
|
.fill(true)
|
|
131
|
-
.map((_, i) => makePage(context,
|
|
131
|
+
.map((_, i) => makePage(context, framesToRender[i]));
|
|
132
132
|
const puppeteerPages = await Promise.all(pages);
|
|
133
133
|
const pool = new pool_1.Pool(puppeteerPages);
|
|
134
134
|
return pool;
|
|
@@ -146,6 +146,7 @@ const innerRenderFrames = async ({ onFrameUpdate, outputDir, onStart, serialized
|
|
|
146
146
|
onStart === null || onStart === void 0 ? void 0 : onStart({
|
|
147
147
|
frameCount: framesToRender.length,
|
|
148
148
|
parallelEncoding: parallelEncodingEnabled,
|
|
149
|
+
resolvedConcurrency,
|
|
149
150
|
});
|
|
150
151
|
const assets = [];
|
|
151
152
|
let stopped = false;
|
|
@@ -259,6 +260,9 @@ const innerRenderFrames = async ({ onFrameUpdate, outputDir, onStart, serialized
|
|
|
259
260
|
downloadMap,
|
|
260
261
|
indent,
|
|
261
262
|
logLevel,
|
|
263
|
+
binariesDirectory,
|
|
264
|
+
cancelSignalForAudioAnalysis: cancelSignal,
|
|
265
|
+
shouldAnalyzeAudioImmediately: true,
|
|
262
266
|
}).catch((err) => {
|
|
263
267
|
const truncateWithEllipsis = renderAsset.src.substring(0, 1000) +
|
|
264
268
|
(renderAsset.src.length > 1000 ? '...' : '');
|
|
@@ -431,7 +435,7 @@ const internalRenderFramesRaw = ({ browserExecutable, cancelSignal, chromiumOpti
|
|
|
431
435
|
onBrowserDownload,
|
|
432
436
|
});
|
|
433
437
|
const browserInstance = puppeteerInstance !== null && puppeteerInstance !== void 0 ? puppeteerInstance : makeBrowser();
|
|
434
|
-
const
|
|
438
|
+
const resolvedConcurrency = (0, get_concurrency_1.resolveConcurrency)(concurrency);
|
|
435
439
|
const openedPages = [];
|
|
436
440
|
return new Promise((resolve, reject) => {
|
|
437
441
|
const cleanup = [];
|
|
@@ -449,7 +453,7 @@ const internalRenderFramesRaw = ({ browserExecutable, cancelSignal, chromiumOpti
|
|
|
449
453
|
webpackConfigOrServeUrl: webpackBundleOrServeUrl,
|
|
450
454
|
port,
|
|
451
455
|
remotionRoot: (0, find_closest_package_json_1.findRemotionRoot)(),
|
|
452
|
-
concurrency:
|
|
456
|
+
concurrency: resolvedConcurrency,
|
|
453
457
|
logLevel,
|
|
454
458
|
indent,
|
|
455
459
|
offthreadVideoCacheSizeInBytes,
|
|
@@ -463,7 +467,7 @@ const internalRenderFramesRaw = ({ browserExecutable, cancelSignal, chromiumOpti
|
|
|
463
467
|
]).then(([{ server: openedServer, cleanupServer }, pInstance]) => {
|
|
464
468
|
const { serveUrl, offthreadPort, compositor, sourceMap, downloadMap } = openedServer;
|
|
465
469
|
const browserReplacer = (0, replace_browser_1.handleBrowserCrash)(pInstance, logLevel, indent);
|
|
466
|
-
const cycle = (0, cycle_browser_tabs_1.cycleBrowserTabs)(browserReplacer,
|
|
470
|
+
const cycle = (0, cycle_browser_tabs_1.cycleBrowserTabs)(browserReplacer, resolvedConcurrency, logLevel, indent);
|
|
467
471
|
cleanup.push(() => {
|
|
468
472
|
cycle.stopCycling();
|
|
469
473
|
return Promise.resolve();
|
|
@@ -474,7 +478,7 @@ const internalRenderFramesRaw = ({ browserExecutable, cancelSignal, chromiumOpti
|
|
|
474
478
|
pagesArray: openedPages,
|
|
475
479
|
serveUrl,
|
|
476
480
|
composition,
|
|
477
|
-
|
|
481
|
+
resolvedConcurrency,
|
|
478
482
|
onDownload,
|
|
479
483
|
proxyPort: offthreadPort,
|
|
480
484
|
makeBrowser,
|
package/dist/render-media.js
CHANGED
|
@@ -122,12 +122,12 @@ const internalRenderMediaRaw = ({ proResProfile, x264Preset, crf, composition, s
|
|
|
122
122
|
logLevel,
|
|
123
123
|
tag: 'renderMedia()',
|
|
124
124
|
}, 'Free memory:', freeMemory, 'Estimated usage parallel encoding', estimatedUsage);
|
|
125
|
-
const
|
|
125
|
+
const resolvedConcurrency = (0, get_concurrency_1.resolveConcurrency)(concurrency);
|
|
126
126
|
logger_1.Log.verbose({
|
|
127
127
|
indent,
|
|
128
128
|
logLevel,
|
|
129
129
|
tag: 'renderMedia()',
|
|
130
|
-
}, 'Using concurrency:',
|
|
130
|
+
}, 'Using concurrency:', resolvedConcurrency);
|
|
131
131
|
logger_1.Log.verbose({
|
|
132
132
|
indent,
|
|
133
133
|
logLevel,
|
|
@@ -272,7 +272,7 @@ const internalRenderMediaRaw = ({ proResProfile, x264Preset, crf, composition, s
|
|
|
272
272
|
Promise.resolve(createPrestitcherIfNecessary())
|
|
273
273
|
.then(() => {
|
|
274
274
|
return (0, prepare_server_1.makeOrReuseServer)(reusedServer, {
|
|
275
|
-
concurrency:
|
|
275
|
+
concurrency: resolvedConcurrency,
|
|
276
276
|
indent,
|
|
277
277
|
port,
|
|
278
278
|
remotionRoot: (0, find_closest_package_json_1.findRemotionRoot)(),
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.setPropsAndEnv = void 0;
|
|
4
4
|
const version_1 = require("remotion/version");
|
|
5
5
|
const TimeoutSettings_1 = require("./browser/TimeoutSettings");
|
|
6
|
+
const goto_page_or_throw_1 = require("./goto-page-or-throw");
|
|
6
7
|
const logger_1 = require("./logger");
|
|
7
8
|
const normalize_serve_url_1 = require("./normalize-serve-url");
|
|
8
9
|
const puppeteer_evaluate_1 = require("./puppeteer-evaluate");
|
|
@@ -68,11 +69,6 @@ const innerSetPropsAndEnv = async ({ serializedInputPropsWithCustomSchema, envVa
|
|
|
68
69
|
return false;
|
|
69
70
|
};
|
|
70
71
|
});
|
|
71
|
-
const pageRes = await page.goto({ url: urlToVisit, timeout: actualTimeout });
|
|
72
|
-
if (pageRes === null) {
|
|
73
|
-
throw new Error(`Visited "${urlToVisit}" but got no response.`);
|
|
74
|
-
}
|
|
75
|
-
const status = pageRes.status();
|
|
76
72
|
const retry = async () => {
|
|
77
73
|
await new Promise((resolve) => {
|
|
78
74
|
setTimeout(() => {
|
|
@@ -95,6 +91,15 @@ const innerSetPropsAndEnv = async ({ serializedInputPropsWithCustomSchema, envVa
|
|
|
95
91
|
onServeUrlVisited,
|
|
96
92
|
});
|
|
97
93
|
};
|
|
94
|
+
const [pageRes, error] = await (0, goto_page_or_throw_1.gotoPageOrThrow)(page, urlToVisit, actualTimeout);
|
|
95
|
+
if (error !== null) {
|
|
96
|
+
if (error.message.includes('ECONNRESET') ||
|
|
97
|
+
error.message.includes('ERR_CONNECTION_TIMED_OUT')) {
|
|
98
|
+
return retry();
|
|
99
|
+
}
|
|
100
|
+
throw error;
|
|
101
|
+
}
|
|
102
|
+
const status = pageRes.status();
|
|
98
103
|
// S3 in rare occasions returns a 500 or 503 error code for GET operations.
|
|
99
104
|
// Usually it is fixed by retrying.
|
|
100
105
|
if (status >= 500 && status <= 504 && retriesRemaining > 0) {
|
package/dist/types.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { AudioCodec } from './options/audio-codec';
|
|
2
|
-
export declare const validateOutputFilename: <T extends "h264" | "h265" | "vp8" | "vp9" | "
|
|
2
|
+
export declare const validateOutputFilename: <T extends "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "h264-ts" | "gif">({ codec, audioCodecSetting, extension, preferLossless, separateAudioTo, }: {
|
|
3
3
|
codec: T;
|
|
4
4
|
audioCodecSetting: AudioCodec | null;
|
|
5
5
|
extension: string;
|
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.180",
|
|
7
7
|
"description": "Render Remotion videos using Node.js or Bun",
|
|
8
8
|
"main": "dist/index.js",
|
|
9
9
|
"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.17.1",
|
|
21
|
-
"remotion": "4.0.
|
|
21
|
+
"remotion": "4.0.180"
|
|
22
22
|
},
|
|
23
23
|
"peerDependencies": {
|
|
24
24
|
"react": ">=16.8.0",
|
|
@@ -31,16 +31,16 @@
|
|
|
31
31
|
"react": "18.3.1",
|
|
32
32
|
"react-dom": "18.3.1",
|
|
33
33
|
"@types/ws": "8.5.10",
|
|
34
|
-
"@remotion/streaming": "4.0.
|
|
34
|
+
"@remotion/streaming": "4.0.180"
|
|
35
35
|
},
|
|
36
36
|
"optionalDependencies": {
|
|
37
|
-
"@remotion/compositor-darwin-
|
|
38
|
-
"@remotion/compositor-
|
|
39
|
-
"@remotion/compositor-
|
|
40
|
-
"@remotion/compositor-linux-
|
|
41
|
-
"@remotion/compositor-
|
|
42
|
-
"@remotion/compositor-linux-
|
|
43
|
-
"@remotion/compositor-
|
|
37
|
+
"@remotion/compositor-darwin-arm64": "4.0.180",
|
|
38
|
+
"@remotion/compositor-linux-arm64-gnu": "4.0.180",
|
|
39
|
+
"@remotion/compositor-darwin-x64": "4.0.180",
|
|
40
|
+
"@remotion/compositor-linux-x64-gnu": "4.0.180",
|
|
41
|
+
"@remotion/compositor-win32-x64-msvc": "4.0.180",
|
|
42
|
+
"@remotion/compositor-linux-arm64-musl": "4.0.180",
|
|
43
|
+
"@remotion/compositor-linux-x64-musl": "4.0.180"
|
|
44
44
|
},
|
|
45
45
|
"keywords": [
|
|
46
46
|
"remotion",
|