@remotion/renderer 4.0.0-webhook.27 → 4.1.0-alpha1
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/LICENSE.md +8 -8
- package/README.md +9 -0
- package/client.d.ts +1 -0
- package/client.js +1 -0
- package/dist/assets/calculate-asset-positions.d.ts +0 -0
- package/dist/assets/calculate-asset-positions.js +1 -0
- package/dist/assets/calculate-atempo.d.ts +0 -0
- package/dist/assets/calculate-atempo.js +0 -0
- package/dist/assets/convert-assets-to-file-urls.d.ts +0 -0
- package/dist/assets/convert-assets-to-file-urls.js +0 -0
- package/dist/assets/download-and-map-assets-to-file.d.ts +6 -4
- package/dist/assets/download-and-map-assets-to-file.js +49 -19
- package/dist/assets/download-file.d.ts +8 -5
- package/dist/assets/download-file.js +71 -8
- package/dist/assets/download-map.d.ts +8 -29
- package/dist/assets/download-map.js +15 -16
- package/dist/assets/ffmpeg-volume-expression.d.ts +4 -3
- package/dist/assets/ffmpeg-volume-expression.js +5 -3
- package/dist/assets/flatten-volume-array.d.ts +0 -0
- package/dist/assets/flatten-volume-array.js +0 -0
- package/dist/assets/get-audio-channels.d.ts +2 -2
- package/dist/assets/get-audio-channels.js +14 -12
- package/dist/assets/read-file.d.ts +1 -1
- package/dist/assets/read-file.js +5 -7
- package/dist/assets/round-volume-to-avoid-stack-overflow.d.ts +0 -0
- package/dist/assets/round-volume-to-avoid-stack-overflow.js +0 -0
- package/dist/assets/sanitize-filename.d.ts +0 -0
- package/dist/assets/sanitize-filename.js +0 -0
- package/dist/assets/sanitize-filepath.d.ts +0 -0
- package/dist/assets/sanitize-filepath.js +2 -2
- package/dist/assets/truncate-utf8-bytes.d.ts +0 -0
- package/dist/assets/truncate-utf8-bytes.js +0 -0
- package/dist/assets/types.d.ts +5 -4
- package/dist/assets/types.js +0 -0
- package/dist/audio-codec.d.ts +28 -0
- package/dist/audio-codec.js +83 -0
- package/dist/browser/Browser.d.ts +16 -14
- package/dist/browser/Browser.js +69 -72
- package/dist/browser/BrowserConnector.d.ts +0 -0
- package/dist/browser/BrowserConnector.js +0 -0
- package/dist/browser/BrowserFetcher.d.ts +16 -64
- package/dist/browser/BrowserFetcher.js +147 -235
- package/dist/browser/BrowserPage.d.ts +21 -6
- package/dist/browser/BrowserPage.js +54 -22
- package/dist/browser/BrowserRunner.d.ts +1 -1
- package/dist/browser/BrowserRunner.js +32 -22
- package/dist/browser/Connection.d.ts +0 -0
- package/dist/browser/Connection.js +1 -1
- package/dist/browser/ConsoleMessage.d.ts +1 -1
- package/dist/browser/ConsoleMessage.js +0 -0
- package/dist/browser/DOMWorld.d.ts +5 -4
- package/dist/browser/DOMWorld.js +16 -9
- package/dist/browser/Errors.d.ts +0 -0
- package/dist/browser/Errors.js +0 -0
- package/dist/browser/EvalTypes.d.ts +7 -7
- package/dist/browser/EvalTypes.js +0 -0
- package/dist/browser/EventEmitter.d.ts +0 -0
- package/dist/browser/EventEmitter.js +0 -0
- package/dist/browser/ExecutionContext.d.ts +0 -0
- package/dist/browser/ExecutionContext.js +0 -0
- package/dist/browser/FrameManager.d.ts +0 -2
- package/dist/browser/FrameManager.js +13 -17
- package/dist/browser/HTTPRequest.d.ts +0 -0
- package/dist/browser/HTTPRequest.js +0 -0
- package/dist/browser/HTTPResponse.d.ts +0 -0
- package/dist/browser/HTTPResponse.js +0 -0
- package/dist/browser/JSHandle.d.ts +0 -0
- package/dist/browser/JSHandle.js +14 -14
- package/dist/browser/LaunchOptions.d.ts +2 -2
- package/dist/browser/LaunchOptions.js +0 -0
- package/dist/browser/Launcher.d.ts +9 -3
- package/dist/browser/Launcher.js +16 -29
- package/dist/browser/LifecycleWatcher.d.ts +1 -1
- package/dist/browser/LifecycleWatcher.js +0 -0
- package/dist/browser/NetworkEventManager.d.ts +4 -4
- package/dist/browser/NetworkEventManager.js +0 -0
- package/dist/browser/NetworkManager.d.ts +0 -0
- package/dist/browser/NetworkManager.js +0 -0
- package/dist/browser/NodeWebSocketTransport.d.ts +0 -0
- package/dist/browser/NodeWebSocketTransport.js +21 -21
- package/dist/browser/Product.d.ts +1 -1
- package/dist/browser/Product.js +0 -0
- package/dist/browser/PuppeteerNode.d.ts +2 -5
- package/dist/browser/PuppeteerNode.js +2 -11
- package/dist/browser/PuppeteerViewport.d.ts +0 -0
- package/dist/browser/PuppeteerViewport.js +0 -0
- package/dist/browser/ScreenshotOptions.d.ts +0 -14
- package/dist/browser/ScreenshotOptions.js +0 -1
- package/dist/browser/Target.d.ts +4 -3
- package/dist/browser/Target.js +8 -2
- package/dist/browser/TaskQueue.d.ts +0 -0
- package/dist/browser/TaskQueue.js +0 -0
- package/dist/browser/TimeoutSettings.d.ts +0 -0
- package/dist/browser/TimeoutSettings.js +0 -0
- package/dist/browser/assert.d.ts +0 -0
- package/dist/browser/assert.js +0 -0
- package/dist/browser/create-browser-fetcher.d.ts +0 -0
- package/dist/browser/create-browser-fetcher.js +34 -48
- package/dist/browser/devtools-commands.d.ts +5 -1
- package/dist/browser/devtools-commands.js +0 -0
- package/dist/browser/devtools-types.d.ts +92 -10
- package/dist/browser/devtools-types.js +0 -0
- package/dist/browser/get-download-destination.d.ts +0 -0
- package/dist/browser/get-download-destination.js +8 -8
- package/dist/browser/is-target-closed-err.d.ts +1 -0
- package/dist/browser/is-target-closed-err.js +9 -0
- package/dist/browser/mitt/index.d.ts +6 -6
- package/dist/browser/mitt/index.js +0 -0
- package/dist/browser/node.d.ts +0 -0
- package/dist/browser/node.js +0 -0
- package/dist/browser/revisions.d.ts +1 -1
- package/dist/browser/revisions.js +0 -0
- package/dist/browser/should-log-message.d.ts +24 -0
- package/dist/browser/should-log-message.js +72 -0
- package/dist/browser/util.d.ts +2 -2
- package/dist/browser/util.js +0 -0
- package/dist/browser-executable.d.ts +1 -1
- package/dist/browser-executable.js +0 -0
- package/dist/browser-log.d.ts +1 -1
- package/dist/browser-log.js +0 -0
- package/dist/browser.d.ts +1 -1
- package/dist/browser.js +0 -0
- package/dist/calculate-ffmpeg-filters.d.ts +2 -1
- package/dist/calculate-ffmpeg-filters.js +1 -0
- package/dist/call-ffmpeg.d.ts +14 -0
- package/dist/call-ffmpeg.js +42 -0
- package/dist/can-use-parallel-encoding.d.ts +0 -0
- package/dist/can-use-parallel-encoding.js +0 -0
- package/dist/chalk/index.d.ts +54 -0
- package/dist/chalk/index.js +135 -0
- package/dist/chalk/is-color-supported.d.ts +1 -0
- package/dist/chalk/is-color-supported.js +37 -0
- package/dist/check-apple-silicon.d.ts +1 -1
- package/dist/check-apple-silicon.js +8 -47
- package/dist/chunk.d.ts +0 -0
- package/dist/chunk.js +0 -0
- package/dist/client.d.ts +204 -0
- package/dist/client.js +49 -0
- package/dist/codec-supports-media.d.ts +3 -2
- package/dist/codec-supports-media.js +20 -5
- package/dist/codec.d.ts +2 -2
- package/dist/codec.js +0 -0
- package/dist/combine-videos.d.ts +6 -2
- package/dist/combine-videos.js +17 -17
- package/dist/compositor/compose.d.ts +26 -0
- package/dist/compositor/compose.js +82 -0
- package/dist/compositor/compositor.d.ts +11 -0
- package/dist/compositor/compositor.js +219 -0
- package/dist/compositor/get-executable-path.d.ts +1 -0
- package/dist/compositor/get-executable-path.js +57 -0
- package/dist/compositor/make-nonce.d.ts +1 -0
- package/dist/compositor/make-nonce.js +8 -0
- package/dist/compositor/payloads.d.ts +68 -0
- package/dist/{ffmpeg-executable.js → compositor/payloads.js} +0 -0
- package/dist/compress-assets.d.ts +0 -0
- package/dist/compress-assets.js +0 -0
- package/dist/convert-number-of-gif-loops-to-ffmpeg.d.ts +0 -0
- package/dist/convert-number-of-gif-loops-to-ffmpeg.js +0 -0
- package/dist/convert-to-positive-frame-index.d.ts +0 -0
- package/dist/convert-to-positive-frame-index.js +0 -0
- package/dist/create-ffmpeg-complex-filter.d.ts +5 -1
- package/dist/create-ffmpeg-complex-filter.js +6 -4
- package/dist/create-ffmpeg-merge-filter.d.ts +5 -1
- package/dist/create-ffmpeg-merge-filter.js +21 -13
- package/dist/create-silent-audio.d.ts +1 -3
- package/dist/create-silent-audio.js +3 -6
- package/dist/crf.d.ts +6 -2
- package/dist/crf.js +41 -8
- package/dist/cycle-browser-tabs.d.ts +2 -5
- package/dist/cycle-browser-tabs.js +5 -5
- package/dist/delay-render-embedded-stack.d.ts +0 -0
- package/dist/delay-render-embedded-stack.js +0 -0
- package/dist/delete-directory.d.ts +1 -1
- package/dist/delete-directory.js +43 -17
- package/dist/does-have-m2-bug.d.ts +3 -0
- package/dist/does-have-m2-bug.js +12 -0
- package/dist/ensure-frames-in-order.d.ts +0 -0
- package/dist/ensure-frames-in-order.js +0 -0
- package/dist/ensure-output-directory.d.ts +0 -0
- package/dist/ensure-output-directory.js +5 -5
- package/dist/error-handling/handle-javascript-exception.d.ts +0 -0
- package/dist/error-handling/handle-javascript-exception.js +10 -0
- package/dist/error-handling/symbolicate-error.d.ts +0 -0
- package/dist/error-handling/symbolicate-error.js +6 -3
- package/dist/error-handling/symbolicateable-error.d.ts +0 -0
- package/dist/error-handling/symbolicateable-error.js +0 -0
- package/dist/ffmpeg-filter-file.d.ts +6 -1
- package/dist/ffmpeg-filter-file.js +40 -8
- package/dist/ffmpeg-override.d.ts +1 -1
- package/dist/ffmpeg-override.js +0 -0
- package/dist/file-extensions.d.ts +14 -0
- package/dist/file-extensions.js +76 -0
- package/dist/find-closest-package-json.d.ts +2 -0
- package/dist/find-closest-package-json.js +31 -0
- package/dist/frame-range.d.ts +1 -1
- package/dist/frame-range.js +0 -0
- package/dist/get-browser-instance.d.ts +8 -3
- package/dist/get-browser-instance.js +10 -5
- package/dist/get-codec-name.d.ts +0 -0
- package/dist/get-codec-name.js +0 -0
- package/dist/get-compositions.d.ts +27 -14
- package/dist/get-compositions.js +72 -39
- package/dist/get-concurrency.d.ts +1 -1
- package/dist/get-concurrency.js +11 -4
- package/dist/get-duration-from-frame-range.d.ts +0 -0
- package/dist/get-duration-from-frame-range.js +0 -0
- package/dist/get-extension-from-codec.d.ts +5 -1
- package/dist/get-extension-from-codec.js +56 -32
- package/dist/get-extension-of-filename.d.ts +0 -0
- package/dist/get-extension-of-filename.js +5 -1
- package/dist/get-frame-padded-index.d.ts +3 -2
- package/dist/get-frame-padded-index.js +3 -2
- package/dist/get-frame-to-render.d.ts +0 -0
- package/dist/get-frame-to-render.js +1 -1
- package/dist/get-local-browser-executable.d.ts +0 -0
- package/dist/get-local-browser-executable.js +7 -15
- package/dist/get-port.d.ts +4 -1
- package/dist/get-port.js +8 -8
- package/dist/get-prores-profile-name.d.ts +0 -0
- package/dist/get-prores-profile-name.js +0 -0
- package/dist/get-video-threads-flag.d.ts +0 -0
- package/dist/get-video-threads-flag.js +3 -3
- package/dist/guess-extension-for-media.d.ts +3 -1
- package/dist/guess-extension-for-media.js +4 -7
- package/dist/image-format.d.ts +12 -6
- package/dist/image-format.js +19 -13
- package/dist/index.d.ts +368 -49
- package/dist/index.js +68 -46
- package/dist/is-audio-codec.d.ts +0 -0
- package/dist/is-audio-codec.js +0 -0
- package/dist/is-serve-url.d.ts +0 -0
- package/dist/is-serve-url.js +0 -0
- package/dist/jpeg-quality.d.ts +2 -0
- package/dist/jpeg-quality.js +22 -0
- package/dist/locks.d.ts +7 -0
- package/dist/locks.js +44 -0
- package/dist/log-level.d.ts +1 -1
- package/dist/log-level.js +0 -0
- package/dist/logger.d.ts +24 -0
- package/dist/logger.js +68 -0
- package/dist/make-cancel-signal.d.ts +13 -2
- package/dist/make-cancel-signal.js +24 -1
- package/dist/merge-audio-track.d.ts +4 -4
- package/dist/merge-audio-track.js +38 -33
- package/dist/mime-db.d.ts +0 -0
- package/dist/mime-db.js +0 -0
- package/dist/mime-types.d.ts +0 -0
- package/dist/mime-types.js +3 -3
- package/dist/normalize-serve-url.d.ts +0 -0
- package/dist/normalize-serve-url.js +0 -0
- package/dist/offthread-video-server.d.ts +47 -11
- package/dist/offthread-video-server.js +111 -58
- package/dist/open-browser.d.ts +21 -6
- package/dist/open-browser.js +37 -16
- package/dist/options/audio-bitrate.d.ts +2 -0
- package/dist/options/audio-bitrate.js +11 -0
- package/dist/options/crf.d.ts +2 -0
- package/dist/options/crf.js +11 -0
- package/dist/options/enforce-audio.d.ts +2 -0
- package/dist/options/enforce-audio.js +11 -0
- package/dist/options/jpeg-quality.d.ts +2 -0
- package/dist/options/jpeg-quality.js +11 -0
- package/dist/options/mute.d.ts +2 -0
- package/dist/options/mute.js +11 -0
- package/dist/options/option.d.ts +8 -0
- package/dist/options/option.js +2 -0
- package/dist/options/scale.d.ts +2 -0
- package/dist/options/scale.js +11 -0
- package/dist/options/video-bitrate.d.ts +2 -0
- package/dist/options/video-bitrate.js +11 -0
- package/dist/options/video-codec.d.ts +2 -0
- package/dist/options/video-codec.js +11 -0
- package/dist/overwrite.d.ts +0 -0
- package/dist/overwrite.js +0 -0
- package/dist/p-limit.d.ts +0 -0
- package/dist/p-limit.js +0 -0
- package/dist/parse-browser-error-stack.d.ts +1 -1
- package/dist/parse-browser-error-stack.js +0 -0
- package/dist/parse-ffmpeg-progress.d.ts +0 -0
- package/dist/parse-ffmpeg-progress.js +0 -0
- package/dist/perf.d.ts +2 -2
- package/dist/perf.js +9 -7
- package/dist/pixel-format.d.ts +2 -2
- package/dist/pixel-format.js +3 -0
- package/dist/pool.d.ts +0 -0
- package/dist/pool.js +0 -0
- package/dist/prepare-server.d.ts +25 -10
- package/dist/prepare-server.js +71 -18
- package/dist/preprocess-audio-track.d.ts +7 -5
- package/dist/preprocess-audio-track.js +7 -8
- package/dist/prespawn-ffmpeg.d.ts +20 -10
- package/dist/prespawn-ffmpeg.js +67 -29
- package/dist/prestitcher-memory-usage.d.ts +0 -4
- package/dist/prestitcher-memory-usage.js +4 -5
- package/dist/prores-profile.d.ts +6 -4
- package/dist/prores-profile.js +8 -8
- package/dist/provide-screenshot.d.ts +8 -4
- package/dist/provide-screenshot.js +5 -2
- package/dist/puppeteer-evaluate.d.ts +0 -0
- package/dist/puppeteer-evaluate.js +20 -12
- package/dist/puppeteer-screenshot.d.ts +12 -2
- package/dist/puppeteer-screenshot.js +18 -45
- package/dist/redirect-status-codes.d.ts +1 -0
- package/dist/redirect-status-codes.js +6 -0
- package/dist/render-frames.d.ts +52 -35
- package/dist/render-frames.js +248 -143
- package/dist/render-media.d.ts +76 -29
- package/dist/render-media.js +324 -195
- package/dist/render-still.d.ts +46 -19
- package/dist/render-still.js +128 -69
- package/dist/replace-browser.d.ts +6 -0
- package/dist/replace-browser.js +47 -0
- package/dist/resolve-asset-src.d.ts +0 -0
- package/dist/resolve-asset-src.js +2 -2
- package/dist/sample-rate.d.ts +0 -0
- package/dist/sample-rate.js +0 -0
- package/dist/screenshot-dom-element.d.ts +8 -4
- package/dist/screenshot-dom-element.js +15 -4
- package/dist/screenshot-task.d.ts +11 -2
- package/dist/screenshot-task.js +43 -13
- package/dist/seek-to-frame.d.ts +1 -0
- package/dist/seek-to-frame.js +49 -3
- package/dist/select-composition.d.ts +41 -0
- package/dist/select-composition.js +156 -0
- package/dist/serve-handler/index.d.ts +1 -1
- package/dist/serve-handler/index.js +21 -19
- package/dist/serve-handler/is-path-inside.d.ts +0 -0
- package/dist/serve-handler/is-path-inside.js +3 -3
- package/dist/serve-handler/range-parser.d.ts +0 -0
- package/dist/serve-handler/range-parser.js +0 -0
- package/dist/serve-static.d.ts +8 -6
- package/dist/serve-static.js +85 -59
- package/dist/set-props-and-env.d.ts +5 -3
- package/dist/set-props-and-env.js +18 -10
- package/dist/stitch-frames-to-video.d.ts +39 -16
- package/dist/stitch-frames-to-video.js +210 -121
- package/dist/stringify-ffmpeg-filter.d.ts +10 -2
- package/dist/stringify-ffmpeg-filter.js +37 -34
- package/dist/symbolicate-stacktrace.d.ts +16 -3
- package/dist/symbolicate-stacktrace.js +49 -24
- package/dist/take-frame-and-compose.d.ts +22 -0
- package/dist/take-frame-and-compose.js +103 -0
- package/dist/tmp-dir.d.ts +0 -0
- package/dist/tmp-dir.js +7 -8
- package/dist/truthy.d.ts +1 -1
- package/dist/truthy.js +0 -0
- package/dist/types.d.ts +2 -2
- package/dist/types.js +0 -0
- package/dist/validate-concurrency.d.ts +2 -0
- package/dist/validate-concurrency.js +21 -10
- package/dist/validate-even-dimensions-with-codec.d.ts +0 -0
- package/dist/validate-even-dimensions-with-codec.js +0 -0
- package/dist/validate-every-nth-frame.d.ts +2 -1
- package/dist/validate-every-nth-frame.js +8 -1
- package/dist/validate-ffmpeg-override.d.ts +0 -0
- package/dist/validate-ffmpeg-override.js +0 -0
- package/dist/validate-number-of-gif-loops.d.ts +2 -0
- package/dist/validate-number-of-gif-loops.js +24 -0
- package/dist/validate-opengl-renderer.d.ts +2 -3
- package/dist/validate-opengl-renderer.js +9 -4
- package/dist/validate-output-filename.d.ts +7 -2
- package/dist/validate-output-filename.js +20 -51
- package/dist/validate-puppeteer-timeout.d.ts +0 -0
- package/dist/validate-puppeteer-timeout.js +1 -0
- package/dist/validate-scale.d.ts +0 -0
- package/dist/validate-scale.js +0 -0
- package/dist/validate-videobitrate.d.ts +1 -0
- package/dist/validate-videobitrate.js +20 -0
- package/dist/wait-for-symbolication-error-to-be-done.d.ts +0 -0
- package/dist/wait-for-symbolication-error-to-be-done.js +5 -31
- package/dist/ws/ws-types.d.ts +0 -0
- package/dist/ws/ws-types.js +2 -1
- package/install-toolchain.mjs +36 -0
- package/package.json +70 -60
- package/types/ws/index.d.ts +5 -5
- package/.prettierrc.js +0 -14
- package/dist/assets/dl-browser.d.ts +0 -1
- package/dist/assets/dl-browser.js +0 -38
- package/dist/assets/get-video-stream-duration.d.ts +0 -4
- package/dist/assets/get-video-stream-duration.js +0 -59
- package/dist/calculate-sar-dar-pixels.d.ts +0 -9
- package/dist/calculate-sar-dar-pixels.js +0 -19
- package/dist/convert-to-pcm.d.ts +0 -6
- package/dist/convert-to-pcm.js +0 -20
- package/dist/ensure-presentation-timestamp.d.ts +0 -2
- package/dist/ensure-presentation-timestamp.js +0 -69
- package/dist/extract-frame-from-video.d.ts +0 -16
- package/dist/extract-frame-from-video.js +0 -277
- package/dist/ffmpeg-executable.d.ts +0 -1
- package/dist/ffmpeg-flags.d.ts +0 -12
- package/dist/ffmpeg-flags.js +0 -45
- package/dist/frame-to-ffmpeg-timestamp.d.ts +0 -1
- package/dist/frame-to-ffmpeg-timestamp.js +0 -8
- package/dist/get-audio-codec-name.d.ts +0 -2
- package/dist/get-audio-codec-name.js +0 -28
- package/dist/get-video-info.d.ts +0 -3
- package/dist/get-video-info.js +0 -49
- package/dist/is-beyond-last-frame.d.ts +0 -3
- package/dist/is-beyond-last-frame.js +0 -12
- package/dist/last-frame-from-video-cache.d.ts +0 -17
- package/dist/last-frame-from-video-cache.js +0 -55
- package/dist/legacy-webpack-config.d.ts +0 -9
- package/dist/legacy-webpack-config.js +0 -13
- package/dist/quality.d.ts +0 -1
- package/dist/quality.js +0 -21
- package/dist/validate-ffmpeg.d.ts +0 -2
- package/dist/validate-ffmpeg.js +0 -72
- package/dist/validate-frame.d.ts +0 -1
- package/dist/validate-frame.js +0 -24
- package/tsconfig.json +0 -10
- package/vitest.config.ts +0 -8
package/dist/render-frames.js
CHANGED
|
@@ -3,78 +3,56 @@ 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;
|
|
7
|
-
const
|
|
8
|
-
const
|
|
6
|
+
exports.renderFrames = exports.internalRenderFrames = void 0;
|
|
7
|
+
const node_fs_1 = __importDefault(require("node:fs"));
|
|
8
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
9
|
+
const perf_hooks_1 = require("perf_hooks");
|
|
9
10
|
const remotion_1 = require("remotion");
|
|
10
11
|
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
12
|
const browser_1 = require("./browser");
|
|
13
|
+
const is_target_closed_err_1 = require("./browser/is-target-closed-err");
|
|
14
|
+
const TimeoutSettings_1 = require("./browser/TimeoutSettings");
|
|
13
15
|
const compress_assets_1 = require("./compress-assets");
|
|
14
16
|
const cycle_browser_tabs_1 = require("./cycle-browser-tabs");
|
|
15
17
|
const handle_javascript_exception_1 = require("./error-handling/handle-javascript-exception");
|
|
18
|
+
const find_closest_package_json_1 = require("./find-closest-package-json");
|
|
16
19
|
const get_concurrency_1 = require("./get-concurrency");
|
|
17
20
|
const get_duration_from_frame_range_1 = require("./get-duration-from-frame-range");
|
|
18
21
|
const get_frame_padded_index_1 = require("./get-frame-padded-index");
|
|
19
22
|
const get_frame_to_render_1 = require("./get-frame-to-render");
|
|
20
|
-
const
|
|
21
|
-
const
|
|
23
|
+
const jpeg_quality_1 = require("./jpeg-quality");
|
|
24
|
+
const make_cancel_signal_1 = require("./make-cancel-signal");
|
|
22
25
|
const open_browser_1 = require("./open-browser");
|
|
23
26
|
const perf_1 = require("./perf");
|
|
24
27
|
const pool_1 = require("./pool");
|
|
25
28
|
const prepare_server_1 = require("./prepare-server");
|
|
26
|
-
const provide_screenshot_1 = require("./provide-screenshot");
|
|
27
29
|
const puppeteer_evaluate_1 = require("./puppeteer-evaluate");
|
|
28
|
-
const
|
|
30
|
+
const replace_browser_1 = require("./replace-browser");
|
|
29
31
|
const seek_to_frame_1 = require("./seek-to-frame");
|
|
30
32
|
const set_props_and_env_1 = require("./set-props-and-env");
|
|
33
|
+
const take_frame_and_compose_1 = require("./take-frame-and-compose");
|
|
31
34
|
const truthy_1 = require("./truthy");
|
|
32
35
|
const validate_scale_1 = require("./validate-scale");
|
|
33
|
-
const
|
|
34
|
-
|
|
35
|
-
return others.composition;
|
|
36
|
-
}
|
|
37
|
-
if ('config' in others) {
|
|
38
|
-
return others.config;
|
|
39
|
-
}
|
|
40
|
-
return undefined;
|
|
41
|
-
};
|
|
42
|
-
const getConcurrency = (others) => {
|
|
43
|
-
if ('concurrency' in others) {
|
|
44
|
-
return others.concurrency;
|
|
45
|
-
}
|
|
46
|
-
if ('parallelism' in others) {
|
|
47
|
-
return others.parallelism;
|
|
48
|
-
}
|
|
49
|
-
return undefined;
|
|
50
|
-
};
|
|
51
|
-
const getPool = async (pages) => {
|
|
52
|
-
const puppeteerPages = await Promise.all(pages);
|
|
53
|
-
const pool = new pool_1.Pool(puppeteerPages);
|
|
54
|
-
return pool;
|
|
55
|
-
};
|
|
56
|
-
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, actualConcurrency, everyNthFrame = 1, proxyPort, cancelSignal, downloadMap, muted, }) => {
|
|
57
|
-
if (!puppeteerInstance) {
|
|
58
|
-
throw new Error('no puppeteer instance passed to innerRenderFrames - internal error');
|
|
59
|
-
}
|
|
36
|
+
const MAX_RETRIES_PER_FRAME = 1;
|
|
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, }) => {
|
|
60
38
|
if (outputDir) {
|
|
61
|
-
if (!
|
|
62
|
-
|
|
39
|
+
if (!node_fs_1.default.existsSync(outputDir)) {
|
|
40
|
+
node_fs_1.default.mkdirSync(outputDir, {
|
|
63
41
|
recursive: true,
|
|
64
42
|
});
|
|
65
43
|
}
|
|
66
44
|
}
|
|
67
45
|
const downloadPromises = [];
|
|
68
|
-
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);
|
|
69
47
|
const framesToRender = (0, get_duration_from_frame_range_1.getFramesToRender)(realFrameRange, everyNthFrame);
|
|
70
48
|
const lastFrame = framesToRender[framesToRender.length - 1];
|
|
71
|
-
const
|
|
72
|
-
const page = await
|
|
49
|
+
const makePage = async (context) => {
|
|
50
|
+
const page = await browserReplacer.getBrowser().newPage(context);
|
|
73
51
|
pagesArray.push(page);
|
|
74
52
|
await page.setViewport({
|
|
75
53
|
width: composition.width,
|
|
76
54
|
height: composition.height,
|
|
77
|
-
deviceScaleFactor: scale
|
|
55
|
+
deviceScaleFactor: scale,
|
|
78
56
|
});
|
|
79
57
|
const logCallback = (log) => {
|
|
80
58
|
onBrowserLog === null || onBrowserLog === void 0 ? void 0 : onBrowserLog({
|
|
@@ -102,7 +80,7 @@ const innerRenderFrames = ({ onFrameUpdate, outputDir, onStart, inputProps, qual
|
|
|
102
80
|
await (0, puppeteer_evaluate_1.puppeteerEvaluateWithCatch)({
|
|
103
81
|
// eslint-disable-next-line max-params
|
|
104
82
|
pageFunction: (id, defaultProps, durationInFrames, fps, height, width) => {
|
|
105
|
-
window.
|
|
83
|
+
window.remotion_setBundleMode({
|
|
106
84
|
type: 'composition',
|
|
107
85
|
compositionName: id,
|
|
108
86
|
compositionDefaultProps: defaultProps,
|
|
@@ -125,7 +103,15 @@ const innerRenderFrames = ({ onFrameUpdate, outputDir, onStart, inputProps, qual
|
|
|
125
103
|
});
|
|
126
104
|
page.off('console', logCallback);
|
|
127
105
|
return page;
|
|
128
|
-
}
|
|
106
|
+
};
|
|
107
|
+
const getPool = async (context) => {
|
|
108
|
+
const pages = new Array(actualConcurrency)
|
|
109
|
+
.fill(true)
|
|
110
|
+
.map(() => makePage(context));
|
|
111
|
+
const puppeteerPages = await Promise.all(pages);
|
|
112
|
+
const pool = new pool_1.Pool(puppeteerPages);
|
|
113
|
+
return pool;
|
|
114
|
+
};
|
|
129
115
|
// If rendering a GIF and skipping frames, we must ensure it starts from 0
|
|
130
116
|
// and then is consecutive so FFMPEG recognizes the sequence
|
|
131
117
|
const countType = everyNthFrame === 1 ? 'actual-frames' : 'from-zero';
|
|
@@ -135,8 +121,8 @@ const innerRenderFrames = ({ onFrameUpdate, outputDir, onStart, inputProps, qual
|
|
|
135
121
|
countType,
|
|
136
122
|
});
|
|
137
123
|
let framesRendered = 0;
|
|
138
|
-
const poolPromise = getPool(
|
|
139
|
-
onStart({
|
|
124
|
+
const poolPromise = getPool(sourcemapContext);
|
|
125
|
+
onStart === null || onStart === void 0 ? void 0 : onStart({
|
|
140
126
|
frameCount: framesToRender.length,
|
|
141
127
|
});
|
|
142
128
|
const assets = new Array(framesToRender.length).fill(undefined);
|
|
@@ -144,14 +130,15 @@ const innerRenderFrames = ({ onFrameUpdate, outputDir, onStart, inputProps, qual
|
|
|
144
130
|
cancelSignal === null || cancelSignal === void 0 ? void 0 : cancelSignal(() => {
|
|
145
131
|
stopped = true;
|
|
146
132
|
});
|
|
147
|
-
const
|
|
133
|
+
const renderFrameWithOptionToReject = async ({ frame, index, reject, width, height, }) => {
|
|
148
134
|
const pool = await poolPromise;
|
|
149
135
|
const freePage = await pool.acquire();
|
|
150
136
|
if (stopped) {
|
|
151
|
-
|
|
137
|
+
return reject(new Error('Render was stopped'));
|
|
152
138
|
}
|
|
139
|
+
const startTime = perf_hooks_1.performance.now();
|
|
153
140
|
const errorCallbackOnFrame = (err) => {
|
|
154
|
-
|
|
141
|
+
reject(err);
|
|
155
142
|
};
|
|
156
143
|
const cleanupPageError = (0, handle_javascript_exception_1.handleJavascriptException)({
|
|
157
144
|
page: freePage,
|
|
@@ -160,52 +147,41 @@ const innerRenderFrames = ({ onFrameUpdate, outputDir, onStart, inputProps, qual
|
|
|
160
147
|
});
|
|
161
148
|
freePage.on('error', errorCallbackOnFrame);
|
|
162
149
|
await (0, seek_to_frame_1.seekToFrame)({ frame, page: freePage });
|
|
163
|
-
if (imageFormat !== 'none') {
|
|
164
|
-
|
|
165
|
-
const id = (0, perf_1.startPerfMeasure)('save');
|
|
166
|
-
const buffer = await (0, provide_screenshot_1.provideScreenshot)({
|
|
167
|
-
page: freePage,
|
|
168
|
-
imageFormat,
|
|
169
|
-
quality,
|
|
170
|
-
options: {
|
|
171
|
-
frame,
|
|
172
|
-
output: null,
|
|
173
|
-
},
|
|
174
|
-
});
|
|
175
|
-
(0, perf_1.stopPerfMeasure)(id);
|
|
176
|
-
onFrameBuffer(buffer, frame);
|
|
177
|
-
}
|
|
178
|
-
else {
|
|
179
|
-
if (!outputDir) {
|
|
180
|
-
throw new Error('Called renderFrames() without specifying either `outputDir` or `onFrameBuffer`');
|
|
181
|
-
}
|
|
182
|
-
const output = path_1.default.join(outputDir, (0, get_frame_padded_index_1.getFrameOutputFileName)({
|
|
183
|
-
frame,
|
|
184
|
-
imageFormat,
|
|
185
|
-
index,
|
|
186
|
-
countType,
|
|
187
|
-
lastFrame,
|
|
188
|
-
totalFrames: framesToRender.length,
|
|
189
|
-
}));
|
|
190
|
-
await (0, provide_screenshot_1.provideScreenshot)({
|
|
191
|
-
page: freePage,
|
|
192
|
-
imageFormat,
|
|
193
|
-
quality,
|
|
194
|
-
options: {
|
|
195
|
-
frame,
|
|
196
|
-
output,
|
|
197
|
-
},
|
|
198
|
-
});
|
|
199
|
-
}
|
|
150
|
+
if (!outputDir && !onFrameBuffer && imageFormat !== 'none') {
|
|
151
|
+
throw new Error('Called renderFrames() without specifying either `outputDir` or `onFrameBuffer`');
|
|
200
152
|
}
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
153
|
+
if (outputDir && onFrameBuffer && imageFormat !== 'none') {
|
|
154
|
+
throw new Error('Pass either `outputDir` or `onFrameBuffer` to renderFrames(), not both.');
|
|
155
|
+
}
|
|
156
|
+
const id = (0, perf_1.startPerfMeasure)('save');
|
|
157
|
+
const frameDir = outputDir !== null && outputDir !== void 0 ? outputDir : downloadMap.compositingDir;
|
|
158
|
+
const { buffer, collectedAssets } = await (0, take_frame_and_compose_1.takeFrameAndCompose)({
|
|
206
159
|
frame,
|
|
207
|
-
|
|
160
|
+
freePage,
|
|
161
|
+
height,
|
|
162
|
+
imageFormat,
|
|
163
|
+
output: node_path_1.default.join(frameDir, (0, get_frame_padded_index_1.getFrameOutputFileName)({
|
|
164
|
+
frame,
|
|
165
|
+
imageFormat,
|
|
166
|
+
index,
|
|
167
|
+
countType,
|
|
168
|
+
lastFrame,
|
|
169
|
+
totalFrames: framesToRender.length,
|
|
170
|
+
})),
|
|
171
|
+
jpegQuality,
|
|
172
|
+
width,
|
|
173
|
+
scale,
|
|
174
|
+
downloadMap,
|
|
175
|
+
wantsBuffer: Boolean(onFrameBuffer),
|
|
176
|
+
compositor,
|
|
208
177
|
});
|
|
178
|
+
if (onFrameBuffer) {
|
|
179
|
+
if (!buffer) {
|
|
180
|
+
throw new Error('unexpected null buffer');
|
|
181
|
+
}
|
|
182
|
+
onFrameBuffer(buffer, frame);
|
|
183
|
+
}
|
|
184
|
+
(0, perf_1.stopPerfMeasure)(id);
|
|
209
185
|
const compressedAssets = collectedAssets.map((asset) => (0, compress_assets_1.compressAsset)(assets.filter(truthy_1.truthy).flat(1), asset));
|
|
210
186
|
assets[index] = compressedAssets;
|
|
211
187
|
compressedAssets.forEach((asset) => {
|
|
@@ -217,89 +193,148 @@ const innerRenderFrames = ({ onFrameUpdate, outputDir, onStart, inputProps, qual
|
|
|
217
193
|
onError(new Error(`Error while downloading asset: ${err.stack}`));
|
|
218
194
|
});
|
|
219
195
|
});
|
|
220
|
-
pool.release(freePage);
|
|
221
196
|
framesRendered++;
|
|
222
|
-
onFrameUpdate(framesRendered, frame);
|
|
197
|
+
onFrameUpdate === null || onFrameUpdate === void 0 ? void 0 : onFrameUpdate(framesRendered, frame, perf_hooks_1.performance.now() - startTime);
|
|
223
198
|
cleanupPageError();
|
|
224
199
|
freePage.off('error', errorCallbackOnFrame);
|
|
225
|
-
|
|
226
|
-
}
|
|
200
|
+
pool.release(freePage);
|
|
201
|
+
};
|
|
202
|
+
const renderFrame = (frame, index) => {
|
|
203
|
+
return new Promise((resolve, reject) => {
|
|
204
|
+
renderFrameWithOptionToReject({
|
|
205
|
+
frame,
|
|
206
|
+
index,
|
|
207
|
+
reject,
|
|
208
|
+
width: composition.width,
|
|
209
|
+
height: composition.height,
|
|
210
|
+
})
|
|
211
|
+
.then(() => {
|
|
212
|
+
resolve();
|
|
213
|
+
})
|
|
214
|
+
.catch((err) => {
|
|
215
|
+
reject(err);
|
|
216
|
+
});
|
|
217
|
+
});
|
|
218
|
+
};
|
|
219
|
+
const renderFrameAndRetryTargetClose = async ({ frame, index, retriesLeft, attempt, }) => {
|
|
220
|
+
try {
|
|
221
|
+
await Promise.race([
|
|
222
|
+
renderFrame(frame, index),
|
|
223
|
+
new Promise((_, reject) => {
|
|
224
|
+
cancelSignal === null || cancelSignal === void 0 ? void 0 : cancelSignal(() => {
|
|
225
|
+
reject(new Error(make_cancel_signal_1.cancelErrorMessages.renderFrames));
|
|
226
|
+
});
|
|
227
|
+
}),
|
|
228
|
+
]);
|
|
229
|
+
}
|
|
230
|
+
catch (err) {
|
|
231
|
+
if ((0, make_cancel_signal_1.isUserCancelledRender)(err)) {
|
|
232
|
+
throw err;
|
|
233
|
+
}
|
|
234
|
+
if (!(0, is_target_closed_err_1.isTargetClosedErr)(err)) {
|
|
235
|
+
throw err;
|
|
236
|
+
}
|
|
237
|
+
if (stopped) {
|
|
238
|
+
return;
|
|
239
|
+
}
|
|
240
|
+
if (retriesLeft === 0) {
|
|
241
|
+
console.warn(`The browser crashed ${attempt} times while rendering frame ${frame}. Not retrying anymore. Learn more about this error under https://www.remotion.dev/docs/target-closed`);
|
|
242
|
+
throw err;
|
|
243
|
+
}
|
|
244
|
+
console.warn(`The browser crashed while rendering frame ${frame}, retrying ${retriesLeft} more times. Learn more about this error under https://www.remotion.dev/docs/target-closed`);
|
|
245
|
+
await browserReplacer.replaceBrowser(makeBrowser, async () => {
|
|
246
|
+
const pages = new Array(actualConcurrency)
|
|
247
|
+
.fill(true)
|
|
248
|
+
.map(() => makePage(sourcemapContext));
|
|
249
|
+
const puppeteerPages = await Promise.all(pages);
|
|
250
|
+
const pool = await poolPromise;
|
|
251
|
+
for (const newPage of puppeteerPages) {
|
|
252
|
+
pool.release(newPage);
|
|
253
|
+
}
|
|
254
|
+
});
|
|
255
|
+
await renderFrameAndRetryTargetClose({
|
|
256
|
+
frame,
|
|
257
|
+
index,
|
|
258
|
+
retriesLeft: retriesLeft - 1,
|
|
259
|
+
attempt: attempt + 1,
|
|
260
|
+
});
|
|
261
|
+
}
|
|
262
|
+
};
|
|
263
|
+
const progress = Promise.all(framesToRender.map((frame, index) => renderFrameAndRetryTargetClose({
|
|
264
|
+
frame,
|
|
265
|
+
index,
|
|
266
|
+
retriesLeft: MAX_RETRIES_PER_FRAME,
|
|
267
|
+
attempt: 1,
|
|
268
|
+
})));
|
|
227
269
|
const happyPath = progress.then(() => {
|
|
270
|
+
const firstFrameIndex = countType === 'from-zero' ? 0 : framesToRender[0];
|
|
228
271
|
const returnValue = {
|
|
229
272
|
assetsInfo: {
|
|
230
273
|
assets,
|
|
231
274
|
imageSequenceName: `element-%0${filePadLength}d.${imageFormat}`,
|
|
232
|
-
firstFrameIndex
|
|
275
|
+
firstFrameIndex,
|
|
233
276
|
downloadMap,
|
|
234
277
|
},
|
|
235
278
|
frameCount: framesToRender.length,
|
|
236
279
|
};
|
|
237
280
|
return returnValue;
|
|
238
281
|
});
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
})
|
|
243
|
-
.then(() => happyPath);
|
|
282
|
+
const result = await happyPath;
|
|
283
|
+
await Promise.all(downloadPromises);
|
|
284
|
+
return result;
|
|
244
285
|
};
|
|
245
|
-
const
|
|
246
|
-
var _a, _b, _c, _d;
|
|
247
|
-
const composition = getComposition(options);
|
|
248
|
-
const concurrency = getConcurrency(options);
|
|
249
|
-
if (!composition) {
|
|
250
|
-
throw new Error('No `composition` option has been specified for renderFrames()');
|
|
251
|
-
}
|
|
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, }) => {
|
|
252
287
|
remotion_1.Internals.validateDimension(composition.height, 'height', 'in the `config` object passed to `renderFrames()`');
|
|
253
288
|
remotion_1.Internals.validateDimension(composition.width, 'width', 'in the `config` object passed to `renderFrames()`');
|
|
254
289
|
remotion_1.Internals.validateFps(composition.fps, 'in the `config` object of `renderFrames()`', false);
|
|
255
|
-
remotion_1.Internals.validateDurationInFrames(
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
const selectedServeUrl = (0, legacy_webpack_config_1.getServeUrlWithFallback)(options);
|
|
260
|
-
(0, quality_1.validateQuality)(options.quality);
|
|
261
|
-
(0, validate_scale_1.validateScale)(options.scale);
|
|
262
|
-
const browserInstance = (_a = options.puppeteerInstance) !== null && _a !== void 0 ? _a : (0, open_browser_1.openBrowser)(browser_1.DEFAULT_BROWSER, {
|
|
263
|
-
shouldDumpIo: options.dumpBrowserLogs,
|
|
264
|
-
browserExecutable: options.browserExecutable,
|
|
265
|
-
chromiumOptions: options.chromiumOptions,
|
|
266
|
-
forceDeviceScaleFactor: (_b = options.scale) !== null && _b !== void 0 ? _b : 1,
|
|
290
|
+
remotion_1.Internals.validateDurationInFrames({
|
|
291
|
+
durationInFrames: composition.durationInFrames,
|
|
292
|
+
component: 'in the `config` object passed to `renderFrames()`',
|
|
293
|
+
allowFloats: false,
|
|
267
294
|
});
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
const
|
|
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);
|
|
271
308
|
const openedPages = [];
|
|
272
309
|
return new Promise((resolve, reject) => {
|
|
273
|
-
var _a, _b, _c;
|
|
274
310
|
const cleanup = [];
|
|
275
311
|
const onError = (err) => {
|
|
276
312
|
reject(err);
|
|
277
313
|
};
|
|
278
314
|
Promise.race([
|
|
279
315
|
new Promise((_, rej) => {
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
rej(new Error('renderFrames() got cancelled'));
|
|
316
|
+
cancelSignal === null || cancelSignal === void 0 ? void 0 : cancelSignal(() => {
|
|
317
|
+
rej(new Error(make_cancel_signal_1.cancelErrorMessages.renderFrames));
|
|
283
318
|
});
|
|
284
319
|
}),
|
|
285
320
|
Promise.all([
|
|
286
|
-
(0, prepare_server_1.
|
|
287
|
-
webpackConfigOrServeUrl:
|
|
321
|
+
(0, prepare_server_1.makeOrReuseServer)(server, {
|
|
322
|
+
webpackConfigOrServeUrl: webpackBundleOrServeUrl,
|
|
323
|
+
port,
|
|
324
|
+
remotionRoot: (0, find_closest_package_json_1.findRemotionRoot)(),
|
|
325
|
+
concurrency: actualConcurrency,
|
|
326
|
+
verbose,
|
|
327
|
+
indent,
|
|
328
|
+
}, {
|
|
288
329
|
onDownload,
|
|
289
330
|
onError,
|
|
290
|
-
ffmpegExecutable: (_a = options.ffmpegExecutable) !== null && _a !== void 0 ? _a : null,
|
|
291
|
-
ffprobeExecutable: (_b = options.ffprobeExecutable) !== null && _b !== void 0 ? _b : null,
|
|
292
|
-
port: (_c = options.port) !== null && _c !== void 0 ? _c : null,
|
|
293
|
-
downloadMap,
|
|
294
331
|
}),
|
|
295
332
|
browserInstance,
|
|
296
|
-
]).then(([{ serveUrl,
|
|
297
|
-
const
|
|
298
|
-
cleanup.push(stopCycling);
|
|
299
|
-
cleanup.push(
|
|
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));
|
|
300
337
|
return innerRenderFrames({
|
|
301
|
-
...options,
|
|
302
|
-
puppeteerInstance,
|
|
303
338
|
onError,
|
|
304
339
|
pagesArray: openedPages,
|
|
305
340
|
serveUrl,
|
|
@@ -307,7 +342,26 @@ const renderFrames = (options) => {
|
|
|
307
342
|
actualConcurrency,
|
|
308
343
|
onDownload,
|
|
309
344
|
proxyPort: offthreadPort,
|
|
345
|
+
makeBrowser,
|
|
346
|
+
browserReplacer,
|
|
347
|
+
compositor,
|
|
348
|
+
sourcemapContext: sourceMap,
|
|
310
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,
|
|
311
365
|
});
|
|
312
366
|
}),
|
|
313
367
|
])
|
|
@@ -319,18 +373,23 @@ const renderFrames = (options) => {
|
|
|
319
373
|
// If browser instance was passed in, we close all the pages
|
|
320
374
|
// we opened.
|
|
321
375
|
// If new browser was opened, then closing the browser as a cleanup.
|
|
322
|
-
if (
|
|
376
|
+
if (puppeteerInstance) {
|
|
323
377
|
Promise.all(openedPages.map((p) => p.close())).catch((err) => {
|
|
378
|
+
if ((0, is_target_closed_err_1.isTargetClosedErr)(err)) {
|
|
379
|
+
return;
|
|
380
|
+
}
|
|
324
381
|
console.log('Unable to close browser tab', err);
|
|
325
382
|
});
|
|
326
383
|
}
|
|
327
384
|
else {
|
|
328
385
|
Promise.resolve(browserInstance)
|
|
329
|
-
.then((
|
|
330
|
-
return
|
|
386
|
+
.then((instance) => {
|
|
387
|
+
return instance.close(true);
|
|
331
388
|
})
|
|
332
389
|
.catch((err) => {
|
|
333
|
-
|
|
390
|
+
if (!(err === null || err === void 0 ? void 0 : err.message.includes('Target closed'))) {
|
|
391
|
+
console.log('Unable to close browser', err);
|
|
392
|
+
}
|
|
334
393
|
});
|
|
335
394
|
}
|
|
336
395
|
cleanup.forEach((c) => {
|
|
@@ -340,4 +399,50 @@ const renderFrames = (options) => {
|
|
|
340
399
|
});
|
|
341
400
|
});
|
|
342
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
|
+
};
|
|
343
448
|
exports.renderFrames = renderFrames;
|