@remotion/renderer 4.0.0-offthread.9 → 4.0.0-prefetch.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/calculate-asset-positions.d.ts +2 -2
- package/dist/assets/convert-assets-to-file-urls.d.ts +5 -4
- package/dist/assets/convert-assets-to-file-urls.js +2 -2
- package/dist/assets/download-and-map-assets-to-file.d.ts +16 -12
- package/dist/assets/download-and-map-assets-to-file.js +145 -65
- package/dist/assets/download-file.d.ts +10 -5
- package/dist/assets/download-file.js +20 -5
- package/dist/assets/download-map.d.ts +64 -0
- package/dist/assets/download-map.js +73 -0
- package/dist/assets/ffmpeg-volume-expression.d.ts +2 -3
- package/dist/assets/ffmpeg-volume-expression.js +2 -3
- package/dist/assets/flatten-volume-array.d.ts +1 -1
- package/dist/assets/get-audio-channels.d.ts +3 -4
- package/dist/assets/get-audio-channels.js +14 -4
- package/dist/assets/get-video-stream-duration.d.ts +4 -0
- package/dist/assets/get-video-stream-duration.js +59 -0
- package/dist/assets/read-file.js +4 -1
- package/dist/assets/types.d.ts +1 -1
- package/dist/browser/Browser.d.ts +60 -0
- package/dist/browser/Browser.js +218 -0
- package/dist/browser/BrowserConnector.d.ts +19 -0
- package/dist/browser/BrowserConnector.js +17 -0
- package/dist/browser/BrowserFetcher.d.ts +89 -0
- package/dist/browser/BrowserFetcher.js +510 -0
- package/dist/browser/BrowserPage.d.ts +74 -0
- package/dist/browser/BrowserPage.js +283 -0
- package/dist/browser/BrowserRunner.d.ts +39 -0
- package/dist/browser/BrowserRunner.js +308 -0
- package/dist/browser/Connection.d.ts +42 -0
- package/dist/browser/Connection.js +242 -0
- package/dist/browser/ConsoleMessage.d.ts +31 -0
- package/dist/browser/ConsoleMessage.js +48 -0
- package/dist/browser/DOMWorld.d.ts +52 -0
- package/dist/browser/DOMWorld.js +272 -0
- package/dist/browser/Errors.d.ts +25 -0
- package/dist/browser/Errors.js +35 -0
- package/dist/browser/EvalTypes.d.ts +27 -0
- package/dist/browser/EvalTypes.js +17 -0
- package/dist/browser/EventEmitter.d.ts +23 -0
- package/dist/browser/EventEmitter.js +53 -0
- package/dist/browser/ExecutionContext.d.ts +34 -0
- package/dist/browser/ExecutionContext.js +174 -0
- package/dist/browser/FrameManager.d.ts +93 -0
- package/dist/browser/FrameManager.js +496 -0
- package/dist/browser/HTTPRequest.d.ts +28 -0
- package/dist/browser/HTTPRequest.js +37 -0
- package/dist/browser/HTTPResponse.d.ts +21 -0
- package/dist/browser/HTTPResponse.js +41 -0
- package/dist/browser/JSHandle.d.ts +35 -0
- package/dist/browser/JSHandle.js +90 -0
- package/dist/browser/LaunchOptions.d.ts +37 -0
- package/dist/browser/LaunchOptions.js +17 -0
- package/dist/browser/Launcher.d.ts +9 -0
- package/dist/browser/Launcher.js +504 -0
- package/dist/browser/LifecycleWatcher.d.ts +29 -0
- package/dist/browser/LifecycleWatcher.js +180 -0
- package/dist/browser/NetworkEventManager.d.ts +33 -0
- package/dist/browser/NetworkEventManager.js +81 -0
- package/dist/browser/NetworkManager.d.ts +34 -0
- package/dist/browser/NetworkManager.js +231 -0
- package/dist/browser/NodeWebSocketTransport.d.ts +17 -0
- package/dist/browser/NodeWebSocketTransport.js +87 -0
- package/dist/browser/Product.d.ts +16 -0
- package/dist/browser/Product.js +17 -0
- package/dist/browser/PuppeteerNode.d.ts +40 -0
- package/dist/browser/PuppeteerNode.js +81 -0
- package/dist/browser/PuppeteerViewport.d.ts +5 -0
- package/dist/browser/PuppeteerViewport.js +2 -0
- package/dist/browser/ScreenshotOptions.d.ts +14 -0
- package/dist/browser/ScreenshotOptions.js +2 -0
- package/dist/browser/Target.d.ts +61 -0
- package/dist/browser/Target.js +146 -0
- package/dist/browser/TaskQueue.d.ts +20 -0
- package/dist/browser/TaskQueue.js +47 -0
- package/dist/browser/TimeoutSettings.d.ts +24 -0
- package/dist/browser/TimeoutSettings.js +62 -0
- package/dist/browser/assert.d.ts +1 -0
- package/dist/browser/assert.js +9 -0
- package/dist/browser/create-browser-fetcher.d.ts +17 -0
- package/dist/browser/create-browser-fetcher.js +119 -0
- package/dist/browser/devtools-commands.d.ts +270 -0
- package/dist/browser/devtools-commands.js +2 -0
- package/dist/browser/devtools-types.d.ts +1122 -0
- package/dist/browser/devtools-types.js +2 -0
- package/dist/browser/get-download-destination.d.ts +1 -0
- package/dist/browser/get-download-destination.js +38 -0
- package/dist/browser/mitt/index.d.ts +22 -0
- package/dist/browser/mitt/index.js +49 -0
- package/dist/browser/node.d.ts +2 -0
- package/dist/browser/node.js +9 -0
- package/dist/browser/revisions.d.ts +21 -0
- package/dist/browser/revisions.js +22 -0
- package/dist/browser/util.d.ts +47 -0
- package/dist/browser/util.js +169 -0
- package/dist/browser-executable.d.ts +1 -0
- package/dist/browser-executable.js +2 -0
- package/dist/browser-log.d.ts +1 -1
- package/dist/browser.d.ts +2 -0
- package/dist/browser.js +4 -0
- package/dist/calculate-ffmpeg-filters.d.ts +1 -1
- package/dist/calculate-ffmpeg-filters.js +2 -2
- package/dist/calculate-sar-dar-pixels.d.ts +9 -0
- package/dist/calculate-sar-dar-pixels.js +19 -0
- package/dist/can-use-parallel-encoding.d.ts +1 -1
- package/dist/can-use-parallel-encoding.js +2 -2
- package/dist/codec-supports-media.d.ts +8 -0
- package/dist/codec-supports-media.js +56 -0
- package/dist/codec.d.ts +4 -0
- package/dist/codec.js +16 -0
- package/dist/combine-videos.d.ts +3 -2
- package/dist/combine-videos.js +17 -7
- package/dist/compress-assets.d.ts +7 -0
- package/dist/compress-assets.js +25 -0
- package/dist/convert-number-of-gif-loops-to-ffmpeg.d.ts +1 -0
- package/dist/convert-number-of-gif-loops-to-ffmpeg.js +17 -0
- package/dist/convert-to-pcm.d.ts +1 -1
- package/dist/create-ffmpeg-complex-filter.d.ts +2 -1
- package/dist/create-ffmpeg-complex-filter.js +2 -11
- package/dist/create-ffmpeg-merge-filter.js +3 -3
- package/dist/create-silent-audio.d.ts +1 -1
- package/dist/crf.d.ts +5 -0
- package/dist/crf.js +64 -0
- package/dist/cycle-browser-tabs.d.ts +1 -1
- package/dist/delay-render-embedded-stack.d.ts +1 -1
- package/dist/ensure-frames-in-order.d.ts +1 -1
- package/dist/ensure-frames-in-order.js +3 -2
- package/dist/ensure-presentation-timestamp.d.ts +2 -0
- package/dist/ensure-presentation-timestamp.js +69 -0
- package/dist/error-handling/handle-javascript-exception.d.ts +2 -2
- package/dist/error-handling/handle-javascript-exception.js +3 -4
- package/dist/error-handling/symbolicate-error.d.ts +1 -1
- package/dist/error-handling/symbolicateable-error.d.ts +1 -1
- package/dist/extract-frame-from-video.d.ts +8 -4
- package/dist/extract-frame-from-video.js +173 -55
- package/dist/ffmpeg-executable.d.ts +1 -0
- package/dist/ffmpeg-executable.js +2 -0
- package/dist/ffmpeg-filter-file.d.ts +2 -1
- package/dist/ffmpeg-filter-file.js +4 -6
- package/dist/frame-range.d.ts +2 -0
- package/dist/frame-range.js +49 -0
- package/dist/get-audio-codec-name.d.ts +1 -1
- package/dist/get-audio-codec-name.js +2 -2
- package/dist/get-browser-instance.d.ts +4 -3
- package/dist/get-browser-instance.js +2 -2
- package/dist/get-codec-name.d.ts +1 -1
- package/dist/get-codec-name.js +5 -2
- package/dist/get-compositions.d.ts +12 -4
- package/dist/get-compositions.js +18 -11
- package/dist/get-duration-from-frame-range.d.ts +1 -2
- package/dist/get-duration-from-frame-range.js +13 -9
- package/dist/get-extension-from-codec.d.ts +2 -2
- package/dist/get-extension-from-codec.js +5 -0
- package/dist/get-extension-of-filename.d.ts +1 -1
- package/dist/get-extension-of-filename.js +3 -0
- package/dist/get-frame-padded-index.d.ts +14 -0
- package/dist/get-frame-padded-index.js +33 -0
- package/dist/get-frame-to-render.d.ts +1 -1
- package/dist/get-local-browser-executable.d.ts +2 -1
- package/dist/get-local-browser-executable.js +7 -5
- package/dist/get-port.js +30 -37
- package/dist/get-prores-profile-name.d.ts +2 -1
- package/dist/get-video-info.d.ts +3 -0
- package/dist/get-video-info.js +49 -0
- package/dist/get-video-threads-flag.d.ts +1 -0
- package/dist/get-video-threads-flag.js +18 -0
- package/dist/guess-extension-for-media.d.ts +1 -0
- package/dist/guess-extension-for-media.js +27 -0
- package/dist/image-format.d.ts +6 -1
- package/dist/image-format.js +25 -1
- package/dist/index.d.ts +89 -14
- package/dist/index.js +91 -2
- package/dist/is-audio-codec.d.ts +2 -0
- package/dist/is-audio-codec.js +7 -0
- package/dist/is-beyond-last-frame.d.ts +3 -2
- package/dist/is-beyond-last-frame.js +5 -5
- package/dist/last-frame-from-video-cache.d.ts +9 -4
- package/dist/last-frame-from-video-cache.js +24 -21
- package/dist/log-level.d.ts +4 -0
- package/dist/log-level.js +15 -0
- package/dist/merge-audio-track.d.ts +3 -1
- package/dist/merge-audio-track.js +12 -6
- package/dist/mime-db.d.ts +6 -0
- package/dist/mime-db.js +8636 -0
- package/dist/mime-types.d.ts +3 -0
- package/dist/mime-types.js +94 -0
- package/dist/offthread-video-server.d.ts +9 -5
- package/dist/offthread-video-server.js +31 -10
- package/dist/open-browser.d.ts +5 -3
- package/dist/open-browser.js +15 -15
- package/dist/overwrite.d.ts +1 -0
- package/dist/overwrite.js +4 -0
- package/dist/perf.d.ts +5 -0
- package/dist/perf.js +35 -0
- package/dist/pixel-format.d.ts +5 -0
- package/dist/pixel-format.js +26 -0
- package/dist/prepare-server.d.ts +6 -4
- package/dist/prepare-server.js +21 -5
- package/dist/preprocess-audio-track.d.ts +5 -2
- package/dist/preprocess-audio-track.js +3 -3
- package/dist/prespawn-ffmpeg.d.ts +6 -2
- package/dist/prespawn-ffmpeg.js +10 -7
- package/dist/prestitcher-memory-usage.d.ts +12 -0
- package/dist/prestitcher-memory-usage.js +30 -0
- package/dist/prores-profile.d.ts +5 -0
- package/dist/prores-profile.js +23 -0
- package/dist/provide-screenshot.d.ts +5 -4
- package/dist/provide-screenshot.js +0 -1
- package/dist/puppeteer-evaluate.d.ts +1 -1
- package/dist/puppeteer-evaluate.js +3 -4
- package/dist/puppeteer-screenshot.d.ts +3 -2
- package/dist/puppeteer-screenshot.js +2 -4
- package/dist/quality.d.ts +1 -0
- package/dist/quality.js +21 -0
- package/dist/render-frames.d.ts +21 -9
- package/dist/render-frames.js +111 -82
- package/dist/render-media.d.ts +33 -10
- package/dist/render-media.js +83 -25
- package/dist/render-still.d.ts +18 -7
- package/dist/render-still.js +44 -16
- package/dist/screenshot-dom-element.d.ts +6 -7
- package/dist/screenshot-dom-element.js +3 -6
- package/dist/screenshot-task.d.ts +3 -2
- package/dist/screenshot-task.js +36 -23
- package/dist/seek-to-frame.d.ts +2 -2
- package/dist/seek-to-frame.js +2 -2
- package/dist/serve-handler/index.d.ts +4 -0
- package/dist/serve-handler/index.js +204 -0
- package/dist/serve-handler/is-path-inside.d.ts +1 -0
- package/dist/serve-handler/is-path-inside.js +27 -0
- package/dist/serve-handler/range-parser.d.ts +13 -0
- package/dist/serve-handler/range-parser.js +57 -0
- package/dist/serve-static.d.ts +5 -3
- package/dist/serve-static.js +19 -8
- package/dist/set-props-and-env.d.ts +4 -2
- package/dist/set-props-and-env.js +42 -11
- package/dist/stitch-frames-to-video.d.ts +16 -6
- package/dist/stitch-frames-to-video.js +112 -42
- package/dist/stringify-ffmpeg-filter.d.ts +2 -2
- package/dist/stringify-ffmpeg-filter.js +11 -9
- package/dist/symbolicate-stacktrace.d.ts +1 -1
- package/dist/symbolicate-stacktrace.js +3 -3
- package/dist/truthy.d.ts +3 -0
- package/dist/truthy.js +7 -0
- package/dist/types.d.ts +1 -1
- package/dist/validate-concurrency.d.ts +1 -0
- package/dist/validate-concurrency.js +24 -0
- package/dist/validate-even-dimensions-with-codec.d.ts +1 -1
- package/dist/validate-even-dimensions-with-codec.js +2 -2
- package/dist/validate-every-nth-frame.d.ts +1 -0
- package/dist/validate-every-nth-frame.js +21 -0
- package/dist/validate-ffmpeg.js +2 -3
- package/dist/validate-frame.d.ts +1 -0
- package/dist/validate-frame.js +24 -0
- package/dist/validate-opengl-renderer.d.ts +5 -0
- package/dist/validate-opengl-renderer.js +15 -0
- package/dist/validate-output-filename.d.ts +1 -1
- package/dist/validate-output-filename.js +5 -0
- package/dist/wait-for-symbolication-error-to-be-done.d.ts +3 -0
- package/dist/wait-for-symbolication-error-to-be-done.js +34 -0
- package/dist/ws/ws-types.d.ts +14 -0
- package/dist/ws/ws-types.js +10 -0
- package/package.json +13 -15
- package/tsconfig.json +2 -2
- package/types/ws/index.d.ts +509 -0
- package/vitest.config.ts +8 -0
- 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-audio-channels.d.ts.map +0 -1
- package/dist/assets/get-audio-channels.js.map +0 -1
- package/dist/assets/read-file.d.ts.map +0 -1
- package/dist/assets/read-file.js.map +0 -1
- package/dist/assets/round-volume-to-avoid-stack-overflow.d.ts.map +0 -1
- package/dist/assets/round-volume-to-avoid-stack-overflow.js.map +0 -1
- package/dist/assets/sanitize-filename.d.ts.map +0 -1
- package/dist/assets/sanitize-filename.js.map +0 -1
- package/dist/assets/sanitize-filepath.d.ts.map +0 -1
- package/dist/assets/sanitize-filepath.js.map +0 -1
- package/dist/assets/truncate-utf8-bytes.d.ts.map +0 -1
- package/dist/assets/truncate-utf8-bytes.js.map +0 -1
- package/dist/assets/types.d.ts.map +0 -1
- package/dist/assets/types.js.map +0 -1
- package/dist/browser-log.d.ts.map +0 -1
- package/dist/browser-log.js.map +0 -1
- package/dist/calculate-ffmpeg-filters.d.ts.map +0 -1
- package/dist/calculate-ffmpeg-filters.js.map +0 -1
- package/dist/can-use-parallel-encoding.d.ts.map +0 -1
- package/dist/can-use-parallel-encoding.js.map +0 -1
- package/dist/chunk.d.ts.map +0 -1
- package/dist/chunk.js.map +0 -1
- package/dist/combine-videos.d.ts.map +0 -1
- package/dist/combine-videos.js.map +0 -1
- package/dist/convert-to-pcm.d.ts.map +0 -1
- package/dist/convert-to-pcm.js.map +0 -1
- package/dist/create-ffmpeg-complex-filter.d.ts.map +0 -1
- package/dist/create-ffmpeg-complex-filter.js.map +0 -1
- package/dist/create-ffmpeg-merge-filter.d.ts.map +0 -1
- package/dist/create-ffmpeg-merge-filter.js.map +0 -1
- package/dist/create-silent-audio.d.ts.map +0 -1
- package/dist/create-silent-audio.js.map +0 -1
- package/dist/cycle-browser-tabs.d.ts.map +0 -1
- package/dist/cycle-browser-tabs.js.map +0 -1
- package/dist/delay-render-embedded-stack.d.ts.map +0 -1
- package/dist/delay-render-embedded-stack.js.map +0 -1
- package/dist/delete-directory.d.ts.map +0 -1
- package/dist/delete-directory.js.map +0 -1
- package/dist/ensure-frames-in-order.d.ts.map +0 -1
- package/dist/ensure-frames-in-order.js.map +0 -1
- package/dist/ensure-output-directory.d.ts.map +0 -1
- package/dist/ensure-output-directory.js.map +0 -1
- package/dist/error-handling/handle-javascript-exception.d.ts.map +0 -1
- package/dist/error-handling/handle-javascript-exception.js.map +0 -1
- package/dist/error-handling/symbolicate-error.d.ts.map +0 -1
- package/dist/error-handling/symbolicate-error.js.map +0 -1
- package/dist/error-handling/symbolicateable-error.d.ts.map +0 -1
- package/dist/error-handling/symbolicateable-error.js.map +0 -1
- package/dist/ffmpeg-filter-file.d.ts.map +0 -1
- package/dist/ffmpeg-filter-file.js.map +0 -1
- package/dist/ffmpeg-flags.d.ts.map +0 -1
- package/dist/ffmpeg-flags.js.map +0 -1
- package/dist/get-audio-codec-name.d.ts.map +0 -1
- package/dist/get-audio-codec-name.js.map +0 -1
- package/dist/get-browser-instance.d.ts.map +0 -1
- package/dist/get-browser-instance.js.map +0 -1
- package/dist/get-codec-name.d.ts.map +0 -1
- package/dist/get-codec-name.js.map +0 -1
- package/dist/get-compositions.d.ts.map +0 -1
- package/dist/get-compositions.js.map +0 -1
- package/dist/get-concurrency.d.ts.map +0 -1
- package/dist/get-concurrency.js.map +0 -1
- package/dist/get-duration-from-frame-range.d.ts.map +0 -1
- package/dist/get-duration-from-frame-range.js.map +0 -1
- package/dist/get-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 -8
- package/dist/make-assets-download-dir.js.map +0 -1
- package/dist/merge-audio-track.d.ts.map +0 -1
- package/dist/merge-audio-track.js.map +0 -1
- package/dist/normalize-serve-url.d.ts.map +0 -1
- package/dist/normalize-serve-url.js.map +0 -1
- package/dist/open-browser.d.ts.map +0 -1
- package/dist/open-browser.js.map +0 -1
- package/dist/p-limit.d.ts.map +0 -1
- package/dist/p-limit.js.map +0 -1
- package/dist/parse-browser-error-stack.d.ts.map +0 -1
- package/dist/parse-browser-error-stack.js.map +0 -1
- package/dist/parse-ffmpeg-progress.d.ts.map +0 -1
- package/dist/parse-ffmpeg-progress.js.map +0 -1
- package/dist/pool.d.ts.map +0 -1
- package/dist/pool.js.map +0 -1
- package/dist/prepare-server.d.ts.map +0 -1
- package/dist/prepare-server.js.map +0 -1
- package/dist/preprocess-audio-track.d.ts.map +0 -1
- package/dist/preprocess-audio-track.js.map +0 -1
- package/dist/prespawn-ffmpeg.d.ts.map +0 -1
- package/dist/prespawn-ffmpeg.js.map +0 -1
- package/dist/provide-screenshot.d.ts.map +0 -1
- package/dist/provide-screenshot.js.map +0 -1
- package/dist/puppeteer-evaluate.d.ts.map +0 -1
- package/dist/puppeteer-evaluate.js.map +0 -1
- package/dist/puppeteer-screenshot.d.ts.map +0 -1
- package/dist/puppeteer-screenshot.js.map +0 -1
- package/dist/render-frames.d.ts.map +0 -1
- package/dist/render-frames.js.map +0 -1
- package/dist/render-media.d.ts.map +0 -1
- package/dist/render-media.js.map +0 -1
- package/dist/render-still.d.ts.map +0 -1
- package/dist/render-still.js.map +0 -1
- package/dist/resolve-asset-src.d.ts.map +0 -1
- package/dist/resolve-asset-src.js.map +0 -1
- package/dist/sample-rate.d.ts.map +0 -1
- package/dist/sample-rate.js.map +0 -1
- package/dist/screenshot-dom-element.d.ts.map +0 -1
- package/dist/screenshot-dom-element.js.map +0 -1
- package/dist/screenshot-task.d.ts.map +0 -1
- package/dist/screenshot-task.js.map +0 -1
- package/dist/seek-to-frame.d.ts.map +0 -1
- package/dist/seek-to-frame.js.map +0 -1
- package/dist/serve-static.d.ts.map +0 -1
- package/dist/serve-static.js.map +0 -1
- package/dist/set-props-and-env.d.ts.map +0 -1
- package/dist/set-props-and-env.js.map +0 -1
- package/dist/stitch-frames-to-video.d.ts.map +0 -1
- package/dist/stitch-frames-to-video.js.map +0 -1
- package/dist/stringify-ffmpeg-filter.d.ts.map +0 -1
- package/dist/stringify-ffmpeg-filter.js.map +0 -1
- package/dist/symbolicate-stacktrace.d.ts.map +0 -1
- package/dist/symbolicate-stacktrace.js.map +0 -1
- package/dist/tmp-dir.d.ts.map +0 -1
- package/dist/tmp-dir.js.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/validate-even-dimensions-with-codec.d.ts.map +0 -1
- package/dist/validate-even-dimensions-with-codec.js.map +0 -1
- package/dist/validate-ffmpeg.d.ts.map +0 -1
- package/dist/validate-ffmpeg.js.map +0 -1
- package/dist/validate-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
|
@@ -3,42 +3,131 @@ 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.extractFrameFromVideo = exports.
|
|
6
|
+
exports.extractFrameFromVideo = exports.getLastFrameOfVideo = void 0;
|
|
7
7
|
const execa_1 = __importDefault(require("execa"));
|
|
8
|
-
const
|
|
8
|
+
const get_video_stream_duration_1 = require("./assets/get-video-stream-duration");
|
|
9
|
+
const ensure_presentation_timestamp_1 = require("./ensure-presentation-timestamp");
|
|
9
10
|
const frame_to_ffmpeg_timestamp_1 = require("./frame-to-ffmpeg-timestamp");
|
|
11
|
+
const get_video_info_1 = require("./get-video-info");
|
|
10
12
|
const is_beyond_last_frame_1 = require("./is-beyond-last-frame");
|
|
11
13
|
const last_frame_from_video_cache_1 = require("./last-frame-from-video-cache");
|
|
12
14
|
const p_limit_1 = require("./p-limit");
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
stream.on('data', (chunk) => chunks.push(Buffer.from(chunk)));
|
|
17
|
-
stream.on('error', (err) => reject(err));
|
|
18
|
-
stream.on('end', () => resolve(Buffer.concat(chunks).toString('utf8')));
|
|
19
|
-
});
|
|
20
|
-
}
|
|
21
|
-
exports.streamToString = streamToString;
|
|
22
|
-
const lastFrameLimit = (0, p_limit_1.pLimit)(5);
|
|
15
|
+
const perf_1 = require("./perf");
|
|
16
|
+
const truthy_1 = require("./truthy");
|
|
17
|
+
const lastFrameLimit = (0, p_limit_1.pLimit)(1);
|
|
23
18
|
const mainLimit = (0, p_limit_1.pLimit)(5);
|
|
24
|
-
const
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
19
|
+
const determineVcodecFfmepgFlags = (vcodecFlag) => {
|
|
20
|
+
return [
|
|
21
|
+
vcodecFlag === 'vp9' ? '-vcodec' : null,
|
|
22
|
+
vcodecFlag === 'vp9' ? 'libvpx-vp9' : null,
|
|
23
|
+
vcodecFlag === 'vp8' ? '-vcodec' : null,
|
|
24
|
+
vcodecFlag === 'vp8' ? 'libvpx' : null,
|
|
25
|
+
].filter(truthy_1.truthy);
|
|
26
|
+
};
|
|
27
|
+
const determineResizeParams = (needsResize) => {
|
|
28
|
+
if (needsResize === null) {
|
|
29
|
+
return [];
|
|
30
|
+
}
|
|
31
|
+
return ['-s', `${needsResize[0]}x${needsResize[1]}`];
|
|
32
|
+
};
|
|
33
|
+
// Uses no seeking, therefore the whole video has to be decoded. This is a last resort and should only happen
|
|
34
|
+
// if the video is corrupted
|
|
35
|
+
const getFrameOfVideoSlow = async ({ src, duration, ffmpegExecutable, imageFormat, specialVCodecForTransparency, needsResize, offset, fps, }) => {
|
|
36
|
+
console.warn(`\nUsing a slow method to extract the frame at ${duration}ms of ${src}. See https://remotion.dev/docs/slow-method-to-extract-frame for advice`);
|
|
37
|
+
const actualOffset = `-${duration * 1000 - offset}ms`;
|
|
38
|
+
const command = [
|
|
39
|
+
'-itsoffset',
|
|
40
|
+
actualOffset,
|
|
41
|
+
...determineVcodecFfmepgFlags(specialVCodecForTransparency),
|
|
42
|
+
'-i',
|
|
43
|
+
src,
|
|
44
|
+
'-frames:v',
|
|
45
|
+
'1',
|
|
46
|
+
'-c:v',
|
|
47
|
+
imageFormat === 'jpeg' ? 'mjpeg' : 'png',
|
|
48
|
+
'-f',
|
|
49
|
+
'image2pipe',
|
|
50
|
+
...determineResizeParams(needsResize),
|
|
51
|
+
'-',
|
|
52
|
+
].filter(truthy_1.truthy);
|
|
53
|
+
const { stdout, stderr } = (0, execa_1.default)(ffmpegExecutable !== null && ffmpegExecutable !== void 0 ? ffmpegExecutable : 'ffmpeg', command);
|
|
54
|
+
if (!stderr) {
|
|
55
|
+
throw new Error('unexpectedly did not get stderr');
|
|
29
56
|
}
|
|
30
|
-
|
|
57
|
+
if (!stdout) {
|
|
58
|
+
throw new Error('unexpectedly did not get stdout');
|
|
59
|
+
}
|
|
60
|
+
const stderrChunks = [];
|
|
61
|
+
const stdoutChunks = [];
|
|
62
|
+
const stdErrString = new Promise((resolve, reject) => {
|
|
63
|
+
stderr.on('data', (d) => stderrChunks.push(d));
|
|
64
|
+
stderr.on('error', (err) => reject(err));
|
|
65
|
+
stderr.on('end', () => resolve(Buffer.concat(stderrChunks).toString('utf-8')));
|
|
66
|
+
});
|
|
67
|
+
const stdoutChunk = new Promise((resolve, reject) => {
|
|
68
|
+
stdout.on('data', (d) => stdoutChunks.push(d));
|
|
69
|
+
stdout.on('error', (err) => reject(err));
|
|
70
|
+
stdout.on('end', () => resolve(Buffer.concat(stdoutChunks)));
|
|
71
|
+
});
|
|
72
|
+
const [stdErr, stdoutBuffer] = await Promise.all([stdErrString, stdoutChunk]);
|
|
73
|
+
const isEmpty = stdErr.includes('Output file is empty');
|
|
74
|
+
if (isEmpty) {
|
|
75
|
+
if (offset > 70) {
|
|
76
|
+
throw new Error(`Could not get last frame of ${src}. Tried to seek to the end using the command "ffmpeg ${command.join(' ')}" but got no frame. Most likely this video is corrupted.`);
|
|
77
|
+
}
|
|
78
|
+
return getFrameOfVideoSlow({
|
|
79
|
+
ffmpegExecutable,
|
|
80
|
+
duration,
|
|
81
|
+
// Decrement in 10ms increments, or 1 frame (e.g. fps = 25 --> 40ms)
|
|
82
|
+
offset: offset + (fps === null ? 10 : 1000 / fps),
|
|
83
|
+
src,
|
|
84
|
+
imageFormat,
|
|
85
|
+
specialVCodecForTransparency,
|
|
86
|
+
needsResize,
|
|
87
|
+
fps,
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
return stdoutBuffer;
|
|
91
|
+
};
|
|
92
|
+
const getLastFrameOfVideoFastUnlimited = async (options) => {
|
|
93
|
+
const { ffmpegExecutable, ffprobeExecutable, offset, src, downloadMap } = options;
|
|
94
|
+
const fromCache = (0, last_frame_from_video_cache_1.getLastFrameFromCache)({ ...options, offset: 0 });
|
|
95
|
+
if (fromCache) {
|
|
96
|
+
return fromCache;
|
|
97
|
+
}
|
|
98
|
+
const { duration, fps } = await (0, get_video_stream_duration_1.getVideoStreamDuration)(downloadMap, src, ffprobeExecutable);
|
|
99
|
+
if (duration === null) {
|
|
100
|
+
throw new Error(`Could not determine the duration of ${src} using FFMPEG. The file is not supported.`);
|
|
101
|
+
}
|
|
102
|
+
if (options.specialVCodecForTransparency === 'vp8' || offset > 40) {
|
|
103
|
+
const last = await getFrameOfVideoSlow({
|
|
104
|
+
duration,
|
|
105
|
+
ffmpegExecutable,
|
|
106
|
+
src,
|
|
107
|
+
imageFormat: options.imageFormat,
|
|
108
|
+
specialVCodecForTransparency: options.specialVCodecForTransparency,
|
|
109
|
+
needsResize: options.needsResize,
|
|
110
|
+
offset: offset - 1000 / (fps === null ? 10 : fps),
|
|
111
|
+
fps,
|
|
112
|
+
});
|
|
113
|
+
return last;
|
|
114
|
+
}
|
|
115
|
+
const actualOffset = `${duration * 1000 - offset}ms`;
|
|
31
116
|
const { stdout, stderr } = (0, execa_1.default)(ffmpegExecutable !== null && ffmpegExecutable !== void 0 ? ffmpegExecutable : 'ffmpeg', [
|
|
32
|
-
'-
|
|
117
|
+
'-ss',
|
|
33
118
|
actualOffset,
|
|
119
|
+
...determineVcodecFfmepgFlags(options.specialVCodecForTransparency),
|
|
34
120
|
'-i',
|
|
35
121
|
src,
|
|
36
122
|
'-frames:v',
|
|
37
123
|
'1',
|
|
124
|
+
'-c:v',
|
|
125
|
+
options.imageFormat === 'jpeg' ? 'mjpeg' : 'png',
|
|
38
126
|
'-f',
|
|
39
127
|
'image2pipe',
|
|
128
|
+
...determineResizeParams(options.needsResize),
|
|
40
129
|
'-',
|
|
41
|
-
]);
|
|
130
|
+
].filter(truthy_1.truthy));
|
|
42
131
|
if (!stderr) {
|
|
43
132
|
throw new Error('unexpectedly did not get stderr');
|
|
44
133
|
}
|
|
@@ -66,43 +155,74 @@ const getLastFrameOfVideoUnlimited = async ({ ffmpegExecutable, offset, src, })
|
|
|
66
155
|
const [stdErr, stdoutBuffer] = await Promise.all([stdErrString, stdoutChunk]);
|
|
67
156
|
const isEmpty = stdErr.includes('Output file is empty');
|
|
68
157
|
if (isEmpty) {
|
|
69
|
-
|
|
158
|
+
const unlimited = await getLastFrameOfVideoFastUnlimited({
|
|
70
159
|
ffmpegExecutable,
|
|
71
|
-
|
|
160
|
+
// Decrement in 10ms increments, or 1 frame (e.g. fps = 25 --> 40ms)
|
|
161
|
+
offset: offset + (fps === null ? 10 : 1000 / fps),
|
|
72
162
|
src,
|
|
163
|
+
ffprobeExecutable,
|
|
164
|
+
imageFormat: options.imageFormat,
|
|
165
|
+
specialVCodecForTransparency: options.specialVCodecForTransparency,
|
|
166
|
+
needsResize: options.needsResize,
|
|
167
|
+
downloadMap: options.downloadMap,
|
|
73
168
|
});
|
|
169
|
+
return unlimited;
|
|
74
170
|
}
|
|
75
171
|
return stdoutBuffer;
|
|
76
172
|
};
|
|
77
173
|
const getLastFrameOfVideo = async (options) => {
|
|
78
|
-
const
|
|
79
|
-
if (fromCache) {
|
|
80
|
-
return fromCache;
|
|
81
|
-
}
|
|
82
|
-
const result = await lastFrameLimit(getLastFrameOfVideoUnlimited, options);
|
|
174
|
+
const result = await lastFrameLimit(getLastFrameOfVideoFastUnlimited, options);
|
|
83
175
|
(0, last_frame_from_video_cache_1.setLastFrameInCache)(options, result);
|
|
84
176
|
return result;
|
|
85
177
|
};
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
178
|
+
exports.getLastFrameOfVideo = getLastFrameOfVideo;
|
|
179
|
+
const extractFrameFromVideoFn = async ({ time, ffmpegExecutable, ffprobeExecutable, imageFormat, downloadMap, ...options }) => {
|
|
180
|
+
// We make a new copy of the video only for video because the conversion may affect
|
|
181
|
+
// audio rendering, so we work with 2 different files
|
|
182
|
+
const src = await (0, ensure_presentation_timestamp_1.ensurePresentationTimestamps)(downloadMap, options.src);
|
|
183
|
+
const { specialVcodec, needsResize } = await (0, get_video_info_1.getVideoInfo)(downloadMap, src, ffprobeExecutable);
|
|
184
|
+
if (specialVcodec === 'vp8') {
|
|
185
|
+
const { fps } = await (0, get_video_stream_duration_1.getVideoStreamDuration)(downloadMap, src, ffprobeExecutable);
|
|
186
|
+
return getFrameOfVideoSlow({
|
|
187
|
+
ffmpegExecutable,
|
|
188
|
+
imageFormat,
|
|
189
|
+
specialVCodecForTransparency: specialVcodec,
|
|
190
|
+
src,
|
|
191
|
+
duration: time,
|
|
192
|
+
needsResize,
|
|
193
|
+
offset: 0,
|
|
194
|
+
fps,
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
if ((0, is_beyond_last_frame_1.isBeyondLastFrame)(downloadMap, src, time)) {
|
|
198
|
+
const lastFrame = await (0, exports.getLastFrameOfVideo)({
|
|
89
199
|
ffmpegExecutable,
|
|
200
|
+
ffprobeExecutable,
|
|
90
201
|
offset: 0,
|
|
91
202
|
src,
|
|
203
|
+
imageFormat,
|
|
204
|
+
specialVCodecForTransparency: specialVcodec,
|
|
205
|
+
needsResize,
|
|
206
|
+
downloadMap,
|
|
92
207
|
});
|
|
208
|
+
return lastFrame;
|
|
93
209
|
}
|
|
94
210
|
const ffmpegTimestamp = (0, frame_to_ffmpeg_timestamp_1.frameToFfmpegTimestamp)(time);
|
|
95
211
|
const { stdout, stderr } = (0, execa_1.default)(ffmpegExecutable !== null && ffmpegExecutable !== void 0 ? ffmpegExecutable : 'ffmpeg', [
|
|
96
212
|
'-ss',
|
|
97
213
|
ffmpegTimestamp,
|
|
214
|
+
...determineVcodecFfmepgFlags(specialVcodec),
|
|
98
215
|
'-i',
|
|
99
216
|
src,
|
|
100
217
|
'-frames:v',
|
|
101
218
|
'1',
|
|
102
219
|
'-f',
|
|
103
220
|
'image2pipe',
|
|
221
|
+
'-vcodec',
|
|
222
|
+
imageFormat === 'jpeg' ? 'mjpeg' : 'png',
|
|
223
|
+
...determineResizeParams(needsResize),
|
|
104
224
|
'-',
|
|
105
|
-
], {
|
|
225
|
+
].filter(truthy_1.truthy), {
|
|
106
226
|
buffer: false,
|
|
107
227
|
});
|
|
108
228
|
if (!stderr) {
|
|
@@ -114,46 +234,44 @@ const extractFrameFromVideoFn = async ({ time, src, ffmpegExecutable, }) => {
|
|
|
114
234
|
const stdoutChunks = [];
|
|
115
235
|
const stderrChunks = [];
|
|
116
236
|
const stderrStringProm = new Promise((resolve, reject) => {
|
|
117
|
-
stderr.on('data', (d) =>
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
stderr.on('error', (err) => {
|
|
121
|
-
reject(err);
|
|
122
|
-
});
|
|
123
|
-
stderr.on('end', () => {
|
|
124
|
-
resolve(Buffer.concat(stderrChunks).toString('utf8'));
|
|
125
|
-
});
|
|
237
|
+
stderr.on('data', (d) => stderrChunks.push(d));
|
|
238
|
+
stderr.on('error', (err) => reject(err));
|
|
239
|
+
stderr.on('end', () => resolve(Buffer.concat(stderrChunks).toString('utf8')));
|
|
126
240
|
});
|
|
127
241
|
const stdoutBuffer = new Promise((resolve, reject) => {
|
|
128
|
-
stdout.on('data', (d) =>
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
stdout.on('error', (err) => {
|
|
132
|
-
reject(err);
|
|
133
|
-
});
|
|
134
|
-
stdout.on('end', () => {
|
|
135
|
-
resolve(Buffer.concat(stdoutChunks));
|
|
136
|
-
});
|
|
242
|
+
stdout.on('data', (d) => stdoutChunks.push(d));
|
|
243
|
+
stdout.on('error', (err) => reject(err));
|
|
244
|
+
stdout.on('end', () => resolve(Buffer.concat(stdoutChunks)));
|
|
137
245
|
});
|
|
138
246
|
const [stderrStr, stdOut] = await Promise.all([
|
|
139
247
|
stderrStringProm,
|
|
140
248
|
stdoutBuffer,
|
|
141
249
|
]);
|
|
142
250
|
if (stderrStr.includes('Output file is empty')) {
|
|
143
|
-
(0, is_beyond_last_frame_1.markAsBeyondLastFrame)(src, time);
|
|
144
|
-
|
|
251
|
+
(0, is_beyond_last_frame_1.markAsBeyondLastFrame)(downloadMap, src, time);
|
|
252
|
+
const last = await (0, exports.getLastFrameOfVideo)({
|
|
145
253
|
ffmpegExecutable,
|
|
254
|
+
ffprobeExecutable,
|
|
146
255
|
offset: 0,
|
|
147
256
|
src,
|
|
257
|
+
imageFormat,
|
|
258
|
+
specialVCodecForTransparency: specialVcodec,
|
|
259
|
+
needsResize,
|
|
260
|
+
downloadMap,
|
|
148
261
|
});
|
|
262
|
+
return last;
|
|
263
|
+
}
|
|
264
|
+
if (stdOut.length === 0) {
|
|
265
|
+
console.log('FFMPEG Logs:');
|
|
266
|
+
console.log(stderrStr);
|
|
267
|
+
throw new Error("Couldn't extract frame from video - FFMPEG did not return any data. Check logs to see more information");
|
|
149
268
|
}
|
|
150
269
|
return stdOut;
|
|
151
270
|
};
|
|
152
|
-
exports.extractFrameFromVideoFn = extractFrameFromVideoFn;
|
|
153
271
|
const extractFrameFromVideo = async (options) => {
|
|
154
|
-
const perf =
|
|
155
|
-
const res = await mainLimit(
|
|
156
|
-
|
|
272
|
+
const perf = (0, perf_1.startPerfMeasure)('extract-frame');
|
|
273
|
+
const res = await mainLimit(extractFrameFromVideoFn, options);
|
|
274
|
+
(0, perf_1.stopPerfMeasure)(perf);
|
|
157
275
|
return res;
|
|
158
276
|
};
|
|
159
277
|
exports.extractFrameFromVideo = extractFrameFromVideo;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare type FfmpegExecutable = string | null;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
import type { DownloadMap } from './assets/download-map';
|
|
2
|
+
export declare const makeFfmpegFilterFile: (complexFilter: string, downloadMap: DownloadMap) => Promise<{
|
|
2
3
|
file: string;
|
|
3
4
|
cleanup: () => void;
|
|
4
5
|
}>;
|
|
@@ -8,16 +8,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
8
8
|
exports.makeFfmpegFilterFile = void 0;
|
|
9
9
|
const fs_1 = __importDefault(require("fs"));
|
|
10
10
|
const path_1 = __importDefault(require("path"));
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
const tempPath = (0, tmp_dir_1.tmpDir)('remotion-complex-filter');
|
|
15
|
-
const filterFile = path_1.default.join(tempPath, 'complex-filter.txt');
|
|
11
|
+
const makeFfmpegFilterFile = async (complexFilter, downloadMap) => {
|
|
12
|
+
const random = Math.random().toString().replace('.', '');
|
|
13
|
+
const filterFile = path_1.default.join(downloadMap.complexFilter, 'complex-filter-' + random + '.txt');
|
|
16
14
|
await fs_1.default.promises.writeFile(filterFile, complexFilter);
|
|
17
15
|
return {
|
|
18
16
|
file: filterFile,
|
|
19
17
|
cleanup: () => {
|
|
20
|
-
|
|
18
|
+
fs_1.default.unlinkSync(filterFile);
|
|
21
19
|
},
|
|
22
20
|
};
|
|
23
21
|
};
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validateFrameRange = void 0;
|
|
4
|
+
const validateFrameRange = (frameRange) => {
|
|
5
|
+
if (frameRange === null) {
|
|
6
|
+
return;
|
|
7
|
+
}
|
|
8
|
+
if (typeof frameRange === 'number') {
|
|
9
|
+
if (frameRange < 0) {
|
|
10
|
+
throw new TypeError('Frame must be a non-negative number, got ' + frameRange);
|
|
11
|
+
}
|
|
12
|
+
if (!Number.isFinite(frameRange)) {
|
|
13
|
+
throw new TypeError('Frame must be a finite number, got ' + frameRange);
|
|
14
|
+
}
|
|
15
|
+
if (!Number.isInteger(frameRange)) {
|
|
16
|
+
throw new Error(`Frame must be an integer, but got a float (${frameRange})`);
|
|
17
|
+
}
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
if (Array.isArray(frameRange)) {
|
|
21
|
+
if (frameRange.length !== 2) {
|
|
22
|
+
throw new TypeError('Frame range must be a tuple, got an array with length ' +
|
|
23
|
+
frameRange.length);
|
|
24
|
+
}
|
|
25
|
+
for (const value of frameRange) {
|
|
26
|
+
if (typeof value !== 'number') {
|
|
27
|
+
throw new Error(`Each value of frame range must be a number, but got ${typeof value} (${JSON.stringify(value)})`);
|
|
28
|
+
}
|
|
29
|
+
if (!Number.isFinite(value)) {
|
|
30
|
+
throw new TypeError('Each value of frame range must be finite, but got ' + value);
|
|
31
|
+
}
|
|
32
|
+
if (!Number.isInteger(value)) {
|
|
33
|
+
throw new Error(`Each value of frame range must be an integer, but got a float (${value})`);
|
|
34
|
+
}
|
|
35
|
+
if (value < 0) {
|
|
36
|
+
throw new Error(`Each value of frame range must be non-negative, but got ${value}`);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
const [first, second] = frameRange;
|
|
40
|
+
if (second < first) {
|
|
41
|
+
throw new Error('The second value of frame range must be not smaller than the first one, but got ' +
|
|
42
|
+
frameRange.join('-'));
|
|
43
|
+
}
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
throw new TypeError('Frame range must be a number or a tuple of numbers, but got object of type ' +
|
|
47
|
+
typeof frameRange);
|
|
48
|
+
};
|
|
49
|
+
exports.validateFrameRange = validateFrameRange;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { Codec } from '
|
|
1
|
+
import type { Codec } from './codec';
|
|
2
2
|
export declare const getAudioCodecName: (codec: Codec) => string | null;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getAudioCodecName = void 0;
|
|
4
|
-
const
|
|
4
|
+
const is_audio_codec_1 = require("./is-audio-codec");
|
|
5
5
|
const getAudioCodecName = (codec) => {
|
|
6
|
-
if (!
|
|
6
|
+
if (!(0, is_audio_codec_1.isAudioCodec)(codec)) {
|
|
7
7
|
// The mkv container supports WAV, but MP4 does only support
|
|
8
8
|
// AAC. Choose MKV codec for better quality because we can put in lossless audio
|
|
9
9
|
if (codec === 'h264-mkv') {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import type { BrowserExecutable } from './browser-executable';
|
|
2
|
+
import type { Browser } from './browser/Browser';
|
|
3
|
+
import type { Page } from './browser/BrowserPage';
|
|
4
|
+
import type { ChromiumOptions } from './open-browser';
|
|
4
5
|
export declare const getPageAndCleanupFn: ({ passedInInstance, browserExecutable, chromiumOptions, }: {
|
|
5
6
|
passedInInstance: Browser | undefined;
|
|
6
7
|
browserExecutable: BrowserExecutable | null;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getPageAndCleanupFn = void 0;
|
|
4
|
-
const
|
|
4
|
+
const browser_1 = require("./browser");
|
|
5
5
|
const open_browser_1 = require("./open-browser");
|
|
6
6
|
const getPageAndCleanupFn = async ({ passedInInstance, browserExecutable, chromiumOptions, }) => {
|
|
7
7
|
if (passedInInstance) {
|
|
@@ -17,7 +17,7 @@ const getPageAndCleanupFn = async ({ passedInInstance, browserExecutable, chromi
|
|
|
17
17
|
},
|
|
18
18
|
};
|
|
19
19
|
}
|
|
20
|
-
const browserInstance = await (0, open_browser_1.openBrowser)(
|
|
20
|
+
const browserInstance = await (0, open_browser_1.openBrowser)(browser_1.DEFAULT_BROWSER, {
|
|
21
21
|
browserExecutable,
|
|
22
22
|
chromiumOptions,
|
|
23
23
|
});
|
package/dist/get-codec-name.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { Codec } from '
|
|
1
|
+
import type { Codec } from './codec';
|
|
2
2
|
export declare const getCodecName: (codec: Codec) => string | null;
|
package/dist/get-codec-name.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getCodecName = void 0;
|
|
4
|
-
const
|
|
4
|
+
const is_audio_codec_1 = require("./is-audio-codec");
|
|
5
5
|
const getCodecName = (codec) => {
|
|
6
|
-
if (
|
|
6
|
+
if ((0, is_audio_codec_1.isAudioCodec)(codec)) {
|
|
7
7
|
return null;
|
|
8
8
|
}
|
|
9
9
|
if (codec === 'h264' || codec === 'h264-mkv') {
|
|
@@ -21,6 +21,9 @@ const getCodecName = (codec) => {
|
|
|
21
21
|
if (codec === 'prores') {
|
|
22
22
|
return 'prores_ks';
|
|
23
23
|
}
|
|
24
|
+
if (codec === 'gif') {
|
|
25
|
+
return 'gif';
|
|
26
|
+
}
|
|
24
27
|
throw new TypeError(`Cannot find FFMPEG codec for ${codec}`);
|
|
25
28
|
};
|
|
26
29
|
exports.getCodecName = getCodecName;
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
1
|
+
import type { TCompMetadata } from 'remotion';
|
|
2
|
+
import type { DownloadMap } from './assets/download-map';
|
|
3
|
+
import type { BrowserExecutable } from './browser-executable';
|
|
4
|
+
import type { BrowserLog } from './browser-log';
|
|
5
|
+
import type { Browser } from './browser/Browser';
|
|
6
|
+
import type { FfmpegExecutable } from './ffmpeg-executable';
|
|
7
|
+
import type { ChromiumOptions } from './open-browser';
|
|
5
8
|
declare type GetCompositionsConfig = {
|
|
6
9
|
inputProps?: object | null;
|
|
7
10
|
envVariables?: Record<string, string>;
|
|
@@ -11,7 +14,12 @@ declare type GetCompositionsConfig = {
|
|
|
11
14
|
timeoutInMilliseconds?: number;
|
|
12
15
|
chromiumOptions?: ChromiumOptions;
|
|
13
16
|
ffmpegExecutable?: FfmpegExecutable;
|
|
17
|
+
ffprobeExecutable?: FfmpegExecutable;
|
|
14
18
|
port?: number | null;
|
|
19
|
+
/**
|
|
20
|
+
* @deprecated Only for Remotion internal usage
|
|
21
|
+
*/
|
|
22
|
+
downloadMap?: DownloadMap;
|
|
15
23
|
};
|
|
16
24
|
export declare const getCompositions: (serveUrlOrWebpackUrl: string, config?: GetCompositionsConfig) => Promise<TCompMetadata[]>;
|
|
17
25
|
export {};
|
package/dist/get-compositions.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getCompositions = void 0;
|
|
4
|
+
const download_map_1 = require("./assets/download-map");
|
|
4
5
|
const handle_javascript_exception_1 = require("./error-handling/handle-javascript-exception");
|
|
5
6
|
const get_browser_instance_1 = require("./get-browser-instance");
|
|
6
|
-
const make_assets_download_dir_1 = require("./make-assets-download-dir");
|
|
7
7
|
const prepare_server_1 = require("./prepare-server");
|
|
8
8
|
const puppeteer_evaluate_1 = require("./puppeteer-evaluate");
|
|
9
9
|
const set_props_and_env_1 = require("./set-props-and-env");
|
|
@@ -14,8 +14,8 @@ const innerGetCompositions = async (serveUrl, page, config, proxyPort) => {
|
|
|
14
14
|
var _a;
|
|
15
15
|
(_a = config.onBrowserLog) === null || _a === void 0 ? void 0 : _a.call(config, {
|
|
16
16
|
stackTrace: log.stackTrace(),
|
|
17
|
-
text: log.text
|
|
18
|
-
type: log.type
|
|
17
|
+
text: log.text,
|
|
18
|
+
type: log.type,
|
|
19
19
|
});
|
|
20
20
|
});
|
|
21
21
|
}
|
|
@@ -29,6 +29,8 @@ const innerGetCompositions = async (serveUrl, page, config, proxyPort) => {
|
|
|
29
29
|
timeoutInMilliseconds: config === null || config === void 0 ? void 0 : config.timeoutInMilliseconds,
|
|
30
30
|
proxyPort,
|
|
31
31
|
retriesRemaining: 2,
|
|
32
|
+
audioEnabled: false,
|
|
33
|
+
videoEnabled: false,
|
|
32
34
|
});
|
|
33
35
|
await (0, puppeteer_evaluate_1.puppeteerEvaluateWithCatch)({
|
|
34
36
|
page,
|
|
@@ -40,7 +42,7 @@ const innerGetCompositions = async (serveUrl, page, config, proxyPort) => {
|
|
|
40
42
|
frame: null,
|
|
41
43
|
args: [],
|
|
42
44
|
});
|
|
43
|
-
await page.waitForFunction('window.ready === true');
|
|
45
|
+
await page.waitForFunction(page.browser, 'window.ready === true');
|
|
44
46
|
const result = await (0, puppeteer_evaluate_1.puppeteerEvaluateWithCatch)({
|
|
45
47
|
pageFunction: () => {
|
|
46
48
|
return window.getStaticCompositions();
|
|
@@ -52,15 +54,15 @@ const innerGetCompositions = async (serveUrl, page, config, proxyPort) => {
|
|
|
52
54
|
return result;
|
|
53
55
|
};
|
|
54
56
|
const getCompositions = async (serveUrlOrWebpackUrl, config) => {
|
|
55
|
-
var _a, _b;
|
|
56
|
-
const
|
|
57
|
+
var _a, _b, _c;
|
|
58
|
+
const downloadMap = (_a = config === null || config === void 0 ? void 0 : config.downloadMap) !== null && _a !== void 0 ? _a : (0, download_map_1.makeDownloadMap)();
|
|
57
59
|
const { page, cleanup } = await (0, get_browser_instance_1.getPageAndCleanupFn)({
|
|
58
60
|
passedInInstance: config === null || config === void 0 ? void 0 : config.puppeteerInstance,
|
|
59
|
-
browserExecutable: (
|
|
60
|
-
chromiumOptions: (
|
|
61
|
+
browserExecutable: (_b = config === null || config === void 0 ? void 0 : config.browserExecutable) !== null && _b !== void 0 ? _b : null,
|
|
62
|
+
chromiumOptions: (_c = config === null || config === void 0 ? void 0 : config.chromiumOptions) !== null && _c !== void 0 ? _c : {},
|
|
61
63
|
});
|
|
62
64
|
return new Promise((resolve, reject) => {
|
|
63
|
-
var _a, _b;
|
|
65
|
+
var _a, _b, _c;
|
|
64
66
|
const onError = (err) => reject(err);
|
|
65
67
|
const cleanupPageError = (0, handle_javascript_exception_1.handleJavascriptException)({
|
|
66
68
|
page,
|
|
@@ -70,11 +72,12 @@ const getCompositions = async (serveUrlOrWebpackUrl, config) => {
|
|
|
70
72
|
let close = null;
|
|
71
73
|
(0, prepare_server_1.prepareServer)({
|
|
72
74
|
webpackConfigOrServeUrl: serveUrlOrWebpackUrl,
|
|
73
|
-
downloadDir,
|
|
74
75
|
onDownload: () => undefined,
|
|
75
76
|
onError,
|
|
76
77
|
ffmpegExecutable: (_a = config === null || config === void 0 ? void 0 : config.ffmpegExecutable) !== null && _a !== void 0 ? _a : null,
|
|
77
|
-
|
|
78
|
+
ffprobeExecutable: (_b = config === null || config === void 0 ? void 0 : config.ffprobeExecutable) !== null && _b !== void 0 ? _b : null,
|
|
79
|
+
port: (_c = config === null || config === void 0 ? void 0 : config.port) !== null && _c !== void 0 ? _c : null,
|
|
80
|
+
downloadMap,
|
|
78
81
|
})
|
|
79
82
|
.then(({ serveUrl, closeServer, offthreadPort }) => {
|
|
80
83
|
close = closeServer;
|
|
@@ -88,6 +91,10 @@ const getCompositions = async (serveUrlOrWebpackUrl, config) => {
|
|
|
88
91
|
cleanup();
|
|
89
92
|
close === null || close === void 0 ? void 0 : close();
|
|
90
93
|
cleanupPageError();
|
|
94
|
+
// Clean download map if it was not passed in
|
|
95
|
+
if (!(config === null || config === void 0 ? void 0 : config.downloadMap)) {
|
|
96
|
+
(0, download_map_1.cleanDownloadMap)(downloadMap);
|
|
97
|
+
}
|
|
91
98
|
});
|
|
92
99
|
});
|
|
93
100
|
};
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const getDurationFromFrameRange: (frameRange: FrameRange | null, durationInFrames: number) => number;
|
|
1
|
+
export declare const getFramesToRender: (frameRange: [number, number], everyNthFrame: number) => number[];
|
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
const
|
|
5
|
-
if (
|
|
6
|
-
|
|
3
|
+
exports.getFramesToRender = void 0;
|
|
4
|
+
const getFramesToRender = (frameRange, everyNthFrame) => {
|
|
5
|
+
if (everyNthFrame === 0) {
|
|
6
|
+
throw new Error('everyNthFrame cannot be 0');
|
|
7
7
|
}
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
return new Array(frameRange[1] - frameRange[0] + 1)
|
|
9
|
+
.fill(true)
|
|
10
|
+
.map((_, index) => {
|
|
11
|
+
return index + frameRange[0];
|
|
12
|
+
})
|
|
13
|
+
.filter((index) => {
|
|
14
|
+
return index % everyNthFrame === 0;
|
|
15
|
+
});
|
|
12
16
|
};
|
|
13
|
-
exports.
|
|
17
|
+
exports.getFramesToRender = getFramesToRender;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { Codec } from '
|
|
2
|
-
export declare const getFileExtensionFromCodec: (codec: Codec, type: 'chunk' | 'final') => "mp3" | "aac" | "wav" | "
|
|
1
|
+
import type { Codec } from './codec';
|
|
2
|
+
export declare const getFileExtensionFromCodec: (codec: Codec, type: 'chunk' | 'final') => "mp3" | "aac" | "wav" | "gif" | "webm" | "mp4" | "mov" | "mkv";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const getExtensionOfFilename: (filename: string) => string | null;
|
|
1
|
+
export declare const getExtensionOfFilename: (filename: string | null) => string | null;
|