@remotion/renderer 3.1.5 → 3.1.8
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 +3 -2
- package/dist/assets/convert-assets-to-file-urls.js +2 -2
- package/dist/assets/download-and-map-assets-to-file.d.ts +6 -5
- package/dist/assets/download-and-map-assets-to-file.js +47 -48
- package/dist/assets/download-map.d.ts +64 -0
- package/dist/assets/download-map.js +73 -0
- package/dist/assets/get-audio-channels.d.ts +3 -7
- package/dist/assets/get-audio-channels.js +6 -7
- package/dist/assets/get-video-stream-duration.d.ts +3 -0
- package/dist/assets/get-video-stream-duration.js +35 -0
- package/dist/browser/TimeoutSettings.d.ts +1 -0
- package/dist/browser/TimeoutSettings.js +4 -4
- package/dist/browser-executable.d.ts +1 -0
- package/dist/{assets/cleanup-assets.js → browser-executable.js} +0 -0
- package/dist/browser.d.ts +2 -0
- package/dist/browser.js +4 -0
- package/dist/can-use-parallel-encoding.d.ts +1 -1
- package/dist/can-use-parallel-encoding.js +2 -2
- package/dist/codec-supports-media.d.ts +1 -1
- package/dist/codec.d.ts +4 -0
- package/dist/codec.js +16 -0
- package/dist/combine-videos.d.ts +1 -1
- package/dist/combine-videos.js +7 -6
- package/dist/compress-assets.d.ts +7 -0
- package/dist/compress-assets.js +25 -0
- package/dist/convert-to-pcm.d.ts +1 -1
- package/dist/create-ffmpeg-complex-filter.d.ts +6 -2
- package/dist/create-ffmpeg-complex-filter.js +2 -11
- package/dist/create-ffmpeg-merge-filter.js +3 -3
- package/dist/create-silent-audio.d.ts +1 -1
- package/dist/crf.d.ts +5 -0
- package/dist/crf.js +64 -0
- package/dist/ensure-presentation-timestamp.d.ts +2 -1
- package/dist/ensure-presentation-timestamp.js +9 -7
- package/dist/extract-frame-from-video.d.ts +4 -2
- package/dist/extract-frame-from-video.js +22 -17
- package/dist/ffmpeg-executable.d.ts +1 -0
- package/dist/ffmpeg-executable.js +2 -0
- package/dist/ffmpeg-filter-file.d.ts +2 -1
- package/dist/ffmpeg-filter-file.js +4 -6
- package/dist/frame-range.d.ts +2 -0
- package/dist/frame-range.js +49 -0
- package/dist/get-audio-codec-name.d.ts +1 -1
- package/dist/get-audio-codec-name.js +2 -2
- package/dist/get-browser-instance.d.ts +1 -1
- package/dist/get-browser-instance.js +2 -2
- package/dist/get-codec-name.d.ts +1 -1
- package/dist/get-codec-name.js +2 -2
- package/dist/get-compositions.d.ts +8 -1
- package/dist/get-compositions.js +10 -6
- package/dist/get-extension-from-codec.d.ts +2 -2
- package/dist/get-extension-of-filename.d.ts +1 -1
- package/dist/get-extension-of-filename.js +3 -0
- package/dist/get-frame-to-render.d.ts +1 -1
- package/dist/get-local-browser-executable.d.ts +2 -1
- package/dist/get-prores-profile-name.d.ts +2 -1
- package/dist/get-video-info.d.ts +3 -8
- package/dist/get-video-info.js +7 -8
- package/dist/guess-extension-for-media.d.ts +1 -1
- package/dist/image-format.d.ts +6 -1
- package/dist/image-format.js +25 -1
- package/dist/index.d.ts +49 -10
- package/dist/index.js +71 -1
- package/dist/is-audio-codec.d.ts +2 -0
- package/dist/is-audio-codec.js +7 -0
- package/dist/is-beyond-last-frame.d.ts +3 -2
- package/dist/is-beyond-last-frame.js +5 -5
- package/dist/last-frame-from-video-cache.d.ts +5 -4
- package/dist/last-frame-from-video-cache.js +17 -17
- package/dist/log-level.d.ts +4 -0
- package/dist/log-level.js +15 -0
- package/dist/merge-audio-track.d.ts +3 -1
- package/dist/merge-audio-track.js +6 -4
- package/dist/offthread-video-server.d.ts +5 -3
- package/dist/offthread-video-server.js +3 -2
- package/dist/open-browser.d.ts +1 -1
- package/dist/open-browser.js +4 -4
- package/dist/overwrite.d.ts +1 -0
- package/dist/overwrite.js +4 -0
- package/dist/perf.d.ts +5 -0
- package/dist/perf.js +35 -0
- package/dist/pixel-format.d.ts +5 -0
- package/dist/pixel-format.js +26 -0
- package/dist/prepare-server.d.ts +4 -3
- package/dist/prepare-server.js +3 -3
- package/dist/preprocess-audio-track.d.ts +3 -1
- package/dist/preprocess-audio-track.js +3 -3
- package/dist/prespawn-ffmpeg.d.ts +5 -1
- package/dist/prespawn-ffmpeg.js +9 -6
- package/dist/prores-profile.d.ts +5 -0
- package/dist/prores-profile.js +23 -0
- package/dist/provide-screenshot.d.ts +1 -1
- package/dist/quality.d.ts +1 -0
- package/dist/quality.js +21 -0
- package/dist/render-frames.d.ts +10 -1
- package/dist/render-frames.js +22 -16
- package/dist/render-media.d.ts +13 -2
- package/dist/render-media.js +24 -13
- package/dist/render-still.d.ts +9 -1
- package/dist/render-still.js +21 -11
- package/dist/screenshot-dom-element.d.ts +1 -1
- package/dist/screenshot-task.d.ts +1 -1
- package/dist/screenshot-task.js +7 -7
- package/dist/serve-static.d.ts +3 -2
- package/dist/serve-static.js +3 -4
- package/dist/set-props-and-env.js +2 -2
- package/dist/stitch-frames-to-video.d.ts +6 -1
- package/dist/stitch-frames-to-video.js +30 -43
- package/dist/stringify-ffmpeg-filter.js +2 -2
- package/dist/symbolicate-stacktrace.js +3 -3
- package/dist/truthy.d.ts +3 -0
- package/dist/truthy.js +7 -0
- package/dist/types.d.ts +1 -1
- package/dist/validate-even-dimensions-with-codec.d.ts +1 -1
- package/dist/validate-even-dimensions-with-codec.js +2 -2
- package/dist/validate-every-nth-frame.d.ts +1 -0
- package/dist/validate-every-nth-frame.js +21 -0
- package/dist/validate-ffmpeg.js +2 -3
- package/dist/validate-frame.d.ts +1 -0
- package/dist/validate-frame.js +24 -0
- package/dist/validate-opengl-renderer.d.ts +5 -0
- package/dist/validate-opengl-renderer.js +15 -0
- package/dist/validate-output-filename.d.ts +1 -1
- package/package.json +3 -3
- package/dist/assets/calculate-asset-positions.d.ts.map +0 -1
- package/dist/assets/calculate-asset-positions.js.map +0 -1
- package/dist/assets/calculate-atempo.d.ts.map +0 -1
- package/dist/assets/calculate-atempo.js.map +0 -1
- package/dist/assets/cleanup-assets.d.ts +0 -2
- package/dist/assets/convert-assets-to-file-urls.d.ts.map +0 -1
- package/dist/assets/convert-assets-to-file-urls.js.map +0 -1
- package/dist/assets/download-and-map-assets-to-file.d.ts.map +0 -1
- package/dist/assets/download-and-map-assets-to-file.js.map +0 -1
- package/dist/assets/download-file.d.ts.map +0 -1
- package/dist/assets/download-file.js.map +0 -1
- package/dist/assets/ffmpeg-volume-expression.d.ts.map +0 -1
- package/dist/assets/ffmpeg-volume-expression.js.map +0 -1
- package/dist/assets/flatten-volume-array.d.ts.map +0 -1
- package/dist/assets/flatten-volume-array.js.map +0 -1
- package/dist/assets/get-audio-channels.d.ts.map +0 -1
- package/dist/assets/get-audio-channels.js.map +0 -1
- package/dist/assets/read-file.d.ts.map +0 -1
- package/dist/assets/read-file.js.map +0 -1
- package/dist/assets/round-volume-to-avoid-stack-overflow.d.ts.map +0 -1
- package/dist/assets/round-volume-to-avoid-stack-overflow.js.map +0 -1
- package/dist/assets/sanitize-filename.d.ts.map +0 -1
- package/dist/assets/sanitize-filename.js.map +0 -1
- package/dist/assets/sanitize-filepath.d.ts.map +0 -1
- package/dist/assets/sanitize-filepath.js.map +0 -1
- package/dist/assets/truncate-utf8-bytes.d.ts.map +0 -1
- package/dist/assets/truncate-utf8-bytes.js.map +0 -1
- package/dist/assets/types.d.ts.map +0 -1
- package/dist/assets/types.js.map +0 -1
- package/dist/browser/Accessibility.d.ts +0 -175
- package/dist/browser/Accessibility.js +0 -423
- package/dist/browser/AriaQueryHandler.d.ts +0 -20
- package/dist/browser/AriaQueryHandler.js +0 -108
- package/dist/browser/ConnectionTransport.d.ts +0 -21
- package/dist/browser/ConnectionTransport.js +0 -17
- package/dist/browser/Coverage.d.ts +0 -180
- package/dist/browser/Coverage.js +0 -371
- package/dist/browser/Debug.d.ts +0 -19
- package/dist/browser/Debug.js +0 -42
- package/dist/browser/DeviceDescriptors.d.ts +0 -40
- package/dist/browser/DeviceDescriptors.js +0 -1407
- package/dist/browser/EmulationManager.d.ts +0 -7
- package/dist/browser/EmulationManager.js +0 -40
- package/dist/browser/FileChooser.d.ts +0 -56
- package/dist/browser/FileChooser.js +0 -86
- package/dist/browser/Input.d.ts +0 -355
- package/dist/browser/Input.js +0 -592
- package/dist/browser/NetworkConditions.d.ts +0 -26
- package/dist/browser/NetworkConditions.js +0 -33
- package/dist/browser/PDFOptions.d.ts +0 -165
- package/dist/browser/PDFOptions.js +0 -34
- package/dist/browser/PipeTransport.d.ts +0 -10
- package/dist/browser/PipeTransport.js +0 -86
- package/dist/browser/Puppeteer.d.ts +0 -35
- package/dist/browser/Puppeteer.js +0 -17
- package/dist/browser/QueryHandler.d.ts +0 -64
- package/dist/browser/QueryHandler.js +0 -183
- package/dist/browser/SecurityDetails.d.ts +0 -55
- package/dist/browser/SecurityDetails.js +0 -95
- package/dist/browser/Tracing.d.ts +0 -45
- package/dist/browser/Tracing.js +0 -136
- package/dist/browser/USKeyboardLayout.d.ts +0 -39
- package/dist/browser/USKeyboardLayout.js +0 -406
- package/dist/browser/WebWorker.d.ts +0 -96
- package/dist/browser/WebWorker.js +0 -122
- package/dist/browser/compat.d.ts +0 -2
- package/dist/browser/compat.js +0 -17
- package/dist/browser/dialog.d.ts +0 -70
- package/dist/browser/dialog.js +0 -114
- package/dist/browser/environment.d.ts +0 -16
- package/dist/browser/environment.js +0 -19
- package/dist/browser/fetch.d.ts +0 -16
- package/dist/browser/fetch.js +0 -46
- package/dist/browser/find-up.d.ts +0 -4
- package/dist/browser/find-up.js +0 -85
- package/dist/browser/page.d.ts +0 -74
- package/dist/browser/page.js +0 -283
- package/dist/browser/pkg-dir.d.ts +0 -3
- package/dist/browser/pkg-dir.js +0 -13
- package/dist/browser-log.d.ts.map +0 -1
- package/dist/browser-log.js.map +0 -1
- package/dist/calculate-ffmpeg-filters.d.ts.map +0 -1
- package/dist/calculate-ffmpeg-filters.js.map +0 -1
- package/dist/can-use-parallel-encoding.d.ts.map +0 -1
- package/dist/can-use-parallel-encoding.js.map +0 -1
- package/dist/chunk.d.ts.map +0 -1
- package/dist/chunk.js.map +0 -1
- package/dist/combine-videos.d.ts.map +0 -1
- package/dist/combine-videos.js.map +0 -1
- package/dist/convert-to-pcm.d.ts.map +0 -1
- package/dist/convert-to-pcm.js.map +0 -1
- package/dist/create-ffmpeg-complex-filter.d.ts.map +0 -1
- package/dist/create-ffmpeg-complex-filter.js.map +0 -1
- package/dist/create-ffmpeg-merge-filter.d.ts.map +0 -1
- package/dist/create-ffmpeg-merge-filter.js.map +0 -1
- package/dist/create-silent-audio.d.ts.map +0 -1
- package/dist/create-silent-audio.js.map +0 -1
- package/dist/cycle-browser-tabs.d.ts.map +0 -1
- package/dist/cycle-browser-tabs.js.map +0 -1
- package/dist/delay-render-embedded-stack.d.ts.map +0 -1
- package/dist/delay-render-embedded-stack.js.map +0 -1
- package/dist/delete-directory.d.ts.map +0 -1
- package/dist/delete-directory.js.map +0 -1
- package/dist/ensure-frames-in-order.d.ts.map +0 -1
- package/dist/ensure-frames-in-order.js.map +0 -1
- package/dist/ensure-output-directory.d.ts.map +0 -1
- package/dist/ensure-output-directory.js.map +0 -1
- package/dist/error-handling/handle-javascript-exception.d.ts.map +0 -1
- package/dist/error-handling/handle-javascript-exception.js.map +0 -1
- package/dist/error-handling/symbolicate-error.d.ts.map +0 -1
- package/dist/error-handling/symbolicate-error.js.map +0 -1
- package/dist/error-handling/symbolicateable-error.d.ts.map +0 -1
- package/dist/error-handling/symbolicateable-error.js.map +0 -1
- package/dist/ffmpeg-filter-file.d.ts.map +0 -1
- package/dist/ffmpeg-filter-file.js.map +0 -1
- package/dist/ffmpeg-flags.d.ts.map +0 -1
- package/dist/ffmpeg-flags.js.map +0 -1
- package/dist/get-audio-codec-name.d.ts.map +0 -1
- package/dist/get-audio-codec-name.js.map +0 -1
- package/dist/get-browser-instance.d.ts.map +0 -1
- package/dist/get-browser-instance.js.map +0 -1
- package/dist/get-codec-name.d.ts.map +0 -1
- package/dist/get-codec-name.js.map +0 -1
- package/dist/get-compositions.d.ts.map +0 -1
- package/dist/get-compositions.js.map +0 -1
- package/dist/get-concurrency.d.ts.map +0 -1
- package/dist/get-concurrency.js.map +0 -1
- package/dist/get-duration-from-frame-range.d.ts.map +0 -1
- package/dist/get-duration-from-frame-range.js.map +0 -1
- package/dist/get-duration-of-asset.d.ts +0 -7
- package/dist/get-duration-of-asset.js +0 -36
- package/dist/get-extension-from-codec.d.ts.map +0 -1
- package/dist/get-extension-from-codec.js.map +0 -1
- package/dist/get-format-for-codec.d.ts +0 -2
- package/dist/get-format-for-codec.js +0 -34
- package/dist/get-frame-to-render.d.ts.map +0 -1
- package/dist/get-frame-to-render.js.map +0 -1
- package/dist/get-local-browser-executable.d.ts.map +0 -1
- package/dist/get-local-browser-executable.js.map +0 -1
- package/dist/get-port.d.ts.map +0 -1
- package/dist/get-port.js.map +0 -1
- package/dist/get-prores-profile-name.d.ts.map +0 -1
- package/dist/get-prores-profile-name.js.map +0 -1
- package/dist/image-format.d.ts.map +0 -1
- package/dist/image-format.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/is-serve-url.d.ts.map +0 -1
- package/dist/is-serve-url.js.map +0 -1
- package/dist/is-vp9-video.d.ts +0 -3
- package/dist/is-vp9-video.js +0 -24
- package/dist/legacy-webpack-config.d.ts.map +0 -1
- package/dist/legacy-webpack-config.js.map +0 -1
- package/dist/make-assets-download-dir.d.ts.map +0 -1
- package/dist/make-assets-download-dir.js.map +0 -1
- package/dist/merge-audio-track.d.ts.map +0 -1
- package/dist/merge-audio-track.js.map +0 -1
- package/dist/normalize-serve-url.d.ts.map +0 -1
- package/dist/normalize-serve-url.js.map +0 -1
- package/dist/open-browser.d.ts.map +0 -1
- package/dist/open-browser.js.map +0 -1
- package/dist/p-limit.d.ts.map +0 -1
- package/dist/p-limit.js.map +0 -1
- package/dist/parse-browser-error-stack.d.ts.map +0 -1
- package/dist/parse-browser-error-stack.js.map +0 -1
- package/dist/parse-ffmpeg-progress.d.ts.map +0 -1
- package/dist/parse-ffmpeg-progress.js.map +0 -1
- package/dist/pool.d.ts.map +0 -1
- package/dist/pool.js.map +0 -1
- package/dist/prepare-server.d.ts.map +0 -1
- package/dist/prepare-server.js.map +0 -1
- package/dist/preprocess-audio-track.d.ts.map +0 -1
- package/dist/preprocess-audio-track.js.map +0 -1
- package/dist/prespawn-ffmpeg.d.ts.map +0 -1
- package/dist/prespawn-ffmpeg.js.map +0 -1
- package/dist/provide-screenshot.d.ts.map +0 -1
- package/dist/provide-screenshot.js.map +0 -1
- package/dist/puppeteer-evaluate.d.ts.map +0 -1
- package/dist/puppeteer-evaluate.js.map +0 -1
- package/dist/puppeteer-screenshot.d.ts.map +0 -1
- package/dist/puppeteer-screenshot.js.map +0 -1
- package/dist/render-frames.d.ts.map +0 -1
- package/dist/render-frames.js.map +0 -1
- package/dist/render-media.d.ts.map +0 -1
- package/dist/render-media.js.map +0 -1
- package/dist/render-still.d.ts.map +0 -1
- package/dist/render-still.js.map +0 -1
- package/dist/resolve-asset-src.d.ts.map +0 -1
- package/dist/resolve-asset-src.js.map +0 -1
- package/dist/sample-rate.d.ts.map +0 -1
- package/dist/sample-rate.js.map +0 -1
- package/dist/screenshot-dom-element.d.ts.map +0 -1
- package/dist/screenshot-dom-element.js.map +0 -1
- package/dist/screenshot-task.d.ts.map +0 -1
- package/dist/screenshot-task.js.map +0 -1
- package/dist/seek-to-frame.d.ts.map +0 -1
- package/dist/seek-to-frame.js.map +0 -1
- package/dist/serve-handler/glob-slash.d.ts +0 -1
- package/dist/serve-handler/glob-slash.js +0 -12
- package/dist/serve-static.d.ts.map +0 -1
- package/dist/serve-static.js.map +0 -1
- package/dist/set-props-and-env.d.ts.map +0 -1
- package/dist/set-props-and-env.js.map +0 -1
- package/dist/stitch-frames-to-video.d.ts.map +0 -1
- package/dist/stitch-frames-to-video.js.map +0 -1
- package/dist/stringify-ffmpeg-filter.d.ts.map +0 -1
- package/dist/stringify-ffmpeg-filter.js.map +0 -1
- package/dist/symbolicate-stacktrace.d.ts.map +0 -1
- package/dist/symbolicate-stacktrace.js.map +0 -1
- package/dist/tmp-dir.d.ts.map +0 -1
- package/dist/tmp-dir.js.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/validate-even-dimensions-with-codec.d.ts.map +0 -1
- package/dist/validate-even-dimensions-with-codec.js.map +0 -1
- package/dist/validate-ffmpeg.d.ts.map +0 -1
- package/dist/validate-ffmpeg.js.map +0 -1
- package/dist/validate-fps-for-gif.d.ts +0 -2
- package/dist/validate-fps-for-gif.js +0 -9
- package/dist/validate-puppeteer-timeout.d.ts.map +0 -1
- package/dist/validate-puppeteer-timeout.js.map +0 -1
- package/dist/validate-scale.d.ts.map +0 -1
- package/dist/validate-scale.js.map +0 -1
package/dist/open-browser.js
CHANGED
|
@@ -7,13 +7,13 @@ exports.openBrowser = exports.killAllBrowsers = void 0;
|
|
|
7
7
|
const fs_1 = __importDefault(require("fs"));
|
|
8
8
|
const os_1 = __importDefault(require("os"));
|
|
9
9
|
const path_1 = __importDefault(require("path"));
|
|
10
|
-
const remotion_1 = require("remotion");
|
|
11
10
|
const node_1 = require("./browser/node");
|
|
12
11
|
const get_local_browser_executable_1 = require("./get-local-browser-executable");
|
|
12
|
+
const validate_opengl_renderer_1 = require("./validate-opengl-renderer");
|
|
13
13
|
const validRenderers = ['swangle', 'angle', 'egl', 'swiftshader'];
|
|
14
14
|
const getOpenGlRenderer = (option) => {
|
|
15
|
-
const renderer = option !== null && option !== void 0 ? option :
|
|
16
|
-
|
|
15
|
+
const renderer = option !== null && option !== void 0 ? option : validate_opengl_renderer_1.DEFAULT_OPENGL_RENDERER;
|
|
16
|
+
(0, validate_opengl_renderer_1.validateOpenGlRenderer)(renderer);
|
|
17
17
|
if (renderer === 'swangle') {
|
|
18
18
|
return [`--use-gl=angle`, `--use-angle=swiftshader`];
|
|
19
19
|
}
|
|
@@ -34,7 +34,7 @@ const killAllBrowsers = async () => {
|
|
|
34
34
|
exports.killAllBrowsers = killAllBrowsers;
|
|
35
35
|
const openBrowser = async (browser, options) => {
|
|
36
36
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
37
|
-
if (browser === 'firefox'
|
|
37
|
+
if (browser === 'firefox') {
|
|
38
38
|
throw new TypeError('Firefox supported is not yet turned on. Stay tuned for the future.');
|
|
39
39
|
}
|
|
40
40
|
await (0, get_local_browser_executable_1.ensureLocalBrowser)(browser, (_a = options === null || options === void 0 ? void 0 : options.browserExecutable) !== null && _a !== void 0 ? _a : null);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const DEFAULT_OVERWRITE = true;
|
package/dist/perf.d.ts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
declare type PerfId = 'activate-target' | 'capture' | 'save' | 'extract-frame' | 'piping';
|
|
2
|
+
export declare const startPerfMeasure: (marker: PerfId) => number;
|
|
3
|
+
export declare const stopPerfMeasure: (id: number) => void;
|
|
4
|
+
export declare const logPerf: () => void;
|
|
5
|
+
export {};
|
package/dist/perf.js
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.logPerf = exports.stopPerfMeasure = exports.startPerfMeasure = void 0;
|
|
4
|
+
const perf = {
|
|
5
|
+
'activate-target': [],
|
|
6
|
+
capture: [],
|
|
7
|
+
save: [],
|
|
8
|
+
'extract-frame': [],
|
|
9
|
+
piping: [],
|
|
10
|
+
};
|
|
11
|
+
const map = {};
|
|
12
|
+
const startPerfMeasure = (marker) => {
|
|
13
|
+
const id = Math.random();
|
|
14
|
+
map[id] = {
|
|
15
|
+
id,
|
|
16
|
+
marker,
|
|
17
|
+
start: Date.now(),
|
|
18
|
+
};
|
|
19
|
+
return id;
|
|
20
|
+
};
|
|
21
|
+
exports.startPerfMeasure = startPerfMeasure;
|
|
22
|
+
const stopPerfMeasure = (id) => {
|
|
23
|
+
const now = Date.now();
|
|
24
|
+
const diff = now - map[id].start;
|
|
25
|
+
perf[map[id].marker].push(diff);
|
|
26
|
+
delete map[id];
|
|
27
|
+
};
|
|
28
|
+
exports.stopPerfMeasure = stopPerfMeasure;
|
|
29
|
+
const logPerf = () => {
|
|
30
|
+
console.log('Render performance:');
|
|
31
|
+
Object.keys(perf).forEach((p) => {
|
|
32
|
+
console.log(` ${p} => ${perf[p].reduce((a, b) => a + b, 0) / perf[p].length} (n = ${perf[p].length})`);
|
|
33
|
+
});
|
|
34
|
+
};
|
|
35
|
+
exports.logPerf = logPerf;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Codec } from './codec';
|
|
2
|
+
export declare const validPixelFormats: readonly ["yuv420p", "yuva420p", "yuv422p", "yuv444p", "yuv420p10le", "yuv422p10le", "yuv444p10le", "yuva444p10le"];
|
|
3
|
+
export declare type PixelFormat = typeof validPixelFormats[number];
|
|
4
|
+
export declare const DEFAULT_PIXEL_FORMAT: PixelFormat;
|
|
5
|
+
export declare const validateSelectedPixelFormatAndCodecCombination: (pixelFormat: PixelFormat, codec: Codec) => void;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validateSelectedPixelFormatAndCodecCombination = exports.DEFAULT_PIXEL_FORMAT = exports.validPixelFormats = void 0;
|
|
4
|
+
exports.validPixelFormats = [
|
|
5
|
+
'yuv420p',
|
|
6
|
+
'yuva420p',
|
|
7
|
+
'yuv422p',
|
|
8
|
+
'yuv444p',
|
|
9
|
+
'yuv420p10le',
|
|
10
|
+
'yuv422p10le',
|
|
11
|
+
'yuv444p10le',
|
|
12
|
+
'yuva444p10le',
|
|
13
|
+
];
|
|
14
|
+
exports.DEFAULT_PIXEL_FORMAT = 'yuv420p';
|
|
15
|
+
const validateSelectedPixelFormatAndCodecCombination = (pixelFormat, codec) => {
|
|
16
|
+
if (!exports.validPixelFormats.includes(pixelFormat)) {
|
|
17
|
+
throw new TypeError(`Value ${pixelFormat} is not valid as a pixel format.`);
|
|
18
|
+
}
|
|
19
|
+
if (pixelFormat !== 'yuva420p') {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
if (codec !== 'vp8' && codec !== 'vp9') {
|
|
23
|
+
throw new TypeError("Pixel format was set to 'yuva420p' but codec is not 'vp8' or 'vp9'. To render videos with alpha channel, you must choose a codec that supports it.");
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
exports.validateSelectedPixelFormatAndCodecCombination = validateSelectedPixelFormatAndCodecCombination;
|
package/dist/prepare-server.d.ts
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
import type { FfmpegExecutable } from 'remotion';
|
|
2
1
|
import type { RenderMediaOnDownload } from './assets/download-and-map-assets-to-file';
|
|
3
|
-
|
|
2
|
+
import type { DownloadMap } from './assets/download-map';
|
|
3
|
+
import type { FfmpegExecutable } from './ffmpeg-executable';
|
|
4
|
+
export declare const prepareServer: ({ ffmpegExecutable, ffprobeExecutable, onDownload, onError, webpackConfigOrServeUrl, port, downloadMap, }: {
|
|
4
5
|
webpackConfigOrServeUrl: string;
|
|
5
|
-
downloadDir: string;
|
|
6
6
|
onDownload: RenderMediaOnDownload;
|
|
7
7
|
onError: (err: Error) => void;
|
|
8
8
|
ffmpegExecutable: FfmpegExecutable;
|
|
9
9
|
ffprobeExecutable: FfmpegExecutable;
|
|
10
10
|
port: number | null;
|
|
11
|
+
downloadMap: DownloadMap;
|
|
11
12
|
}) => Promise<{
|
|
12
13
|
serveUrl: string;
|
|
13
14
|
closeServer: () => Promise<unknown>;
|
package/dist/prepare-server.js
CHANGED
|
@@ -9,15 +9,15 @@ const path_1 = __importDefault(require("path"));
|
|
|
9
9
|
const is_serve_url_1 = require("./is-serve-url");
|
|
10
10
|
const serve_static_1 = require("./serve-static");
|
|
11
11
|
const wait_for_symbolication_error_to_be_done_1 = require("./wait-for-symbolication-error-to-be-done");
|
|
12
|
-
const prepareServer = async ({
|
|
12
|
+
const prepareServer = async ({ ffmpegExecutable, ffprobeExecutable, onDownload, onError, webpackConfigOrServeUrl, port, downloadMap, }) => {
|
|
13
13
|
if ((0, is_serve_url_1.isServeUrl)(webpackConfigOrServeUrl)) {
|
|
14
14
|
const { port: offthreadPort, close: closeProxy } = await (0, serve_static_1.serveStatic)(null, {
|
|
15
|
-
downloadDir,
|
|
16
15
|
onDownload,
|
|
17
16
|
onError,
|
|
18
17
|
ffmpegExecutable,
|
|
19
18
|
ffprobeExecutable,
|
|
20
19
|
port,
|
|
20
|
+
downloadMap,
|
|
21
21
|
});
|
|
22
22
|
return Promise.resolve({
|
|
23
23
|
serveUrl: webpackConfigOrServeUrl,
|
|
@@ -34,12 +34,12 @@ const prepareServer = async ({ downloadDir, ffmpegExecutable, ffprobeExecutable,
|
|
|
34
34
|
throw new Error(`Tried to serve the Webpack bundle on a HTTP server, but the file ${indexFile} does not exist. Is this a valid path to a Webpack bundle?`);
|
|
35
35
|
}
|
|
36
36
|
const { port: serverPort, close } = await (0, serve_static_1.serveStatic)(webpackConfigOrServeUrl, {
|
|
37
|
-
downloadDir,
|
|
38
37
|
onDownload,
|
|
39
38
|
onError,
|
|
40
39
|
ffmpegExecutable,
|
|
41
40
|
ffprobeExecutable,
|
|
42
41
|
port,
|
|
42
|
+
downloadMap,
|
|
43
43
|
});
|
|
44
44
|
return Promise.resolve({
|
|
45
45
|
closeServer: () => {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { DownloadMap } from './assets/download-map';
|
|
2
2
|
import type { MediaAsset } from './assets/types';
|
|
3
|
+
import type { FfmpegExecutable } from './ffmpeg-executable';
|
|
3
4
|
declare type Options = {
|
|
4
5
|
ffmpegExecutable: FfmpegExecutable;
|
|
5
6
|
ffprobeExecutable: FfmpegExecutable;
|
|
@@ -7,6 +8,7 @@ declare type Options = {
|
|
|
7
8
|
asset: MediaAsset;
|
|
8
9
|
expectedFrames: number;
|
|
9
10
|
fps: number;
|
|
11
|
+
downloadMap: DownloadMap;
|
|
10
12
|
};
|
|
11
13
|
export declare const preprocessAudioTrack: (options: Options) => Promise<string | null>;
|
|
12
14
|
export {};
|
|
@@ -10,8 +10,8 @@ const calculate_ffmpeg_filters_1 = require("./calculate-ffmpeg-filters");
|
|
|
10
10
|
const ffmpeg_filter_file_1 = require("./ffmpeg-filter-file");
|
|
11
11
|
const p_limit_1 = require("./p-limit");
|
|
12
12
|
const resolve_asset_src_1 = require("./resolve-asset-src");
|
|
13
|
-
const preprocessAudioTrackUnlimited = async ({ ffmpegExecutable, ffprobeExecutable, outName, asset, expectedFrames, fps, }) => {
|
|
14
|
-
const { channels, duration } = await (0, get_audio_channels_1.getAudioChannelsAndDuration)((0, resolve_asset_src_1.resolveAssetSrc)(asset.src), ffprobeExecutable);
|
|
13
|
+
const preprocessAudioTrackUnlimited = async ({ ffmpegExecutable, ffprobeExecutable, outName, asset, expectedFrames, fps, downloadMap, }) => {
|
|
14
|
+
const { channels, duration } = await (0, get_audio_channels_1.getAudioChannelsAndDuration)(downloadMap, (0, resolve_asset_src_1.resolveAssetSrc)(asset.src), ffprobeExecutable);
|
|
15
15
|
const filter = (0, calculate_ffmpeg_filters_1.calculateFfmpegFilter)({
|
|
16
16
|
asset,
|
|
17
17
|
durationInFrames: expectedFrames,
|
|
@@ -22,7 +22,7 @@ const preprocessAudioTrackUnlimited = async ({ ffmpegExecutable, ffprobeExecutab
|
|
|
22
22
|
if (filter === null) {
|
|
23
23
|
return null;
|
|
24
24
|
}
|
|
25
|
-
const { cleanup, file } = await (0, ffmpeg_filter_file_1.makeFfmpegFilterFile)(filter);
|
|
25
|
+
const { cleanup, file } = await (0, ffmpeg_filter_file_1.makeFfmpegFilterFile)(filter, downloadMap);
|
|
26
26
|
const args = [
|
|
27
27
|
['-i', (0, resolve_asset_src_1.resolveAssetSrc)(asset.src)],
|
|
28
28
|
['-ac', '2'],
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import execa from 'execa';
|
|
2
|
-
import type { Codec
|
|
2
|
+
import type { Codec } from './codec';
|
|
3
|
+
import type { FfmpegExecutable } from './ffmpeg-executable';
|
|
4
|
+
import type { ImageFormat } from './image-format';
|
|
3
5
|
import type { CancelSignal } from './make-cancel-signal';
|
|
6
|
+
import type { PixelFormat } from './pixel-format';
|
|
7
|
+
import type { ProResProfile } from './prores-profile';
|
|
4
8
|
declare type PreSticherOptions = {
|
|
5
9
|
fps: number;
|
|
6
10
|
width: number;
|
package/dist/prespawn-ffmpeg.js
CHANGED
|
@@ -6,25 +6,28 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.prespawnFfmpeg = void 0;
|
|
7
7
|
const execa_1 = __importDefault(require("execa"));
|
|
8
8
|
const remotion_1 = require("remotion");
|
|
9
|
+
const codec_1 = require("./codec");
|
|
10
|
+
const crf_1 = require("./crf");
|
|
9
11
|
const get_codec_name_1 = require("./get-codec-name");
|
|
10
12
|
const get_prores_profile_name_1 = require("./get-prores-profile-name");
|
|
11
13
|
const parse_ffmpeg_progress_1 = require("./parse-ffmpeg-progress");
|
|
14
|
+
const pixel_format_1 = require("./pixel-format");
|
|
12
15
|
const validate_even_dimensions_with_codec_1 = require("./validate-even-dimensions-with-codec");
|
|
13
16
|
const validate_ffmpeg_1 = require("./validate-ffmpeg");
|
|
14
17
|
const prespawnFfmpeg = async (options) => {
|
|
15
18
|
var _a, _b, _c, _d, _e, _f, _g;
|
|
16
19
|
remotion_1.Internals.validateDimension(options.height, 'height', 'passed to `stitchFramesToVideo()`');
|
|
17
20
|
remotion_1.Internals.validateDimension(options.width, 'width', 'passed to `stitchFramesToVideo()`');
|
|
18
|
-
const codec = (_a = options.codec) !== null && _a !== void 0 ? _a :
|
|
19
|
-
remotion_1.Internals.validateFps(options.fps, 'in `stitchFramesToVideo()`', codec);
|
|
21
|
+
const codec = (_a = options.codec) !== null && _a !== void 0 ? _a : codec_1.DEFAULT_CODEC;
|
|
22
|
+
remotion_1.Internals.validateFps(options.fps, 'in `stitchFramesToVideo()`', codec === 'gif');
|
|
20
23
|
(0, validate_even_dimensions_with_codec_1.validateEvenDimensionsWithCodec)({
|
|
21
24
|
width: options.width,
|
|
22
25
|
height: options.height,
|
|
23
26
|
codec,
|
|
24
27
|
scale: 1,
|
|
25
28
|
});
|
|
26
|
-
const crf = (_b = options.crf) !== null && _b !== void 0 ? _b :
|
|
27
|
-
const pixelFormat = (_c = options.pixelFormat) !== null && _c !== void 0 ? _c :
|
|
29
|
+
const crf = (_b = options.crf) !== null && _b !== void 0 ? _b : (0, crf_1.getDefaultCrfForCodec)(codec);
|
|
30
|
+
const pixelFormat = (_c = options.pixelFormat) !== null && _c !== void 0 ? _c : pixel_format_1.DEFAULT_PIXEL_FORMAT;
|
|
28
31
|
await (0, validate_ffmpeg_1.validateFfmpeg)((_d = options.ffmpegExecutable) !== null && _d !== void 0 ? _d : null);
|
|
29
32
|
const encoderName = (0, get_codec_name_1.getCodecName)(codec);
|
|
30
33
|
const proResProfileName = (0, get_prores_profile_name_1.getProResProfileName)(codec, options.proResProfile);
|
|
@@ -42,8 +45,8 @@ const prespawnFfmpeg = async (options) => {
|
|
|
42
45
|
console.log('[verbose] codec', codec);
|
|
43
46
|
console.log('[verbose] proResProfileName', proResProfileName);
|
|
44
47
|
}
|
|
45
|
-
|
|
46
|
-
|
|
48
|
+
(0, crf_1.validateSelectedCrfAndCodecCombination)(crf, codec);
|
|
49
|
+
(0, pixel_format_1.validateSelectedPixelFormatAndCodecCombination)(pixelFormat, codec);
|
|
47
50
|
const ffmpegArgs = [
|
|
48
51
|
['-r', options.fps.toFixed(2)],
|
|
49
52
|
...[
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Codec } from './codec';
|
|
2
|
+
declare const proResProfileOptions: readonly ["4444-xq", "4444", "hq", "standard", "light", "proxy"];
|
|
3
|
+
export declare type ProResProfile = typeof proResProfileOptions[number];
|
|
4
|
+
export declare const validateSelectedCodecAndProResCombination: (actualCodec: Codec, actualProResProfile: ProResProfile | undefined) => void;
|
|
5
|
+
export {};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validateSelectedCodecAndProResCombination = void 0;
|
|
4
|
+
const proResProfileOptions = [
|
|
5
|
+
'4444-xq',
|
|
6
|
+
'4444',
|
|
7
|
+
'hq',
|
|
8
|
+
'standard',
|
|
9
|
+
'light',
|
|
10
|
+
'proxy',
|
|
11
|
+
];
|
|
12
|
+
const validateSelectedCodecAndProResCombination = (actualCodec, actualProResProfile) => {
|
|
13
|
+
if (typeof actualProResProfile !== 'undefined' && actualCodec !== 'prores') {
|
|
14
|
+
throw new TypeError('You have set a ProRes profile but the codec is not "prores". Set the codec to "prores" or remove the ProRes profile.');
|
|
15
|
+
}
|
|
16
|
+
if (actualProResProfile !== undefined &&
|
|
17
|
+
!proResProfileOptions.includes(actualProResProfile)) {
|
|
18
|
+
throw new TypeError(`The ProRes profile "${actualProResProfile}" is not valid. Valid options are ${proResProfileOptions
|
|
19
|
+
.map((p) => `"${p}"`)
|
|
20
|
+
.join(', ')}`);
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
exports.validateSelectedCodecAndProResCombination = validateSelectedCodecAndProResCombination;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
import type { ImageFormat } from 'remotion';
|
|
3
2
|
import type { Page } from './browser/BrowserPage';
|
|
3
|
+
import type { ImageFormat } from './image-format';
|
|
4
4
|
export declare const provideScreenshot: ({ page, imageFormat, options, quality, }: {
|
|
5
5
|
page: Page;
|
|
6
6
|
imageFormat: ImageFormat;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const validateQuality: (q: number | undefined) => void;
|
package/dist/quality.js
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validateQuality = void 0;
|
|
4
|
+
const validateQuality = (q) => {
|
|
5
|
+
if (typeof q !== 'undefined' && typeof q !== 'number') {
|
|
6
|
+
throw new Error(`Quality option must be a number or undefined. Got ${typeof q} (${JSON.stringify(q)})`);
|
|
7
|
+
}
|
|
8
|
+
if (typeof q === 'undefined') {
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
if (!Number.isFinite(q)) {
|
|
12
|
+
throw new RangeError(`Quality must be a finite number, but is ${q}`);
|
|
13
|
+
}
|
|
14
|
+
if (Number.isNaN(q)) {
|
|
15
|
+
throw new RangeError(`Quality is NaN, but must be a real number`);
|
|
16
|
+
}
|
|
17
|
+
if (q > 100 || q < 0) {
|
|
18
|
+
throw new RangeError('Quality option must be between 0 and 100.');
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
exports.validateQuality = validateQuality;
|
package/dist/render-frames.d.ts
CHANGED
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
import type {
|
|
2
|
+
import type { SmallTCompMetadata } from 'remotion';
|
|
3
3
|
import type { RenderMediaOnDownload } from './assets/download-and-map-assets-to-file';
|
|
4
|
+
import type { DownloadMap } from './assets/download-map';
|
|
5
|
+
import type { BrowserExecutable } from './browser-executable';
|
|
4
6
|
import type { BrowserLog } from './browser-log';
|
|
5
7
|
import type { Browser } from './browser/Browser';
|
|
8
|
+
import type { FfmpegExecutable } from './ffmpeg-executable';
|
|
9
|
+
import type { FrameRange } from './frame-range';
|
|
10
|
+
import type { ImageFormat } from './image-format';
|
|
6
11
|
import type { ServeUrlOrWebpackBundle } from './legacy-webpack-config';
|
|
7
12
|
import type { CancelSignal } from './make-cancel-signal';
|
|
8
13
|
import type { ChromiumOptions } from './open-browser';
|
|
@@ -39,6 +44,10 @@ declare type RenderFramesOptions = {
|
|
|
39
44
|
ffprobeExecutable?: FfmpegExecutable;
|
|
40
45
|
port?: number | null;
|
|
41
46
|
cancelSignal?: CancelSignal;
|
|
47
|
+
/**
|
|
48
|
+
* @deprecated Only for Remotion internal usage
|
|
49
|
+
*/
|
|
50
|
+
downloadMap?: DownloadMap;
|
|
42
51
|
} & ConfigOrComposition & ServeUrlOrWebpackBundle;
|
|
43
52
|
export declare const renderFrames: (options: RenderFramesOptions) => Promise<RenderFramesOutput>;
|
|
44
53
|
export {};
|
package/dist/render-frames.js
CHANGED
|
@@ -8,6 +8,9 @@ const fs_1 = __importDefault(require("fs"));
|
|
|
8
8
|
const path_1 = __importDefault(require("path"));
|
|
9
9
|
const remotion_1 = require("remotion");
|
|
10
10
|
const download_and_map_assets_to_file_1 = require("./assets/download-and-map-assets-to-file");
|
|
11
|
+
const download_map_1 = require("./assets/download-map");
|
|
12
|
+
const browser_1 = require("./browser");
|
|
13
|
+
const compress_assets_1 = require("./compress-assets");
|
|
11
14
|
const cycle_browser_tabs_1 = require("./cycle-browser-tabs");
|
|
12
15
|
const handle_javascript_exception_1 = require("./error-handling/handle-javascript-exception");
|
|
13
16
|
const get_concurrency_1 = require("./get-concurrency");
|
|
@@ -16,14 +19,16 @@ const get_frame_padded_index_1 = require("./get-frame-padded-index");
|
|
|
16
19
|
const get_frame_to_render_1 = require("./get-frame-to-render");
|
|
17
20
|
const image_format_1 = require("./image-format");
|
|
18
21
|
const legacy_webpack_config_1 = require("./legacy-webpack-config");
|
|
19
|
-
const make_assets_download_dir_1 = require("./make-assets-download-dir");
|
|
20
22
|
const open_browser_1 = require("./open-browser");
|
|
23
|
+
const perf_1 = require("./perf");
|
|
21
24
|
const pool_1 = require("./pool");
|
|
22
25
|
const prepare_server_1 = require("./prepare-server");
|
|
23
26
|
const provide_screenshot_1 = require("./provide-screenshot");
|
|
24
27
|
const puppeteer_evaluate_1 = require("./puppeteer-evaluate");
|
|
28
|
+
const quality_1 = require("./quality");
|
|
25
29
|
const seek_to_frame_1 = require("./seek-to-frame");
|
|
26
30
|
const set_props_and_env_1 = require("./set-props-and-env");
|
|
31
|
+
const truthy_1 = require("./truthy");
|
|
27
32
|
const validate_scale_1 = require("./validate-scale");
|
|
28
33
|
const getComposition = (others) => {
|
|
29
34
|
if ('composition' in others) {
|
|
@@ -39,7 +44,7 @@ const getPool = async (pages) => {
|
|
|
39
44
|
const pool = new pool_1.Pool(puppeteerPages);
|
|
40
45
|
return pool;
|
|
41
46
|
};
|
|
42
|
-
const innerRenderFrames = ({ onFrameUpdate, outputDir, onStart, inputProps, quality, imageFormat = image_format_1.DEFAULT_IMAGE_FORMAT, frameRange, puppeteerInstance, onError, envVariables, onBrowserLog, onFrameBuffer, onDownload, pagesArray, serveUrl, composition, timeoutInMilliseconds, scale, actualParallelism,
|
|
47
|
+
const innerRenderFrames = ({ onFrameUpdate, outputDir, onStart, inputProps, quality, imageFormat = image_format_1.DEFAULT_IMAGE_FORMAT, frameRange, puppeteerInstance, onError, envVariables, onBrowserLog, onFrameBuffer, onDownload, pagesArray, serveUrl, composition, timeoutInMilliseconds, scale, actualParallelism, everyNthFrame = 1, proxyPort, cancelSignal, downloadMap, }) => {
|
|
43
48
|
if (!puppeteerInstance) {
|
|
44
49
|
throw new Error('no puppeteer instance passed to innerRenderFrames - internal error');
|
|
45
50
|
}
|
|
@@ -133,7 +138,7 @@ const innerRenderFrames = ({ onFrameUpdate, outputDir, onStart, inputProps, qual
|
|
|
133
138
|
await (0, seek_to_frame_1.seekToFrame)({ frame, page: freePage });
|
|
134
139
|
if (imageFormat !== 'none') {
|
|
135
140
|
if (onFrameBuffer) {
|
|
136
|
-
const id =
|
|
141
|
+
const id = (0, perf_1.startPerfMeasure)('save');
|
|
137
142
|
const buffer = await (0, provide_screenshot_1.provideScreenshot)({
|
|
138
143
|
page: freePage,
|
|
139
144
|
imageFormat,
|
|
@@ -143,7 +148,7 @@ const innerRenderFrames = ({ onFrameUpdate, outputDir, onStart, inputProps, qual
|
|
|
143
148
|
output: null,
|
|
144
149
|
},
|
|
145
150
|
});
|
|
146
|
-
|
|
151
|
+
(0, perf_1.stopPerfMeasure)(id);
|
|
147
152
|
onFrameBuffer(buffer, frame);
|
|
148
153
|
}
|
|
149
154
|
else {
|
|
@@ -177,13 +182,13 @@ const innerRenderFrames = ({ onFrameUpdate, outputDir, onStart, inputProps, qual
|
|
|
177
182
|
frame,
|
|
178
183
|
page: freePage,
|
|
179
184
|
});
|
|
180
|
-
const compressedAssets = collectedAssets.map((asset) =>
|
|
185
|
+
const compressedAssets = collectedAssets.map((asset) => (0, compress_assets_1.compressAsset)(assets.filter(truthy_1.truthy).flat(1), asset));
|
|
181
186
|
assets[index] = compressedAssets;
|
|
182
187
|
compressedAssets.forEach((asset) => {
|
|
183
188
|
(0, download_and_map_assets_to_file_1.downloadAndMapAssetsToFileUrl)({
|
|
184
189
|
asset,
|
|
185
|
-
downloadDir,
|
|
186
190
|
onDownload,
|
|
191
|
+
downloadMap,
|
|
187
192
|
}).catch((err) => {
|
|
188
193
|
onError(new Error(`Error while downloading asset: ${err.stack}`));
|
|
189
194
|
});
|
|
@@ -199,9 +204,9 @@ const innerRenderFrames = ({ onFrameUpdate, outputDir, onStart, inputProps, qual
|
|
|
199
204
|
const returnValue = {
|
|
200
205
|
assetsInfo: {
|
|
201
206
|
assets,
|
|
202
|
-
downloadDir,
|
|
203
207
|
imageSequenceName: `element-%0${filePadLength}d.${imageFormat}`,
|
|
204
208
|
firstFrameIndex: framesToRender[0],
|
|
209
|
+
downloadMap,
|
|
205
210
|
},
|
|
206
211
|
frameCount: framesToRender.length,
|
|
207
212
|
};
|
|
@@ -214,30 +219,30 @@ const innerRenderFrames = ({ onFrameUpdate, outputDir, onStart, inputProps, qual
|
|
|
214
219
|
.then(() => happyPath);
|
|
215
220
|
};
|
|
216
221
|
const renderFrames = (options) => {
|
|
217
|
-
var _a, _b, _c, _d;
|
|
222
|
+
var _a, _b, _c, _d, _e;
|
|
218
223
|
const composition = getComposition(options);
|
|
219
224
|
if (!composition) {
|
|
220
225
|
throw new Error('No `composition` option has been specified for renderFrames()');
|
|
221
226
|
}
|
|
222
227
|
remotion_1.Internals.validateDimension(composition.height, 'height', 'in the `config` object passed to `renderFrames()`');
|
|
223
228
|
remotion_1.Internals.validateDimension(composition.width, 'width', 'in the `config` object passed to `renderFrames()`');
|
|
224
|
-
remotion_1.Internals.validateFps(composition.fps, 'in the `config` object of `renderFrames()`',
|
|
229
|
+
remotion_1.Internals.validateFps(composition.fps, 'in the `config` object of `renderFrames()`', false);
|
|
225
230
|
remotion_1.Internals.validateDurationInFrames(composition.durationInFrames, 'in the `config` object passed to `renderFrames()`');
|
|
226
231
|
if (options.quality !== undefined && options.imageFormat !== 'jpeg') {
|
|
227
232
|
throw new Error("You can only pass the `quality` option if `imageFormat` is 'jpeg'.");
|
|
228
233
|
}
|
|
229
234
|
const selectedServeUrl = (0, legacy_webpack_config_1.getServeUrlWithFallback)(options);
|
|
230
|
-
|
|
235
|
+
(0, quality_1.validateQuality)(options.quality);
|
|
231
236
|
(0, validate_scale_1.validateScale)(options.scale);
|
|
232
|
-
const browserInstance = (_a = options.puppeteerInstance) !== null && _a !== void 0 ? _a : (0, open_browser_1.openBrowser)(
|
|
237
|
+
const browserInstance = (_a = options.puppeteerInstance) !== null && _a !== void 0 ? _a : (0, open_browser_1.openBrowser)(browser_1.DEFAULT_BROWSER, {
|
|
233
238
|
shouldDumpIo: options.dumpBrowserLogs,
|
|
234
239
|
browserExecutable: options.browserExecutable,
|
|
235
240
|
chromiumOptions: options.chromiumOptions,
|
|
236
241
|
forceDeviceScaleFactor: (_b = options.scale) !== null && _b !== void 0 ? _b : 1,
|
|
237
242
|
});
|
|
238
|
-
const
|
|
239
|
-
const onDownload = (
|
|
240
|
-
const actualParallelism = (0, get_concurrency_1.getActualConcurrency)((
|
|
243
|
+
const downloadMap = (_c = options.downloadMap) !== null && _c !== void 0 ? _c : (0, download_map_1.makeDownloadMap)();
|
|
244
|
+
const onDownload = (_d = options.onDownload) !== null && _d !== void 0 ? _d : (() => () => undefined);
|
|
245
|
+
const actualParallelism = (0, get_concurrency_1.getActualConcurrency)((_e = options.parallelism) !== null && _e !== void 0 ? _e : null);
|
|
241
246
|
const openedPages = [];
|
|
242
247
|
return new Promise((resolve, reject) => {
|
|
243
248
|
var _a, _b, _c;
|
|
@@ -255,12 +260,12 @@ const renderFrames = (options) => {
|
|
|
255
260
|
Promise.all([
|
|
256
261
|
(0, prepare_server_1.prepareServer)({
|
|
257
262
|
webpackConfigOrServeUrl: selectedServeUrl,
|
|
258
|
-
downloadDir,
|
|
259
263
|
onDownload,
|
|
260
264
|
onError,
|
|
261
265
|
ffmpegExecutable: (_a = options.ffmpegExecutable) !== null && _a !== void 0 ? _a : null,
|
|
262
266
|
ffprobeExecutable: (_b = options.ffprobeExecutable) !== null && _b !== void 0 ? _b : null,
|
|
263
267
|
port: (_c = options.port) !== null && _c !== void 0 ? _c : null,
|
|
268
|
+
downloadMap,
|
|
264
269
|
}),
|
|
265
270
|
browserInstance,
|
|
266
271
|
]).then(([{ serveUrl, closeServer, offthreadPort }, puppeteerInstance]) => {
|
|
@@ -276,8 +281,8 @@ const renderFrames = (options) => {
|
|
|
276
281
|
composition,
|
|
277
282
|
actualParallelism,
|
|
278
283
|
onDownload,
|
|
279
|
-
downloadDir,
|
|
280
284
|
proxyPort: offthreadPort,
|
|
285
|
+
downloadMap,
|
|
281
286
|
});
|
|
282
287
|
}),
|
|
283
288
|
])
|
|
@@ -306,6 +311,7 @@ const renderFrames = (options) => {
|
|
|
306
311
|
cleanup.forEach((c) => {
|
|
307
312
|
c();
|
|
308
313
|
});
|
|
314
|
+
// Don't clear download dir because it might be used by stitchFramesToVideo
|
|
309
315
|
});
|
|
310
316
|
});
|
|
311
317
|
};
|
package/dist/render-media.d.ts
CHANGED
|
@@ -1,11 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
import type { BrowserExecutable, Codec, FfmpegExecutable, FrameRange, PixelFormat, ProResProfile, SmallTCompMetadata } from 'remotion';
|
|
1
|
+
import type { SmallTCompMetadata } from 'remotion';
|
|
3
2
|
import type { RenderMediaOnDownload } from './assets/download-and-map-assets-to-file';
|
|
3
|
+
import type { DownloadMap } from './assets/download-map';
|
|
4
|
+
import type { BrowserExecutable } from './browser-executable';
|
|
4
5
|
import type { BrowserLog } from './browser-log';
|
|
5
6
|
import type { Browser as PuppeteerBrowser } from './browser/Browser';
|
|
7
|
+
import type { Codec } from './codec';
|
|
8
|
+
import type { FfmpegExecutable } from './ffmpeg-executable';
|
|
9
|
+
import type { FrameRange } from './frame-range';
|
|
6
10
|
import type { ServeUrlOrWebpackBundle } from './legacy-webpack-config';
|
|
7
11
|
import type { CancelSignal } from './make-cancel-signal';
|
|
8
12
|
import type { ChromiumOptions } from './open-browser';
|
|
13
|
+
import type { PixelFormat } from './pixel-format';
|
|
14
|
+
import type { ProResProfile } from './prores-profile';
|
|
9
15
|
import type { OnStartData } from './types';
|
|
10
16
|
export declare type StitchingState = 'encoding' | 'muxing';
|
|
11
17
|
export declare type RenderMediaOnProgress = (progress: {
|
|
@@ -45,6 +51,11 @@ export declare type RenderMediaOptions = {
|
|
|
45
51
|
port?: number | null;
|
|
46
52
|
cancelSignal?: CancelSignal;
|
|
47
53
|
browserExecutable?: BrowserExecutable;
|
|
54
|
+
verbose?: boolean;
|
|
55
|
+
/**
|
|
56
|
+
* @deprecated Only for Remotion internal usage
|
|
57
|
+
*/
|
|
58
|
+
downloadMap?: DownloadMap;
|
|
48
59
|
} & ServeUrlOrWebpackBundle;
|
|
49
60
|
/**
|
|
50
61
|
*
|