@remotion/renderer 4.0.0-alpha.4 → 4.0.0-alpha4
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 +47 -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 +60 -11
- package/dist/assets/download-file.d.ts +7 -5
- package/dist/assets/download-file.js +49 -6
- package/dist/assets/download-map.d.ts +8 -3
- package/dist/assets/download-map.js +8 -4
- 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 -1
- package/dist/assets/get-audio-channels.js +5 -4
- 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 +0 -0
- package/dist/assets/read-file.js +2 -4
- 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 +0 -0
- 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 +27 -0
- package/dist/audio-codec.js +89 -0
- package/dist/browser/Browser.d.ts +4 -2
- package/dist/browser/Browser.js +15 -12
- package/dist/browser/BrowserConnector.d.ts +0 -0
- package/dist/browser/BrowserConnector.js +0 -0
- package/dist/browser/BrowserFetcher.d.ts +16 -63
- package/dist/browser/BrowserFetcher.js +146 -231
- package/dist/browser/BrowserPage.d.ts +8 -2
- package/dist/browser/BrowserPage.js +8 -11
- package/dist/browser/BrowserRunner.d.ts +1 -4
- package/dist/browser/BrowserRunner.js +30 -73
- 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 +2 -1
- 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 +0 -3
- 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 +0 -4
- package/dist/browser/LaunchOptions.js +0 -0
- package/dist/browser/Launcher.d.ts +7 -1
- package/dist/browser/Launcher.js +12 -375
- 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 +1 -1
- package/dist/browser/Product.d.ts +0 -0
- package/dist/browser/Product.js +0 -0
- package/dist/browser/PuppeteerNode.d.ts +0 -3
- 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 +0 -0
- 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 +0 -0
- package/dist/browser/devtools-commands.js +0 -0
- package/dist/browser/devtools-types.d.ts +4 -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 +0 -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 +0 -0
- 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/can-use-parallel-encoding.d.ts +0 -0
- package/dist/can-use-parallel-encoding.js +0 -0
- package/dist/check-apple-silicon.d.ts +1 -0
- package/dist/check-apple-silicon.js +55 -0
- package/dist/chunk.d.ts +0 -0
- package/dist/chunk.js +0 -0
- package/dist/client.d.ts +179 -0
- package/dist/client.js +23 -0
- package/dist/codec-supports-media.d.ts +1 -0
- package/dist/codec-supports-media.js +8 -1
- package/dist/codec.d.ts +0 -0
- package/dist/codec.js +0 -0
- package/dist/combine-videos.d.ts +9 -2
- package/dist/combine-videos.js +12 -8
- package/dist/compositor/compose.d.ts +13 -0
- package/dist/compositor/compose.js +47 -0
- package/dist/compositor/get-executable-path.d.ts +1 -0
- package/dist/compositor/get-executable-path.js +47 -0
- package/dist/compositor/payloads.d.ts +41 -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 +9 -5
- package/dist/create-ffmpeg-complex-filter.js +8 -4
- package/dist/create-ffmpeg-merge-filter.d.ts +8 -1
- package/dist/create-ffmpeg-merge-filter.js +29 -13
- package/dist/create-silent-audio.d.ts +2 -1
- package/dist/create-silent-audio.js +3 -2
- package/dist/crf.d.ts +5 -1
- package/dist/crf.js +33 -6
- 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 +31 -5
- 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 +0 -0
- 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 +2 -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 +36 -4
- 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 +25 -0
- package/dist/file-extensions.js +88 -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 +0 -0
- 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 +4 -0
- package/dist/get-compositions.js +26 -7
- package/dist/get-concurrency.d.ts +1 -1
- package/dist/get-concurrency.js +8 -1
- 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 +15 -0
- package/dist/get-frame-of-video-slow.js +72 -0
- package/dist/get-frame-padded-index.d.ts +1 -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 +4 -14
- 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 +0 -0
- package/dist/guess-extension-for-media.d.ts +5 -1
- package/dist/guess-extension-for-media.js +4 -3
- package/dist/image-format.d.ts +1 -1
- package/dist/image-format.js +3 -0
- package/dist/index.d.ts +187 -41
- package/dist/index.js +31 -28
- 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/last-frame-from-video-cache.d.ts +2 -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/make-cancel-signal.d.ts +11 -0
- package/dist/make-cancel-signal.js +24 -1
- package/dist/merge-audio-track.d.ts +3 -1
- package/dist/merge-audio-track.js +43 -30
- 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 +6 -1
- package/dist/normalize-serve-url.d.ts +0 -0
- package/dist/normalize-serve-url.js +0 -0
- package/dist/offthread-video-server.d.ts +2 -1
- package/dist/offthread-video-server.js +13 -1
- package/dist/open-browser.d.ts +5 -0
- package/dist/open-browser.js +12 -15
- 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 +0 -0
- package/dist/perf.js +0 -0
- 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 +3 -2
- package/dist/prepare-server.js +8 -3
- package/dist/preprocess-audio-track.d.ts +7 -1
- package/dist/preprocess-audio-track.js +7 -4
- package/dist/prespawn-ffmpeg.d.ts +4 -1
- package/dist/prespawn-ffmpeg.js +17 -12
- package/dist/prestitcher-memory-usage.d.ts +0 -0
- package/dist/prestitcher-memory-usage.js +0 -0
- package/dist/prores-profile.d.ts +4 -1
- package/dist/prores-profile.js +6 -6
- package/dist/provide-screenshot.d.ts +5 -1
- package/dist/provide-screenshot.js +4 -1
- package/dist/puppeteer-evaluate.d.ts +0 -0
- package/dist/puppeteer-evaluate.js +19 -11
- package/dist/puppeteer-screenshot.d.ts +11 -2
- package/dist/puppeteer-screenshot.js +11 -14
- 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 +15 -3
- package/dist/render-frames.js +176 -84
- package/dist/render-media.d.ts +38 -6
- package/dist/render-media.js +123 -27
- package/dist/render-still.d.ts +8 -4
- package/dist/render-still.js +66 -31
- 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 +0 -0
- package/dist/sample-rate.d.ts +0 -0
- package/dist/sample-rate.js +0 -0
- package/dist/screenshot-dom-element.d.ts +5 -1
- package/dist/screenshot-dom-element.js +10 -2
- package/dist/screenshot-task.d.ts +12 -2
- package/dist/screenshot-task.js +24 -9
- package/dist/seek-to-frame.d.ts +1 -0
- package/dist/seek-to-frame.js +49 -3
- package/dist/serve-handler/index.d.ts +0 -0
- package/dist/serve-handler/index.js +0 -0
- package/dist/serve-handler/is-path-inside.d.ts +0 -0
- package/dist/serve-handler/is-path-inside.js +0 -0
- 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 +1 -0
- package/dist/serve-static.js +77 -41
- package/dist/set-props-and-env.d.ts +3 -1
- package/dist/set-props-and-env.js +39 -15
- package/dist/stitch-frames-to-video.d.ts +14 -1
- package/dist/stitch-frames-to-video.js +122 -50
- 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 +20 -0
- package/dist/take-frame-and-compose.js +96 -0
- package/dist/tmp-dir.d.ts +0 -0
- package/dist/tmp-dir.js +0 -0
- package/dist/truthy.d.ts +0 -0
- package/dist/truthy.js +0 -0
- package/dist/try-to-extract-frame-of-video-fast.d.ts +13 -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 +0 -0
- package/dist/validate-concurrency.js +14 -9
- 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 +1 -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/package.json +68 -60
- 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
|
@@ -99,18 +99,26 @@ async function puppeteerEvaluateWithCatch({ page, pageFunction, frame, args, })
|
|
|
99
99
|
error.message += ' Are you passing a nested JSHandle?';
|
|
100
100
|
throw error;
|
|
101
101
|
}
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
102
|
+
try {
|
|
103
|
+
const { exceptionDetails, result: remoteObject } = await callFunctionOnPromise;
|
|
104
|
+
if (exceptionDetails) {
|
|
105
|
+
const err = new symbolicateable_error_1.SymbolicateableError({
|
|
106
|
+
stack: (_c = exceptionDetails.exception) === null || _c === void 0 ? void 0 : _c.description,
|
|
107
|
+
name: (_d = exceptionDetails.exception) === null || _d === void 0 ? void 0 : _d.className,
|
|
108
|
+
message: (_f = (_e = exceptionDetails.exception) === null || _e === void 0 ? void 0 : _e.description) === null || _f === void 0 ? void 0 : _f.split('\n')[0],
|
|
109
|
+
frame,
|
|
110
|
+
stackFrame: (0, parse_browser_error_stack_1.parseStack)(((_g = exceptionDetails.exception) === null || _g === void 0 ? void 0 : _g.description).split('\n')),
|
|
111
|
+
});
|
|
112
|
+
throw err;
|
|
113
|
+
}
|
|
114
|
+
return valueFromRemoteObject(remoteObject);
|
|
115
|
+
}
|
|
116
|
+
catch (error) {
|
|
117
|
+
if (error === null || error === void 0 ? void 0 : error.originalMessage.startsWith("Object couldn't be returned by value")) {
|
|
118
|
+
throw new Error('Could not serialize the return value of the function. Did you pass non-serializable values to defaultProps?');
|
|
119
|
+
}
|
|
120
|
+
throw error;
|
|
112
121
|
}
|
|
113
|
-
return valueFromRemoteObject(remoteObject);
|
|
114
122
|
}
|
|
115
123
|
exports.puppeteerEvaluateWithCatch = puppeteerEvaluateWithCatch;
|
|
116
124
|
/**
|
|
@@ -1,4 +1,13 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
+
import type { ClipRegion } from 'remotion';
|
|
2
3
|
import type { Page } from './browser/BrowserPage';
|
|
3
|
-
|
|
4
|
-
|
|
4
|
+
export declare const screenshot: (options: {
|
|
5
|
+
page: Page;
|
|
6
|
+
type: 'png' | 'jpeg';
|
|
7
|
+
path?: string;
|
|
8
|
+
quality?: number;
|
|
9
|
+
omitBackground: boolean;
|
|
10
|
+
width: number;
|
|
11
|
+
height: number;
|
|
12
|
+
clipRegion: ClipRegion | null;
|
|
13
|
+
}) => Promise<Buffer | string>;
|
|
@@ -26,7 +26,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
26
26
|
exports.screenshot = void 0;
|
|
27
27
|
const assert = __importStar(require("assert"));
|
|
28
28
|
const screenshot_task_1 = require("./screenshot-task");
|
|
29
|
-
const screenshot = (
|
|
29
|
+
const screenshot = (options) => {
|
|
30
30
|
let screenshotType = null;
|
|
31
31
|
// options.type takes precedence over inferring the type from options.path
|
|
32
32
|
// because it may be a 0-length file with no extension created beforehand
|
|
@@ -58,18 +58,15 @@ const screenshot = (page, options) => {
|
|
|
58
58
|
assert.ok(options.quality >= 0 && options.quality <= 100, 'Expected options.quality to be between 0 and 100 (inclusive), got ' +
|
|
59
59
|
options.quality);
|
|
60
60
|
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
assert.ok(options.clip.height !== 0, 'Expected options.clip.height not to be 0.');
|
|
72
|
-
}
|
|
73
|
-
return page.screenshotTaskQueue.postTask(() => (0, screenshot_task_1._screenshotTask)(page, screenshotType, options));
|
|
61
|
+
return options.page.screenshotTaskQueue.postTask(() => (0, screenshot_task_1.screenshotTask)({
|
|
62
|
+
page: options.page,
|
|
63
|
+
format: screenshotType,
|
|
64
|
+
height: options.height,
|
|
65
|
+
width: options.width,
|
|
66
|
+
omitBackground: options.omitBackground,
|
|
67
|
+
path: options.path,
|
|
68
|
+
quality: options.quality,
|
|
69
|
+
clipRegion: options.clipRegion,
|
|
70
|
+
}));
|
|
74
71
|
};
|
|
75
72
|
exports.screenshot = screenshot;
|
package/dist/quality.d.ts
CHANGED
|
File without changes
|
package/dist/quality.js
CHANGED
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const redirectStatusCodes: number[];
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.redirectStatusCodes = void 0;
|
|
4
|
+
// Don't handle 304 status code (Not Modified) as a redirect,
|
|
5
|
+
// since the browser will display the right page.
|
|
6
|
+
exports.redirectStatusCodes = [301, 302, 303, 307, 308];
|
package/dist/render-frames.d.ts
CHANGED
|
@@ -20,14 +20,21 @@ declare type ConfigOrComposition = {
|
|
|
20
20
|
} | {
|
|
21
21
|
composition: SmallTCompMetadata;
|
|
22
22
|
};
|
|
23
|
+
declare type ConcurrencyOrParallelism = {
|
|
24
|
+
concurrency?: number | string | null;
|
|
25
|
+
} | {
|
|
26
|
+
/**
|
|
27
|
+
* @deprecated This field has been renamed to `concurrency`
|
|
28
|
+
*/
|
|
29
|
+
parallelism?: number | null;
|
|
30
|
+
};
|
|
23
31
|
declare type RenderFramesOptions = {
|
|
24
32
|
onStart: (data: OnStartData) => void;
|
|
25
|
-
onFrameUpdate: (framesRendered: number, frameIndex: number) => void;
|
|
33
|
+
onFrameUpdate: (framesRendered: number, frameIndex: number, timeToRenderInMilliseconds: number) => void;
|
|
26
34
|
outputDir: string | null;
|
|
27
35
|
inputProps: unknown;
|
|
28
36
|
envVariables?: Record<string, string>;
|
|
29
37
|
imageFormat: ImageFormat;
|
|
30
|
-
parallelism?: number | null;
|
|
31
38
|
quality?: number;
|
|
32
39
|
frameRange?: FrameRange | null;
|
|
33
40
|
everyNthFrame?: number;
|
|
@@ -48,6 +55,11 @@ declare type RenderFramesOptions = {
|
|
|
48
55
|
* @deprecated Only for Remotion internal usage
|
|
49
56
|
*/
|
|
50
57
|
downloadMap?: DownloadMap;
|
|
51
|
-
|
|
58
|
+
muted?: boolean;
|
|
59
|
+
} & ConfigOrComposition & ConcurrencyOrParallelism & ServeUrlOrWebpackBundle;
|
|
60
|
+
/**
|
|
61
|
+
* @description Renders a series of images using Puppeteer and computes information for mixing audio.
|
|
62
|
+
* @see [Documentation](https://www.remotion.dev/docs/renderer/render-frames)
|
|
63
|
+
*/
|
|
52
64
|
export declare const renderFrames: (options: RenderFramesOptions) => Promise<RenderFramesOutput>;
|
|
53
65
|
export {};
|
package/dist/render-frames.js
CHANGED
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.renderFrames = void 0;
|
|
7
7
|
const fs_1 = __importDefault(require("fs"));
|
|
8
8
|
const path_1 = __importDefault(require("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");
|
|
@@ -13,23 +14,27 @@ const browser_1 = require("./browser");
|
|
|
13
14
|
const compress_assets_1 = require("./compress-assets");
|
|
14
15
|
const cycle_browser_tabs_1 = require("./cycle-browser-tabs");
|
|
15
16
|
const handle_javascript_exception_1 = require("./error-handling/handle-javascript-exception");
|
|
17
|
+
const find_closest_package_json_1 = require("./find-closest-package-json");
|
|
16
18
|
const get_concurrency_1 = require("./get-concurrency");
|
|
17
19
|
const get_duration_from_frame_range_1 = require("./get-duration-from-frame-range");
|
|
18
20
|
const get_frame_padded_index_1 = require("./get-frame-padded-index");
|
|
19
21
|
const get_frame_to_render_1 = require("./get-frame-to-render");
|
|
20
22
|
const image_format_1 = require("./image-format");
|
|
21
23
|
const legacy_webpack_config_1 = require("./legacy-webpack-config");
|
|
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
30
|
const quality_1 = require("./quality");
|
|
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");
|
|
37
|
+
const MAX_RETRIES_PER_FRAME = 1;
|
|
33
38
|
const getComposition = (others) => {
|
|
34
39
|
if ('composition' in others) {
|
|
35
40
|
return others.composition;
|
|
@@ -39,15 +44,16 @@ const getComposition = (others) => {
|
|
|
39
44
|
}
|
|
40
45
|
return undefined;
|
|
41
46
|
};
|
|
42
|
-
const
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
if (!puppeteerInstance) {
|
|
49
|
-
throw new Error('no puppeteer instance passed to innerRenderFrames - internal error');
|
|
47
|
+
const getConcurrency = (others) => {
|
|
48
|
+
if ('concurrency' in others) {
|
|
49
|
+
return others.concurrency;
|
|
50
|
+
}
|
|
51
|
+
if ('parallelism' in others) {
|
|
52
|
+
return others.parallelism;
|
|
50
53
|
}
|
|
54
|
+
return undefined;
|
|
55
|
+
};
|
|
56
|
+
const innerRenderFrames = ({ onFrameUpdate, outputDir, onStart, inputProps, quality, imageFormat = image_format_1.DEFAULT_IMAGE_FORMAT, frameRange, onError, envVariables, onBrowserLog, onFrameBuffer, onDownload, pagesArray, serveUrl, composition, timeoutInMilliseconds, scale = 1, actualConcurrency, everyNthFrame = 1, proxyPort, cancelSignal, downloadMap, muted, makeBrowser, browserReplacer, }) => {
|
|
51
57
|
if (outputDir) {
|
|
52
58
|
if (!fs_1.default.existsSync(outputDir)) {
|
|
53
59
|
fs_1.default.mkdirSync(outputDir, {
|
|
@@ -59,8 +65,8 @@ const innerRenderFrames = ({ onFrameUpdate, outputDir, onStart, inputProps, qual
|
|
|
59
65
|
const realFrameRange = (0, get_frame_to_render_1.getRealFrameRange)(composition.durationInFrames, frameRange !== null && frameRange !== void 0 ? frameRange : null);
|
|
60
66
|
const framesToRender = (0, get_duration_from_frame_range_1.getFramesToRender)(realFrameRange, everyNthFrame);
|
|
61
67
|
const lastFrame = framesToRender[framesToRender.length - 1];
|
|
62
|
-
const
|
|
63
|
-
const page = await
|
|
68
|
+
const makePage = async () => {
|
|
69
|
+
const page = await browserReplacer.getBrowser().newPage();
|
|
64
70
|
pagesArray.push(page);
|
|
65
71
|
await page.setViewport({
|
|
66
72
|
width: composition.width,
|
|
@@ -87,21 +93,42 @@ const innerRenderFrames = ({ onFrameUpdate, outputDir, onStart, inputProps, qual
|
|
|
87
93
|
timeoutInMilliseconds,
|
|
88
94
|
proxyPort,
|
|
89
95
|
retriesRemaining: 2,
|
|
96
|
+
audioEnabled: !muted,
|
|
97
|
+
videoEnabled: imageFormat !== 'none',
|
|
90
98
|
});
|
|
91
99
|
await (0, puppeteer_evaluate_1.puppeteerEvaluateWithCatch)({
|
|
92
|
-
|
|
100
|
+
// eslint-disable-next-line max-params
|
|
101
|
+
pageFunction: (id, defaultProps, durationInFrames, fps, height, width) => {
|
|
93
102
|
window.setBundleMode({
|
|
94
103
|
type: 'composition',
|
|
95
104
|
compositionName: id,
|
|
105
|
+
compositionDefaultProps: defaultProps,
|
|
106
|
+
compositionDurationInFrames: durationInFrames,
|
|
107
|
+
compositionFps: fps,
|
|
108
|
+
compositionHeight: height,
|
|
109
|
+
compositionWidth: width,
|
|
96
110
|
});
|
|
97
111
|
},
|
|
98
|
-
args: [
|
|
112
|
+
args: [
|
|
113
|
+
composition.id,
|
|
114
|
+
composition.defaultProps,
|
|
115
|
+
composition.durationInFrames,
|
|
116
|
+
composition.fps,
|
|
117
|
+
composition.height,
|
|
118
|
+
composition.width,
|
|
119
|
+
],
|
|
99
120
|
frame: null,
|
|
100
121
|
page,
|
|
101
122
|
});
|
|
102
123
|
page.off('console', logCallback);
|
|
103
124
|
return page;
|
|
104
|
-
}
|
|
125
|
+
};
|
|
126
|
+
const getPool = async () => {
|
|
127
|
+
const pages = new Array(actualConcurrency).fill(true).map(() => makePage());
|
|
128
|
+
const puppeteerPages = await Promise.all(pages);
|
|
129
|
+
const pool = new pool_1.Pool(puppeteerPages);
|
|
130
|
+
return pool;
|
|
131
|
+
};
|
|
105
132
|
// If rendering a GIF and skipping frames, we must ensure it starts from 0
|
|
106
133
|
// and then is consecutive so FFMPEG recognizes the sequence
|
|
107
134
|
const countType = everyNthFrame === 1 ? 'actual-frames' : 'from-zero';
|
|
@@ -111,7 +138,7 @@ const innerRenderFrames = ({ onFrameUpdate, outputDir, onStart, inputProps, qual
|
|
|
111
138
|
countType,
|
|
112
139
|
});
|
|
113
140
|
let framesRendered = 0;
|
|
114
|
-
const poolPromise = getPool(
|
|
141
|
+
const poolPromise = getPool();
|
|
115
142
|
onStart({
|
|
116
143
|
frameCount: framesToRender.length,
|
|
117
144
|
});
|
|
@@ -120,14 +147,15 @@ const innerRenderFrames = ({ onFrameUpdate, outputDir, onStart, inputProps, qual
|
|
|
120
147
|
cancelSignal === null || cancelSignal === void 0 ? void 0 : cancelSignal(() => {
|
|
121
148
|
stopped = true;
|
|
122
149
|
});
|
|
123
|
-
const
|
|
150
|
+
const renderFrameWithOptionToReject = async ({ frame, index, reject, width, height, }) => {
|
|
124
151
|
const pool = await poolPromise;
|
|
125
152
|
const freePage = await pool.acquire();
|
|
126
153
|
if (stopped) {
|
|
127
|
-
|
|
154
|
+
return reject(new Error('Render was stopped'));
|
|
128
155
|
}
|
|
156
|
+
const startTime = perf_hooks_1.performance.now();
|
|
129
157
|
const errorCallbackOnFrame = (err) => {
|
|
130
|
-
|
|
158
|
+
reject(err);
|
|
131
159
|
};
|
|
132
160
|
const cleanupPageError = (0, handle_javascript_exception_1.handleJavascriptException)({
|
|
133
161
|
page: freePage,
|
|
@@ -136,52 +164,40 @@ const innerRenderFrames = ({ onFrameUpdate, outputDir, onStart, inputProps, qual
|
|
|
136
164
|
});
|
|
137
165
|
freePage.on('error', errorCallbackOnFrame);
|
|
138
166
|
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
|
-
}
|
|
167
|
+
if (!outputDir && !onFrameBuffer && imageFormat !== 'none') {
|
|
168
|
+
throw new Error('Called renderFrames() without specifying either `outputDir` or `onFrameBuffer`');
|
|
176
169
|
}
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
170
|
+
if (outputDir && onFrameBuffer && imageFormat !== 'none') {
|
|
171
|
+
throw new Error('Pass either `outputDir` or `onFrameBuffer` to renderFrames(), not both.');
|
|
172
|
+
}
|
|
173
|
+
const id = (0, perf_1.startPerfMeasure)('save');
|
|
174
|
+
const frameDir = outputDir !== null && outputDir !== void 0 ? outputDir : downloadMap.compositingDir;
|
|
175
|
+
const { buffer, collectedAssets } = await (0, take_frame_and_compose_1.takeFrameAndCompose)({
|
|
182
176
|
frame,
|
|
183
|
-
|
|
177
|
+
freePage,
|
|
178
|
+
height,
|
|
179
|
+
imageFormat,
|
|
180
|
+
output: path_1.default.join(frameDir, (0, get_frame_padded_index_1.getFrameOutputFileName)({
|
|
181
|
+
frame,
|
|
182
|
+
imageFormat,
|
|
183
|
+
index,
|
|
184
|
+
countType,
|
|
185
|
+
lastFrame,
|
|
186
|
+
totalFrames: framesToRender.length,
|
|
187
|
+
})),
|
|
188
|
+
quality,
|
|
189
|
+
width,
|
|
190
|
+
scale,
|
|
191
|
+
downloadMap,
|
|
192
|
+
wantsBuffer: Boolean(onFrameBuffer),
|
|
184
193
|
});
|
|
194
|
+
if (onFrameBuffer) {
|
|
195
|
+
if (!buffer) {
|
|
196
|
+
throw new Error('unexpected null buffer');
|
|
197
|
+
}
|
|
198
|
+
onFrameBuffer(buffer, frame);
|
|
199
|
+
}
|
|
200
|
+
(0, perf_1.stopPerfMeasure)(id);
|
|
185
201
|
const compressedAssets = collectedAssets.map((asset) => (0, compress_assets_1.compressAsset)(assets.filter(truthy_1.truthy).flat(1), asset));
|
|
186
202
|
assets[index] = compressedAssets;
|
|
187
203
|
compressedAssets.forEach((asset) => {
|
|
@@ -193,19 +209,71 @@ const innerRenderFrames = ({ onFrameUpdate, outputDir, onStart, inputProps, qual
|
|
|
193
209
|
onError(new Error(`Error while downloading asset: ${err.stack}`));
|
|
194
210
|
});
|
|
195
211
|
});
|
|
196
|
-
pool.release(freePage);
|
|
197
212
|
framesRendered++;
|
|
198
|
-
onFrameUpdate(framesRendered, frame);
|
|
213
|
+
onFrameUpdate(framesRendered, frame, perf_hooks_1.performance.now() - startTime);
|
|
199
214
|
cleanupPageError();
|
|
200
215
|
freePage.off('error', errorCallbackOnFrame);
|
|
201
|
-
|
|
202
|
-
}
|
|
216
|
+
pool.release(freePage);
|
|
217
|
+
};
|
|
218
|
+
const renderFrame = (frame, index) => {
|
|
219
|
+
return new Promise((resolve, reject) => {
|
|
220
|
+
renderFrameWithOptionToReject({
|
|
221
|
+
frame,
|
|
222
|
+
index,
|
|
223
|
+
reject,
|
|
224
|
+
width: composition.width,
|
|
225
|
+
height: composition.height,
|
|
226
|
+
})
|
|
227
|
+
.then(() => {
|
|
228
|
+
resolve();
|
|
229
|
+
})
|
|
230
|
+
.catch((err) => {
|
|
231
|
+
reject(err);
|
|
232
|
+
});
|
|
233
|
+
});
|
|
234
|
+
};
|
|
235
|
+
const renderFrameAndRetryTargetClose = async (frame, index, retriesLeft, attempt) => {
|
|
236
|
+
var _a, _b;
|
|
237
|
+
try {
|
|
238
|
+
await renderFrame(frame, index);
|
|
239
|
+
}
|
|
240
|
+
catch (err) {
|
|
241
|
+
if (!((_a = err === null || err === void 0 ? void 0 : err.message) === null || _a === void 0 ? void 0 : _a.includes('Target closed')) &&
|
|
242
|
+
!((_b = err === null || err === void 0 ? void 0 : err.message) === null || _b === void 0 ? void 0 : _b.includes('Session closed'))) {
|
|
243
|
+
throw err;
|
|
244
|
+
}
|
|
245
|
+
if ((0, make_cancel_signal_1.isUserCancelledRender)(err)) {
|
|
246
|
+
throw err;
|
|
247
|
+
}
|
|
248
|
+
if (stopped) {
|
|
249
|
+
return;
|
|
250
|
+
}
|
|
251
|
+
if (retriesLeft === 0) {
|
|
252
|
+
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`);
|
|
253
|
+
throw err;
|
|
254
|
+
}
|
|
255
|
+
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`);
|
|
256
|
+
await browserReplacer.replaceBrowser(makeBrowser, async () => {
|
|
257
|
+
const pages = new Array(actualConcurrency)
|
|
258
|
+
.fill(true)
|
|
259
|
+
.map(() => makePage());
|
|
260
|
+
const puppeteerPages = await Promise.all(pages);
|
|
261
|
+
const pool = await poolPromise;
|
|
262
|
+
for (const newPage of puppeteerPages) {
|
|
263
|
+
pool.release(newPage);
|
|
264
|
+
}
|
|
265
|
+
});
|
|
266
|
+
await renderFrameAndRetryTargetClose(frame, index, retriesLeft - 1, attempt + 1);
|
|
267
|
+
}
|
|
268
|
+
};
|
|
269
|
+
const progress = Promise.all(framesToRender.map((frame, index) => renderFrameAndRetryTargetClose(frame, index, MAX_RETRIES_PER_FRAME, 1)));
|
|
203
270
|
const happyPath = progress.then(() => {
|
|
271
|
+
const firstFrameIndex = countType === 'from-zero' ? 0 : framesToRender[0];
|
|
204
272
|
const returnValue = {
|
|
205
273
|
assetsInfo: {
|
|
206
274
|
assets,
|
|
207
275
|
imageSequenceName: `element-%0${filePadLength}d.${imageFormat}`,
|
|
208
|
-
firstFrameIndex
|
|
276
|
+
firstFrameIndex,
|
|
209
277
|
downloadMap,
|
|
210
278
|
},
|
|
211
279
|
frameCount: framesToRender.length,
|
|
@@ -218,35 +286,51 @@ const innerRenderFrames = ({ onFrameUpdate, outputDir, onStart, inputProps, qual
|
|
|
218
286
|
})
|
|
219
287
|
.then(() => happyPath);
|
|
220
288
|
};
|
|
289
|
+
/**
|
|
290
|
+
* @description Renders a series of images using Puppeteer and computes information for mixing audio.
|
|
291
|
+
* @see [Documentation](https://www.remotion.dev/docs/renderer/render-frames)
|
|
292
|
+
*/
|
|
221
293
|
const renderFrames = (options) => {
|
|
222
|
-
var _a, _b, _c
|
|
294
|
+
var _a, _b, _c;
|
|
223
295
|
const composition = getComposition(options);
|
|
296
|
+
const concurrency = getConcurrency(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(
|
|
303
|
+
remotion_1.Internals.validateDurationInFrames({
|
|
304
|
+
durationInFrames: composition.durationInFrames,
|
|
305
|
+
component: 'in the `config` object passed to `renderFrames()`',
|
|
306
|
+
allowFloats: false,
|
|
307
|
+
});
|
|
231
308
|
if (options.quality !== undefined && options.imageFormat !== 'jpeg') {
|
|
232
309
|
throw new Error("You can only pass the `quality` option if `imageFormat` is 'jpeg'.");
|
|
233
310
|
}
|
|
234
311
|
const selectedServeUrl = (0, legacy_webpack_config_1.getServeUrlWithFallback)(options);
|
|
235
312
|
(0, quality_1.validateQuality)(options.quality);
|
|
236
313
|
(0, validate_scale_1.validateScale)(options.scale);
|
|
237
|
-
const
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
314
|
+
const makeBrowser = () => {
|
|
315
|
+
var _a;
|
|
316
|
+
return (0, open_browser_1.openBrowser)(browser_1.DEFAULT_BROWSER, {
|
|
317
|
+
shouldDumpIo: options.dumpBrowserLogs,
|
|
318
|
+
browserExecutable: options.browserExecutable,
|
|
319
|
+
chromiumOptions: options.chromiumOptions,
|
|
320
|
+
forceDeviceScaleFactor: (_a = options.scale) !== null && _a !== void 0 ? _a : 1,
|
|
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,7 +338,7 @@ 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([
|
|
@@ -266,12 +350,14 @@ const renderFrames = (options) => {
|
|
|
266
350
|
ffprobeExecutable: (_b = options.ffprobeExecutable) !== null && _b !== void 0 ? _b : null,
|
|
267
351
|
port: (_c = options.port) !== null && _c !== void 0 ? _c : null,
|
|
268
352
|
downloadMap,
|
|
353
|
+
remotionRoot: (0, find_closest_package_json_1.findRemotionRoot)(),
|
|
269
354
|
}),
|
|
270
355
|
browserInstance,
|
|
271
356
|
]).then(([{ serveUrl, closeServer, offthreadPort }, puppeteerInstance]) => {
|
|
272
|
-
const
|
|
357
|
+
const browserReplacer = (0, replace_browser_1.handleBrowserCrash)(puppeteerInstance);
|
|
358
|
+
const { stopCycling } = (0, cycle_browser_tabs_1.cycleBrowserTabs)(browserReplacer, actualConcurrency);
|
|
273
359
|
cleanup.push(stopCycling);
|
|
274
|
-
cleanup.push(closeServer);
|
|
360
|
+
cleanup.push(() => closeServer(false));
|
|
275
361
|
return innerRenderFrames({
|
|
276
362
|
...options,
|
|
277
363
|
puppeteerInstance,
|
|
@@ -279,10 +365,12 @@ const renderFrames = (options) => {
|
|
|
279
365
|
pagesArray: openedPages,
|
|
280
366
|
serveUrl,
|
|
281
367
|
composition,
|
|
282
|
-
|
|
368
|
+
actualConcurrency,
|
|
283
369
|
onDownload,
|
|
284
370
|
proxyPort: offthreadPort,
|
|
285
371
|
downloadMap,
|
|
372
|
+
makeBrowser,
|
|
373
|
+
browserReplacer,
|
|
286
374
|
});
|
|
287
375
|
}),
|
|
288
376
|
])
|
|
@@ -296,16 +384,20 @@ const renderFrames = (options) => {
|
|
|
296
384
|
// If new browser was opened, then closing the browser as a cleanup.
|
|
297
385
|
if (options.puppeteerInstance) {
|
|
298
386
|
Promise.all(openedPages.map((p) => p.close())).catch((err) => {
|
|
299
|
-
|
|
387
|
+
if (!(err === null || err === void 0 ? void 0 : err.message.includes('Target closed'))) {
|
|
388
|
+
console.log('Unable to close browser tab', err);
|
|
389
|
+
}
|
|
300
390
|
});
|
|
301
391
|
}
|
|
302
392
|
else {
|
|
303
393
|
Promise.resolve(browserInstance)
|
|
304
394
|
.then((puppeteerInstance) => {
|
|
305
|
-
return puppeteerInstance.close();
|
|
395
|
+
return puppeteerInstance.close(true);
|
|
306
396
|
})
|
|
307
397
|
.catch((err) => {
|
|
308
|
-
|
|
398
|
+
if (!(err === null || err === void 0 ? void 0 : err.message.includes('Target closed'))) {
|
|
399
|
+
console.log('Unable to close browser', err);
|
|
400
|
+
}
|
|
309
401
|
});
|
|
310
402
|
}
|
|
311
403
|
cleanup.forEach((c) => {
|