@remotion/renderer 3.0.23 → 3.0.26
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/abort.d.ts +7 -0
- package/dist/abort.js +20 -0
- package/dist/assets/download-and-map-assets-to-file.d.ts +21 -8
- package/dist/assets/download-and-map-assets-to-file.js +68 -42
- package/dist/assets/download-file.d.ts +10 -5
- package/dist/assets/download-file.js +18 -5
- package/dist/assets/ffmpeg-volume-expression.d.ts +1 -2
- package/dist/assets/ffmpeg-volume-expression.js +2 -3
- package/dist/browser/Browser.d.ts +10 -159
- package/dist/browser/Browser.js +7 -191
- package/dist/browser/BrowserConnector.d.ts +1 -8
- package/dist/browser/BrowserConnector.js +0 -32
- package/dist/browser/BrowserFetcher.d.ts +1 -1
- package/dist/browser/BrowserFetcher.js +8 -10
- package/dist/browser/BrowserRunner.d.ts +2 -2
- package/dist/browser/BrowserRunner.js +1 -1
- package/dist/browser/Connection.d.ts +4 -11
- package/dist/browser/Connection.js +5 -25
- package/dist/browser/ConsoleMessage.d.ts +4 -28
- package/dist/browser/ConsoleMessage.js +5 -32
- package/dist/browser/DOMWorld.d.ts +9 -7
- package/dist/browser/DOMWorld.js +12 -20
- package/dist/browser/EvalTypes.d.ts +1 -1
- package/dist/browser/EventEmitter.d.ts +1 -48
- package/dist/browser/EventEmitter.js +0 -49
- package/dist/browser/ExecutionContext.d.ts +7 -8
- package/dist/browser/ExecutionContext.js +0 -16
- package/dist/browser/FrameManager.d.ts +12 -15
- package/dist/browser/FrameManager.js +5 -21
- package/dist/browser/HTTPRequest.d.ts +4 -18
- package/dist/browser/HTTPRequest.js +3 -48
- package/dist/browser/HTTPResponse.d.ts +2 -81
- package/dist/browser/HTTPResponse.js +3 -173
- package/dist/browser/JSHandle.d.ts +4 -5
- package/dist/browser/JSHandle.js +0 -3
- package/dist/browser/LaunchOptions.d.ts +2 -81
- package/dist/browser/Launcher.d.ts +2 -2
- package/dist/browser/Launcher.js +21 -119
- package/dist/browser/LifecycleWatcher.d.ts +4 -4
- package/dist/browser/LifecycleWatcher.js +4 -17
- package/dist/browser/NetworkEventManager.d.ts +2 -4
- package/dist/browser/NetworkEventManager.js +0 -47
- package/dist/browser/NetworkManager.d.ts +1 -3
- package/dist/browser/NetworkManager.js +6 -42
- package/dist/browser/NodeWebSocketTransport.d.ts +8 -2
- package/dist/browser/NodeWebSocketTransport.js +1 -1
- package/dist/browser/{page.d.ts → Page.d.ts} +12 -16
- package/dist/browser/{page.js → Page.js} +20 -14
- package/dist/browser/PuppeteerNode.d.ts +7 -59
- package/dist/browser/PuppeteerNode.js +4 -66
- package/dist/browser/Target.d.ts +4 -4
- package/dist/browser/Target.js +1 -1
- package/dist/browser/assert.d.ts +0 -20
- package/dist/browser/assert.js +0 -20
- package/dist/browser/create-browser-fetcher.d.ts +1 -1
- package/dist/browser/create-browser-fetcher.js +4 -25
- package/dist/browser/util.d.ts +5 -4
- package/dist/browser/util.js +11 -3
- package/dist/browser-log.d.ts +1 -1
- package/dist/calculate-sar-dar-pixels.d.ts +9 -0
- package/dist/calculate-sar-dar-pixels.js +19 -0
- package/dist/cancel.d.ts +7 -0
- package/dist/cancel.js +25 -0
- package/dist/ensure-faststart.d.ts +1 -0
- package/dist/ensure-faststart.js +14 -0
- package/dist/error-handling/handle-javascript-exception.d.ts +1 -1
- package/dist/error-handling/handle-javascript-exception.js +2 -2
- package/dist/extract-frame-from-video.d.ts +2 -2
- package/dist/extract-frame-from-video.js +26 -14
- package/dist/faststart/atom.d.ts +35 -0
- package/dist/faststart/atom.js +138 -0
- package/dist/faststart/index.d.ts +0 -0
- package/dist/faststart/index.js +1 -0
- package/dist/faststart/options.d.ts +6 -0
- package/dist/faststart/options.js +2 -0
- package/dist/faststart/qt-faststart.d.ts +18 -0
- package/dist/faststart/qt-faststart.js +66 -0
- package/dist/faststart/update-chunk-offsets.d.ts +10 -0
- package/dist/faststart/update-chunk-offsets.js +114 -0
- package/dist/faststart/util.d.ts +9 -0
- package/dist/faststart/util.js +34 -0
- package/dist/get-browser-instance.d.ts +2 -1
- package/dist/get-compositions.d.ts +1 -1
- package/dist/get-compositions.js +3 -3
- package/dist/get-local-browser-executable.js +7 -5
- package/dist/get-port.js +5 -14
- package/dist/get-video-info.d.ts +8 -0
- package/dist/get-video-info.js +50 -0
- package/dist/index.d.ts +14 -6
- package/dist/index.js +3 -0
- package/dist/last-frame-from-video-cache.d.ts +3 -1
- package/dist/offthread/index.d.ts +0 -0
- package/dist/offthread/index.js +1 -0
- package/dist/offthread-video-server.js +2 -6
- package/dist/open-browser.d.ts +4 -2
- package/dist/open-browser.js +8 -8
- package/dist/prepare-server.js +5 -2
- package/dist/provide-screenshot.d.ts +4 -3
- package/dist/provide-screenshot.js +0 -1
- package/dist/puppeteer-evaluate.d.ts +1 -1
- package/dist/puppeteer-evaluate.js +3 -3
- package/dist/puppeteer-screenshot.d.ts +4 -2
- package/dist/puppeteer-screenshot.js +2 -4
- package/dist/render-frames.d.ts +2 -2
- package/dist/render-frames.js +50 -47
- package/dist/render-gif.d.ts +2 -0
- package/dist/render-gif.js +242 -0
- package/dist/render-media.d.ts +4 -3
- package/dist/render-media.js +8 -3
- package/dist/render-still.d.ts +1 -1
- package/dist/screenshot-dom-element.d.ts +6 -6
- package/dist/screenshot-dom-element.js +3 -6
- package/dist/screenshot-task.d.ts +3 -1
- package/dist/screenshot-task.js +3 -5
- package/dist/seek-to-frame.d.ts +2 -2
- package/dist/seek-to-frame.js +2 -2
- package/dist/set-props-and-env.d.ts +1 -1
- package/dist/set-props-and-env.js +3 -0
- package/dist/should-use-vp9-decoder.d.ts +0 -0
- package/dist/should-use-vp9-decoder.js +1 -0
- package/dist/stitch-frames-to-gif.d.ts +8 -0
- package/dist/stitch-frames-to-gif.js +128 -0
- package/dist/stitch-frames-to-video.d.ts +4 -3
- package/dist/stitch-frames-to-video.js +31 -13
- package/dist/stringify-ffmpeg-filter.d.ts +1 -1
- package/dist/stringify-ffmpeg-filter.js +9 -7
- package/dist/validate-offthreadvideo-image-format.d.ts +1 -0
- package/dist/validate-offthreadvideo-image-format.js +15 -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/package.json +9 -5
- 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/Accessibility.d.ts +0 -175
- package/dist/browser/Accessibility.js +0 -423
- package/dist/browser/AriaQueryHandler.d.ts +0 -20
- package/dist/browser/AriaQueryHandler.js +0 -108
- package/dist/browser/Coverage.d.ts +0 -180
- package/dist/browser/Coverage.js +0 -371
- package/dist/browser/Debug.d.ts +0 -19
- package/dist/browser/Debug.js +0 -42
- package/dist/browser/DeviceDescriptors.d.ts +0 -40
- package/dist/browser/DeviceDescriptors.js +0 -1407
- package/dist/browser/FileChooser.d.ts +0 -56
- package/dist/browser/FileChooser.js +0 -86
- package/dist/browser/Input.d.ts +0 -355
- package/dist/browser/Input.js +0 -592
- package/dist/browser/NetworkConditions.d.ts +0 -26
- package/dist/browser/NetworkConditions.js +0 -33
- package/dist/browser/PDFOptions.d.ts +0 -165
- package/dist/browser/PDFOptions.js +0 -34
- package/dist/browser/PipeTransport.d.ts +0 -10
- package/dist/browser/PipeTransport.js +0 -86
- package/dist/browser/Puppeteer.d.ts +0 -35
- package/dist/browser/Puppeteer.js +0 -17
- package/dist/browser/QueryHandler.d.ts +0 -64
- package/dist/browser/QueryHandler.js +0 -183
- package/dist/browser/SecurityDetails.d.ts +0 -55
- package/dist/browser/SecurityDetails.js +0 -95
- package/dist/browser/Tracing.d.ts +0 -45
- package/dist/browser/Tracing.js +0 -136
- package/dist/browser/USKeyboardLayout.d.ts +0 -39
- package/dist/browser/USKeyboardLayout.js +0 -406
- package/dist/browser/WebWorker.d.ts +0 -96
- package/dist/browser/WebWorker.js +0 -122
- package/dist/browser/dialog.d.ts +0 -70
- package/dist/browser/dialog.js +0 -114
- package/dist/browser/fetch.d.ts +0 -16
- package/dist/browser/fetch.js +0 -46
- package/dist/browser/find-up.d.ts +0 -4
- package/dist/browser/find-up.js +0 -85
- package/dist/browser/pkg-dir.d.ts +0 -3
- package/dist/browser/pkg-dir.js +0 -13
- 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.map +0 -1
- 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
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.puppeteerEvaluateWithCatch = void 0;
|
|
4
|
-
const
|
|
4
|
+
const JSHandle_1 = require("./browser/JSHandle");
|
|
5
5
|
const symbolicateable_error_1 = require("./error-handling/symbolicateable-error");
|
|
6
6
|
const parse_browser_error_stack_1 = require("./parse-browser-error-stack");
|
|
7
7
|
const EVALUATION_SCRIPT_URL = '__puppeteer_evaluation_script__';
|
|
@@ -32,7 +32,7 @@ function isString(obj) {
|
|
|
32
32
|
async function puppeteerEvaluateWithCatch({ page, pageFunction, frame, args, }) {
|
|
33
33
|
var _a, _b, _c, _d, _e, _f, _g;
|
|
34
34
|
const contextId = (await page.mainFrame().executionContext())._contextId;
|
|
35
|
-
const client = page._client;
|
|
35
|
+
const client = page._client();
|
|
36
36
|
const suffix = `//# sourceURL=${EVALUATION_SCRIPT_URL}`;
|
|
37
37
|
if (isString(pageFunction)) {
|
|
38
38
|
const expression = pageFunction;
|
|
@@ -139,7 +139,7 @@ function convertArgument(arg) {
|
|
|
139
139
|
return { unserializableValue: '-Infinity' };
|
|
140
140
|
if (Object.is(arg, NaN))
|
|
141
141
|
return { unserializableValue: 'NaN' };
|
|
142
|
-
const objectHandle = arg && arg instanceof
|
|
142
|
+
const objectHandle = arg && arg instanceof JSHandle_1.JSHandle ? arg : null;
|
|
143
143
|
if (objectHandle) {
|
|
144
144
|
if (objectHandle._disposed)
|
|
145
145
|
throw new Error('JSHandle is disposed!');
|
|
@@ -1,2 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import type { Page } from './browser/Page';
|
|
3
|
+
import type { ScreenshotOptions } from './browser/ScreenshotOptions';
|
|
4
|
+
export declare const screenshot: (page: Page, options: ScreenshotOptions) => Promise<Buffer | string | void>;
|
|
@@ -26,7 +26,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
26
26
|
exports.screenshot = void 0;
|
|
27
27
|
const assert = __importStar(require("assert"));
|
|
28
28
|
const screenshot_task_1 = require("./screenshot-task");
|
|
29
|
-
const screenshot = (page, options
|
|
29
|
+
const screenshot = (page, options) => {
|
|
30
30
|
let screenshotType = null;
|
|
31
31
|
// options.type takes precedence over inferring the type from options.path
|
|
32
32
|
// because it may be a 0-length file with no extension created beforehand
|
|
@@ -58,7 +58,6 @@ const screenshot = (page, options = {}) => {
|
|
|
58
58
|
assert.ok(options.quality >= 0 && options.quality <= 100, 'Expected options.quality to be between 0 and 100 (inclusive), got ' +
|
|
59
59
|
options.quality);
|
|
60
60
|
}
|
|
61
|
-
assert.ok(!options.clip || !options.fullPage, 'options.clip and options.fullPage are exclusive');
|
|
62
61
|
if (options.clip) {
|
|
63
62
|
assert.ok(typeof options.clip.x === 'number', 'Expected options.clip.x to be a number but found ' +
|
|
64
63
|
typeof options.clip.x);
|
|
@@ -71,7 +70,6 @@ const screenshot = (page, options = {}) => {
|
|
|
71
70
|
assert.ok(options.clip.width !== 0, 'Expected options.clip.width not to be 0.');
|
|
72
71
|
assert.ok(options.clip.height !== 0, 'Expected options.clip.height not to be 0.');
|
|
73
72
|
}
|
|
74
|
-
|
|
75
|
-
return page._screenshotTaskQueue.postTask(() => (0, screenshot_task_1._screenshotTask)(page, screenshotType, options));
|
|
73
|
+
return page.screenshotTaskQueue.postTask(() => (0, screenshot_task_1._screenshotTask)(page, screenshotType, options));
|
|
76
74
|
};
|
|
77
75
|
exports.screenshot = screenshot;
|
package/dist/render-frames.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
import type { Browser as PuppeteerBrowser } from 'puppeteer-core';
|
|
3
2
|
import type { BrowserExecutable, FfmpegExecutable, FrameRange, ImageFormat, SmallTCompMetadata } from 'remotion';
|
|
4
3
|
import type { RenderMediaOnDownload } from './assets/download-and-map-assets-to-file';
|
|
5
4
|
import type { BrowserLog } from './browser-log';
|
|
5
|
+
import type { Browser } from './browser/Browser';
|
|
6
6
|
import type { ServeUrlOrWebpackBundle } from './legacy-webpack-config';
|
|
7
7
|
import type { CancelSignal } from './make-cancel-signal';
|
|
8
8
|
import type { ChromiumOptions } from './open-browser';
|
|
@@ -26,7 +26,7 @@ declare type RenderFramesOptions = {
|
|
|
26
26
|
quality?: number;
|
|
27
27
|
frameRange?: FrameRange | null;
|
|
28
28
|
dumpBrowserLogs?: boolean;
|
|
29
|
-
puppeteerInstance?:
|
|
29
|
+
puppeteerInstance?: Browser;
|
|
30
30
|
browserExecutable?: BrowserExecutable;
|
|
31
31
|
onBrowserLog?: (log: BrowserLog) => void;
|
|
32
32
|
onFrameBuffer?: (buffer: Buffer, frame: number) => void;
|
package/dist/render-frames.js
CHANGED
|
@@ -49,6 +49,7 @@ const innerRenderFrames = ({ onFrameUpdate, outputDir, onStart, inputProps, qual
|
|
|
49
49
|
});
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
|
+
const downloadPromises = [];
|
|
52
53
|
const realFrameRange = (0, get_frame_to_render_1.getRealFrameRange)(composition.durationInFrames, frameRange !== null && frameRange !== void 0 ? frameRange : null);
|
|
53
54
|
const frameCount = (0, get_duration_from_frame_range_1.getDurationFromFrameRange)(realFrameRange, composition.durationInFrames);
|
|
54
55
|
const pages = new Array(actualParallelism).fill(true).map(async () => {
|
|
@@ -62,8 +63,8 @@ const innerRenderFrames = ({ onFrameUpdate, outputDir, onStart, inputProps, qual
|
|
|
62
63
|
const logCallback = (log) => {
|
|
63
64
|
onBrowserLog === null || onBrowserLog === void 0 ? void 0 : onBrowserLog({
|
|
64
65
|
stackTrace: log.stackTrace(),
|
|
65
|
-
text: log.text
|
|
66
|
-
type: log.type
|
|
66
|
+
text: log.text,
|
|
67
|
+
type: log.type,
|
|
67
68
|
});
|
|
68
69
|
};
|
|
69
70
|
if (onBrowserLog) {
|
|
@@ -142,7 +143,7 @@ const innerRenderFrames = ({ onFrameUpdate, outputDir, onStart, inputProps, qual
|
|
|
142
143
|
quality,
|
|
143
144
|
options: {
|
|
144
145
|
frame,
|
|
145
|
-
output:
|
|
146
|
+
output: null,
|
|
146
147
|
},
|
|
147
148
|
});
|
|
148
149
|
remotion_1.Internals.perf.stopPerfMeasure(id);
|
|
@@ -175,13 +176,13 @@ const innerRenderFrames = ({ onFrameUpdate, outputDir, onStart, inputProps, qual
|
|
|
175
176
|
const compressedAssets = collectedAssets.map((asset) => remotion_1.Internals.AssetCompression.compressAsset(assets.filter(remotion_1.Internals.truthy).flat(1), asset));
|
|
176
177
|
assets[index] = compressedAssets;
|
|
177
178
|
compressedAssets.forEach((asset) => {
|
|
178
|
-
(0, download_and_map_assets_to_file_1.downloadAndMapAssetsToFileUrl)({
|
|
179
|
+
downloadPromises.push((0, download_and_map_assets_to_file_1.downloadAndMapAssetsToFileUrl)({
|
|
179
180
|
asset,
|
|
180
181
|
downloadDir,
|
|
181
182
|
onDownload,
|
|
182
183
|
}).catch((err) => {
|
|
183
184
|
onError(new Error(`Error while downloading asset: ${err.stack}`));
|
|
184
|
-
});
|
|
185
|
+
}));
|
|
185
186
|
});
|
|
186
187
|
pool.release(freePage);
|
|
187
188
|
framesRendered++;
|
|
@@ -202,14 +203,11 @@ const innerRenderFrames = ({ onFrameUpdate, outputDir, onStart, inputProps, qual
|
|
|
202
203
|
};
|
|
203
204
|
return returnValue;
|
|
204
205
|
});
|
|
205
|
-
return
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
});
|
|
211
|
-
}),
|
|
212
|
-
]);
|
|
206
|
+
return happyPath
|
|
207
|
+
.then(() => {
|
|
208
|
+
return Promise.all(downloadPromises);
|
|
209
|
+
})
|
|
210
|
+
.then(() => happyPath);
|
|
213
211
|
};
|
|
214
212
|
const renderFrames = (options) => {
|
|
215
213
|
var _a, _b, _c, _d;
|
|
@@ -240,43 +238,48 @@ const renderFrames = (options) => {
|
|
|
240
238
|
return new Promise((resolve, reject) => {
|
|
241
239
|
var _a, _b, _c;
|
|
242
240
|
const cleanup = [];
|
|
243
|
-
const onError = (err) =>
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
241
|
+
const onError = (err) => {
|
|
242
|
+
reject(err);
|
|
243
|
+
};
|
|
244
|
+
Promise.race([
|
|
245
|
+
new Promise((_, rej) => {
|
|
246
|
+
var _a;
|
|
247
|
+
(_a = options.cancelSignal) === null || _a === void 0 ? void 0 : _a.call(options, () => {
|
|
248
|
+
rej(new Error('renderFrames() got cancelled'));
|
|
249
|
+
});
|
|
250
|
+
}),
|
|
251
|
+
Promise.all([
|
|
252
|
+
(0, prepare_server_1.prepareServer)({
|
|
253
|
+
webpackConfigOrServeUrl: selectedServeUrl,
|
|
254
|
+
downloadDir,
|
|
255
|
+
onDownload,
|
|
256
|
+
onError,
|
|
257
|
+
ffmpegExecutable: (_a = options.ffmpegExecutable) !== null && _a !== void 0 ? _a : null,
|
|
258
|
+
ffprobeExecutable: (_b = options.ffprobeExecutable) !== null && _b !== void 0 ? _b : null,
|
|
259
|
+
port: (_c = options.port) !== null && _c !== void 0 ? _c : null,
|
|
260
|
+
}),
|
|
261
|
+
browserInstance,
|
|
262
|
+
]).then(([{ serveUrl, closeServer, offthreadPort }, puppeteerInstance]) => {
|
|
263
|
+
const { stopCycling } = (0, cycle_browser_tabs_1.cycleBrowserTabs)(puppeteerInstance, actualParallelism);
|
|
264
|
+
cleanup.push(stopCycling);
|
|
265
|
+
cleanup.push(closeServer);
|
|
266
|
+
return innerRenderFrames({
|
|
267
|
+
...options,
|
|
268
|
+
puppeteerInstance,
|
|
269
|
+
onError,
|
|
270
|
+
pagesArray: openedPages,
|
|
271
|
+
serveUrl,
|
|
272
|
+
composition,
|
|
273
|
+
actualParallelism,
|
|
274
|
+
onDownload,
|
|
275
|
+
downloadDir,
|
|
276
|
+
proxyPort: offthreadPort,
|
|
277
|
+
});
|
|
253
278
|
}),
|
|
254
|
-
browserInstance,
|
|
255
279
|
])
|
|
256
|
-
.then((
|
|
257
|
-
|
|
258
|
-
const { stopCycling } = (0, cycle_browser_tabs_1.cycleBrowserTabs)(puppeteerInstance, actualParallelism);
|
|
259
|
-
cleanup.push(stopCycling);
|
|
260
|
-
(_a = options.cancelSignal) === null || _a === void 0 ? void 0 : _a.call(options, () => {
|
|
261
|
-
stopCycling();
|
|
262
|
-
closeServer();
|
|
263
|
-
});
|
|
264
|
-
cleanup.push(closeServer);
|
|
265
|
-
const renderFramesProm = innerRenderFrames({
|
|
266
|
-
...options,
|
|
267
|
-
puppeteerInstance,
|
|
268
|
-
onError,
|
|
269
|
-
pagesArray: openedPages,
|
|
270
|
-
serveUrl,
|
|
271
|
-
composition,
|
|
272
|
-
actualParallelism,
|
|
273
|
-
onDownload,
|
|
274
|
-
downloadDir,
|
|
275
|
-
proxyPort: offthreadPort,
|
|
276
|
-
});
|
|
277
|
-
return renderFramesProm;
|
|
280
|
+
.then((res) => {
|
|
281
|
+
return resolve(res);
|
|
278
282
|
})
|
|
279
|
-
.then((res) => resolve(res))
|
|
280
283
|
.catch((err) => reject(err))
|
|
281
284
|
.finally(() => {
|
|
282
285
|
// If browser instance was passed in, we close all the pages
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { RenderMediaOptions } from './render-media';
|
|
2
|
+
export declare const renderGif: ({ parallelism, proResProfile, crf, composition, imageFormat, ffmpegExecutable, inputProps, pixelFormat, codec, envVariables, quality, frameRange, puppeteerInstance, outputLocation, onProgress, overwrite, onDownload, loop, skipNFrames, dumpBrowserLogs, onBrowserLog, onStart, timeoutInMilliseconds, chromiumOptions, scale, browserExecutable, port, cancelSignal, ...options }: RenderMediaOptions) => Promise<void>;
|
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.renderGif = void 0;
|
|
7
|
+
const fs_1 = __importDefault(require("fs"));
|
|
8
|
+
const os_1 = __importDefault(require("os"));
|
|
9
|
+
const path_1 = __importDefault(require("path"));
|
|
10
|
+
const remotion_1 = require("remotion");
|
|
11
|
+
const can_use_parallel_encoding_1 = require("./can-use-parallel-encoding");
|
|
12
|
+
const ensure_frames_in_order_1 = require("./ensure-frames-in-order");
|
|
13
|
+
const ensure_output_directory_1 = require("./ensure-output-directory");
|
|
14
|
+
const get_duration_from_frame_range_1 = require("./get-duration-from-frame-range");
|
|
15
|
+
const get_extension_from_codec_1 = require("./get-extension-from-codec");
|
|
16
|
+
const get_extension_of_filename_1 = require("./get-extension-of-filename");
|
|
17
|
+
const get_frame_to_render_1 = require("./get-frame-to-render");
|
|
18
|
+
const legacy_webpack_config_1 = require("./legacy-webpack-config");
|
|
19
|
+
const make_cancel_signal_1 = require("./make-cancel-signal");
|
|
20
|
+
const prespawn_ffmpeg_1 = require("./prespawn-ffmpeg");
|
|
21
|
+
const render_frames_1 = require("./render-frames");
|
|
22
|
+
const stitch_frames_to_gif_1 = require("./stitch-frames-to-gif");
|
|
23
|
+
const tmp_dir_1 = require("./tmp-dir");
|
|
24
|
+
const validate_even_dimensions_with_codec_1 = require("./validate-even-dimensions-with-codec");
|
|
25
|
+
const validate_output_filename_1 = require("./validate-output-filename");
|
|
26
|
+
const validate_scale_1 = require("./validate-scale");
|
|
27
|
+
const renderGif = ({ parallelism, proResProfile, crf, composition, imageFormat, ffmpegExecutable, inputProps, pixelFormat, codec, envVariables, quality, frameRange, puppeteerInstance, outputLocation, onProgress, overwrite, onDownload, loop, skipNFrames, dumpBrowserLogs, onBrowserLog, onStart, timeoutInMilliseconds, chromiumOptions, scale, browserExecutable, port, cancelSignal, ...options }) => {
|
|
28
|
+
remotion_1.Internals.validateQuality(quality);
|
|
29
|
+
if (typeof crf !== 'undefined' && crf !== null) {
|
|
30
|
+
remotion_1.Internals.validateSelectedCrfAndCodecCombination(crf, codec);
|
|
31
|
+
}
|
|
32
|
+
(0, validate_output_filename_1.validateOutputFilename)(codec, (0, get_extension_of_filename_1.getExtensionOfFilename)(outputLocation));
|
|
33
|
+
(0, validate_scale_1.validateScale)(scale);
|
|
34
|
+
const serveUrl = (0, legacy_webpack_config_1.getServeUrlWithFallback)(options);
|
|
35
|
+
let stitchStage = 'encoding';
|
|
36
|
+
let stitcherFfmpeg;
|
|
37
|
+
let preStitcher = null;
|
|
38
|
+
let encodedFrames = 0;
|
|
39
|
+
let renderedFrames = 0;
|
|
40
|
+
let renderedDoneIn = null;
|
|
41
|
+
let encodedDoneIn = null;
|
|
42
|
+
let cancelled = false;
|
|
43
|
+
const renderStart = Date.now();
|
|
44
|
+
const tmpdir = (0, tmp_dir_1.tmpDir)('pre-encode');
|
|
45
|
+
const parallelEncoding = (0, can_use_parallel_encoding_1.canUseParallelEncoding)(codec);
|
|
46
|
+
const actualImageFormat = imageFormat !== null && imageFormat !== void 0 ? imageFormat : 'jpeg';
|
|
47
|
+
const preEncodedFileLocation = parallelEncoding
|
|
48
|
+
? path_1.default.join(tmpdir, 'pre-encode.' + (0, get_extension_from_codec_1.getFileExtensionFromCodec)(codec, 'chunk'))
|
|
49
|
+
: null;
|
|
50
|
+
const outputDir = parallelEncoding
|
|
51
|
+
? null
|
|
52
|
+
: fs_1.default.mkdtempSync(path_1.default.join(os_1.default.tmpdir(), 'react-motion-render'));
|
|
53
|
+
(0, validate_even_dimensions_with_codec_1.validateEvenDimensionsWithCodec)({
|
|
54
|
+
codec,
|
|
55
|
+
height: composition.height,
|
|
56
|
+
scale: scale !== null && scale !== void 0 ? scale : 1,
|
|
57
|
+
width: composition.width,
|
|
58
|
+
});
|
|
59
|
+
const callUpdate = () => {
|
|
60
|
+
onProgress === null || onProgress === void 0 ? void 0 : onProgress({
|
|
61
|
+
encodedDoneIn,
|
|
62
|
+
encodedFrames,
|
|
63
|
+
renderedDoneIn,
|
|
64
|
+
renderedFrames,
|
|
65
|
+
stitchStage,
|
|
66
|
+
});
|
|
67
|
+
};
|
|
68
|
+
const realFrameRange = (0, get_frame_to_render_1.getRealFrameRange)(composition.durationInFrames, frameRange !== null && frameRange !== void 0 ? frameRange : null);
|
|
69
|
+
const cancelRenderFrames = (0, make_cancel_signal_1.makeCancelSignal)();
|
|
70
|
+
const cancelPrestitcher = (0, make_cancel_signal_1.makeCancelSignal)();
|
|
71
|
+
const cancelStitcher = (0, make_cancel_signal_1.makeCancelSignal)();
|
|
72
|
+
cancelSignal === null || cancelSignal === void 0 ? void 0 : cancelSignal(() => {
|
|
73
|
+
cancelRenderFrames.cancel();
|
|
74
|
+
});
|
|
75
|
+
const { waitForRightTimeOfFrameToBeInserted, setFrameToStitch, waitForFinish } = (0, ensure_frames_in_order_1.ensureFramesInOrder)(realFrameRange);
|
|
76
|
+
const actualGifFps = Math.floor(composition.fps / (skipNFrames + 1));
|
|
77
|
+
const createPrestitcherIfNecessary = async () => {
|
|
78
|
+
if (preEncodedFileLocation) {
|
|
79
|
+
preStitcher = await (0, prespawn_ffmpeg_1.prespawnFfmpeg)({
|
|
80
|
+
width: composition.width * (scale !== null && scale !== void 0 ? scale : 1),
|
|
81
|
+
height: composition.height * (scale !== null && scale !== void 0 ? scale : 1),
|
|
82
|
+
fps: actualGifFps,
|
|
83
|
+
outputLocation: preEncodedFileLocation,
|
|
84
|
+
pixelFormat,
|
|
85
|
+
codec,
|
|
86
|
+
proResProfile,
|
|
87
|
+
crf,
|
|
88
|
+
onProgress: (frame) => {
|
|
89
|
+
encodedFrames = frame;
|
|
90
|
+
callUpdate();
|
|
91
|
+
},
|
|
92
|
+
verbose: remotion_1.Internals.Logging.isEqualOrBelowLogLevel(remotion_1.Internals.Logging.getLogLevel(), 'verbose'),
|
|
93
|
+
ffmpegExecutable,
|
|
94
|
+
imageFormat: actualImageFormat,
|
|
95
|
+
signal: cancelPrestitcher.cancelSignal,
|
|
96
|
+
});
|
|
97
|
+
stitcherFfmpeg = preStitcher.task;
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
const waitForPrestitcherIfNecessary = async () => {
|
|
101
|
+
var _a;
|
|
102
|
+
if (stitcherFfmpeg) {
|
|
103
|
+
await waitForFinish();
|
|
104
|
+
(_a = stitcherFfmpeg === null || stitcherFfmpeg === void 0 ? void 0 : stitcherFfmpeg.stdin) === null || _a === void 0 ? void 0 : _a.end();
|
|
105
|
+
try {
|
|
106
|
+
await stitcherFfmpeg;
|
|
107
|
+
}
|
|
108
|
+
catch (err) {
|
|
109
|
+
throw new Error(preStitcher === null || preStitcher === void 0 ? void 0 : preStitcher.getLogs());
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
const happyPath = createPrestitcherIfNecessary()
|
|
114
|
+
.then(() => {
|
|
115
|
+
const renderFramesProc = (0, render_frames_1.renderFrames)({
|
|
116
|
+
config: composition,
|
|
117
|
+
onFrameUpdate: (frame) => {
|
|
118
|
+
stitchStage = 'gif';
|
|
119
|
+
renderedFrames = frame;
|
|
120
|
+
callUpdate();
|
|
121
|
+
},
|
|
122
|
+
parallelism,
|
|
123
|
+
outputDir,
|
|
124
|
+
skipNFrames,
|
|
125
|
+
onStart: (data) => {
|
|
126
|
+
renderedFrames = 0;
|
|
127
|
+
callUpdate();
|
|
128
|
+
onStart === null || onStart === void 0 ? void 0 : onStart(data);
|
|
129
|
+
},
|
|
130
|
+
inputProps,
|
|
131
|
+
envVariables,
|
|
132
|
+
imageFormat: actualImageFormat,
|
|
133
|
+
quality,
|
|
134
|
+
frameRange: frameRange !== null && frameRange !== void 0 ? frameRange : null,
|
|
135
|
+
puppeteerInstance,
|
|
136
|
+
onFrameBuffer: parallelEncoding
|
|
137
|
+
? async (buffer, frame) => {
|
|
138
|
+
var _a;
|
|
139
|
+
await waitForRightTimeOfFrameToBeInserted(frame);
|
|
140
|
+
if (cancelled) {
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
(_a = stitcherFfmpeg === null || stitcherFfmpeg === void 0 ? void 0 : stitcherFfmpeg.stdin) === null || _a === void 0 ? void 0 : _a.write(buffer);
|
|
144
|
+
setFrameToStitch(frame + 1);
|
|
145
|
+
}
|
|
146
|
+
: undefined,
|
|
147
|
+
serveUrl,
|
|
148
|
+
dumpBrowserLogs,
|
|
149
|
+
onBrowserLog,
|
|
150
|
+
onDownload,
|
|
151
|
+
timeoutInMilliseconds,
|
|
152
|
+
chromiumOptions,
|
|
153
|
+
scale,
|
|
154
|
+
ffmpegExecutable,
|
|
155
|
+
browserExecutable,
|
|
156
|
+
port,
|
|
157
|
+
cancelSignal: cancelRenderFrames.cancelSignal,
|
|
158
|
+
});
|
|
159
|
+
return renderFramesProc;
|
|
160
|
+
})
|
|
161
|
+
.then((renderFramesReturn) => {
|
|
162
|
+
return Promise.all([renderFramesReturn, waitForPrestitcherIfNecessary()]);
|
|
163
|
+
})
|
|
164
|
+
.then(([{ assetsInfo }]) => {
|
|
165
|
+
renderedDoneIn = Date.now() - renderStart;
|
|
166
|
+
callUpdate();
|
|
167
|
+
(0, ensure_output_directory_1.ensureOutputDirectory)(outputLocation);
|
|
168
|
+
const stitchStart = Date.now();
|
|
169
|
+
return Promise.all([
|
|
170
|
+
(0, stitch_frames_to_gif_1.stitchFramesToGif)({
|
|
171
|
+
width: composition.width * (scale !== null && scale !== void 0 ? scale : 1),
|
|
172
|
+
height: composition.height * (scale !== null && scale !== void 0 ? scale : 1),
|
|
173
|
+
fps: actualGifFps,
|
|
174
|
+
outputLocation,
|
|
175
|
+
internalOptions: {
|
|
176
|
+
preEncodedFileLocation,
|
|
177
|
+
imageFormat: actualImageFormat,
|
|
178
|
+
},
|
|
179
|
+
force: overwrite !== null && overwrite !== void 0 ? overwrite : remotion_1.Internals.DEFAULT_OVERWRITE,
|
|
180
|
+
pixelFormat,
|
|
181
|
+
codec,
|
|
182
|
+
proResProfile,
|
|
183
|
+
crf,
|
|
184
|
+
loop,
|
|
185
|
+
assetsInfo,
|
|
186
|
+
ffmpegExecutable,
|
|
187
|
+
onProgress: (frame) => {
|
|
188
|
+
stitchStage = 'gif';
|
|
189
|
+
encodedFrames = frame;
|
|
190
|
+
callUpdate();
|
|
191
|
+
},
|
|
192
|
+
verbose: remotion_1.Internals.Logging.isEqualOrBelowLogLevel(remotion_1.Internals.Logging.getLogLevel(), 'verbose'),
|
|
193
|
+
dir: outputDir !== null && outputDir !== void 0 ? outputDir : undefined,
|
|
194
|
+
cancelSignal: cancelStitcher.cancelSignal,
|
|
195
|
+
}),
|
|
196
|
+
stitchStart,
|
|
197
|
+
]);
|
|
198
|
+
})
|
|
199
|
+
.then(([, stitchStart]) => {
|
|
200
|
+
encodedFrames = (0, get_duration_from_frame_range_1.getDurationFromFrameRange)(frameRange !== null && frameRange !== void 0 ? frameRange : null, composition.durationInFrames, skipNFrames);
|
|
201
|
+
encodedDoneIn = Date.now() - stitchStart;
|
|
202
|
+
callUpdate();
|
|
203
|
+
})
|
|
204
|
+
.catch((err) => {
|
|
205
|
+
/**
|
|
206
|
+
* When an error is thrown in renderFrames(...) (e.g., when delayRender() is used incorrectly), fs.unlinkSync(...) throws an error that the file is locked because ffmpeg is still running, and renderMedia returns it.
|
|
207
|
+
* Therefore we first kill the FFMPEG process before deleting the file
|
|
208
|
+
*/
|
|
209
|
+
cancelled = true;
|
|
210
|
+
cancelRenderFrames.cancel();
|
|
211
|
+
cancelStitcher.cancel();
|
|
212
|
+
cancelPrestitcher.cancel();
|
|
213
|
+
if (stitcherFfmpeg !== undefined && stitcherFfmpeg.exitCode === null) {
|
|
214
|
+
const promise = new Promise((resolve) => {
|
|
215
|
+
setTimeout(() => {
|
|
216
|
+
resolve();
|
|
217
|
+
}, 2000);
|
|
218
|
+
stitcherFfmpeg.on('close', resolve);
|
|
219
|
+
});
|
|
220
|
+
stitcherFfmpeg.kill();
|
|
221
|
+
return promise.then(() => {
|
|
222
|
+
throw err;
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
throw err;
|
|
226
|
+
})
|
|
227
|
+
.finally(() => {
|
|
228
|
+
if (preEncodedFileLocation !== null &&
|
|
229
|
+
fs_1.default.existsSync(preEncodedFileLocation)) {
|
|
230
|
+
fs_1.default.unlinkSync(preEncodedFileLocation);
|
|
231
|
+
}
|
|
232
|
+
});
|
|
233
|
+
return Promise.race([
|
|
234
|
+
happyPath,
|
|
235
|
+
new Promise((_resolve, reject) => {
|
|
236
|
+
cancelSignal === null || cancelSignal === void 0 ? void 0 : cancelSignal(() => {
|
|
237
|
+
reject(new Error('renderMedia() got cancelled'));
|
|
238
|
+
});
|
|
239
|
+
}),
|
|
240
|
+
]);
|
|
241
|
+
};
|
|
242
|
+
exports.renderGif = renderGif;
|
package/dist/render-media.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
/// <reference types="node" />
|
|
2
2
|
import type { BrowserExecutable, Codec, FfmpegExecutable, FrameRange, PixelFormat, ProResProfile, SmallTCompMetadata } from 'remotion';
|
|
3
3
|
import type { RenderMediaOnDownload } from './assets/download-and-map-assets-to-file';
|
|
4
4
|
import type { BrowserLog } from './browser-log';
|
|
5
|
+
import type { Browser as PuppeteerBrowser } from './browser/Browser';
|
|
5
6
|
import type { ServeUrlOrWebpackBundle } from './legacy-webpack-config';
|
|
6
7
|
import type { CancelSignal } from './make-cancel-signal';
|
|
7
8
|
import type { ChromiumOptions } from './open-browser';
|
|
@@ -15,7 +16,7 @@ export declare type RenderMediaOnProgress = (progress: {
|
|
|
15
16
|
stitchStage: StitchingState;
|
|
16
17
|
}) => void;
|
|
17
18
|
export declare type RenderMediaOptions = {
|
|
18
|
-
outputLocation
|
|
19
|
+
outputLocation?: string | null;
|
|
19
20
|
codec: Codec;
|
|
20
21
|
composition: SmallTCompMetadata;
|
|
21
22
|
inputProps?: unknown;
|
|
@@ -48,4 +49,4 @@ export declare type RenderMediaOptions = {
|
|
|
48
49
|
* @description Render a video from a composition
|
|
49
50
|
* @link https://www.remotion.dev/docs/renderer/render-media
|
|
50
51
|
*/
|
|
51
|
-
export declare const renderMedia: ({ parallelism, proResProfile, crf, composition, imageFormat, ffmpegExecutable, ffprobeExecutable, inputProps, pixelFormat, codec, envVariables, quality, frameRange, puppeteerInstance, outputLocation, onProgress, overwrite, onDownload, dumpBrowserLogs, onBrowserLog, onStart, timeoutInMilliseconds, chromiumOptions, scale, browserExecutable, port, cancelSignal, ...options }: RenderMediaOptions) => Promise<
|
|
52
|
+
export declare const renderMedia: ({ parallelism, proResProfile, crf, composition, imageFormat, ffmpegExecutable, ffprobeExecutable, inputProps, pixelFormat, codec, envVariables, quality, frameRange, puppeteerInstance, outputLocation, onProgress, overwrite, onDownload, dumpBrowserLogs, onBrowserLog, onStart, timeoutInMilliseconds, chromiumOptions, scale, browserExecutable, port, cancelSignal, ...options }: RenderMediaOptions) => Promise<Buffer | null>;
|
package/dist/render-media.js
CHANGED
|
@@ -34,7 +34,9 @@ const renderMedia = ({ parallelism, proResProfile, crf, composition, imageFormat
|
|
|
34
34
|
if (typeof crf !== 'undefined' && crf !== null) {
|
|
35
35
|
remotion_1.Internals.validateSelectedCrfAndCodecCombination(crf, codec);
|
|
36
36
|
}
|
|
37
|
-
|
|
37
|
+
if (outputLocation) {
|
|
38
|
+
(0, validate_output_filename_1.validateOutputFilename)(codec, (0, get_extension_of_filename_1.getExtensionOfFilename)(outputLocation));
|
|
39
|
+
}
|
|
38
40
|
(0, validate_scale_1.validateScale)(scale);
|
|
39
41
|
const serveUrl = (0, legacy_webpack_config_1.getServeUrlWithFallback)(options);
|
|
40
42
|
let stitchStage = 'encoding';
|
|
@@ -169,7 +171,9 @@ const renderMedia = ({ parallelism, proResProfile, crf, composition, imageFormat
|
|
|
169
171
|
.then(([{ assetsInfo }]) => {
|
|
170
172
|
renderedDoneIn = Date.now() - renderStart;
|
|
171
173
|
callUpdate();
|
|
172
|
-
|
|
174
|
+
if (outputLocation) {
|
|
175
|
+
(0, ensure_output_directory_1.ensureOutputDirectory)(outputLocation);
|
|
176
|
+
}
|
|
173
177
|
const stitchStart = Date.now();
|
|
174
178
|
return Promise.all([
|
|
175
179
|
(0, stitch_frames_to_video_1.stitchFramesToVideo)({
|
|
@@ -202,10 +206,11 @@ const renderMedia = ({ parallelism, proResProfile, crf, composition, imageFormat
|
|
|
202
206
|
stitchStart,
|
|
203
207
|
]);
|
|
204
208
|
})
|
|
205
|
-
.then(([, stitchStart]) => {
|
|
209
|
+
.then(([buffer, stitchStart]) => {
|
|
206
210
|
encodedFrames = (0, get_duration_from_frame_range_1.getDurationFromFrameRange)(frameRange !== null && frameRange !== void 0 ? frameRange : null, composition.durationInFrames);
|
|
207
211
|
encodedDoneIn = Date.now() - stitchStart;
|
|
208
212
|
callUpdate();
|
|
213
|
+
return buffer;
|
|
209
214
|
})
|
|
210
215
|
.catch((err) => {
|
|
211
216
|
/**
|
package/dist/render-still.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { Browser as PuppeteerBrowser } from 'puppeteer-core';
|
|
2
1
|
import type { BrowserExecutable, FfmpegExecutable, SmallTCompMetadata, StillImageFormat } from 'remotion';
|
|
3
2
|
import type { RenderMediaOnDownload } from './assets/download-and-map-assets-to-file';
|
|
3
|
+
import type { Browser as PuppeteerBrowser } from './browser/Browser';
|
|
4
4
|
import type { ServeUrlOrWebpackBundle } from './legacy-webpack-config';
|
|
5
5
|
import type { CancelSignal } from './make-cancel-signal';
|
|
6
6
|
import type { ChromiumOptions } from './open-browser';
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
|
|
1
|
+
/// <reference types="node" />
|
|
2
2
|
import type { ImageFormat } from 'remotion';
|
|
3
|
+
import type { Page } from './browser/Page';
|
|
3
4
|
export declare const screenshotDOMElement: ({ page, imageFormat, quality, opts, }: {
|
|
4
|
-
page:
|
|
5
|
+
page: Page;
|
|
5
6
|
imageFormat: ImageFormat;
|
|
6
7
|
quality: number | undefined;
|
|
7
|
-
opts
|
|
8
|
-
path
|
|
9
|
-
|
|
10
|
-
} | undefined;
|
|
8
|
+
opts: {
|
|
9
|
+
path: string | null;
|
|
10
|
+
};
|
|
11
11
|
}) => Promise<Buffer>;
|
|
@@ -3,11 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.screenshotDOMElement = void 0;
|
|
4
4
|
const puppeteer_evaluate_1 = require("./puppeteer-evaluate");
|
|
5
5
|
const puppeteer_screenshot_1 = require("./puppeteer-screenshot");
|
|
6
|
-
const screenshotDOMElement = async ({ page, imageFormat, quality, opts
|
|
7
|
-
const
|
|
8
|
-
const { selector } = opts;
|
|
9
|
-
if (!selector)
|
|
10
|
-
throw Error('Please provide a selector.');
|
|
6
|
+
const screenshotDOMElement = async ({ page, imageFormat, quality, opts, }) => {
|
|
7
|
+
const { path } = opts;
|
|
11
8
|
if (imageFormat === 'png') {
|
|
12
9
|
await (0, puppeteer_evaluate_1.puppeteerEvaluateWithCatch)({
|
|
13
10
|
pageFunction: () => {
|
|
@@ -33,7 +30,7 @@ const screenshotDOMElement = async ({ page, imageFormat, quality, opts = {}, })
|
|
|
33
30
|
}
|
|
34
31
|
return (0, puppeteer_screenshot_1.screenshot)(page, {
|
|
35
32
|
omitBackground: imageFormat === 'png',
|
|
36
|
-
path,
|
|
33
|
+
path: path !== null && path !== void 0 ? path : undefined,
|
|
37
34
|
type: imageFormat,
|
|
38
35
|
quality,
|
|
39
36
|
});
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
/// <reference types="node" />
|
|
2
2
|
import type { StillImageFormat } from 'remotion';
|
|
3
|
+
import type { Page } from './browser/Page';
|
|
4
|
+
import type { ScreenshotOptions } from './browser/ScreenshotOptions';
|
|
3
5
|
export declare const _screenshotTask: (page: Page, format: StillImageFormat, options: ScreenshotOptions) => Promise<Buffer | string>;
|
package/dist/screenshot-task.js
CHANGED
|
@@ -7,8 +7,8 @@ exports._screenshotTask = void 0;
|
|
|
7
7
|
const fs_1 = __importDefault(require("fs"));
|
|
8
8
|
const remotion_1 = require("remotion");
|
|
9
9
|
const _screenshotTask = async (page, format, options) => {
|
|
10
|
-
const client = page._client;
|
|
11
|
-
const target = page.
|
|
10
|
+
const client = page._client();
|
|
11
|
+
const target = page.target();
|
|
12
12
|
const perfTarget = remotion_1.Internals.perf.startPerfMeasure('activate-target');
|
|
13
13
|
await client.send('Target.activateTarget', {
|
|
14
14
|
targetId: target._targetId,
|
|
@@ -30,9 +30,7 @@ const _screenshotTask = async (page, format, options) => {
|
|
|
30
30
|
if (shouldSetDefaultBackground)
|
|
31
31
|
await client.send('Emulation.setDefaultBackgroundColorOverride');
|
|
32
32
|
const saveMarker = remotion_1.Internals.perf.startPerfMeasure('save');
|
|
33
|
-
const buffer =
|
|
34
|
-
? result.data
|
|
35
|
-
: Buffer.from(result.data, 'base64');
|
|
33
|
+
const buffer = Buffer.from(result.data, 'base64');
|
|
36
34
|
if (options.path)
|
|
37
35
|
await fs_1.default.promises.writeFile(options.path, buffer);
|
|
38
36
|
remotion_1.Internals.perf.stopPerfMeasure(saveMarker);
|
package/dist/seek-to-frame.d.ts
CHANGED