@remotion/renderer 4.0.0-webhook.27 → 4.1.0-alpha2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +8 -8
- package/README.md +9 -0
- package/client.d.ts +1 -0
- package/client.js +1 -0
- package/dist/assets/calculate-asset-positions.d.ts +0 -0
- package/dist/assets/calculate-asset-positions.js +1 -0
- package/dist/assets/calculate-atempo.d.ts +0 -0
- package/dist/assets/calculate-atempo.js +0 -0
- package/dist/assets/convert-assets-to-file-urls.d.ts +0 -0
- package/dist/assets/convert-assets-to-file-urls.js +0 -0
- package/dist/assets/download-and-map-assets-to-file.d.ts +6 -4
- package/dist/assets/download-and-map-assets-to-file.js +49 -19
- package/dist/assets/download-file.d.ts +8 -5
- package/dist/assets/download-file.js +71 -8
- package/dist/assets/download-map.d.ts +8 -29
- package/dist/assets/download-map.js +15 -16
- package/dist/assets/ffmpeg-volume-expression.d.ts +4 -3
- package/dist/assets/ffmpeg-volume-expression.js +5 -3
- package/dist/assets/flatten-volume-array.d.ts +0 -0
- package/dist/assets/flatten-volume-array.js +0 -0
- package/dist/assets/get-audio-channels.d.ts +2 -2
- package/dist/assets/get-audio-channels.js +14 -12
- package/dist/assets/read-file.d.ts +1 -1
- package/dist/assets/read-file.js +5 -7
- package/dist/assets/round-volume-to-avoid-stack-overflow.d.ts +0 -0
- package/dist/assets/round-volume-to-avoid-stack-overflow.js +0 -0
- package/dist/assets/sanitize-filename.d.ts +0 -0
- package/dist/assets/sanitize-filename.js +0 -0
- package/dist/assets/sanitize-filepath.d.ts +0 -0
- package/dist/assets/sanitize-filepath.js +2 -2
- package/dist/assets/truncate-utf8-bytes.d.ts +0 -0
- package/dist/assets/truncate-utf8-bytes.js +0 -0
- package/dist/assets/types.d.ts +5 -4
- package/dist/assets/types.js +0 -0
- package/dist/audio-codec.d.ts +28 -0
- package/dist/audio-codec.js +83 -0
- package/dist/browser/Browser.d.ts +16 -14
- package/dist/browser/Browser.js +69 -72
- package/dist/browser/BrowserConnector.d.ts +0 -0
- package/dist/browser/BrowserConnector.js +0 -0
- package/dist/browser/BrowserFetcher.d.ts +16 -64
- package/dist/browser/BrowserFetcher.js +147 -235
- package/dist/browser/BrowserPage.d.ts +21 -6
- package/dist/browser/BrowserPage.js +54 -22
- package/dist/browser/BrowserRunner.d.ts +1 -1
- package/dist/browser/BrowserRunner.js +32 -22
- package/dist/browser/Connection.d.ts +0 -0
- package/dist/browser/Connection.js +1 -1
- package/dist/browser/ConsoleMessage.d.ts +1 -1
- package/dist/browser/ConsoleMessage.js +0 -0
- package/dist/browser/DOMWorld.d.ts +5 -4
- package/dist/browser/DOMWorld.js +16 -9
- package/dist/browser/Errors.d.ts +0 -0
- package/dist/browser/Errors.js +0 -0
- package/dist/browser/EvalTypes.d.ts +7 -7
- package/dist/browser/EvalTypes.js +0 -0
- package/dist/browser/EventEmitter.d.ts +0 -0
- package/dist/browser/EventEmitter.js +0 -0
- package/dist/browser/ExecutionContext.d.ts +0 -0
- package/dist/browser/ExecutionContext.js +0 -0
- package/dist/browser/FrameManager.d.ts +0 -2
- package/dist/browser/FrameManager.js +13 -17
- package/dist/browser/HTTPRequest.d.ts +0 -0
- package/dist/browser/HTTPRequest.js +0 -0
- package/dist/browser/HTTPResponse.d.ts +0 -0
- package/dist/browser/HTTPResponse.js +0 -0
- package/dist/browser/JSHandle.d.ts +0 -0
- package/dist/browser/JSHandle.js +14 -14
- package/dist/browser/LaunchOptions.d.ts +2 -2
- package/dist/browser/LaunchOptions.js +0 -0
- package/dist/browser/Launcher.d.ts +9 -3
- package/dist/browser/Launcher.js +16 -29
- package/dist/browser/LifecycleWatcher.d.ts +1 -1
- package/dist/browser/LifecycleWatcher.js +0 -0
- package/dist/browser/NetworkEventManager.d.ts +4 -4
- package/dist/browser/NetworkEventManager.js +0 -0
- package/dist/browser/NetworkManager.d.ts +0 -0
- package/dist/browser/NetworkManager.js +0 -0
- package/dist/browser/NodeWebSocketTransport.d.ts +0 -0
- package/dist/browser/NodeWebSocketTransport.js +21 -21
- package/dist/browser/Product.d.ts +1 -1
- package/dist/browser/Product.js +0 -0
- package/dist/browser/PuppeteerNode.d.ts +2 -5
- package/dist/browser/PuppeteerNode.js +2 -11
- package/dist/browser/PuppeteerViewport.d.ts +0 -0
- package/dist/browser/PuppeteerViewport.js +0 -0
- package/dist/browser/ScreenshotOptions.d.ts +0 -14
- package/dist/browser/ScreenshotOptions.js +0 -1
- package/dist/browser/Target.d.ts +4 -3
- package/dist/browser/Target.js +8 -2
- package/dist/browser/TaskQueue.d.ts +0 -0
- package/dist/browser/TaskQueue.js +0 -0
- package/dist/browser/TimeoutSettings.d.ts +0 -0
- package/dist/browser/TimeoutSettings.js +0 -0
- package/dist/browser/assert.d.ts +0 -0
- package/dist/browser/assert.js +0 -0
- package/dist/browser/create-browser-fetcher.d.ts +0 -0
- package/dist/browser/create-browser-fetcher.js +34 -48
- package/dist/browser/devtools-commands.d.ts +5 -1
- package/dist/browser/devtools-commands.js +0 -0
- package/dist/browser/devtools-types.d.ts +92 -10
- package/dist/browser/devtools-types.js +0 -0
- package/dist/browser/get-download-destination.d.ts +0 -0
- package/dist/browser/get-download-destination.js +8 -8
- package/dist/browser/is-target-closed-err.d.ts +1 -0
- package/dist/browser/is-target-closed-err.js +9 -0
- package/dist/browser/mitt/index.d.ts +6 -6
- package/dist/browser/mitt/index.js +0 -0
- package/dist/browser/node.d.ts +0 -0
- package/dist/browser/node.js +0 -0
- package/dist/browser/revisions.d.ts +1 -1
- package/dist/browser/revisions.js +0 -0
- package/dist/browser/should-log-message.d.ts +24 -0
- package/dist/browser/should-log-message.js +72 -0
- package/dist/browser/util.d.ts +2 -2
- package/dist/browser/util.js +0 -0
- package/dist/browser-executable.d.ts +1 -1
- package/dist/browser-executable.js +0 -0
- package/dist/browser-log.d.ts +1 -1
- package/dist/browser-log.js +0 -0
- package/dist/browser.d.ts +1 -1
- package/dist/browser.js +0 -0
- package/dist/calculate-ffmpeg-filters.d.ts +2 -1
- package/dist/calculate-ffmpeg-filters.js +1 -0
- package/dist/call-ffmpeg.d.ts +14 -0
- package/dist/call-ffmpeg.js +42 -0
- package/dist/can-use-parallel-encoding.d.ts +0 -0
- package/dist/can-use-parallel-encoding.js +0 -0
- package/dist/chalk/index.d.ts +54 -0
- package/dist/chalk/index.js +135 -0
- package/dist/chalk/is-color-supported.d.ts +1 -0
- package/dist/chalk/is-color-supported.js +37 -0
- package/dist/check-apple-silicon.d.ts +1 -1
- package/dist/check-apple-silicon.js +8 -47
- package/dist/chunk.d.ts +0 -0
- package/dist/chunk.js +0 -0
- package/dist/client.d.ts +204 -0
- package/dist/client.js +49 -0
- package/dist/codec-supports-media.d.ts +3 -2
- package/dist/codec-supports-media.js +20 -5
- package/dist/codec.d.ts +2 -2
- package/dist/codec.js +0 -0
- package/dist/combine-videos.d.ts +6 -2
- package/dist/combine-videos.js +17 -17
- package/dist/compositor/compose.d.ts +26 -0
- package/dist/compositor/compose.js +82 -0
- package/dist/compositor/compositor.d.ts +11 -0
- package/dist/compositor/compositor.js +219 -0
- package/dist/compositor/get-executable-path.d.ts +1 -0
- package/dist/compositor/get-executable-path.js +57 -0
- package/dist/compositor/make-nonce.d.ts +1 -0
- package/dist/compositor/make-nonce.js +8 -0
- package/dist/compositor/payloads.d.ts +68 -0
- package/dist/{ffmpeg-executable.js → compositor/payloads.js} +0 -0
- package/dist/compress-assets.d.ts +0 -0
- package/dist/compress-assets.js +0 -0
- package/dist/convert-number-of-gif-loops-to-ffmpeg.d.ts +0 -0
- package/dist/convert-number-of-gif-loops-to-ffmpeg.js +0 -0
- package/dist/convert-to-positive-frame-index.d.ts +0 -0
- package/dist/convert-to-positive-frame-index.js +0 -0
- package/dist/create-ffmpeg-complex-filter.d.ts +5 -1
- package/dist/create-ffmpeg-complex-filter.js +6 -4
- package/dist/create-ffmpeg-merge-filter.d.ts +5 -1
- package/dist/create-ffmpeg-merge-filter.js +21 -13
- package/dist/create-silent-audio.d.ts +1 -3
- package/dist/create-silent-audio.js +3 -6
- package/dist/crf.d.ts +6 -2
- package/dist/crf.js +41 -8
- package/dist/cycle-browser-tabs.d.ts +2 -5
- package/dist/cycle-browser-tabs.js +5 -5
- package/dist/delay-render-embedded-stack.d.ts +0 -0
- package/dist/delay-render-embedded-stack.js +0 -0
- package/dist/delete-directory.d.ts +1 -1
- package/dist/delete-directory.js +43 -17
- package/dist/does-have-m2-bug.d.ts +3 -0
- package/dist/does-have-m2-bug.js +12 -0
- package/dist/ensure-frames-in-order.d.ts +0 -0
- package/dist/ensure-frames-in-order.js +0 -0
- package/dist/ensure-output-directory.d.ts +0 -0
- package/dist/ensure-output-directory.js +5 -5
- package/dist/error-handling/handle-javascript-exception.d.ts +0 -0
- package/dist/error-handling/handle-javascript-exception.js +10 -0
- package/dist/error-handling/symbolicate-error.d.ts +0 -0
- package/dist/error-handling/symbolicate-error.js +6 -3
- package/dist/error-handling/symbolicateable-error.d.ts +0 -0
- package/dist/error-handling/symbolicateable-error.js +0 -0
- package/dist/ffmpeg-filter-file.d.ts +6 -1
- package/dist/ffmpeg-filter-file.js +40 -8
- package/dist/ffmpeg-override.d.ts +1 -1
- package/dist/ffmpeg-override.js +0 -0
- package/dist/file-extensions.d.ts +14 -0
- package/dist/file-extensions.js +76 -0
- package/dist/find-closest-package-json.d.ts +2 -0
- package/dist/find-closest-package-json.js +31 -0
- package/dist/frame-range.d.ts +1 -1
- package/dist/frame-range.js +0 -0
- package/dist/get-browser-instance.d.ts +8 -3
- package/dist/get-browser-instance.js +10 -5
- package/dist/get-codec-name.d.ts +0 -0
- package/dist/get-codec-name.js +0 -0
- package/dist/get-compositions.d.ts +27 -14
- package/dist/get-compositions.js +72 -39
- package/dist/get-concurrency.d.ts +1 -1
- package/dist/get-concurrency.js +11 -4
- package/dist/get-duration-from-frame-range.d.ts +0 -0
- package/dist/get-duration-from-frame-range.js +0 -0
- package/dist/get-extension-from-codec.d.ts +5 -1
- package/dist/get-extension-from-codec.js +56 -32
- package/dist/get-extension-of-filename.d.ts +0 -0
- package/dist/get-extension-of-filename.js +5 -1
- package/dist/get-frame-padded-index.d.ts +3 -2
- package/dist/get-frame-padded-index.js +3 -2
- package/dist/get-frame-to-render.d.ts +0 -0
- package/dist/get-frame-to-render.js +1 -1
- package/dist/get-local-browser-executable.d.ts +0 -0
- package/dist/get-local-browser-executable.js +7 -15
- package/dist/get-port.d.ts +4 -1
- package/dist/get-port.js +8 -8
- package/dist/get-prores-profile-name.d.ts +0 -0
- package/dist/get-prores-profile-name.js +0 -0
- package/dist/get-video-threads-flag.d.ts +0 -0
- package/dist/get-video-threads-flag.js +3 -3
- package/dist/guess-extension-for-media.d.ts +3 -1
- package/dist/guess-extension-for-media.js +4 -7
- package/dist/image-format.d.ts +12 -6
- package/dist/image-format.js +19 -13
- package/dist/index.d.ts +368 -49
- package/dist/index.js +68 -46
- package/dist/is-audio-codec.d.ts +0 -0
- package/dist/is-audio-codec.js +0 -0
- package/dist/is-serve-url.d.ts +0 -0
- package/dist/is-serve-url.js +0 -0
- package/dist/jpeg-quality.d.ts +2 -0
- package/dist/jpeg-quality.js +22 -0
- package/dist/locks.d.ts +7 -0
- package/dist/locks.js +44 -0
- package/dist/log-level.d.ts +1 -1
- package/dist/log-level.js +0 -0
- package/dist/logger.d.ts +24 -0
- package/dist/logger.js +68 -0
- package/dist/make-cancel-signal.d.ts +13 -2
- package/dist/make-cancel-signal.js +24 -1
- package/dist/merge-audio-track.d.ts +4 -4
- package/dist/merge-audio-track.js +38 -33
- package/dist/mime-db.d.ts +0 -0
- package/dist/mime-db.js +0 -0
- package/dist/mime-types.d.ts +0 -0
- package/dist/mime-types.js +3 -3
- package/dist/normalize-serve-url.d.ts +0 -0
- package/dist/normalize-serve-url.js +0 -0
- package/dist/offthread-video-server.d.ts +47 -11
- package/dist/offthread-video-server.js +111 -58
- package/dist/open-browser.d.ts +21 -6
- package/dist/open-browser.js +37 -16
- package/dist/options/audio-bitrate.d.ts +2 -0
- package/dist/options/audio-bitrate.js +11 -0
- package/dist/options/crf.d.ts +2 -0
- package/dist/options/crf.js +11 -0
- package/dist/options/enforce-audio.d.ts +2 -0
- package/dist/options/enforce-audio.js +11 -0
- package/dist/options/jpeg-quality.d.ts +2 -0
- package/dist/options/jpeg-quality.js +11 -0
- package/dist/options/mute.d.ts +2 -0
- package/dist/options/mute.js +11 -0
- package/dist/options/option.d.ts +8 -0
- package/dist/options/option.js +2 -0
- package/dist/options/scale.d.ts +2 -0
- package/dist/options/scale.js +11 -0
- package/dist/options/video-bitrate.d.ts +2 -0
- package/dist/options/video-bitrate.js +11 -0
- package/dist/options/video-codec.d.ts +2 -0
- package/dist/options/video-codec.js +11 -0
- package/dist/overwrite.d.ts +0 -0
- package/dist/overwrite.js +0 -0
- package/dist/p-limit.d.ts +0 -0
- package/dist/p-limit.js +0 -0
- package/dist/parse-browser-error-stack.d.ts +1 -1
- package/dist/parse-browser-error-stack.js +0 -0
- package/dist/parse-ffmpeg-progress.d.ts +0 -0
- package/dist/parse-ffmpeg-progress.js +0 -0
- package/dist/perf.d.ts +2 -2
- package/dist/perf.js +9 -7
- package/dist/pixel-format.d.ts +2 -2
- package/dist/pixel-format.js +3 -0
- package/dist/pool.d.ts +0 -0
- package/dist/pool.js +0 -0
- package/dist/prepare-server.d.ts +25 -10
- package/dist/prepare-server.js +71 -18
- package/dist/preprocess-audio-track.d.ts +7 -5
- package/dist/preprocess-audio-track.js +7 -8
- package/dist/prespawn-ffmpeg.d.ts +20 -10
- package/dist/prespawn-ffmpeg.js +67 -29
- package/dist/prestitcher-memory-usage.d.ts +0 -4
- package/dist/prestitcher-memory-usage.js +4 -5
- package/dist/prores-profile.d.ts +6 -4
- package/dist/prores-profile.js +8 -8
- package/dist/provide-screenshot.d.ts +8 -4
- package/dist/provide-screenshot.js +5 -2
- package/dist/puppeteer-evaluate.d.ts +0 -0
- package/dist/puppeteer-evaluate.js +20 -12
- package/dist/puppeteer-screenshot.d.ts +12 -2
- package/dist/puppeteer-screenshot.js +18 -45
- package/dist/redirect-status-codes.d.ts +1 -0
- package/dist/redirect-status-codes.js +6 -0
- package/dist/render-frames.d.ts +52 -35
- package/dist/render-frames.js +248 -143
- package/dist/render-media.d.ts +76 -29
- package/dist/render-media.js +324 -195
- package/dist/render-still.d.ts +46 -19
- package/dist/render-still.js +128 -69
- package/dist/replace-browser.d.ts +6 -0
- package/dist/replace-browser.js +47 -0
- package/dist/resolve-asset-src.d.ts +0 -0
- package/dist/resolve-asset-src.js +2 -2
- package/dist/sample-rate.d.ts +0 -0
- package/dist/sample-rate.js +0 -0
- package/dist/screenshot-dom-element.d.ts +8 -4
- package/dist/screenshot-dom-element.js +15 -4
- package/dist/screenshot-task.d.ts +11 -2
- package/dist/screenshot-task.js +43 -13
- package/dist/seek-to-frame.d.ts +1 -0
- package/dist/seek-to-frame.js +49 -3
- package/dist/select-composition.d.ts +41 -0
- package/dist/select-composition.js +156 -0
- package/dist/serve-handler/index.d.ts +1 -1
- package/dist/serve-handler/index.js +21 -19
- package/dist/serve-handler/is-path-inside.d.ts +0 -0
- package/dist/serve-handler/is-path-inside.js +3 -3
- package/dist/serve-handler/range-parser.d.ts +0 -0
- package/dist/serve-handler/range-parser.js +0 -0
- package/dist/serve-static.d.ts +8 -6
- package/dist/serve-static.js +85 -59
- package/dist/set-props-and-env.d.ts +5 -3
- package/dist/set-props-and-env.js +18 -10
- package/dist/stitch-frames-to-video.d.ts +39 -16
- package/dist/stitch-frames-to-video.js +210 -121
- package/dist/stringify-ffmpeg-filter.d.ts +10 -2
- package/dist/stringify-ffmpeg-filter.js +37 -34
- package/dist/symbolicate-stacktrace.d.ts +16 -3
- package/dist/symbolicate-stacktrace.js +49 -24
- package/dist/take-frame-and-compose.d.ts +22 -0
- package/dist/take-frame-and-compose.js +103 -0
- package/dist/tmp-dir.d.ts +0 -0
- package/dist/tmp-dir.js +7 -8
- package/dist/truthy.d.ts +1 -1
- package/dist/truthy.js +0 -0
- package/dist/types.d.ts +2 -2
- package/dist/types.js +0 -0
- package/dist/validate-concurrency.d.ts +2 -0
- package/dist/validate-concurrency.js +21 -10
- package/dist/validate-even-dimensions-with-codec.d.ts +0 -0
- package/dist/validate-even-dimensions-with-codec.js +0 -0
- package/dist/validate-every-nth-frame.d.ts +2 -1
- package/dist/validate-every-nth-frame.js +8 -1
- package/dist/validate-ffmpeg-override.d.ts +0 -0
- package/dist/validate-ffmpeg-override.js +0 -0
- package/dist/validate-number-of-gif-loops.d.ts +2 -0
- package/dist/validate-number-of-gif-loops.js +24 -0
- package/dist/validate-opengl-renderer.d.ts +2 -3
- package/dist/validate-opengl-renderer.js +9 -4
- package/dist/validate-output-filename.d.ts +7 -2
- package/dist/validate-output-filename.js +20 -51
- package/dist/validate-puppeteer-timeout.d.ts +0 -0
- package/dist/validate-puppeteer-timeout.js +1 -0
- package/dist/validate-scale.d.ts +0 -0
- package/dist/validate-scale.js +0 -0
- package/dist/validate-videobitrate.d.ts +1 -0
- package/dist/validate-videobitrate.js +20 -0
- package/dist/wait-for-symbolication-error-to-be-done.d.ts +0 -0
- package/dist/wait-for-symbolication-error-to-be-done.js +5 -31
- package/dist/ws/ws-types.d.ts +0 -0
- package/dist/ws/ws-types.js +2 -1
- package/install-toolchain.mjs +36 -0
- package/package.json +70 -60
- package/types/ws/index.d.ts +5 -5
- package/.prettierrc.js +0 -14
- package/dist/assets/dl-browser.d.ts +0 -1
- package/dist/assets/dl-browser.js +0 -38
- package/dist/assets/get-video-stream-duration.d.ts +0 -4
- package/dist/assets/get-video-stream-duration.js +0 -59
- package/dist/calculate-sar-dar-pixels.d.ts +0 -9
- package/dist/calculate-sar-dar-pixels.js +0 -19
- package/dist/convert-to-pcm.d.ts +0 -6
- package/dist/convert-to-pcm.js +0 -20
- package/dist/ensure-presentation-timestamp.d.ts +0 -2
- package/dist/ensure-presentation-timestamp.js +0 -69
- package/dist/extract-frame-from-video.d.ts +0 -16
- package/dist/extract-frame-from-video.js +0 -277
- package/dist/ffmpeg-executable.d.ts +0 -1
- package/dist/ffmpeg-flags.d.ts +0 -12
- package/dist/ffmpeg-flags.js +0 -45
- package/dist/frame-to-ffmpeg-timestamp.d.ts +0 -1
- package/dist/frame-to-ffmpeg-timestamp.js +0 -8
- package/dist/get-audio-codec-name.d.ts +0 -2
- package/dist/get-audio-codec-name.js +0 -28
- package/dist/get-video-info.d.ts +0 -3
- package/dist/get-video-info.js +0 -49
- package/dist/is-beyond-last-frame.d.ts +0 -3
- package/dist/is-beyond-last-frame.js +0 -12
- package/dist/last-frame-from-video-cache.d.ts +0 -17
- package/dist/last-frame-from-video-cache.js +0 -55
- package/dist/legacy-webpack-config.d.ts +0 -9
- package/dist/legacy-webpack-config.js +0 -13
- package/dist/quality.d.ts +0 -1
- package/dist/quality.js +0 -21
- package/dist/validate-ffmpeg.d.ts +0 -2
- package/dist/validate-ffmpeg.js +0 -72
- package/dist/validate-frame.d.ts +0 -1
- package/dist/validate-frame.js +0 -24
- package/tsconfig.json +0 -10
- package/vitest.config.ts +0 -8
package/dist/pixel-format.js
CHANGED
|
@@ -13,6 +13,9 @@ exports.validPixelFormats = [
|
|
|
13
13
|
];
|
|
14
14
|
exports.DEFAULT_PIXEL_FORMAT = 'yuv420p';
|
|
15
15
|
const validateSelectedPixelFormatAndCodecCombination = (pixelFormat, codec) => {
|
|
16
|
+
if (typeof pixelFormat === 'undefined') {
|
|
17
|
+
return pixelFormat;
|
|
18
|
+
}
|
|
16
19
|
if (!exports.validPixelFormats.includes(pixelFormat)) {
|
|
17
20
|
throw new TypeError(`Value ${pixelFormat} is not valid as a pixel format.`);
|
|
18
21
|
}
|
package/dist/pool.d.ts
CHANGED
|
File without changes
|
package/dist/pool.js
CHANGED
|
File without changes
|
package/dist/prepare-server.d.ts
CHANGED
|
@@ -1,16 +1,31 @@
|
|
|
1
1
|
import type { RenderMediaOnDownload } from './assets/download-and-map-assets-to-file';
|
|
2
2
|
import type { DownloadMap } from './assets/download-map';
|
|
3
|
-
import type {
|
|
4
|
-
|
|
3
|
+
import type { Compositor } from './compositor/compositor';
|
|
4
|
+
import type { OffthreadVideoServerEmitter } from './offthread-video-server';
|
|
5
|
+
import type { AnySourceMapConsumer } from './symbolicate-stacktrace';
|
|
6
|
+
export type RemotionServer = {
|
|
7
|
+
serveUrl: string;
|
|
8
|
+
closeServer: (force: boolean) => Promise<unknown>;
|
|
9
|
+
offthreadPort: number;
|
|
10
|
+
compositor: Compositor;
|
|
11
|
+
sourceMap: AnySourceMapConsumer | null;
|
|
12
|
+
events: OffthreadVideoServerEmitter;
|
|
13
|
+
downloadMap: DownloadMap;
|
|
14
|
+
};
|
|
15
|
+
type PrepareServerOptions = {
|
|
5
16
|
webpackConfigOrServeUrl: string;
|
|
6
|
-
onDownload: RenderMediaOnDownload;
|
|
7
|
-
onError: (err: Error) => void;
|
|
8
|
-
ffmpegExecutable: FfmpegExecutable;
|
|
9
|
-
ffprobeExecutable: FfmpegExecutable;
|
|
10
17
|
port: number | null;
|
|
11
|
-
|
|
18
|
+
remotionRoot: string;
|
|
19
|
+
concurrency: number;
|
|
20
|
+
verbose: boolean;
|
|
21
|
+
indent: boolean;
|
|
22
|
+
};
|
|
23
|
+
export declare const prepareServer: ({ webpackConfigOrServeUrl, port, remotionRoot, concurrency, verbose, indent, }: PrepareServerOptions) => Promise<RemotionServer>;
|
|
24
|
+
export declare const makeOrReuseServer: (server: RemotionServer | undefined, config: PrepareServerOptions, { onDownload, onError, }: {
|
|
25
|
+
onError: (err: Error) => void;
|
|
26
|
+
onDownload: RenderMediaOnDownload | null;
|
|
12
27
|
}) => Promise<{
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
offthreadPort: number;
|
|
28
|
+
server: RemotionServer;
|
|
29
|
+
cleanupServer: (force: boolean) => Promise<unknown>;
|
|
16
30
|
}>;
|
|
31
|
+
export {};
|
package/dist/prepare-server.js
CHANGED
|
@@ -3,50 +3,103 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.prepareServer = void 0;
|
|
7
|
-
const
|
|
8
|
-
const
|
|
6
|
+
exports.makeOrReuseServer = exports.prepareServer = void 0;
|
|
7
|
+
const node_fs_1 = require("node:fs");
|
|
8
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
9
|
+
const remotion_1 = require("remotion");
|
|
10
|
+
const download_and_map_assets_to_file_1 = require("./assets/download-and-map-assets-to-file");
|
|
11
|
+
const download_map_1 = require("./assets/download-map");
|
|
9
12
|
const is_serve_url_1 = require("./is-serve-url");
|
|
13
|
+
const logger_1 = require("./logger");
|
|
10
14
|
const serve_static_1 = require("./serve-static");
|
|
15
|
+
const symbolicate_stacktrace_1 = require("./symbolicate-stacktrace");
|
|
11
16
|
const wait_for_symbolication_error_to_be_done_1 = require("./wait-for-symbolication-error-to-be-done");
|
|
12
|
-
const prepareServer = async ({
|
|
17
|
+
const prepareServer = async ({ webpackConfigOrServeUrl, port, remotionRoot, concurrency, verbose, indent, }) => {
|
|
18
|
+
const downloadMap = (0, download_map_1.makeDownloadMap)();
|
|
19
|
+
logger_1.Log.verboseAdvanced({ indent, logLevel: verbose ? 'verbose' : 'info' }, 'Created directory for temporary files', downloadMap.assetDir);
|
|
13
20
|
if ((0, is_serve_url_1.isServeUrl)(webpackConfigOrServeUrl)) {
|
|
14
|
-
const { port: offthreadPort, close: closeProxy } = await (0, serve_static_1.serveStatic)(null, {
|
|
15
|
-
onDownload,
|
|
16
|
-
onError,
|
|
17
|
-
ffmpegExecutable,
|
|
18
|
-
ffprobeExecutable,
|
|
21
|
+
const { port: offthreadPort, close: closeProxy, compositor: comp, events, } = await (0, serve_static_1.serveStatic)(null, {
|
|
19
22
|
port,
|
|
20
23
|
downloadMap,
|
|
24
|
+
remotionRoot,
|
|
25
|
+
concurrency,
|
|
26
|
+
verbose,
|
|
27
|
+
indent,
|
|
21
28
|
});
|
|
22
29
|
return Promise.resolve({
|
|
23
30
|
serveUrl: webpackConfigOrServeUrl,
|
|
24
31
|
closeServer: () => {
|
|
32
|
+
(0, download_map_1.cleanDownloadMap)(downloadMap);
|
|
25
33
|
return closeProxy();
|
|
26
34
|
},
|
|
27
35
|
offthreadPort,
|
|
36
|
+
compositor: comp,
|
|
37
|
+
sourceMap: null,
|
|
38
|
+
events,
|
|
39
|
+
downloadMap,
|
|
28
40
|
});
|
|
29
41
|
}
|
|
30
42
|
// Check if the path has a `index.html` file
|
|
31
|
-
const indexFile =
|
|
32
|
-
const exists = (0,
|
|
43
|
+
const indexFile = node_path_1.default.join(webpackConfigOrServeUrl, 'index.html');
|
|
44
|
+
const exists = (0, node_fs_1.existsSync)(indexFile);
|
|
33
45
|
if (!exists) {
|
|
34
46
|
throw new Error(`Tried to serve the Webpack bundle on a HTTP server, but the file ${indexFile} does not exist. Is this a valid path to a Webpack bundle?`);
|
|
35
47
|
}
|
|
36
|
-
const
|
|
37
|
-
|
|
38
|
-
onError,
|
|
39
|
-
ffmpegExecutable,
|
|
40
|
-
ffprobeExecutable,
|
|
48
|
+
const sourceMap = (0, symbolicate_stacktrace_1.getSourceMapFromLocalFile)(node_path_1.default.join(webpackConfigOrServeUrl, remotion_1.Internals.bundleName));
|
|
49
|
+
const { port: serverPort, close, compositor, events: newEvents, } = await (0, serve_static_1.serveStatic)(webpackConfigOrServeUrl, {
|
|
41
50
|
port,
|
|
42
51
|
downloadMap,
|
|
52
|
+
remotionRoot,
|
|
53
|
+
concurrency,
|
|
54
|
+
verbose,
|
|
55
|
+
indent,
|
|
43
56
|
});
|
|
44
57
|
return Promise.resolve({
|
|
45
|
-
closeServer: () => {
|
|
46
|
-
|
|
58
|
+
closeServer: async (force) => {
|
|
59
|
+
sourceMap.then((s) => s === null || s === void 0 ? void 0 : s.destroy());
|
|
60
|
+
(0, download_map_1.cleanDownloadMap)(downloadMap);
|
|
61
|
+
if (!force) {
|
|
62
|
+
await (0, wait_for_symbolication_error_to_be_done_1.waitForSymbolicationToBeDone)();
|
|
63
|
+
}
|
|
64
|
+
return close();
|
|
47
65
|
},
|
|
48
66
|
serveUrl: `http://localhost:${serverPort}`,
|
|
49
67
|
offthreadPort: serverPort,
|
|
68
|
+
compositor,
|
|
69
|
+
sourceMap: await sourceMap,
|
|
70
|
+
events: newEvents,
|
|
71
|
+
downloadMap,
|
|
50
72
|
});
|
|
51
73
|
};
|
|
52
74
|
exports.prepareServer = prepareServer;
|
|
75
|
+
const makeOrReuseServer = async (server, config, { onDownload, onError, }) => {
|
|
76
|
+
if (server) {
|
|
77
|
+
const cleanupOnDownload = (0, download_and_map_assets_to_file_1.attachDownloadListenerToEmitter)(server.events, onDownload);
|
|
78
|
+
const cleanupError = server.events.addEventListener('error', ({ detail: { error } }) => {
|
|
79
|
+
onError(error);
|
|
80
|
+
});
|
|
81
|
+
return {
|
|
82
|
+
server,
|
|
83
|
+
cleanupServer: () => {
|
|
84
|
+
cleanupOnDownload();
|
|
85
|
+
cleanupError();
|
|
86
|
+
return Promise.resolve();
|
|
87
|
+
},
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
const newServer = await (0, exports.prepareServer)(config);
|
|
91
|
+
const cleanupOnDownloadNew = (0, download_and_map_assets_to_file_1.attachDownloadListenerToEmitter)(newServer.events, onDownload);
|
|
92
|
+
const cleanupErrorNew = newServer.events.addEventListener('error', ({ detail: { error } }) => {
|
|
93
|
+
onError(error);
|
|
94
|
+
});
|
|
95
|
+
return {
|
|
96
|
+
server: newServer,
|
|
97
|
+
cleanupServer: (force) => {
|
|
98
|
+
newServer.closeServer(force);
|
|
99
|
+
cleanupOnDownloadNew();
|
|
100
|
+
cleanupErrorNew();
|
|
101
|
+
return Promise.resolve();
|
|
102
|
+
},
|
|
103
|
+
};
|
|
104
|
+
};
|
|
105
|
+
exports.makeOrReuseServer = makeOrReuseServer;
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
import type { DownloadMap } from './assets/download-map';
|
|
2
2
|
import type { MediaAsset } from './assets/types';
|
|
3
|
-
import type {
|
|
4
|
-
|
|
5
|
-
ffmpegExecutable: FfmpegExecutable;
|
|
6
|
-
ffprobeExecutable: FfmpegExecutable;
|
|
3
|
+
import type { ProcessedTrack } from './stringify-ffmpeg-filter';
|
|
4
|
+
type Options = {
|
|
7
5
|
outName: string;
|
|
8
6
|
asset: MediaAsset;
|
|
9
7
|
expectedFrames: number;
|
|
10
8
|
fps: number;
|
|
11
9
|
downloadMap: DownloadMap;
|
|
12
10
|
};
|
|
13
|
-
export
|
|
11
|
+
export type PreprocessedAudioTrack = {
|
|
12
|
+
outName: string;
|
|
13
|
+
filter: ProcessedTrack;
|
|
14
|
+
};
|
|
15
|
+
export declare const preprocessAudioTrack: (options: Options) => Promise<PreprocessedAudioTrack | null>;
|
|
14
16
|
export {};
|
|
@@ -1,17 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.preprocessAudioTrack = void 0;
|
|
7
|
-
const execa_1 = __importDefault(require("execa"));
|
|
8
4
|
const get_audio_channels_1 = require("./assets/get-audio-channels");
|
|
9
5
|
const calculate_ffmpeg_filters_1 = require("./calculate-ffmpeg-filters");
|
|
6
|
+
const call_ffmpeg_1 = require("./call-ffmpeg");
|
|
10
7
|
const ffmpeg_filter_file_1 = require("./ffmpeg-filter-file");
|
|
11
8
|
const p_limit_1 = require("./p-limit");
|
|
12
9
|
const resolve_asset_src_1 = require("./resolve-asset-src");
|
|
13
|
-
const
|
|
14
|
-
|
|
10
|
+
const sample_rate_1 = require("./sample-rate");
|
|
11
|
+
const preprocessAudioTrackUnlimited = async ({ outName, asset, expectedFrames, fps, downloadMap, }) => {
|
|
12
|
+
const { channels, duration } = await (0, get_audio_channels_1.getAudioChannelsAndDuration)(downloadMap, (0, resolve_asset_src_1.resolveAssetSrc)(asset.src));
|
|
15
13
|
const filter = (0, calculate_ffmpeg_filters_1.calculateFfmpegFilter)({
|
|
16
14
|
asset,
|
|
17
15
|
durationInFrames: expectedFrames,
|
|
@@ -28,11 +26,12 @@ const preprocessAudioTrackUnlimited = async ({ ffmpegExecutable, ffprobeExecutab
|
|
|
28
26
|
['-ac', '2'],
|
|
29
27
|
['-filter_script:a', file],
|
|
30
28
|
['-c:a', 'pcm_s16le'],
|
|
29
|
+
['-ar', String(sample_rate_1.DEFAULT_SAMPLE_RATE)],
|
|
31
30
|
['-y', outName],
|
|
32
31
|
].flat(2);
|
|
33
|
-
await (0,
|
|
32
|
+
await (0, call_ffmpeg_1.callFf)('ffmpeg', args);
|
|
34
33
|
cleanup();
|
|
35
|
-
return outName;
|
|
34
|
+
return { outName, filter };
|
|
36
35
|
};
|
|
37
36
|
const limit = (0, p_limit_1.pLimit)(2);
|
|
38
37
|
const preprocessAudioTrack = (options) => {
|
|
@@ -1,12 +1,20 @@
|
|
|
1
|
-
import execa from 'execa';
|
|
2
1
|
import type { Codec } from './codec';
|
|
3
|
-
import type { FfmpegExecutable } from './ffmpeg-executable';
|
|
4
2
|
import type { FfmpegOverrideFn } from './ffmpeg-override';
|
|
5
|
-
import type {
|
|
3
|
+
import type { VideoImageFormat } from './image-format';
|
|
6
4
|
import type { CancelSignal } from './make-cancel-signal';
|
|
7
5
|
import type { PixelFormat } from './pixel-format';
|
|
8
6
|
import type { ProResProfile } from './prores-profile';
|
|
9
|
-
|
|
7
|
+
type RunningStatus = {
|
|
8
|
+
type: 'running';
|
|
9
|
+
} | {
|
|
10
|
+
type: 'quit-successfully';
|
|
11
|
+
stderr: string;
|
|
12
|
+
} | {
|
|
13
|
+
type: 'quit-with-error';
|
|
14
|
+
exitCode: number;
|
|
15
|
+
stderr: string;
|
|
16
|
+
};
|
|
17
|
+
type PreStitcherOptions = {
|
|
10
18
|
fps: number;
|
|
11
19
|
width: number;
|
|
12
20
|
height: number;
|
|
@@ -17,13 +25,15 @@ declare type PreSticherOptions = {
|
|
|
17
25
|
onProgress: (progress: number) => void;
|
|
18
26
|
proResProfile: ProResProfile | undefined;
|
|
19
27
|
verbose: boolean;
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
ffmpegOverride?: FfmpegOverrideFn;
|
|
28
|
+
imageFormat: VideoImageFormat;
|
|
29
|
+
ffmpegOverride: FfmpegOverrideFn;
|
|
23
30
|
signal: CancelSignal;
|
|
31
|
+
videoBitrate: string | null;
|
|
32
|
+
indent: boolean;
|
|
24
33
|
};
|
|
25
|
-
export declare const prespawnFfmpeg: (options:
|
|
26
|
-
task: execa.ExecaChildProcess<string>;
|
|
34
|
+
export declare const prespawnFfmpeg: (options: PreStitcherOptions) => {
|
|
35
|
+
task: import("execa").ExecaChildProcess<string>;
|
|
27
36
|
getLogs: () => string;
|
|
28
|
-
|
|
37
|
+
getExitStatus: () => RunningStatus;
|
|
38
|
+
};
|
|
29
39
|
export {};
|
package/dist/prespawn-ffmpeg.js
CHANGED
|
@@ -1,21 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.prespawnFfmpeg = void 0;
|
|
7
|
-
const execa_1 = __importDefault(require("execa"));
|
|
8
4
|
const remotion_1 = require("remotion");
|
|
5
|
+
const call_ffmpeg_1 = require("./call-ffmpeg");
|
|
9
6
|
const codec_1 = require("./codec");
|
|
10
7
|
const crf_1 = require("./crf");
|
|
11
8
|
const get_codec_name_1 = require("./get-codec-name");
|
|
12
9
|
const get_prores_profile_name_1 = require("./get-prores-profile-name");
|
|
10
|
+
const logger_1 = require("./logger");
|
|
13
11
|
const parse_ffmpeg_progress_1 = require("./parse-ffmpeg-progress");
|
|
14
12
|
const pixel_format_1 = require("./pixel-format");
|
|
15
13
|
const validate_even_dimensions_with_codec_1 = require("./validate-even-dimensions-with-codec");
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
var _a, _b, _c, _d, _e, _f, _g;
|
|
14
|
+
const prespawnFfmpeg = (options) => {
|
|
15
|
+
var _a, _b, _c;
|
|
19
16
|
remotion_1.Internals.validateDimension(options.height, 'height', 'passed to `stitchFramesToVideo()`');
|
|
20
17
|
remotion_1.Internals.validateDimension(options.width, 'width', 'passed to `stitchFramesToVideo()`');
|
|
21
18
|
const codec = (_a = options.codec) !== null && _a !== void 0 ? _a : codec_1.DEFAULT_CODEC;
|
|
@@ -26,26 +23,40 @@ const prespawnFfmpeg = async (options) => {
|
|
|
26
23
|
codec,
|
|
27
24
|
scale: 1,
|
|
28
25
|
});
|
|
29
|
-
const
|
|
30
|
-
const pixelFormat = (_c = options.pixelFormat) !== null && _c !== void 0 ? _c : pixel_format_1.DEFAULT_PIXEL_FORMAT;
|
|
31
|
-
await (0, validate_ffmpeg_1.validateFfmpeg)((_d = options.ffmpegExecutable) !== null && _d !== void 0 ? _d : null);
|
|
26
|
+
const pixelFormat = (_b = options.pixelFormat) !== null && _b !== void 0 ? _b : pixel_format_1.DEFAULT_PIXEL_FORMAT;
|
|
32
27
|
const encoderName = (0, get_codec_name_1.getCodecName)(codec);
|
|
33
28
|
const proResProfileName = (0, get_prores_profile_name_1.getProResProfileName)(codec, options.proResProfile);
|
|
34
29
|
if (encoderName === null) {
|
|
35
30
|
throw new TypeError('encoderName is null: ' + JSON.stringify(options));
|
|
36
31
|
}
|
|
37
32
|
const supportsCrf = codec !== 'prores';
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
33
|
+
logger_1.Log.verboseAdvanced({
|
|
34
|
+
indent: options.indent,
|
|
35
|
+
logLevel: options.verbose ? 'verbose' : 'info',
|
|
36
|
+
tag: 'prespawnFfmpeg()',
|
|
37
|
+
}, 'encoder', encoderName);
|
|
38
|
+
logger_1.Log.verboseAdvanced({
|
|
39
|
+
indent: options.indent,
|
|
40
|
+
logLevel: options.verbose ? 'verbose' : 'info',
|
|
41
|
+
tag: 'prespawnFfmpeg()',
|
|
42
|
+
}, 'pixelFormat', pixelFormat);
|
|
43
|
+
if (supportsCrf) {
|
|
44
|
+
logger_1.Log.verboseAdvanced({
|
|
45
|
+
indent: options.indent,
|
|
46
|
+
logLevel: options.verbose ? 'verbose' : 'info',
|
|
47
|
+
tag: 'prespawnFfmpeg()',
|
|
48
|
+
}, 'pixelFormat', options.crf);
|
|
47
49
|
}
|
|
48
|
-
|
|
50
|
+
logger_1.Log.verboseAdvanced({
|
|
51
|
+
indent: options.indent,
|
|
52
|
+
logLevel: options.verbose ? 'verbose' : 'info',
|
|
53
|
+
tag: 'prespawnFfmpeg()',
|
|
54
|
+
}, 'codec', codec);
|
|
55
|
+
logger_1.Log.verboseAdvanced({
|
|
56
|
+
indent: options.indent,
|
|
57
|
+
logLevel: options.verbose ? 'verbose' : 'info',
|
|
58
|
+
tag: 'prespawnFfmpeg()',
|
|
59
|
+
}, 'proResProfileName', proResProfileName);
|
|
49
60
|
(0, pixel_format_1.validateSelectedPixelFormatAndCodecCombination)(pixelFormat, codec);
|
|
50
61
|
const ffmpegArgs = [
|
|
51
62
|
['-r', options.fps.toFixed(2)],
|
|
@@ -61,29 +72,38 @@ const prespawnFfmpeg = async (options) => {
|
|
|
61
72
|
// and specified the video codec.
|
|
62
73
|
['-c:v', encoderName],
|
|
63
74
|
proResProfileName ? ['-profile:v', proResProfileName] : null,
|
|
64
|
-
supportsCrf ? ['-crf', String(crf)] : null,
|
|
65
75
|
['-pix_fmt', pixelFormat],
|
|
66
76
|
// Without explicitly disabling auto-alt-ref,
|
|
67
77
|
// transparent WebM generation doesn't work
|
|
68
78
|
pixelFormat === 'yuva420p' ? ['-auto-alt-ref', '0'] : null,
|
|
69
|
-
|
|
79
|
+
...(0, crf_1.validateQualitySettings)({
|
|
80
|
+
crf: options.crf,
|
|
81
|
+
videoBitrate: options.videoBitrate,
|
|
82
|
+
codec,
|
|
83
|
+
}),
|
|
70
84
|
'-y',
|
|
71
85
|
options.outputLocation,
|
|
72
86
|
];
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
87
|
+
logger_1.Log.verboseAdvanced({
|
|
88
|
+
indent: options.indent,
|
|
89
|
+
logLevel: options.verbose ? 'verbose' : 'info',
|
|
90
|
+
tag: 'prespawnFfmpeg()',
|
|
91
|
+
}, 'Generated FFMPEG command:');
|
|
92
|
+
logger_1.Log.verboseAdvanced({
|
|
93
|
+
indent: options.indent,
|
|
94
|
+
logLevel: options.verbose ? 'verbose' : 'info',
|
|
95
|
+
tag: 'prespawnFfmpeg()',
|
|
96
|
+
}, ffmpegArgs.join(' '));
|
|
77
97
|
const ffmpegString = ffmpegArgs.flat(2).filter(Boolean);
|
|
78
98
|
const finalFfmpegString = options.ffmpegOverride
|
|
79
99
|
? options.ffmpegOverride({ type: 'pre-stitcher', args: ffmpegString })
|
|
80
100
|
: ffmpegString;
|
|
81
|
-
const task = (0,
|
|
101
|
+
const task = (0, call_ffmpeg_1.callFf)('ffmpeg', finalFfmpegString);
|
|
82
102
|
options.signal(() => {
|
|
83
103
|
task.kill();
|
|
84
104
|
});
|
|
85
105
|
let ffmpegOutput = '';
|
|
86
|
-
(
|
|
106
|
+
(_c = task.stderr) === null || _c === void 0 ? void 0 : _c.on('data', (data) => {
|
|
87
107
|
const str = data.toString();
|
|
88
108
|
ffmpegOutput += str;
|
|
89
109
|
if (options.onProgress) {
|
|
@@ -93,6 +113,24 @@ const prespawnFfmpeg = async (options) => {
|
|
|
93
113
|
}
|
|
94
114
|
}
|
|
95
115
|
});
|
|
96
|
-
|
|
116
|
+
let exitCode = {
|
|
117
|
+
type: 'running',
|
|
118
|
+
};
|
|
119
|
+
task.on('exit', (code) => {
|
|
120
|
+
if (typeof code === 'number' && code > 0) {
|
|
121
|
+
exitCode = {
|
|
122
|
+
type: 'quit-with-error',
|
|
123
|
+
exitCode: code,
|
|
124
|
+
stderr: ffmpegOutput,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
exitCode = {
|
|
129
|
+
type: 'quit-successfully',
|
|
130
|
+
stderr: ffmpegOutput,
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
return { task, getLogs: () => ffmpegOutput, getExitStatus: () => exitCode };
|
|
97
135
|
};
|
|
98
136
|
exports.prespawnFfmpeg = prespawnFfmpeg;
|
|
@@ -3,8 +3,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.shouldUseParallelEncoding =
|
|
7
|
-
const
|
|
6
|
+
exports.shouldUseParallelEncoding = void 0;
|
|
7
|
+
const node_os_1 = __importDefault(require("node:os"));
|
|
8
8
|
const estimateMemoryUsageForPrestitcher = ({ width, height, }) => {
|
|
9
9
|
// Empirically we detected that per 1 million pixels, FFMPEG uses around 1GB of memory, relatively independent of
|
|
10
10
|
// the duration of the video.
|
|
@@ -12,10 +12,9 @@ const estimateMemoryUsageForPrestitcher = ({ width, height, }) => {
|
|
|
12
12
|
const memoryUsageOfPixel = memoryUsageFor4K / 1000000;
|
|
13
13
|
return memoryUsageOfPixel * width * height;
|
|
14
14
|
};
|
|
15
|
-
exports.estimateMemoryUsageForPrestitcher = estimateMemoryUsageForPrestitcher;
|
|
16
15
|
const shouldUseParallelEncoding = ({ width, height, }) => {
|
|
17
|
-
const freeMemory =
|
|
18
|
-
const estimatedUsage =
|
|
16
|
+
const freeMemory = node_os_1.default.freemem();
|
|
17
|
+
const estimatedUsage = estimateMemoryUsageForPrestitcher({
|
|
19
18
|
height,
|
|
20
19
|
width,
|
|
21
20
|
});
|
package/dist/prores-profile.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type { Codec } from './codec';
|
|
2
|
-
declare const proResProfileOptions: readonly ["4444-xq", "4444", "hq", "standard", "light", "proxy"];
|
|
3
|
-
export
|
|
4
|
-
export declare const validateSelectedCodecAndProResCombination: (
|
|
5
|
-
|
|
2
|
+
export declare const proResProfileOptions: readonly ["4444-xq", "4444", "hq", "standard", "light", "proxy"];
|
|
3
|
+
export type ProResProfile = typeof proResProfileOptions[number];
|
|
4
|
+
export declare const validateSelectedCodecAndProResCombination: ({ codec, proResProfile, }: {
|
|
5
|
+
codec: Codec;
|
|
6
|
+
proResProfile: ProResProfile | undefined;
|
|
7
|
+
}) => void;
|
package/dist/prores-profile.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.validateSelectedCodecAndProResCombination = void 0;
|
|
4
|
-
|
|
3
|
+
exports.validateSelectedCodecAndProResCombination = exports.proResProfileOptions = void 0;
|
|
4
|
+
exports.proResProfileOptions = [
|
|
5
5
|
'4444-xq',
|
|
6
6
|
'4444',
|
|
7
7
|
'hq',
|
|
@@ -9,13 +9,13 @@ const proResProfileOptions = [
|
|
|
9
9
|
'light',
|
|
10
10
|
'proxy',
|
|
11
11
|
];
|
|
12
|
-
const validateSelectedCodecAndProResCombination = (
|
|
13
|
-
if (typeof
|
|
14
|
-
throw new TypeError(
|
|
12
|
+
const validateSelectedCodecAndProResCombination = ({ codec, proResProfile, }) => {
|
|
13
|
+
if (typeof proResProfile !== 'undefined' && codec !== 'prores') {
|
|
14
|
+
throw new TypeError(`You have set a ProRes profile but the codec is "${codec}". Set the codec to "prores" or remove the ProRes profile.`);
|
|
15
15
|
}
|
|
16
|
-
if (
|
|
17
|
-
!proResProfileOptions.includes(
|
|
18
|
-
throw new TypeError(`The ProRes profile "${
|
|
16
|
+
if (proResProfile !== undefined &&
|
|
17
|
+
!exports.proResProfileOptions.includes(proResProfile)) {
|
|
18
|
+
throw new TypeError(`The ProRes profile "${proResProfile}" is not valid. Valid options are ${exports.proResProfileOptions
|
|
19
19
|
.map((p) => `"${p}"`)
|
|
20
20
|
.join(', ')}`);
|
|
21
21
|
}
|
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
+
import type { ClipRegion } from 'remotion';
|
|
2
3
|
import type { Page } from './browser/BrowserPage';
|
|
3
|
-
import type {
|
|
4
|
-
export declare const provideScreenshot: ({ page, imageFormat, options,
|
|
4
|
+
import type { StillImageFormat } from './image-format';
|
|
5
|
+
export declare const provideScreenshot: ({ page, imageFormat, options, jpegQuality, height, width, clipRegion, }: {
|
|
5
6
|
page: Page;
|
|
6
|
-
imageFormat:
|
|
7
|
-
|
|
7
|
+
imageFormat: StillImageFormat;
|
|
8
|
+
jpegQuality: number | undefined;
|
|
8
9
|
options: {
|
|
9
10
|
frame: number;
|
|
10
11
|
output: string | null;
|
|
11
12
|
};
|
|
13
|
+
height: number;
|
|
14
|
+
width: number;
|
|
15
|
+
clipRegion: ClipRegion | null;
|
|
12
16
|
}) => Promise<Buffer>;
|
|
@@ -2,14 +2,17 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.provideScreenshot = void 0;
|
|
4
4
|
const screenshot_dom_element_1 = require("./screenshot-dom-element");
|
|
5
|
-
const provideScreenshot = ({ page, imageFormat, options,
|
|
5
|
+
const provideScreenshot = ({ page, imageFormat, options, jpegQuality, height, width, clipRegion, }) => {
|
|
6
6
|
return (0, screenshot_dom_element_1.screenshotDOMElement)({
|
|
7
7
|
page,
|
|
8
8
|
opts: {
|
|
9
9
|
path: options.output,
|
|
10
10
|
},
|
|
11
11
|
imageFormat,
|
|
12
|
-
|
|
12
|
+
jpegQuality,
|
|
13
|
+
height,
|
|
14
|
+
width,
|
|
15
|
+
clipRegion,
|
|
13
16
|
});
|
|
14
17
|
};
|
|
15
18
|
exports.provideScreenshot = provideScreenshot;
|
|
File without changes
|
|
@@ -30,7 +30,7 @@ function isString(obj) {
|
|
|
30
30
|
return typeof obj === 'string' || obj instanceof String;
|
|
31
31
|
}
|
|
32
32
|
async function puppeteerEvaluateWithCatch({ page, pageFunction, frame, args, }) {
|
|
33
|
-
var _a, _b, _c, _d, _e, _f, _g;
|
|
33
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
34
34
|
const contextId = (await page.mainFrame().executionContext())._contextId;
|
|
35
35
|
const client = page._client();
|
|
36
36
|
const suffix = `//# sourceURL=${EVALUATION_SCRIPT_URL}`;
|
|
@@ -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 ((_h = error === null || error === void 0 ? void 0 : error.originalMessage) === null || _h === void 0 ? void 0 : _h.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,14 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
+
import type { ClipRegion } from 'remotion';
|
|
2
3
|
import type { Page } from './browser/BrowserPage';
|
|
3
|
-
import type {
|
|
4
|
-
export declare const screenshot: (
|
|
4
|
+
import type { StillImageFormat } from './image-format';
|
|
5
|
+
export declare const screenshot: (options: {
|
|
6
|
+
page: Page;
|
|
7
|
+
type: StillImageFormat;
|
|
8
|
+
path?: string;
|
|
9
|
+
jpegQuality?: number;
|
|
10
|
+
omitBackground: boolean;
|
|
11
|
+
width: number;
|
|
12
|
+
height: number;
|
|
13
|
+
clipRegion: ClipRegion | null;
|
|
14
|
+
}) => Promise<Buffer | string>;
|