@remotion/renderer 4.0.0-alpha.4 → 4.0.0-alpha11
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 +2 -1
- package/dist/assets/download-and-map-assets-to-file.js +64 -15
- package/dist/assets/download-file.d.ts +9 -6
- package/dist/assets/download-file.js +67 -9
- package/dist/assets/download-map.d.ts +5 -26
- package/dist/assets/download-map.js +15 -16
- package/dist/assets/ffmpeg-volume-expression.d.ts +2 -1
- 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 +1 -2
- package/dist/assets/get-audio-channels.js +5 -8
- package/dist/assets/get-video-stream-duration.d.ts +7 -1
- package/dist/assets/get-video-stream-duration.js +50 -14
- package/dist/assets/read-file.d.ts +1 -1
- package/dist/assets/read-file.js +4 -6
- 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 +1 -0
- 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 +8 -6
- package/dist/browser/Browser.js +48 -45
- package/dist/browser/BrowserConnector.d.ts +0 -0
- package/dist/browser/BrowserConnector.js +0 -0
- package/dist/browser/BrowserFetcher.d.ts +15 -63
- package/dist/browser/BrowserFetcher.js +151 -237
- package/dist/browser/BrowserPage.d.ts +12 -6
- package/dist/browser/BrowserPage.js +8 -11
- package/dist/browser/BrowserRunner.d.ts +2 -5
- package/dist/browser/BrowserRunner.js +42 -92
- package/dist/browser/Connection.d.ts +0 -0
- package/dist/browser/Connection.js +1 -1
- package/dist/browser/ConsoleMessage.d.ts +0 -0
- package/dist/browser/ConsoleMessage.js +0 -0
- package/dist/browser/DOMWorld.d.ts +5 -4
- package/dist/browser/DOMWorld.js +8 -1
- package/dist/browser/Errors.d.ts +0 -0
- package/dist/browser/Errors.js +0 -0
- package/dist/browser/EvalTypes.d.ts +0 -0
- 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 +2 -6
- 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 +0 -0
- package/dist/browser/LaunchOptions.d.ts +1 -5
- package/dist/browser/LaunchOptions.js +0 -0
- package/dist/browser/Launcher.d.ts +9 -3
- package/dist/browser/Launcher.js +17 -387
- package/dist/browser/LifecycleWatcher.d.ts +0 -0
- package/dist/browser/LifecycleWatcher.js +0 -0
- package/dist/browser/NetworkEventManager.d.ts +0 -0
- 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 +5 -5
- package/dist/browser/Product.d.ts +0 -0
- package/dist/browser/Product.js +0 -0
- package/dist/browser/PuppeteerNode.d.ts +2 -5
- package/dist/browser/PuppeteerNode.js +2 -14
- 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 +2 -2
- package/dist/browser/Target.js +0 -0
- 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 -90
- package/dist/browser/devtools-commands.d.ts +5 -1
- package/dist/browser/devtools-commands.js +0 -0
- package/dist/browser/devtools-types.d.ts +82 -0
- 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 +0 -0
- 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 +0 -1
- package/dist/browser/revisions.js +0 -1
- package/dist/browser/util.d.ts +2 -2
- package/dist/browser/util.js +0 -0
- package/dist/browser-executable.d.ts +0 -0
- package/dist/browser-executable.js +0 -0
- package/dist/browser-log.d.ts +0 -0
- package/dist/browser-log.js +0 -0
- package/dist/browser.d.ts +0 -0
- 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/calculate-sar-dar-pixels.d.ts +0 -0
- package/dist/calculate-sar-dar-pixels.js +0 -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 -0
- package/dist/check-apple-silicon.js +12 -0
- 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 +2 -0
- package/dist/codec-supports-media.js +23 -1
- package/dist/codec.d.ts +0 -0
- package/dist/codec.js +0 -0
- package/dist/combine-videos.d.ts +6 -2
- package/dist/combine-videos.js +18 -18
- package/dist/compositor/compose.d.ts +17 -0
- package/dist/compositor/compose.js +71 -0
- package/dist/compositor/compositor.d.ts +11 -0
- package/dist/compositor/compositor.js +207 -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/compositor/payloads.js +2 -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 +4 -0
- package/dist/convert-to-positive-frame-index.js +8 -0
- package/dist/create-ffmpeg-complex-filter.d.ts +6 -5
- 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 +5 -1
- 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/determine-resize-params.d.ts +1 -0
- package/dist/determine-resize-params.js +10 -0
- package/dist/determine-vcodec-ffmpeg-flags.d.ts +2 -0
- package/dist/determine-vcodec-ffmpeg-flags.js +13 -0
- package/dist/does-have-m2-bug.d.ts +3 -0
- package/dist/does-have-m2-bug.js +12 -0
- package/dist/ensure-ffmpeg.d.ts +18 -0
- package/dist/ensure-ffmpeg.js +58 -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/ensure-presentation-timestamp.d.ts +14 -1
- package/dist/ensure-presentation-timestamp.js +36 -17
- 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 +2 -1
- package/dist/error-handling/symbolicateable-error.d.ts +0 -0
- package/dist/error-handling/symbolicateable-error.js +0 -0
- package/dist/extract-frame-from-video.d.ts +1 -0
- package/dist/extract-frame-from-video.js +47 -110
- package/dist/ffmpeg-executable.d.ts +0 -0
- package/dist/ffmpeg-executable.js +0 -0
- package/dist/ffmpeg-filter-file.d.ts +6 -1
- package/dist/ffmpeg-filter-file.js +40 -8
- package/dist/ffmpeg-flags.d.ts +20 -2
- package/dist/ffmpeg-flags.js +205 -9
- package/dist/ffmpeg-override.d.ts +4 -0
- package/dist/ffmpeg-override.js +2 -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 +0 -0
- package/dist/frame-range.js +0 -0
- package/dist/frame-to-ffmpeg-timestamp.d.ts +0 -0
- package/dist/frame-to-ffmpeg-timestamp.js +0 -0
- package/dist/get-browser-instance.d.ts +2 -2
- package/dist/get-browser-instance.js +1 -1
- package/dist/get-can-extract-frames-fast.d.ts +14 -0
- package/dist/get-can-extract-frames-fast.js +71 -0
- package/dist/get-codec-name.d.ts +0 -0
- package/dist/get-codec-name.js +0 -0
- package/dist/get-compositions.d.ts +14 -8
- package/dist/get-compositions.js +25 -7
- 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-of-video-slow.d.ts +17 -0
- package/dist/get-frame-of-video-slow.js +72 -0
- package/dist/get-frame-padded-index.d.ts +2 -1
- 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 -17
- 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-info.d.ts +6 -1
- package/dist/get-video-info.js +19 -9
- 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 +5 -8
- package/dist/image-format.d.ts +12 -6
- package/dist/image-format.js +19 -13
- package/dist/index.d.ts +286 -53
- package/dist/index.js +50 -36
- package/dist/is-audio-codec.d.ts +0 -0
- package/dist/is-audio-codec.js +0 -0
- package/dist/is-beyond-last-frame.d.ts +0 -0
- package/dist/is-beyond-last-frame.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 +1 -0
- package/dist/jpeg-quality.js +21 -0
- package/dist/last-frame-from-video-cache.d.ts +1 -0
- package/dist/last-frame-from-video-cache.js +0 -0
- package/dist/legacy-webpack-config.d.ts +0 -0
- package/dist/legacy-webpack-config.js +0 -0
- package/dist/locks.d.ts +7 -0
- package/dist/locks.js +44 -0
- package/dist/log-level.d.ts +0 -0
- package/dist/log-level.js +0 -0
- package/dist/logger.d.ts +22 -0
- package/dist/logger.js +61 -0
- package/dist/make-cancel-signal.d.ts +11 -0
- package/dist/make-cancel-signal.js +24 -1
- package/dist/merge-audio-track.d.ts +3 -3
- package/dist/merge-audio-track.js +40 -34
- package/dist/mime-db.d.ts +0 -0
- package/dist/mime-db.js +0 -0
- package/dist/mime-types.d.ts +1 -0
- package/dist/mime-types.js +8 -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 +12 -8
- package/dist/offthread-video-server.js +67 -47
- package/dist/open-browser.d.ts +8 -2
- package/dist/open-browser.js +16 -18
- 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 +0 -0
- 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 +1 -1
- package/dist/perf.js +9 -7
- package/dist/pixel-format.d.ts +1 -1
- 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 +8 -5
- package/dist/prepare-server.js +22 -13
- package/dist/preprocess-audio-track.d.ts +6 -4
- package/dist/preprocess-audio-track.js +7 -8
- package/dist/prespawn-ffmpeg.d.ts +10 -9
- package/dist/prespawn-ffmpeg.js +51 -28
- package/dist/prestitcher-memory-usage.d.ts +0 -4
- package/dist/prestitcher-memory-usage.js +4 -5
- package/dist/prores-profile.d.ts +5 -3
- 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 +19 -45
- package/dist/quality.d.ts +0 -0
- package/dist/quality.js +0 -0
- package/dist/redirect-status-codes.d.ts +1 -0
- package/dist/redirect-status-codes.js +6 -0
- package/dist/render-frames.d.ts +26 -22
- package/dist/render-frames.js +204 -109
- package/dist/render-media.d.ts +52 -19
- package/dist/render-media.js +162 -55
- package/dist/render-still.d.ts +26 -14
- package/dist/render-still.js +97 -46
- 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 +12 -2
- package/dist/screenshot-task.js +44 -14
- package/dist/seek-to-frame.d.ts +1 -0
- package/dist/seek-to-frame.js +49 -3
- package/dist/select-composition.d.ts +33 -0
- package/dist/select-composition.js +119 -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 +6 -3
- package/dist/serve-static.js +86 -45
- package/dist/set-props-and-env.d.ts +7 -3
- package/dist/set-props-and-env.js +50 -16
- package/dist/stitch-frames-to-video.d.ts +16 -11
- package/dist/stitch-frames-to-video.js +165 -79
- package/dist/stringify-ffmpeg-filter.d.ts +10 -2
- package/dist/stringify-ffmpeg-filter.js +37 -34
- package/dist/symbolicate-stacktrace.d.ts +0 -0
- package/dist/symbolicate-stacktrace.js +0 -0
- 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 +0 -0
- package/dist/truthy.js +0 -0
- package/dist/try-to-extract-frame-of-video-fast.d.ts +12 -0
- package/dist/try-to-extract-frame-of-video-fast.js +55 -0
- package/dist/types.d.ts +0 -0
- 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 +2 -0
- package/dist/validate-ffmpeg-override.js +12 -0
- package/dist/validate-ffmpeg.d.ts +7 -2
- package/dist/validate-ffmpeg.js +48 -43
- 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 +0 -0
- package/dist/validate-opengl-renderer.js +0 -0
- 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 +2 -1
- 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/warn-about-ffmpeg-version.d.ts +5 -0
- package/dist/warn-about-ffmpeg-version.js +37 -0
- 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/add-silent-audio-if-necessary.d.ts +0 -8
- package/dist/add-silent-audio-if-necessary.d.ts.map +0 -1
- package/dist/add-silent-audio-if-necessary.js +0 -51
- package/dist/add-silent-audio-if-necessary.js.map +0 -1
- package/dist/assets/asset-is-used-at-time.d.ts +0 -3
- package/dist/assets/asset-is-used-at-time.d.ts.map +0 -1
- package/dist/assets/asset-is-used-at-time.js +0 -8
- package/dist/assets/asset-is-used-at-time.js.map +0 -1
- 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/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-asset-audio-details.d.ts +0 -5
- package/dist/assets/get-asset-audio-details.d.ts.map +0 -1
- package/dist/assets/get-asset-audio-details.js +0 -21
- package/dist/assets/get-asset-audio-details.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/get-simulatenous-assets.d.ts +0 -3
- package/dist/assets/get-simulatenous-assets.d.ts.map +0 -1
- package/dist/assets/get-simulatenous-assets.js +0 -14
- package/dist/assets/get-simulatenous-assets.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/split-assets-into-segments.d.ts +0 -6
- package/dist/assets/split-assets-into-segments.d.ts.map +0 -1
- package/dist/assets/split-assets-into-segments.js +0 -89
- package/dist/assets/split-assets-into-segments.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/assets-to-ffmpeg-inputs.d.ts +0 -7
- package/dist/assets-to-ffmpeg-inputs.d.ts.map +0 -1
- package/dist/assets-to-ffmpeg-inputs.js +0 -15
- package/dist/assets-to-ffmpeg-inputs.js.map +0 -1
- 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/combine-videos.d.ts.map +0 -1
- package/dist/combine-videos.js.map +0 -1
- package/dist/convert-to-pcm.d.ts +0 -6
- package/dist/convert-to-pcm.js +0 -20
- package/dist/create-ffmpeg-complex-filter.d.ts.map +0 -1
- package/dist/create-ffmpeg-complex-filter.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-flags.d.ts.map +0 -1
- package/dist/ffmpeg-flags.js.map +0 -1
- package/dist/get-audio-codec-name.d.ts +0 -2
- package/dist/get-audio-codec-name.d.ts.map +0 -1
- package/dist/get-audio-codec-name.js +0 -28
- 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-extension-from-codec.d.ts.map +0 -1
- package/dist/get-extension-from-codec.js.map +0 -1
- 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/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 +0 -1
- package/dist/make-assets-download-dir.d.ts.map +0 -1
- package/dist/make-assets-download-dir.js +0 -13
- package/dist/make-assets-download-dir.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/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/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-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/render.d.ts +0 -45
- package/dist/render.d.ts.map +0 -1
- package/dist/render.js +0 -245
- package/dist/render.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-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/stitcher.d.ts +0 -32
- package/dist/stitcher.d.ts.map +0 -1
- package/dist/stitcher.js +0 -204
- package/dist/stitcher.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-frame.d.ts +0 -1
- package/dist/validate-frame.js +0 -24
- 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/tsconfig.json +0 -10
- package/vitest.config.ts +0 -8
package/dist/render-frames.js
CHANGED
|
@@ -4,63 +4,54 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.renderFrames = void 0;
|
|
7
|
-
const
|
|
8
|
-
const
|
|
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
12
|
const download_map_1 = require("./assets/download-map");
|
|
12
13
|
const browser_1 = require("./browser");
|
|
14
|
+
const is_target_closed_err_1 = require("./browser/is-target-closed-err");
|
|
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
23
|
const image_format_1 = require("./image-format");
|
|
21
|
-
const
|
|
24
|
+
const jpeg_quality_1 = require("./jpeg-quality");
|
|
25
|
+
const make_cancel_signal_1 = require("./make-cancel-signal");
|
|
22
26
|
const open_browser_1 = require("./open-browser");
|
|
23
27
|
const perf_1 = require("./perf");
|
|
24
28
|
const pool_1 = require("./pool");
|
|
25
29
|
const prepare_server_1 = require("./prepare-server");
|
|
26
|
-
const provide_screenshot_1 = require("./provide-screenshot");
|
|
27
30
|
const puppeteer_evaluate_1 = require("./puppeteer-evaluate");
|
|
28
|
-
const
|
|
31
|
+
const replace_browser_1 = require("./replace-browser");
|
|
29
32
|
const seek_to_frame_1 = require("./seek-to-frame");
|
|
30
33
|
const set_props_and_env_1 = require("./set-props-and-env");
|
|
34
|
+
const take_frame_and_compose_1 = require("./take-frame-and-compose");
|
|
31
35
|
const truthy_1 = require("./truthy");
|
|
32
36
|
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 getPool = async (pages) => {
|
|
43
|
-
const puppeteerPages = await Promise.all(pages);
|
|
44
|
-
const pool = new pool_1.Pool(puppeteerPages);
|
|
45
|
-
return pool;
|
|
46
|
-
};
|
|
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, }) => {
|
|
48
|
-
if (!puppeteerInstance) {
|
|
49
|
-
throw new Error('no puppeteer instance passed to innerRenderFrames - internal error');
|
|
50
|
-
}
|
|
37
|
+
const MAX_RETRIES_PER_FRAME = 1;
|
|
38
|
+
const innerRenderFrames = ({ onFrameUpdate, outputDir, onStart, inputProps, jpegQuality, quality, imageFormat = image_format_1.DEFAULT_VIDEO_IMAGE_FORMAT, frameRange, onError, envVariables, onBrowserLog, onFrameBuffer, onDownload, pagesArray, serveUrl, composition, timeoutInMilliseconds, scale = 1, actualConcurrency, everyNthFrame = 1, proxyPort, cancelSignal, downloadMap, muted, makeBrowser, browserReplacer, compositor, }) => {
|
|
51
39
|
if (outputDir) {
|
|
52
|
-
if (!
|
|
53
|
-
|
|
40
|
+
if (!node_fs_1.default.existsSync(outputDir)) {
|
|
41
|
+
node_fs_1.default.mkdirSync(outputDir, {
|
|
54
42
|
recursive: true,
|
|
55
43
|
});
|
|
56
44
|
}
|
|
57
45
|
}
|
|
46
|
+
if (quality) {
|
|
47
|
+
throw new Error(`The "quality" option has been renamed. Use "jpegQuality" instead.`);
|
|
48
|
+
}
|
|
58
49
|
const downloadPromises = [];
|
|
59
50
|
const realFrameRange = (0, get_frame_to_render_1.getRealFrameRange)(composition.durationInFrames, frameRange !== null && frameRange !== void 0 ? frameRange : null);
|
|
60
51
|
const framesToRender = (0, get_duration_from_frame_range_1.getFramesToRender)(realFrameRange, everyNthFrame);
|
|
61
52
|
const lastFrame = framesToRender[framesToRender.length - 1];
|
|
62
|
-
const
|
|
63
|
-
const page = await
|
|
53
|
+
const makePage = async () => {
|
|
54
|
+
const page = await browserReplacer.getBrowser().newPage();
|
|
64
55
|
pagesArray.push(page);
|
|
65
56
|
await page.setViewport({
|
|
66
57
|
width: composition.width,
|
|
@@ -87,21 +78,42 @@ const innerRenderFrames = ({ onFrameUpdate, outputDir, onStart, inputProps, qual
|
|
|
87
78
|
timeoutInMilliseconds,
|
|
88
79
|
proxyPort,
|
|
89
80
|
retriesRemaining: 2,
|
|
81
|
+
audioEnabled: !muted,
|
|
82
|
+
videoEnabled: imageFormat !== 'none',
|
|
90
83
|
});
|
|
91
84
|
await (0, puppeteer_evaluate_1.puppeteerEvaluateWithCatch)({
|
|
92
|
-
|
|
85
|
+
// eslint-disable-next-line max-params
|
|
86
|
+
pageFunction: (id, defaultProps, durationInFrames, fps, height, width) => {
|
|
93
87
|
window.setBundleMode({
|
|
94
88
|
type: 'composition',
|
|
95
89
|
compositionName: id,
|
|
90
|
+
compositionDefaultProps: defaultProps,
|
|
91
|
+
compositionDurationInFrames: durationInFrames,
|
|
92
|
+
compositionFps: fps,
|
|
93
|
+
compositionHeight: height,
|
|
94
|
+
compositionWidth: width,
|
|
96
95
|
});
|
|
97
96
|
},
|
|
98
|
-
args: [
|
|
97
|
+
args: [
|
|
98
|
+
composition.id,
|
|
99
|
+
composition.defaultProps,
|
|
100
|
+
composition.durationInFrames,
|
|
101
|
+
composition.fps,
|
|
102
|
+
composition.height,
|
|
103
|
+
composition.width,
|
|
104
|
+
],
|
|
99
105
|
frame: null,
|
|
100
106
|
page,
|
|
101
107
|
});
|
|
102
108
|
page.off('console', logCallback);
|
|
103
109
|
return page;
|
|
104
|
-
}
|
|
110
|
+
};
|
|
111
|
+
const getPool = async () => {
|
|
112
|
+
const pages = new Array(actualConcurrency).fill(true).map(() => makePage());
|
|
113
|
+
const puppeteerPages = await Promise.all(pages);
|
|
114
|
+
const pool = new pool_1.Pool(puppeteerPages);
|
|
115
|
+
return pool;
|
|
116
|
+
};
|
|
105
117
|
// If rendering a GIF and skipping frames, we must ensure it starts from 0
|
|
106
118
|
// and then is consecutive so FFMPEG recognizes the sequence
|
|
107
119
|
const countType = everyNthFrame === 1 ? 'actual-frames' : 'from-zero';
|
|
@@ -111,7 +123,7 @@ const innerRenderFrames = ({ onFrameUpdate, outputDir, onStart, inputProps, qual
|
|
|
111
123
|
countType,
|
|
112
124
|
});
|
|
113
125
|
let framesRendered = 0;
|
|
114
|
-
const poolPromise = getPool(
|
|
126
|
+
const poolPromise = getPool();
|
|
115
127
|
onStart({
|
|
116
128
|
frameCount: framesToRender.length,
|
|
117
129
|
});
|
|
@@ -120,14 +132,15 @@ const innerRenderFrames = ({ onFrameUpdate, outputDir, onStart, inputProps, qual
|
|
|
120
132
|
cancelSignal === null || cancelSignal === void 0 ? void 0 : cancelSignal(() => {
|
|
121
133
|
stopped = true;
|
|
122
134
|
});
|
|
123
|
-
const
|
|
135
|
+
const renderFrameWithOptionToReject = async ({ frame, index, reject, width, height, }) => {
|
|
124
136
|
const pool = await poolPromise;
|
|
125
137
|
const freePage = await pool.acquire();
|
|
126
138
|
if (stopped) {
|
|
127
|
-
|
|
139
|
+
return reject(new Error('Render was stopped'));
|
|
128
140
|
}
|
|
141
|
+
const startTime = perf_hooks_1.performance.now();
|
|
129
142
|
const errorCallbackOnFrame = (err) => {
|
|
130
|
-
|
|
143
|
+
reject(err);
|
|
131
144
|
};
|
|
132
145
|
const cleanupPageError = (0, handle_javascript_exception_1.handleJavascriptException)({
|
|
133
146
|
page: freePage,
|
|
@@ -136,52 +149,41 @@ const innerRenderFrames = ({ onFrameUpdate, outputDir, onStart, inputProps, qual
|
|
|
136
149
|
});
|
|
137
150
|
freePage.on('error', errorCallbackOnFrame);
|
|
138
151
|
await (0, seek_to_frame_1.seekToFrame)({ frame, page: freePage });
|
|
139
|
-
if (imageFormat !== 'none') {
|
|
140
|
-
|
|
141
|
-
const id = (0, perf_1.startPerfMeasure)('save');
|
|
142
|
-
const buffer = await (0, provide_screenshot_1.provideScreenshot)({
|
|
143
|
-
page: freePage,
|
|
144
|
-
imageFormat,
|
|
145
|
-
quality,
|
|
146
|
-
options: {
|
|
147
|
-
frame,
|
|
148
|
-
output: null,
|
|
149
|
-
},
|
|
150
|
-
});
|
|
151
|
-
(0, perf_1.stopPerfMeasure)(id);
|
|
152
|
-
onFrameBuffer(buffer, frame);
|
|
153
|
-
}
|
|
154
|
-
else {
|
|
155
|
-
if (!outputDir) {
|
|
156
|
-
throw new Error('Called renderFrames() without specifying either `outputDir` or `onFrameBuffer`');
|
|
157
|
-
}
|
|
158
|
-
const output = path_1.default.join(outputDir, (0, get_frame_padded_index_1.getFrameOutputFileName)({
|
|
159
|
-
frame,
|
|
160
|
-
imageFormat,
|
|
161
|
-
index,
|
|
162
|
-
countType,
|
|
163
|
-
lastFrame,
|
|
164
|
-
totalFrames: framesToRender.length,
|
|
165
|
-
}));
|
|
166
|
-
await (0, provide_screenshot_1.provideScreenshot)({
|
|
167
|
-
page: freePage,
|
|
168
|
-
imageFormat,
|
|
169
|
-
quality,
|
|
170
|
-
options: {
|
|
171
|
-
frame,
|
|
172
|
-
output,
|
|
173
|
-
},
|
|
174
|
-
});
|
|
175
|
-
}
|
|
152
|
+
if (!outputDir && !onFrameBuffer && imageFormat !== 'none') {
|
|
153
|
+
throw new Error('Called renderFrames() without specifying either `outputDir` or `onFrameBuffer`');
|
|
176
154
|
}
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
155
|
+
if (outputDir && onFrameBuffer && imageFormat !== 'none') {
|
|
156
|
+
throw new Error('Pass either `outputDir` or `onFrameBuffer` to renderFrames(), not both.');
|
|
157
|
+
}
|
|
158
|
+
const id = (0, perf_1.startPerfMeasure)('save');
|
|
159
|
+
const frameDir = outputDir !== null && outputDir !== void 0 ? outputDir : downloadMap.compositingDir;
|
|
160
|
+
const { buffer, collectedAssets } = await (0, take_frame_and_compose_1.takeFrameAndCompose)({
|
|
182
161
|
frame,
|
|
183
|
-
|
|
162
|
+
freePage,
|
|
163
|
+
height,
|
|
164
|
+
imageFormat,
|
|
165
|
+
output: node_path_1.default.join(frameDir, (0, get_frame_padded_index_1.getFrameOutputFileName)({
|
|
166
|
+
frame,
|
|
167
|
+
imageFormat,
|
|
168
|
+
index,
|
|
169
|
+
countType,
|
|
170
|
+
lastFrame,
|
|
171
|
+
totalFrames: framesToRender.length,
|
|
172
|
+
})),
|
|
173
|
+
jpegQuality,
|
|
174
|
+
width,
|
|
175
|
+
scale,
|
|
176
|
+
downloadMap,
|
|
177
|
+
wantsBuffer: Boolean(onFrameBuffer),
|
|
178
|
+
compositor,
|
|
184
179
|
});
|
|
180
|
+
if (onFrameBuffer) {
|
|
181
|
+
if (!buffer) {
|
|
182
|
+
throw new Error('unexpected null buffer');
|
|
183
|
+
}
|
|
184
|
+
onFrameBuffer(buffer, frame);
|
|
185
|
+
}
|
|
186
|
+
(0, perf_1.stopPerfMeasure)(id);
|
|
185
187
|
const compressedAssets = collectedAssets.map((asset) => (0, compress_assets_1.compressAsset)(assets.filter(truthy_1.truthy).flat(1), asset));
|
|
186
188
|
assets[index] = compressedAssets;
|
|
187
189
|
compressedAssets.forEach((asset) => {
|
|
@@ -193,19 +195,86 @@ const innerRenderFrames = ({ onFrameUpdate, outputDir, onStart, inputProps, qual
|
|
|
193
195
|
onError(new Error(`Error while downloading asset: ${err.stack}`));
|
|
194
196
|
});
|
|
195
197
|
});
|
|
196
|
-
pool.release(freePage);
|
|
197
198
|
framesRendered++;
|
|
198
|
-
onFrameUpdate(framesRendered, frame);
|
|
199
|
+
onFrameUpdate(framesRendered, frame, perf_hooks_1.performance.now() - startTime);
|
|
199
200
|
cleanupPageError();
|
|
200
201
|
freePage.off('error', errorCallbackOnFrame);
|
|
201
|
-
|
|
202
|
-
}
|
|
202
|
+
pool.release(freePage);
|
|
203
|
+
};
|
|
204
|
+
const renderFrame = (frame, index) => {
|
|
205
|
+
return new Promise((resolve, reject) => {
|
|
206
|
+
renderFrameWithOptionToReject({
|
|
207
|
+
frame,
|
|
208
|
+
index,
|
|
209
|
+
reject,
|
|
210
|
+
width: composition.width,
|
|
211
|
+
height: composition.height,
|
|
212
|
+
})
|
|
213
|
+
.then(() => {
|
|
214
|
+
resolve();
|
|
215
|
+
})
|
|
216
|
+
.catch((err) => {
|
|
217
|
+
reject(err);
|
|
218
|
+
});
|
|
219
|
+
});
|
|
220
|
+
};
|
|
221
|
+
const renderFrameAndRetryTargetClose = async ({ frame, index, retriesLeft, attempt, }) => {
|
|
222
|
+
try {
|
|
223
|
+
await Promise.race([
|
|
224
|
+
renderFrame(frame, index),
|
|
225
|
+
new Promise((_, reject) => {
|
|
226
|
+
cancelSignal === null || cancelSignal === void 0 ? void 0 : cancelSignal(() => {
|
|
227
|
+
reject(new Error(make_cancel_signal_1.cancelErrorMessages.renderFrames));
|
|
228
|
+
});
|
|
229
|
+
}),
|
|
230
|
+
]);
|
|
231
|
+
}
|
|
232
|
+
catch (err) {
|
|
233
|
+
if ((0, make_cancel_signal_1.isUserCancelledRender)(err)) {
|
|
234
|
+
throw err;
|
|
235
|
+
}
|
|
236
|
+
if (!(0, is_target_closed_err_1.isTargetClosedErr)(err)) {
|
|
237
|
+
throw err;
|
|
238
|
+
}
|
|
239
|
+
if (stopped) {
|
|
240
|
+
return;
|
|
241
|
+
}
|
|
242
|
+
if (retriesLeft === 0) {
|
|
243
|
+
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`);
|
|
244
|
+
throw err;
|
|
245
|
+
}
|
|
246
|
+
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`);
|
|
247
|
+
await browserReplacer.replaceBrowser(makeBrowser, async () => {
|
|
248
|
+
const pages = new Array(actualConcurrency)
|
|
249
|
+
.fill(true)
|
|
250
|
+
.map(() => makePage());
|
|
251
|
+
const puppeteerPages = await Promise.all(pages);
|
|
252
|
+
const pool = await poolPromise;
|
|
253
|
+
for (const newPage of puppeteerPages) {
|
|
254
|
+
pool.release(newPage);
|
|
255
|
+
}
|
|
256
|
+
});
|
|
257
|
+
await renderFrameAndRetryTargetClose({
|
|
258
|
+
frame,
|
|
259
|
+
index,
|
|
260
|
+
retriesLeft: retriesLeft - 1,
|
|
261
|
+
attempt: attempt + 1,
|
|
262
|
+
});
|
|
263
|
+
}
|
|
264
|
+
};
|
|
265
|
+
const progress = Promise.all(framesToRender.map((frame, index) => renderFrameAndRetryTargetClose({
|
|
266
|
+
frame,
|
|
267
|
+
index,
|
|
268
|
+
retriesLeft: MAX_RETRIES_PER_FRAME,
|
|
269
|
+
attempt: 1,
|
|
270
|
+
})));
|
|
203
271
|
const happyPath = progress.then(() => {
|
|
272
|
+
const firstFrameIndex = countType === 'from-zero' ? 0 : framesToRender[0];
|
|
204
273
|
const returnValue = {
|
|
205
274
|
assetsInfo: {
|
|
206
275
|
assets,
|
|
207
276
|
imageSequenceName: `element-%0${filePadLength}d.${imageFormat}`,
|
|
208
|
-
firstFrameIndex
|
|
277
|
+
firstFrameIndex,
|
|
209
278
|
downloadMap,
|
|
210
279
|
},
|
|
211
280
|
frameCount: framesToRender.length,
|
|
@@ -218,35 +287,50 @@ const innerRenderFrames = ({ onFrameUpdate, outputDir, onStart, inputProps, qual
|
|
|
218
287
|
})
|
|
219
288
|
.then(() => happyPath);
|
|
220
289
|
};
|
|
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
|
+
*/
|
|
221
294
|
const renderFrames = (options) => {
|
|
222
|
-
var _a, _b, _c
|
|
223
|
-
const composition =
|
|
295
|
+
var _a, _b, _c;
|
|
296
|
+
const { composition, concurrency } = options;
|
|
224
297
|
if (!composition) {
|
|
225
298
|
throw new Error('No `composition` option has been specified for renderFrames()');
|
|
226
299
|
}
|
|
227
300
|
remotion_1.Internals.validateDimension(composition.height, 'height', 'in the `config` object passed to `renderFrames()`');
|
|
228
301
|
remotion_1.Internals.validateDimension(composition.width, 'width', 'in the `config` object passed to `renderFrames()`');
|
|
229
302
|
remotion_1.Internals.validateFps(composition.fps, 'in the `config` object of `renderFrames()`', false);
|
|
230
|
-
remotion_1.Internals.validateDurationInFrames(
|
|
231
|
-
|
|
232
|
-
|
|
303
|
+
remotion_1.Internals.validateDurationInFrames({
|
|
304
|
+
durationInFrames: composition.durationInFrames,
|
|
305
|
+
component: 'in the `config` object passed to `renderFrames()`',
|
|
306
|
+
allowFloats: false,
|
|
307
|
+
});
|
|
308
|
+
if (options.jpegQuality !== undefined && options.imageFormat !== 'jpeg') {
|
|
309
|
+
throw new Error("You can only pass the `jpegQuality` option if `imageFormat` is 'jpeg'.");
|
|
233
310
|
}
|
|
234
|
-
|
|
235
|
-
(0, quality_1.validateQuality)(options.quality);
|
|
311
|
+
(0, jpeg_quality_1.validateJpegQuality)(options.jpegQuality);
|
|
236
312
|
(0, validate_scale_1.validateScale)(options.scale);
|
|
237
|
-
const
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
313
|
+
const makeBrowser = () => {
|
|
314
|
+
var _a, _b;
|
|
315
|
+
return (0, open_browser_1.openBrowser)(browser_1.DEFAULT_BROWSER, {
|
|
316
|
+
shouldDumpIo: options.dumpBrowserLogs,
|
|
317
|
+
browserExecutable: options.browserExecutable,
|
|
318
|
+
chromiumOptions: options.chromiumOptions,
|
|
319
|
+
forceDeviceScaleFactor: (_a = options.scale) !== null && _a !== void 0 ? _a : 1,
|
|
320
|
+
indent: (_b = options.indent) !== null && _b !== void 0 ? _b : false,
|
|
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);
|
|
246
327
|
const openedPages = [];
|
|
247
328
|
return new Promise((resolve, reject) => {
|
|
248
329
|
var _a, _b, _c;
|
|
249
330
|
const cleanup = [];
|
|
331
|
+
if (!options.downloadMap) {
|
|
332
|
+
cleanup.push(() => (0, download_map_1.cleanDownloadMap)(downloadMap));
|
|
333
|
+
}
|
|
250
334
|
const onError = (err) => {
|
|
251
335
|
reject(err);
|
|
252
336
|
};
|
|
@@ -254,24 +338,27 @@ const renderFrames = (options) => {
|
|
|
254
338
|
new Promise((_, rej) => {
|
|
255
339
|
var _a;
|
|
256
340
|
(_a = options.cancelSignal) === null || _a === void 0 ? void 0 : _a.call(options, () => {
|
|
257
|
-
rej(new Error(
|
|
341
|
+
rej(new Error(make_cancel_signal_1.cancelErrorMessages.renderFrames));
|
|
258
342
|
});
|
|
259
343
|
}),
|
|
260
344
|
Promise.all([
|
|
261
345
|
(0, prepare_server_1.prepareServer)({
|
|
262
|
-
webpackConfigOrServeUrl:
|
|
346
|
+
webpackConfigOrServeUrl: options.serveUrl,
|
|
263
347
|
onDownload,
|
|
264
348
|
onError,
|
|
265
|
-
|
|
266
|
-
ffprobeExecutable: (_b = options.ffprobeExecutable) !== null && _b !== void 0 ? _b : null,
|
|
267
|
-
port: (_c = options.port) !== null && _c !== void 0 ? _c : null,
|
|
349
|
+
port: (_a = options.port) !== null && _a !== void 0 ? _a : null,
|
|
268
350
|
downloadMap,
|
|
351
|
+
remotionRoot: (0, find_closest_package_json_1.findRemotionRoot)(),
|
|
352
|
+
concurrency: actualConcurrency,
|
|
353
|
+
verbose: (_b = options.verbose) !== null && _b !== void 0 ? _b : false,
|
|
354
|
+
indent: (_c = options.indent) !== null && _c !== void 0 ? _c : false,
|
|
269
355
|
}),
|
|
270
356
|
browserInstance,
|
|
271
|
-
]).then(([{ serveUrl, closeServer, offthreadPort }, puppeteerInstance]) => {
|
|
272
|
-
const
|
|
357
|
+
]).then(([{ serveUrl, closeServer, offthreadPort, compositor }, puppeteerInstance,]) => {
|
|
358
|
+
const browserReplacer = (0, replace_browser_1.handleBrowserCrash)(puppeteerInstance);
|
|
359
|
+
const { stopCycling } = (0, cycle_browser_tabs_1.cycleBrowserTabs)(browserReplacer, actualConcurrency);
|
|
273
360
|
cleanup.push(stopCycling);
|
|
274
|
-
cleanup.push(closeServer);
|
|
361
|
+
cleanup.push(() => closeServer(false));
|
|
275
362
|
return innerRenderFrames({
|
|
276
363
|
...options,
|
|
277
364
|
puppeteerInstance,
|
|
@@ -279,10 +366,13 @@ const renderFrames = (options) => {
|
|
|
279
366
|
pagesArray: openedPages,
|
|
280
367
|
serveUrl,
|
|
281
368
|
composition,
|
|
282
|
-
|
|
369
|
+
actualConcurrency,
|
|
283
370
|
onDownload,
|
|
284
371
|
proxyPort: offthreadPort,
|
|
285
372
|
downloadMap,
|
|
373
|
+
makeBrowser,
|
|
374
|
+
browserReplacer,
|
|
375
|
+
compositor,
|
|
286
376
|
});
|
|
287
377
|
}),
|
|
288
378
|
])
|
|
@@ -296,16 +386,21 @@ const renderFrames = (options) => {
|
|
|
296
386
|
// If new browser was opened, then closing the browser as a cleanup.
|
|
297
387
|
if (options.puppeteerInstance) {
|
|
298
388
|
Promise.all(openedPages.map((p) => p.close())).catch((err) => {
|
|
389
|
+
if ((0, is_target_closed_err_1.isTargetClosedErr)(err)) {
|
|
390
|
+
return;
|
|
391
|
+
}
|
|
299
392
|
console.log('Unable to close browser tab', err);
|
|
300
393
|
});
|
|
301
394
|
}
|
|
302
395
|
else {
|
|
303
396
|
Promise.resolve(browserInstance)
|
|
304
397
|
.then((puppeteerInstance) => {
|
|
305
|
-
return puppeteerInstance.close();
|
|
398
|
+
return puppeteerInstance.close(true);
|
|
306
399
|
})
|
|
307
400
|
.catch((err) => {
|
|
308
|
-
|
|
401
|
+
if (!(err === null || err === void 0 ? void 0 : err.message.includes('Target closed'))) {
|
|
402
|
+
console.log('Unable to close browser', err);
|
|
403
|
+
}
|
|
309
404
|
});
|
|
310
405
|
}
|
|
311
406
|
cleanup.forEach((c) => {
|
package/dist/render-media.d.ts
CHANGED
|
@@ -1,43 +1,51 @@
|
|
|
1
|
-
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import type { AnySmallCompMetadata } from 'remotion';
|
|
2
3
|
import type { RenderMediaOnDownload } from './assets/download-and-map-assets-to-file';
|
|
3
4
|
import type { DownloadMap } from './assets/download-map';
|
|
5
|
+
import type { AudioCodec } from './audio-codec';
|
|
4
6
|
import type { BrowserExecutable } from './browser-executable';
|
|
5
7
|
import type { BrowserLog } from './browser-log';
|
|
6
|
-
import type {
|
|
8
|
+
import type { HeadlessBrowser } from './browser/Browser';
|
|
7
9
|
import type { Codec } from './codec';
|
|
8
|
-
import type {
|
|
10
|
+
import type { FfmpegOverrideFn } from './ffmpeg-override';
|
|
9
11
|
import type { FrameRange } from './frame-range';
|
|
10
|
-
import type {
|
|
12
|
+
import type { VideoImageFormat } from './image-format';
|
|
11
13
|
import type { CancelSignal } from './make-cancel-signal';
|
|
12
14
|
import type { ChromiumOptions } from './open-browser';
|
|
13
15
|
import type { PixelFormat } from './pixel-format';
|
|
14
16
|
import type { ProResProfile } from './prores-profile';
|
|
15
17
|
import type { OnStartData } from './types';
|
|
16
18
|
export declare type StitchingState = 'encoding' | 'muxing';
|
|
19
|
+
export declare type SlowFrame = {
|
|
20
|
+
frame: number;
|
|
21
|
+
time: number;
|
|
22
|
+
};
|
|
17
23
|
export declare type RenderMediaOnProgress = (progress: {
|
|
18
24
|
renderedFrames: number;
|
|
19
25
|
encodedFrames: number;
|
|
20
26
|
encodedDoneIn: number | null;
|
|
21
27
|
renderedDoneIn: number | null;
|
|
28
|
+
progress: number;
|
|
22
29
|
stitchStage: StitchingState;
|
|
23
30
|
}) => void;
|
|
24
31
|
export declare type RenderMediaOptions = {
|
|
25
32
|
outputLocation?: string | null;
|
|
26
33
|
codec: Codec;
|
|
27
|
-
composition:
|
|
28
|
-
inputProps?: unknown
|
|
29
|
-
parallelism?: number | null;
|
|
34
|
+
composition: AnySmallCompMetadata;
|
|
35
|
+
inputProps?: Record<string, unknown>;
|
|
30
36
|
crf?: number | null;
|
|
31
|
-
imageFormat?:
|
|
32
|
-
ffmpegExecutable?: FfmpegExecutable;
|
|
33
|
-
ffprobeExecutable?: FfmpegExecutable;
|
|
37
|
+
imageFormat?: VideoImageFormat;
|
|
34
38
|
pixelFormat?: PixelFormat;
|
|
35
39
|
envVariables?: Record<string, string>;
|
|
36
|
-
|
|
40
|
+
/**
|
|
41
|
+
* @deprecated Renamed to `jpegQuality`
|
|
42
|
+
*/
|
|
43
|
+
quality?: never;
|
|
44
|
+
jpegQuality?: number;
|
|
37
45
|
frameRange?: FrameRange | null;
|
|
38
46
|
everyNthFrame?: number;
|
|
39
47
|
numberOfGifLoops?: number | null;
|
|
40
|
-
puppeteerInstance?:
|
|
48
|
+
puppeteerInstance?: HeadlessBrowser;
|
|
41
49
|
overwrite?: boolean;
|
|
42
50
|
onProgress?: RenderMediaOnProgress;
|
|
43
51
|
onDownload?: RenderMediaOnDownload;
|
|
@@ -52,14 +60,39 @@ export declare type RenderMediaOptions = {
|
|
|
52
60
|
cancelSignal?: CancelSignal;
|
|
53
61
|
browserExecutable?: BrowserExecutable;
|
|
54
62
|
verbose?: boolean;
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
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
|
+
preferLossless?: boolean;
|
|
78
|
+
muted?: boolean;
|
|
79
|
+
enforceAudioTrack?: boolean;
|
|
80
|
+
ffmpegOverride?: FfmpegOverrideFn;
|
|
81
|
+
audioBitrate?: string | null;
|
|
82
|
+
videoBitrate?: string | null;
|
|
83
|
+
disallowParallelEncoding?: boolean;
|
|
84
|
+
audioCodec?: AudioCodec | null;
|
|
85
|
+
serveUrl: string;
|
|
86
|
+
concurrency?: number | string | null;
|
|
87
|
+
};
|
|
88
|
+
declare type RenderMediaResult = {
|
|
89
|
+
buffer: Buffer | null;
|
|
90
|
+
slowestFrames: SlowFrame[];
|
|
91
|
+
};
|
|
60
92
|
/**
|
|
61
93
|
*
|
|
62
94
|
* @description Render a video from a composition
|
|
63
|
-
* @
|
|
95
|
+
* @see [Documentation](https://www.remotion.dev/docs/renderer/render-media)
|
|
64
96
|
*/
|
|
65
|
-
export declare const renderMedia: ({
|
|
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, ...options }: RenderMediaOptions) => Promise<RenderMediaResult>;
|
|
98
|
+
export {};
|