@remotion/renderer 4.0.0-alpha13 → 4.0.0-alpha16
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/download-and-map-assets-to-file.d.ts +6 -4
- package/dist/assets/download-and-map-assets-to-file.js +30 -6
- package/dist/assets/download-file.d.ts +2 -2
- package/dist/assets/download-map.d.ts +3 -3
- package/dist/assets/ffmpeg-volume-expression.d.ts +2 -2
- package/dist/assets/get-audio-channels.d.ts +1 -0
- package/dist/assets/get-audio-channels.js +10 -5
- package/dist/assets/read-file.js +1 -1
- package/dist/assets/types.d.ts +4 -4
- package/dist/audio-codec.d.ts +2 -2
- package/dist/browser/Browser.d.ts +9 -9
- package/dist/browser/Browser.js +26 -32
- package/dist/browser/BrowserFetcher.d.ts +1 -1
- package/dist/browser/BrowserPage.d.ts +11 -2
- package/dist/browser/BrowserPage.js +47 -12
- package/dist/browser/BrowserRunner.js +19 -2
- package/dist/browser/ConsoleMessage.d.ts +1 -1
- package/dist/browser/DOMWorld.js +8 -8
- package/dist/browser/EvalTypes.d.ts +7 -7
- package/dist/browser/FrameManager.js +11 -11
- package/dist/browser/JSHandle.js +14 -14
- package/dist/browser/LaunchOptions.d.ts +1 -1
- package/dist/browser/Launcher.js +0 -1
- package/dist/browser/LifecycleWatcher.d.ts +1 -1
- package/dist/browser/NetworkEventManager.d.ts +4 -4
- package/dist/browser/NodeWebSocketTransport.js +16 -16
- package/dist/browser/Product.d.ts +1 -1
- package/dist/browser/Target.d.ts +2 -1
- package/dist/browser/Target.js +8 -2
- package/dist/browser/devtools-types.d.ts +10 -10
- package/dist/browser/mitt/index.d.ts +6 -6
- package/dist/browser/revisions.d.ts +1 -1
- package/dist/browser/should-log-message.d.ts +24 -0
- package/dist/browser/should-log-message.js +72 -0
- package/dist/browser-executable.d.ts +1 -1
- package/dist/browser-log.d.ts +1 -1
- package/dist/browser.d.ts +1 -1
- package/dist/chalk/index.d.ts +4 -4
- package/dist/codec-supports-media.d.ts +1 -1
- package/dist/codec.d.ts +2 -2
- package/dist/combine-videos.d.ts +1 -1
- package/dist/compositor/compose.d.ts +11 -2
- package/dist/compositor/compose.js +15 -4
- package/dist/compositor/compositor.d.ts +1 -1
- package/dist/compositor/compositor.js +19 -7
- package/dist/compositor/payloads.d.ts +5 -5
- package/dist/crf.d.ts +1 -1
- package/dist/error-handling/symbolicate-error.js +4 -2
- package/dist/ffmpeg-override.d.ts +1 -1
- package/dist/file-extensions.d.ts +1 -1
- package/dist/frame-range.d.ts +1 -1
- package/dist/get-browser-instance.d.ts +6 -1
- package/dist/get-browser-instance.js +9 -4
- package/dist/get-compositions.d.ts +18 -11
- package/dist/get-compositions.js +66 -49
- package/dist/get-frame-padded-index.d.ts +1 -1
- package/dist/image-format.d.ts +3 -3
- package/dist/index.d.ts +106 -16
- package/dist/index.js +25 -13
- package/dist/jpeg-quality.d.ts +1 -0
- package/dist/jpeg-quality.js +2 -1
- package/dist/log-level.d.ts +1 -1
- package/dist/logger.d.ts +5 -3
- package/dist/logger.js +12 -5
- package/dist/make-cancel-signal.d.ts +2 -2
- package/dist/merge-audio-track.d.ts +1 -1
- package/dist/mime-types.js +1 -1
- package/dist/offthread-video-server.d.ts +36 -4
- package/dist/offthread-video-server.js +48 -4
- package/dist/open-browser.d.ts +19 -10
- package/dist/open-browser.js +34 -21
- package/dist/options/option.d.ts +1 -1
- package/dist/parse-browser-error-stack.d.ts +1 -1
- package/dist/perf.d.ts +1 -1
- package/dist/pixel-format.d.ts +1 -1
- package/dist/prepare-server.d.ts +20 -8
- package/dist/prepare-server.js +52 -8
- package/dist/preprocess-audio-track.d.ts +2 -2
- package/dist/prespawn-ffmpeg.d.ts +1 -1
- package/dist/prespawn-ffmpeg.js +7 -7
- package/dist/prores-profile.d.ts +1 -1
- package/dist/puppeteer-screenshot.js +1 -2
- package/dist/render-frames.d.ts +32 -11
- package/dist/render-frames.js +112 -77
- package/dist/render-media.d.ts +50 -21
- package/dist/render-media.js +249 -197
- package/dist/render-still.d.ts +33 -18
- package/dist/render-still.js +71 -43
- package/dist/replace-browser.d.ts +1 -1
- package/dist/select-composition.d.ts +19 -11
- package/dist/select-composition.js +79 -42
- package/dist/serve-static.d.ts +2 -3
- package/dist/serve-static.js +2 -4
- package/dist/set-props-and-env.d.ts +1 -1
- package/dist/stitch-frames-to-video.d.ts +32 -10
- package/dist/stitch-frames-to-video.js +121 -99
- package/dist/stringify-ffmpeg-filter.d.ts +2 -2
- package/dist/symbolicate-stacktrace.d.ts +16 -3
- package/dist/symbolicate-stacktrace.js +49 -24
- package/dist/truthy.d.ts +1 -1
- package/dist/types.d.ts +2 -2
- package/dist/validate-opengl-renderer.d.ts +1 -1
- package/package.json +11 -11
package/dist/render-frames.js
CHANGED
|
@@ -3,15 +3,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.renderFrames = void 0;
|
|
6
|
+
exports.renderFrames = exports.internalRenderFrames = void 0;
|
|
7
7
|
const node_fs_1 = __importDefault(require("node:fs"));
|
|
8
8
|
const node_path_1 = __importDefault(require("node:path"));
|
|
9
9
|
const perf_hooks_1 = require("perf_hooks");
|
|
10
10
|
const remotion_1 = require("remotion");
|
|
11
11
|
const download_and_map_assets_to_file_1 = require("./assets/download-and-map-assets-to-file");
|
|
12
|
-
const download_map_1 = require("./assets/download-map");
|
|
13
12
|
const browser_1 = require("./browser");
|
|
14
13
|
const is_target_closed_err_1 = require("./browser/is-target-closed-err");
|
|
14
|
+
const TimeoutSettings_1 = require("./browser/TimeoutSettings");
|
|
15
15
|
const compress_assets_1 = require("./compress-assets");
|
|
16
16
|
const cycle_browser_tabs_1 = require("./cycle-browser-tabs");
|
|
17
17
|
const handle_javascript_exception_1 = require("./error-handling/handle-javascript-exception");
|
|
@@ -20,7 +20,6 @@ const get_concurrency_1 = require("./get-concurrency");
|
|
|
20
20
|
const get_duration_from_frame_range_1 = require("./get-duration-from-frame-range");
|
|
21
21
|
const get_frame_padded_index_1 = require("./get-frame-padded-index");
|
|
22
22
|
const get_frame_to_render_1 = require("./get-frame-to-render");
|
|
23
|
-
const image_format_1 = require("./image-format");
|
|
24
23
|
const jpeg_quality_1 = require("./jpeg-quality");
|
|
25
24
|
const make_cancel_signal_1 = require("./make-cancel-signal");
|
|
26
25
|
const open_browser_1 = require("./open-browser");
|
|
@@ -35,7 +34,7 @@ const take_frame_and_compose_1 = require("./take-frame-and-compose");
|
|
|
35
34
|
const truthy_1 = require("./truthy");
|
|
36
35
|
const validate_scale_1 = require("./validate-scale");
|
|
37
36
|
const MAX_RETRIES_PER_FRAME = 1;
|
|
38
|
-
const innerRenderFrames = ({ onFrameUpdate, outputDir, onStart, inputProps, jpegQuality,
|
|
37
|
+
const innerRenderFrames = async ({ onFrameUpdate, outputDir, onStart, inputProps, jpegQuality, imageFormat, frameRange, onError, envVariables, onBrowserLog, onFrameBuffer, onDownload, pagesArray, serveUrl, composition, timeoutInMilliseconds, scale, actualConcurrency, everyNthFrame, proxyPort, cancelSignal, downloadMap, muted, makeBrowser, browserReplacer, compositor, sourcemapContext, }) => {
|
|
39
38
|
if (outputDir) {
|
|
40
39
|
if (!node_fs_1.default.existsSync(outputDir)) {
|
|
41
40
|
node_fs_1.default.mkdirSync(outputDir, {
|
|
@@ -43,20 +42,17 @@ const innerRenderFrames = ({ onFrameUpdate, outputDir, onStart, inputProps, jpeg
|
|
|
43
42
|
});
|
|
44
43
|
}
|
|
45
44
|
}
|
|
46
|
-
if (quality) {
|
|
47
|
-
throw new Error(`The "quality" option has been renamed. Use "jpegQuality" instead.`);
|
|
48
|
-
}
|
|
49
45
|
const downloadPromises = [];
|
|
50
|
-
const realFrameRange = (0, get_frame_to_render_1.getRealFrameRange)(composition.durationInFrames, frameRange
|
|
46
|
+
const realFrameRange = (0, get_frame_to_render_1.getRealFrameRange)(composition.durationInFrames, frameRange);
|
|
51
47
|
const framesToRender = (0, get_duration_from_frame_range_1.getFramesToRender)(realFrameRange, everyNthFrame);
|
|
52
48
|
const lastFrame = framesToRender[framesToRender.length - 1];
|
|
53
|
-
const makePage = async () => {
|
|
54
|
-
const page = await browserReplacer.getBrowser().newPage();
|
|
49
|
+
const makePage = async (context) => {
|
|
50
|
+
const page = await browserReplacer.getBrowser().newPage(context);
|
|
55
51
|
pagesArray.push(page);
|
|
56
52
|
await page.setViewport({
|
|
57
53
|
width: composition.width,
|
|
58
54
|
height: composition.height,
|
|
59
|
-
deviceScaleFactor: scale
|
|
55
|
+
deviceScaleFactor: scale,
|
|
60
56
|
});
|
|
61
57
|
const logCallback = (log) => {
|
|
62
58
|
onBrowserLog === null || onBrowserLog === void 0 ? void 0 : onBrowserLog({
|
|
@@ -84,7 +80,7 @@ const innerRenderFrames = ({ onFrameUpdate, outputDir, onStart, inputProps, jpeg
|
|
|
84
80
|
await (0, puppeteer_evaluate_1.puppeteerEvaluateWithCatch)({
|
|
85
81
|
// eslint-disable-next-line max-params
|
|
86
82
|
pageFunction: (id, defaultProps, durationInFrames, fps, height, width) => {
|
|
87
|
-
window.
|
|
83
|
+
window.remotion_setBundleMode({
|
|
88
84
|
type: 'composition',
|
|
89
85
|
compositionName: id,
|
|
90
86
|
compositionDefaultProps: defaultProps,
|
|
@@ -108,8 +104,10 @@ const innerRenderFrames = ({ onFrameUpdate, outputDir, onStart, inputProps, jpeg
|
|
|
108
104
|
page.off('console', logCallback);
|
|
109
105
|
return page;
|
|
110
106
|
};
|
|
111
|
-
const getPool = async () => {
|
|
112
|
-
const pages = new Array(actualConcurrency)
|
|
107
|
+
const getPool = async (context) => {
|
|
108
|
+
const pages = new Array(actualConcurrency)
|
|
109
|
+
.fill(true)
|
|
110
|
+
.map(() => makePage(context));
|
|
113
111
|
const puppeteerPages = await Promise.all(pages);
|
|
114
112
|
const pool = new pool_1.Pool(puppeteerPages);
|
|
115
113
|
return pool;
|
|
@@ -123,8 +121,8 @@ const innerRenderFrames = ({ onFrameUpdate, outputDir, onStart, inputProps, jpeg
|
|
|
123
121
|
countType,
|
|
124
122
|
});
|
|
125
123
|
let framesRendered = 0;
|
|
126
|
-
const poolPromise = getPool();
|
|
127
|
-
onStart({
|
|
124
|
+
const poolPromise = getPool(sourcemapContext);
|
|
125
|
+
onStart === null || onStart === void 0 ? void 0 : onStart({
|
|
128
126
|
frameCount: framesToRender.length,
|
|
129
127
|
});
|
|
130
128
|
const assets = new Array(framesToRender.length).fill(undefined);
|
|
@@ -196,7 +194,7 @@ const innerRenderFrames = ({ onFrameUpdate, outputDir, onStart, inputProps, jpeg
|
|
|
196
194
|
});
|
|
197
195
|
});
|
|
198
196
|
framesRendered++;
|
|
199
|
-
onFrameUpdate(framesRendered, frame, perf_hooks_1.performance.now() - startTime);
|
|
197
|
+
onFrameUpdate === null || onFrameUpdate === void 0 ? void 0 : onFrameUpdate(framesRendered, frame, perf_hooks_1.performance.now() - startTime);
|
|
200
198
|
cleanupPageError();
|
|
201
199
|
freePage.off('error', errorCallbackOnFrame);
|
|
202
200
|
pool.release(freePage);
|
|
@@ -247,7 +245,7 @@ const innerRenderFrames = ({ onFrameUpdate, outputDir, onStart, inputProps, jpeg
|
|
|
247
245
|
await browserReplacer.replaceBrowser(makeBrowser, async () => {
|
|
248
246
|
const pages = new Array(actualConcurrency)
|
|
249
247
|
.fill(true)
|
|
250
|
-
.map(() => makePage());
|
|
248
|
+
.map(() => makePage(sourcemapContext));
|
|
251
249
|
const puppeteerPages = await Promise.all(pages);
|
|
252
250
|
const pool = await poolPromise;
|
|
253
251
|
for (const newPage of puppeteerPages) {
|
|
@@ -281,22 +279,11 @@ const innerRenderFrames = ({ onFrameUpdate, outputDir, onStart, inputProps, jpeg
|
|
|
281
279
|
};
|
|
282
280
|
return returnValue;
|
|
283
281
|
});
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
})
|
|
288
|
-
.then(() => happyPath);
|
|
282
|
+
const result = await happyPath;
|
|
283
|
+
await Promise.all(downloadPromises);
|
|
284
|
+
return result;
|
|
289
285
|
};
|
|
290
|
-
|
|
291
|
-
* @description Renders a series of images using Puppeteer and computes information for mixing audio.
|
|
292
|
-
* @see [Documentation](https://www.remotion.dev/docs/renderer/render-frames)
|
|
293
|
-
*/
|
|
294
|
-
const renderFrames = (options) => {
|
|
295
|
-
var _a, _b, _c;
|
|
296
|
-
const { composition, concurrency } = options;
|
|
297
|
-
if (!composition) {
|
|
298
|
-
throw new Error('No `composition` option has been specified for renderFrames()');
|
|
299
|
-
}
|
|
286
|
+
const internalRenderFrames = ({ browserExecutable, cancelSignal, chromiumOptions, composition, concurrency, dumpBrowserLogs, envVariables, everyNthFrame, frameRange, imageFormat, indent, inputProps, jpegQuality, muted, onBrowserLog, onDownload, onFrameBuffer, onFrameUpdate, onStart, outputDir, port, puppeteerInstance, scale, server, timeoutInMilliseconds, verbose, webpackBundleOrServeUrl, }) => {
|
|
300
287
|
remotion_1.Internals.validateDimension(composition.height, 'height', 'in the `config` object passed to `renderFrames()`');
|
|
301
288
|
remotion_1.Internals.validateDimension(composition.width, 'width', 'in the `config` object passed to `renderFrames()`');
|
|
302
289
|
remotion_1.Internals.validateFps(composition.fps, 'in the `config` object of `renderFrames()`', false);
|
|
@@ -305,63 +292,49 @@ const renderFrames = (options) => {
|
|
|
305
292
|
component: 'in the `config` object passed to `renderFrames()`',
|
|
306
293
|
allowFloats: false,
|
|
307
294
|
});
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
});
|
|
322
|
-
};
|
|
323
|
-
const browserInstance = (_a = options.puppeteerInstance) !== null && _a !== void 0 ? _a : makeBrowser();
|
|
324
|
-
const downloadMap = (_b = options.downloadMap) !== null && _b !== void 0 ? _b : (0, download_map_1.makeDownloadMap)();
|
|
325
|
-
const onDownload = (_c = options.onDownload) !== null && _c !== void 0 ? _c : (() => () => undefined);
|
|
326
|
-
const actualConcurrency = (0, get_concurrency_1.getActualConcurrency)(concurrency !== null && concurrency !== void 0 ? concurrency : null);
|
|
295
|
+
(0, jpeg_quality_1.validateJpegQuality)(jpegQuality);
|
|
296
|
+
(0, validate_scale_1.validateScale)(scale);
|
|
297
|
+
const makeBrowser = () => (0, open_browser_1.internalOpenBrowser)({
|
|
298
|
+
browser: browser_1.DEFAULT_BROWSER,
|
|
299
|
+
shouldDumpIo: dumpBrowserLogs,
|
|
300
|
+
browserExecutable,
|
|
301
|
+
chromiumOptions,
|
|
302
|
+
forceDeviceScaleFactor: scale,
|
|
303
|
+
indent,
|
|
304
|
+
viewport: null,
|
|
305
|
+
});
|
|
306
|
+
const browserInstance = puppeteerInstance !== null && puppeteerInstance !== void 0 ? puppeteerInstance : makeBrowser();
|
|
307
|
+
const actualConcurrency = (0, get_concurrency_1.getActualConcurrency)(concurrency);
|
|
327
308
|
const openedPages = [];
|
|
328
309
|
return new Promise((resolve, reject) => {
|
|
329
|
-
var _a, _b, _c;
|
|
330
310
|
const cleanup = [];
|
|
331
|
-
if (!options.downloadMap) {
|
|
332
|
-
cleanup.push(() => (0, download_map_1.cleanDownloadMap)(downloadMap));
|
|
333
|
-
}
|
|
334
311
|
const onError = (err) => {
|
|
335
312
|
reject(err);
|
|
336
313
|
};
|
|
337
314
|
Promise.race([
|
|
338
315
|
new Promise((_, rej) => {
|
|
339
|
-
|
|
340
|
-
(_a = options.cancelSignal) === null || _a === void 0 ? void 0 : _a.call(options, () => {
|
|
316
|
+
cancelSignal === null || cancelSignal === void 0 ? void 0 : cancelSignal(() => {
|
|
341
317
|
rej(new Error(make_cancel_signal_1.cancelErrorMessages.renderFrames));
|
|
342
318
|
});
|
|
343
319
|
}),
|
|
344
320
|
Promise.all([
|
|
345
|
-
(0, prepare_server_1.
|
|
346
|
-
webpackConfigOrServeUrl:
|
|
347
|
-
|
|
348
|
-
onError,
|
|
349
|
-
port: (_a = options.port) !== null && _a !== void 0 ? _a : null,
|
|
350
|
-
downloadMap,
|
|
321
|
+
(0, prepare_server_1.makeOrReuseServer)(server, {
|
|
322
|
+
webpackConfigOrServeUrl: webpackBundleOrServeUrl,
|
|
323
|
+
port,
|
|
351
324
|
remotionRoot: (0, find_closest_package_json_1.findRemotionRoot)(),
|
|
352
325
|
concurrency: actualConcurrency,
|
|
353
|
-
verbose
|
|
354
|
-
indent
|
|
326
|
+
verbose,
|
|
327
|
+
indent,
|
|
328
|
+
}, {
|
|
329
|
+
onDownload,
|
|
330
|
+
onError,
|
|
355
331
|
}),
|
|
356
332
|
browserInstance,
|
|
357
|
-
]).then(([{ serveUrl,
|
|
358
|
-
const browserReplacer = (0, replace_browser_1.handleBrowserCrash)(
|
|
359
|
-
|
|
360
|
-
cleanup.push(
|
|
361
|
-
cleanup.push(() => closeServer(false));
|
|
333
|
+
]).then(([{ server: { serveUrl, offthreadPort, compositor, sourceMap, downloadMap, }, cleanupServer, }, pInstance,]) => {
|
|
334
|
+
const browserReplacer = (0, replace_browser_1.handleBrowserCrash)(pInstance);
|
|
335
|
+
cleanup.push((0, cycle_browser_tabs_1.cycleBrowserTabs)(browserReplacer, actualConcurrency).stopCycling);
|
|
336
|
+
cleanup.push(() => cleanupServer(false));
|
|
362
337
|
return innerRenderFrames({
|
|
363
|
-
...options,
|
|
364
|
-
puppeteerInstance,
|
|
365
338
|
onError,
|
|
366
339
|
pagesArray: openedPages,
|
|
367
340
|
serveUrl,
|
|
@@ -369,10 +342,26 @@ const renderFrames = (options) => {
|
|
|
369
342
|
actualConcurrency,
|
|
370
343
|
onDownload,
|
|
371
344
|
proxyPort: offthreadPort,
|
|
372
|
-
downloadMap,
|
|
373
345
|
makeBrowser,
|
|
374
346
|
browserReplacer,
|
|
375
347
|
compositor,
|
|
348
|
+
sourcemapContext: sourceMap,
|
|
349
|
+
downloadMap,
|
|
350
|
+
cancelSignal,
|
|
351
|
+
envVariables,
|
|
352
|
+
everyNthFrame,
|
|
353
|
+
frameRange,
|
|
354
|
+
imageFormat,
|
|
355
|
+
inputProps,
|
|
356
|
+
jpegQuality,
|
|
357
|
+
muted,
|
|
358
|
+
onBrowserLog,
|
|
359
|
+
onFrameBuffer,
|
|
360
|
+
onFrameUpdate,
|
|
361
|
+
onStart,
|
|
362
|
+
outputDir,
|
|
363
|
+
scale,
|
|
364
|
+
timeoutInMilliseconds,
|
|
376
365
|
});
|
|
377
366
|
}),
|
|
378
367
|
])
|
|
@@ -384,7 +373,7 @@ const renderFrames = (options) => {
|
|
|
384
373
|
// If browser instance was passed in, we close all the pages
|
|
385
374
|
// we opened.
|
|
386
375
|
// If new browser was opened, then closing the browser as a cleanup.
|
|
387
|
-
if (
|
|
376
|
+
if (puppeteerInstance) {
|
|
388
377
|
Promise.all(openedPages.map((p) => p.close())).catch((err) => {
|
|
389
378
|
if ((0, is_target_closed_err_1.isTargetClosedErr)(err)) {
|
|
390
379
|
return;
|
|
@@ -394,8 +383,8 @@ const renderFrames = (options) => {
|
|
|
394
383
|
}
|
|
395
384
|
else {
|
|
396
385
|
Promise.resolve(browserInstance)
|
|
397
|
-
.then((
|
|
398
|
-
return
|
|
386
|
+
.then((instance) => {
|
|
387
|
+
return instance.close(true);
|
|
399
388
|
})
|
|
400
389
|
.catch((err) => {
|
|
401
390
|
if (!(err === null || err === void 0 ? void 0 : err.message.includes('Target closed'))) {
|
|
@@ -410,4 +399,50 @@ const renderFrames = (options) => {
|
|
|
410
399
|
});
|
|
411
400
|
});
|
|
412
401
|
};
|
|
402
|
+
exports.internalRenderFrames = internalRenderFrames;
|
|
403
|
+
/**
|
|
404
|
+
* @description Renders a series of images using Puppeteer and computes information for mixing audio.
|
|
405
|
+
* @see [Documentation](https://www.remotion.dev/docs/renderer/render-frames)
|
|
406
|
+
*/
|
|
407
|
+
const renderFrames = (options) => {
|
|
408
|
+
const { composition, inputProps, onFrameUpdate, onStart, outputDir, serveUrl, browserExecutable, cancelSignal, chromiumOptions, concurrency, dumpBrowserLogs, envVariables, everyNthFrame, frameRange, imageFormat, jpegQuality, muted, onBrowserLog, onDownload, onFrameBuffer, port, puppeteerInstance, scale, timeoutInMilliseconds, verbose, quality, } = options;
|
|
409
|
+
if (!composition) {
|
|
410
|
+
throw new Error('No `composition` option has been specified for renderFrames()');
|
|
411
|
+
}
|
|
412
|
+
if (typeof jpegQuality !== 'undefined' && imageFormat !== 'jpeg') {
|
|
413
|
+
throw new Error("You can only pass the `quality` option if `imageFormat` is 'jpeg'.");
|
|
414
|
+
}
|
|
415
|
+
if (quality) {
|
|
416
|
+
console.warn('Passing `quality()` to `renderStill` is deprecated. Use `jpegQuality` instead.');
|
|
417
|
+
}
|
|
418
|
+
return (0, exports.internalRenderFrames)({
|
|
419
|
+
browserExecutable: browserExecutable !== null && browserExecutable !== void 0 ? browserExecutable : null,
|
|
420
|
+
cancelSignal,
|
|
421
|
+
chromiumOptions: chromiumOptions !== null && chromiumOptions !== void 0 ? chromiumOptions : {},
|
|
422
|
+
composition,
|
|
423
|
+
concurrency: concurrency !== null && concurrency !== void 0 ? concurrency : null,
|
|
424
|
+
dumpBrowserLogs: dumpBrowserLogs !== null && dumpBrowserLogs !== void 0 ? dumpBrowserLogs : false,
|
|
425
|
+
envVariables: envVariables !== null && envVariables !== void 0 ? envVariables : {},
|
|
426
|
+
everyNthFrame: everyNthFrame !== null && everyNthFrame !== void 0 ? everyNthFrame : 1,
|
|
427
|
+
frameRange: frameRange !== null && frameRange !== void 0 ? frameRange : null,
|
|
428
|
+
imageFormat: imageFormat !== null && imageFormat !== void 0 ? imageFormat : 'jpeg',
|
|
429
|
+
indent: false,
|
|
430
|
+
jpegQuality: jpegQuality !== null && jpegQuality !== void 0 ? jpegQuality : jpeg_quality_1.DEFAULT_JPEG_QUALITY,
|
|
431
|
+
onDownload: onDownload !== null && onDownload !== void 0 ? onDownload : null,
|
|
432
|
+
inputProps,
|
|
433
|
+
puppeteerInstance,
|
|
434
|
+
muted: muted !== null && muted !== void 0 ? muted : false,
|
|
435
|
+
onBrowserLog: onBrowserLog !== null && onBrowserLog !== void 0 ? onBrowserLog : null,
|
|
436
|
+
onFrameBuffer: onFrameBuffer !== null && onFrameBuffer !== void 0 ? onFrameBuffer : null,
|
|
437
|
+
onFrameUpdate,
|
|
438
|
+
onStart,
|
|
439
|
+
outputDir,
|
|
440
|
+
port: port !== null && port !== void 0 ? port : null,
|
|
441
|
+
scale: scale !== null && scale !== void 0 ? scale : 1,
|
|
442
|
+
verbose: verbose !== null && verbose !== void 0 ? verbose : false,
|
|
443
|
+
timeoutInMilliseconds: timeoutInMilliseconds !== null && timeoutInMilliseconds !== void 0 ? timeoutInMilliseconds : TimeoutSettings_1.DEFAULT_TIMEOUT,
|
|
444
|
+
webpackBundleOrServeUrl: serveUrl,
|
|
445
|
+
server: undefined,
|
|
446
|
+
});
|
|
447
|
+
};
|
|
413
448
|
exports.renderFrames = renderFrames;
|
package/dist/render-media.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import type { AnySmallCompMetadata } from 'remotion';
|
|
3
3
|
import type { RenderMediaOnDownload } from './assets/download-and-map-assets-to-file';
|
|
4
|
-
import type { DownloadMap } from './assets/download-map';
|
|
5
4
|
import type { AudioCodec } from './audio-codec';
|
|
6
5
|
import type { BrowserExecutable } from './browser-executable';
|
|
7
6
|
import type { BrowserLog } from './browser-log';
|
|
@@ -13,14 +12,15 @@ import type { VideoImageFormat } from './image-format';
|
|
|
13
12
|
import type { CancelSignal } from './make-cancel-signal';
|
|
14
13
|
import type { ChromiumOptions } from './open-browser';
|
|
15
14
|
import type { PixelFormat } from './pixel-format';
|
|
15
|
+
import type { RemotionServer } from './prepare-server';
|
|
16
16
|
import type { ProResProfile } from './prores-profile';
|
|
17
17
|
import type { OnStartData } from './types';
|
|
18
|
-
export
|
|
19
|
-
export
|
|
18
|
+
export type StitchingState = 'encoding' | 'muxing';
|
|
19
|
+
export type SlowFrame = {
|
|
20
20
|
frame: number;
|
|
21
21
|
time: number;
|
|
22
22
|
};
|
|
23
|
-
export
|
|
23
|
+
export type RenderMediaOnProgress = (progress: {
|
|
24
24
|
renderedFrames: number;
|
|
25
25
|
encodedFrames: number;
|
|
26
26
|
encodedDoneIn: number | null;
|
|
@@ -28,7 +28,49 @@ export declare type RenderMediaOnProgress = (progress: {
|
|
|
28
28
|
progress: number;
|
|
29
29
|
stitchStage: StitchingState;
|
|
30
30
|
}) => void;
|
|
31
|
-
export
|
|
31
|
+
export type InternalRenderMediaOptions = {
|
|
32
|
+
outputLocation: string | null;
|
|
33
|
+
codec: Codec;
|
|
34
|
+
composition: AnySmallCompMetadata;
|
|
35
|
+
inputProps: Record<string, unknown>;
|
|
36
|
+
crf: number | null;
|
|
37
|
+
imageFormat: VideoImageFormat;
|
|
38
|
+
pixelFormat: PixelFormat;
|
|
39
|
+
envVariables: Record<string, string>;
|
|
40
|
+
jpegQuality: number;
|
|
41
|
+
frameRange: FrameRange | null;
|
|
42
|
+
everyNthFrame: number;
|
|
43
|
+
numberOfGifLoops: number | null;
|
|
44
|
+
puppeteerInstance: HeadlessBrowser | undefined;
|
|
45
|
+
overwrite: boolean;
|
|
46
|
+
onProgress: RenderMediaOnProgress;
|
|
47
|
+
onDownload: RenderMediaOnDownload;
|
|
48
|
+
proResProfile: ProResProfile | undefined;
|
|
49
|
+
dumpBrowserLogs: boolean;
|
|
50
|
+
onBrowserLog: ((log: BrowserLog) => void) | null;
|
|
51
|
+
onStart: (data: OnStartData) => void;
|
|
52
|
+
timeoutInMilliseconds: number;
|
|
53
|
+
chromiumOptions: ChromiumOptions;
|
|
54
|
+
scale: number;
|
|
55
|
+
port: number | null;
|
|
56
|
+
cancelSignal: CancelSignal | undefined;
|
|
57
|
+
browserExecutable: BrowserExecutable | null;
|
|
58
|
+
verbose: boolean;
|
|
59
|
+
onCtrlCExit: (fn: () => void) => void;
|
|
60
|
+
indent: boolean;
|
|
61
|
+
server: RemotionServer | undefined;
|
|
62
|
+
preferLossless: boolean;
|
|
63
|
+
muted: boolean;
|
|
64
|
+
enforceAudioTrack: boolean;
|
|
65
|
+
ffmpegOverride: FfmpegOverrideFn | undefined;
|
|
66
|
+
audioBitrate: string | null;
|
|
67
|
+
videoBitrate: string | null;
|
|
68
|
+
disallowParallelEncoding: boolean;
|
|
69
|
+
audioCodec: AudioCodec | null;
|
|
70
|
+
serveUrl: string;
|
|
71
|
+
concurrency: number | string | null;
|
|
72
|
+
};
|
|
73
|
+
export type RenderMediaOptions = {
|
|
32
74
|
outputLocation?: string | null;
|
|
33
75
|
codec: Codec;
|
|
34
76
|
composition: AnySmallCompMetadata;
|
|
@@ -60,20 +102,6 @@ export declare type RenderMediaOptions = {
|
|
|
60
102
|
cancelSignal?: CancelSignal;
|
|
61
103
|
browserExecutable?: BrowserExecutable;
|
|
62
104
|
verbose?: boolean;
|
|
63
|
-
internal?: {
|
|
64
|
-
/**
|
|
65
|
-
* @deprecated Only for Remotion internal usage
|
|
66
|
-
*/
|
|
67
|
-
downloadMap?: DownloadMap;
|
|
68
|
-
/**
|
|
69
|
-
* @deprecated Only for Remotion internal usage
|
|
70
|
-
*/
|
|
71
|
-
onCtrlCExit?: (fn: () => void) => void;
|
|
72
|
-
/**
|
|
73
|
-
* @deprecated Only for Remotion internal usage
|
|
74
|
-
*/
|
|
75
|
-
indent?: boolean;
|
|
76
|
-
};
|
|
77
105
|
preferLossless?: boolean;
|
|
78
106
|
muted?: boolean;
|
|
79
107
|
enforceAudioTrack?: boolean;
|
|
@@ -85,14 +113,15 @@ export declare type RenderMediaOptions = {
|
|
|
85
113
|
serveUrl: string;
|
|
86
114
|
concurrency?: number | string | null;
|
|
87
115
|
};
|
|
88
|
-
|
|
116
|
+
type RenderMediaResult = {
|
|
89
117
|
buffer: Buffer | null;
|
|
90
118
|
slowestFrames: SlowFrame[];
|
|
91
119
|
};
|
|
120
|
+
export declare const internalRenderMedia: ({ proResProfile, crf, composition, inputProps, pixelFormat, codec, envVariables, frameRange, puppeteerInstance, outputLocation, onProgress, overwrite, onDownload, dumpBrowserLogs, onBrowserLog, onStart, timeoutInMilliseconds, chromiumOptions, scale, browserExecutable, port, cancelSignal, muted, enforceAudioTrack, ffmpegOverride, audioBitrate, videoBitrate, audioCodec, concurrency, disallowParallelEncoding, everyNthFrame, imageFormat: provisionalImageFormat, indent, jpegQuality, numberOfGifLoops, onCtrlCExit, preferLossless, serveUrl, server: reusedServer, verbose, }: InternalRenderMediaOptions) => Promise<RenderMediaResult>;
|
|
92
121
|
/**
|
|
93
122
|
*
|
|
94
123
|
* @description Render a video from a composition
|
|
95
124
|
* @see [Documentation](https://www.remotion.dev/docs/renderer/render-media)
|
|
96
125
|
*/
|
|
97
|
-
export declare const renderMedia: ({ proResProfile, crf, composition, inputProps, pixelFormat, codec, envVariables, frameRange, puppeteerInstance, outputLocation, onProgress, overwrite, onDownload, dumpBrowserLogs, onBrowserLog, onStart, timeoutInMilliseconds, chromiumOptions, scale, browserExecutable, port, cancelSignal, muted, enforceAudioTrack, ffmpegOverride, audioBitrate, videoBitrate, audioCodec,
|
|
126
|
+
export declare const renderMedia: ({ proResProfile, crf, composition, inputProps, pixelFormat, codec, envVariables, frameRange, puppeteerInstance, outputLocation, onProgress, overwrite, onDownload, dumpBrowserLogs, onBrowserLog, onStart, timeoutInMilliseconds, chromiumOptions, scale, browserExecutable, port, cancelSignal, muted, enforceAudioTrack, ffmpegOverride, audioBitrate, videoBitrate, audioCodec, jpegQuality, concurrency, serveUrl, disallowParallelEncoding, everyNthFrame, imageFormat, numberOfGifLoops, preferLossless, verbose, quality, }: RenderMediaOptions) => Promise<RenderMediaResult>;
|
|
98
127
|
export {};
|