@remotion/renderer 4.0.136 → 4.0.138

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.
Files changed (70) hide show
  1. package/dist/assets/read-file.d.ts +1 -0
  2. package/dist/browser/BrowserFetcher.d.ts +4 -1
  3. package/dist/browser/BrowserFetcher.js +34 -103
  4. package/dist/browser/BrowserPage.d.ts +1 -1
  5. package/dist/browser/BrowserPage.js +1 -1
  6. package/dist/browser/BrowserRunner.js +2 -2
  7. package/dist/browser/NodeWebSocketTransport.js +1 -1
  8. package/dist/browser/browser-download-progress-bar.d.ts +7 -0
  9. package/dist/browser/browser-download-progress-bar.js +21 -0
  10. package/dist/browser/should-log-message.js +6 -0
  11. package/dist/client.d.ts +102 -15
  12. package/dist/combine-video-streams.js +6 -2
  13. package/dist/ensure-browser.d.ts +25 -0
  14. package/dist/ensure-browser.js +53 -0
  15. package/dist/get-browser-instance.d.ts +3 -1
  16. package/dist/get-browser-instance.js +2 -1
  17. package/dist/get-compositions.js +16 -7
  18. package/dist/get-local-browser-executable.d.ts +0 -6
  19. package/dist/get-local-browser-executable.js +4 -56
  20. package/dist/get-local-browser.d.ts +1 -0
  21. package/dist/get-local-browser.js +51 -0
  22. package/dist/index.d.ts +80 -19
  23. package/dist/index.js +7 -3
  24. package/dist/offthread-video-server.d.ts +1 -0
  25. package/dist/open-browser.d.ts +3 -1
  26. package/dist/open-browser.js +29 -18
  27. package/dist/options/enable-multiprocess-on-linux.js +2 -2
  28. package/dist/options/gl.d.ts +3 -3
  29. package/dist/options/index.d.ts +16 -6
  30. package/dist/options/index.js +2 -0
  31. package/dist/options/log-level.js +1 -1
  32. package/dist/options/on-browser-download.d.ts +19 -0
  33. package/dist/options/on-browser-download.js +19 -0
  34. package/dist/options/options-map.d.ts +86 -9
  35. package/dist/options/options-map.js +10 -0
  36. package/dist/options/x264-preset.d.ts +2 -2
  37. package/dist/port-config.d.ts +1 -0
  38. package/dist/render-frames.js +11 -5
  39. package/dist/render-media.d.ts +1 -1
  40. package/dist/render-media.js +9 -4
  41. package/dist/render-still.js +9 -4
  42. package/dist/screenshot-task.js +2 -2
  43. package/dist/select-composition.js +14 -4
  44. package/dist/serve-handler/index.d.ts +1 -0
  45. package/dist/stitch-frames-to-video.d.ts +1 -0
  46. package/dist/test-gpu.d.ts +3 -1
  47. package/dist/test-gpu.js +2 -1
  48. package/dist/to-megabytes.d.ts +1 -0
  49. package/dist/to-megabytes.js +8 -0
  50. package/dist/ws/ws-types.d.ts +2 -0
  51. package/dist/ws/ws-types.js +0 -3
  52. package/package.json +14 -13
  53. package/dist/audio-codec.d.ts +0 -28
  54. package/dist/audio-codec.js +0 -88
  55. package/dist/calculate-ffmpeg-filters.d.ts +0 -12
  56. package/dist/calculate-ffmpeg-filters.js +0 -24
  57. package/dist/check-apple-silicon.d.ts +0 -1
  58. package/dist/check-apple-silicon.js +0 -12
  59. package/dist/create-combined-video.d.ts +0 -18
  60. package/dist/create-combined-video.js +0 -27
  61. package/dist/does-have-m2-bug.d.ts +0 -3
  62. package/dist/does-have-m2-bug.js +0 -12
  63. package/dist/get-extension-from-audio-codec.d.ts +0 -2
  64. package/dist/get-extension-from-audio-codec.js +0 -19
  65. package/dist/is-audio-codec.d.ts +0 -2
  66. package/dist/is-audio-codec.js +0 -7
  67. package/dist/options/prores-profile.d.ts +0 -0
  68. package/dist/options/prores-profile.js +0 -1
  69. package/dist/x264-preset.d.ts +0 -22
  70. package/dist/x264-preset.js +0 -54
@@ -1,7 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.openBrowser = exports.internalOpenBrowser = exports.killAllBrowsers = void 0;
4
+ const browser_download_progress_bar_1 = require("./browser/browser-download-progress-bar");
4
5
  const node_1 = require("./browser/node");
6
+ const ensure_browser_1 = require("./ensure-browser");
5
7
  const get_local_browser_executable_1 = require("./get-local-browser-executable");
6
8
  const get_video_threads_flag_1 = require("./get-video-threads-flag");
7
9
  const log_level_1 = require("./log-level");
@@ -40,20 +42,22 @@ const killAllBrowsers = async () => {
40
42
  }
41
43
  };
42
44
  exports.killAllBrowsers = killAllBrowsers;
43
- const internalOpenBrowser = async ({ browser, browserExecutable, chromiumOptions, forceDeviceScaleFactor, indent, viewport, logLevel, }) => {
45
+ const internalOpenBrowser = async ({ browser, browserExecutable, chromiumOptions, forceDeviceScaleFactor, indent, viewport, logLevel, onBrowserDownload, }) => {
44
46
  var _a, _b, _c;
45
47
  // @ts-expect-error Firefox
46
48
  if (browser === 'firefox') {
47
49
  throw new TypeError('Firefox supported is not yet turned on. Stay tuned for the future.');
48
50
  }
49
- await (0, get_local_browser_executable_1.ensureLocalBrowser)({
50
- preferredBrowserExecutable: browserExecutable,
51
+ await (0, ensure_browser_1.internalEnsureBrowser)({
52
+ browserExecutable,
51
53
  logLevel,
52
54
  indent,
55
+ onBrowserDownload,
53
56
  });
54
57
  const executablePath = (0, get_local_browser_executable_1.getLocalBrowserExecutable)(browserExecutable);
55
58
  const customGlRenderer = getOpenGlRenderer((_a = chromiumOptions.gl) !== null && _a !== void 0 ? _a : null);
56
- logger_1.Log.verbose({ indent, logLevel, tag: 'openBrowser()' }, `Opening browser: gl = ${chromiumOptions.gl}, executable = ${executablePath}, enableMultiProcessOnLinux = ${(_b = chromiumOptions.enableMultiProcessOnLinux) !== null && _b !== void 0 ? _b : false}`);
59
+ const enableMultiProcessOnLinux = (_b = chromiumOptions.enableMultiProcessOnLinux) !== null && _b !== void 0 ? _b : true;
60
+ logger_1.Log.verbose({ indent, logLevel, tag: 'openBrowser()' }, `Opening browser: gl = ${chromiumOptions.gl}, executable = ${executablePath}, enableMultiProcessOnLinux = ${enableMultiProcessOnLinux}`);
57
61
  if (chromiumOptions.userAgent) {
58
62
  logger_1.Log.verbose({ indent, logLevel: 'verbose', tag: 'openBrowser()' }, `Using custom user agent: ${chromiumOptions.userAgent}`);
59
63
  }
@@ -101,21 +105,21 @@ const internalOpenBrowser = async ({ browser, browserExecutable, chromiumOptions
101
105
  '--disable-background-media-suspend',
102
106
  process.platform === 'linux' &&
103
107
  chromiumOptions.gl !== 'vulkan' &&
104
- !chromiumOptions.enableMultiProcessOnLinux
108
+ !enableMultiProcessOnLinux
105
109
  ? '--single-process'
106
110
  : null,
107
- '--allow-running-insecure-content',
108
- '--disable-component-update',
109
- '--disable-domain-reliability',
110
- '--disable-features=AudioServiceOutOfProcess,IsolateOrigins,site-per-process,Translate,BackForwardCache,AvoidUnnecessaryBeforeUnloadCheckSync,IntensiveWakeUpThrottling',
111
- '--disable-print-preview',
112
- '--disable-site-isolation-trials',
113
- '--disk-cache-size=268435456',
114
- '--hide-scrollbars',
115
- '--no-default-browser-check',
116
- '--no-pings',
111
+ '--allow-running-insecure-content', // https://source.chromium.org/search?q=lang:cpp+symbol:kAllowRunningInsecureContent&ss=chromium
112
+ '--disable-component-update', // https://source.chromium.org/search?q=lang:cpp+symbol:kDisableComponentUpdate&ss=chromium
113
+ '--disable-domain-reliability', // https://source.chromium.org/search?q=lang:cpp+symbol:kDisableDomainReliability&ss=chromium
114
+ '--disable-features=AudioServiceOutOfProcess,IsolateOrigins,site-per-process,Translate,BackForwardCache,AvoidUnnecessaryBeforeUnloadCheckSync,IntensiveWakeUpThrottling', // https://source.chromium.org/search?q=file:content_features.cc&ss=chromium
115
+ '--disable-print-preview', // https://source.chromium.org/search?q=lang:cpp+symbol:kDisablePrintPreview&ss=chromium
116
+ '--disable-site-isolation-trials', // https://source.chromium.org/search?q=lang:cpp+symbol:kDisableSiteIsolation&ss=chromium
117
+ '--disk-cache-size=268435456', // https://source.chromium.org/search?q=lang:cpp+symbol:kDiskCacheSize&ss=chromium
118
+ '--hide-scrollbars', // https://source.chromium.org/search?q=lang:cpp+symbol:kHideScrollbars&ss=chromium
119
+ '--no-default-browser-check', // https://source.chromium.org/search?q=lang:cpp+symbol:kNoDefaultBrowserCheck&ss=chromium
120
+ '--no-pings', // https://source.chromium.org/search?q=lang:cpp+symbol:kNoPings&ss=chromium
117
121
  '--font-render-hinting=none',
118
- '--no-zygote',
122
+ '--no-zygote', // https://source.chromium.org/search?q=lang:cpp+symbol:kNoZygote&ss=chromium,
119
123
  typeof forceDeviceScaleFactor === 'undefined'
120
124
  ? null
121
125
  : `--force-device-scale-factor=${forceDeviceScaleFactor}`,
@@ -147,14 +151,21 @@ exports.internalOpenBrowser = internalOpenBrowser;
147
151
  */
148
152
  const openBrowser = (browser, options) => {
149
153
  const { browserExecutable, chromiumOptions, forceDeviceScaleFactor, shouldDumpIo, } = options !== null && options !== void 0 ? options : {};
154
+ const indent = false;
155
+ const logLevel = shouldDumpIo ? 'verbose' : 'info';
150
156
  return (0, exports.internalOpenBrowser)({
151
157
  browser,
152
158
  browserExecutable: browserExecutable !== null && browserExecutable !== void 0 ? browserExecutable : null,
153
159
  chromiumOptions: chromiumOptions !== null && chromiumOptions !== void 0 ? chromiumOptions : {},
154
160
  forceDeviceScaleFactor,
155
- indent: false,
161
+ indent,
156
162
  viewport: null,
157
- logLevel: shouldDumpIo ? 'verbose' : 'info',
163
+ logLevel,
164
+ onBrowserDownload: (0, browser_download_progress_bar_1.defaultBrowserDownloadProgress)({
165
+ indent,
166
+ logLevel,
167
+ api: 'openBrowser()',
168
+ }),
158
169
  });
159
170
  };
160
171
  exports.openBrowser = openBrowser;
@@ -2,12 +2,12 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.enableMultiprocessOnLinuxOption = void 0;
4
4
  const jsx_runtime_1 = require("react/jsx-runtime");
5
- let multiProcessOnLinux = false;
5
+ let multiProcessOnLinux = true;
6
6
  const cliFlag = 'enable-multiprocess-on-linux';
7
7
  exports.enableMultiprocessOnLinuxOption = {
8
8
  name: 'Enable Multiprocess on Linux',
9
9
  cliFlag,
10
- description: () => ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: ["Removes the ", (0, jsx_runtime_1.jsx)("code", { children: '--single-process' }), " flag that gets passed to Chromium on Linux by default. This will make the render faster because multiple processes can be used, but may cause issues with some Linux distributions or if window server libraries are missing."] })),
10
+ description: () => ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: ["Removes the ", (0, jsx_runtime_1.jsx)("code", { children: '--single-process' }), " flag that gets passed to Chromium on Linux by default. This will make the render faster because multiple processes can be used, but may cause issues with some Linux distributions or if window server libraries are missing.", (0, jsx_runtime_1.jsx)("br", {}), "Default: ", (0, jsx_runtime_1.jsx)("code", { children: "false" }), " until v4.0.136, then ", (0, jsx_runtime_1.jsx)("code", { children: "true" }), " from v4.0.137 on because newer Chrome versions ", "don't", " allow rendering with the ", (0, jsx_runtime_1.jsx)("code", { children: "--single-process" }), " flag. ", (0, jsx_runtime_1.jsx)("br", {}), "This flag will be removed in Remotion v5.0."] })),
11
11
  ssrName: 'chromiumOptions.enableMultiprocessOnLinux',
12
12
  docLink: 'https://www.remotion.dev/docs/chromium-flags',
13
13
  type: false,
@@ -1,19 +1,19 @@
1
1
  export declare const validOpenGlRenderers: readonly ["swangle", "angle", "egl", "swiftshader", "vulkan", "angle-egl"];
2
2
  export type OpenGlRenderer = (typeof validOpenGlRenderers)[number];
3
3
  export declare const DEFAULT_OPENGL_RENDERER: OpenGlRenderer | null;
4
- export declare const getChromiumOpenGlRenderer: () => "swangle" | "angle" | "egl" | "swiftshader" | "vulkan" | "angle-egl" | null;
4
+ export declare const getChromiumOpenGlRenderer: () => "angle" | "swangle" | "egl" | "swiftshader" | "vulkan" | "angle-egl" | null;
5
5
  export declare const setChromiumOpenGlRenderer: (renderer: OpenGlRenderer) => void;
6
6
  export declare const glOption: {
7
7
  cliFlag: "gl";
8
8
  docLink: string;
9
9
  name: string;
10
- type: "swangle" | "angle" | "egl" | "swiftshader" | "vulkan" | "angle-egl" | null;
10
+ type: "angle" | "swangle" | "egl" | "swiftshader" | "vulkan" | "angle-egl" | null;
11
11
  ssrName: string;
12
12
  description: () => import("react/jsx-runtime").JSX.Element;
13
13
  getValue: ({ commandLine }: {
14
14
  commandLine: Record<string, unknown>;
15
15
  }) => {
16
- value: "swangle" | "angle" | "egl" | "swiftshader" | "vulkan" | "angle-egl";
16
+ value: "angle" | "swangle" | "egl" | "swiftshader" | "vulkan" | "angle-egl";
17
17
  source: string;
18
18
  } | {
19
19
  value: null;
@@ -245,19 +245,19 @@ export declare const allOptions: {
245
245
  cliFlag: "gl";
246
246
  docLink: string;
247
247
  name: string;
248
- type: "swangle" | "angle" | "egl" | "swiftshader" | "vulkan" | "angle-egl" | null;
248
+ type: "angle" | "swangle" | "egl" | "swiftshader" | "vulkan" | "angle-egl" | null;
249
249
  ssrName: string;
250
250
  description: () => import("react/jsx-runtime").JSX.Element;
251
251
  getValue: ({ commandLine }: {
252
252
  commandLine: Record<string, unknown>;
253
253
  }) => {
254
- value: "swangle" | "angle" | "egl" | "swiftshader" | "vulkan" | "angle-egl";
254
+ value: "angle" | "swangle" | "egl" | "swiftshader" | "vulkan" | "angle-egl";
255
255
  source: string;
256
256
  } | {
257
257
  value: null;
258
258
  source: string;
259
259
  };
260
- setConfig: (value: "swangle" | "angle" | "egl" | "swiftshader" | "vulkan" | "angle-egl" | null) => void;
260
+ setConfig: (value: "angle" | "swangle" | "egl" | "swiftshader" | "vulkan" | "angle-egl" | null) => void;
261
261
  };
262
262
  enableLambdaInsights: {
263
263
  name: string;
@@ -382,17 +382,17 @@ export declare const allOptions: {
382
382
  description: () => import("react/jsx-runtime").JSX.Element;
383
383
  ssrName: "x264Preset";
384
384
  docLink: string;
385
- type: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | null;
385
+ type: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo" | null;
386
386
  getValue: ({ commandLine }: {
387
387
  commandLine: Record<string, unknown>;
388
388
  }) => {
389
- value: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo";
389
+ value: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo";
390
390
  source: string;
391
391
  } | {
392
392
  value: null;
393
393
  source: string;
394
394
  };
395
- setConfig: (profile: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | null) => void;
395
+ setConfig: (profile: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo" | null) => void;
396
396
  };
397
397
  logLevelOption: {
398
398
  cliFlag: "log";
@@ -541,6 +541,16 @@ export declare const allOptions: {
541
541
  setConfig: (value: string | null) => void;
542
542
  type: string | null;
543
543
  };
544
+ onBrowserDownloadOption: {
545
+ name: string;
546
+ cliFlag: "on-browser-download";
547
+ description: () => import("react/jsx-runtime").JSX.Element;
548
+ ssrName: "onBrowserDownload";
549
+ docLink: string;
550
+ type: import("./on-browser-download").OnBrowserDownload;
551
+ getValue: () => never;
552
+ setConfig: () => never;
553
+ };
544
554
  };
545
555
  export type AvailableOptions = keyof typeof allOptions;
546
556
  export type TypeOfOption<Type> = Type extends AnyRemotionOption<infer X> ? X : never;
@@ -22,6 +22,7 @@ const log_level_1 = require("./log-level");
22
22
  const mute_1 = require("./mute");
23
23
  const number_of_gif_loops_1 = require("./number-of-gif-loops");
24
24
  const offthreadvideo_cache_size_1 = require("./offthreadvideo-cache-size");
25
+ const on_browser_download_1 = require("./on-browser-download");
25
26
  const overwrite_1 = require("./overwrite");
26
27
  const prefer_lossless_1 = require("./prefer-lossless");
27
28
  const public_dir_1 = require("./public-dir");
@@ -68,4 +69,5 @@ exports.allOptions = {
68
69
  separateAudioOption: separate_audio_1.separateAudioOption,
69
70
  publicPathOption: public_path_1.publicPathOption,
70
71
  publicDirOption: public_dir_1.publicDirOption,
72
+ onBrowserDownloadOption: on_browser_download_1.onBrowserDownloadOption,
71
73
  };
@@ -9,7 +9,7 @@ exports.logLevelOption = {
9
9
  cliFlag,
10
10
  name: 'Log Level',
11
11
  ssrName: 'logLevel',
12
- description: () => ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: ["One of ", (0, jsx_runtime_1.jsx)("code", { children: "verbose" }), ", ", (0, jsx_runtime_1.jsx)("code", { children: "info" }), ", ", (0, jsx_runtime_1.jsx)("code", { children: "warn" }), ",", ' ', (0, jsx_runtime_1.jsx)("code", { children: "error" }), ". Determines how much is being logged to the console.", ' ', (0, jsx_runtime_1.jsx)("code", { children: "verbose" }), " will also log ", (0, jsx_runtime_1.jsx)("code", { children: "console.log" }), "'", "s from the browser. Default ", (0, jsx_runtime_1.jsx)("code", { children: "info" }), "."] })),
12
+ description: () => ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: ["One of ", (0, jsx_runtime_1.jsx)("code", { children: "verbose" }), ", ", (0, jsx_runtime_1.jsx)("code", { children: "info" }), ", ", (0, jsx_runtime_1.jsx)("code", { children: "warn" }), ",", ' ', (0, jsx_runtime_1.jsx)("code", { children: "error" }), ".", (0, jsx_runtime_1.jsx)("br", {}), " Determines how much is being logged to the console.", (0, jsx_runtime_1.jsx)("br", {}), " ", (0, jsx_runtime_1.jsx)("code", { children: "verbose" }), " will also log ", (0, jsx_runtime_1.jsx)("code", { children: "console.log" }), "'", "s from the browser.", (0, jsx_runtime_1.jsx)("br", {}), " Default ", (0, jsx_runtime_1.jsx)("code", { children: "info" }), "."] })),
13
13
  docLink: 'https://www.remotion.dev/docs/troubleshooting/debug-failed-render',
14
14
  getValue: ({ commandLine }) => {
15
15
  if (commandLine[cliFlag]) {
@@ -0,0 +1,19 @@
1
+ export type DownloadBrowserProgressFn = (progress: {
2
+ percent: number;
3
+ downloadedBytes: number;
4
+ totalSizeInBytes: number;
5
+ }) => void;
6
+ export type OnBrowserDownload = () => {
7
+ onProgress: DownloadBrowserProgressFn;
8
+ version: string | null;
9
+ };
10
+ export declare const onBrowserDownloadOption: {
11
+ name: string;
12
+ cliFlag: "on-browser-download";
13
+ description: () => import("react/jsx-runtime").JSX.Element;
14
+ ssrName: "onBrowserDownload";
15
+ docLink: string;
16
+ type: OnBrowserDownload;
17
+ getValue: () => never;
18
+ setConfig: () => never;
19
+ };
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.onBrowserDownloadOption = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const cliFlag = 'on-browser-download';
6
+ exports.onBrowserDownloadOption = {
7
+ name: 'Browser download callback function',
8
+ cliFlag,
9
+ description: () => ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: ["Gets called when no compatible local browser is detected on the system and this API needs to download a browser. Return a callback to observe progress.", ' ', (0, jsx_runtime_1.jsx)("a", { href: "/docs/renderer/ensure-browser#onbrowserdownload", children: "See here for how to use this option." })] })),
10
+ ssrName: 'onBrowserDownload',
11
+ docLink: 'https://www.remotion.dev/docs/renderer/ensure-browser',
12
+ type: undefined,
13
+ getValue: () => {
14
+ throw new Error('does not support config file');
15
+ },
16
+ setConfig: () => {
17
+ throw new Error('does not support config file');
18
+ },
19
+ };
@@ -72,17 +72,17 @@ export declare const optionsMap: {
72
72
  description: () => import("react/jsx-runtime").JSX.Element;
73
73
  ssrName: "x264Preset";
74
74
  docLink: string;
75
- type: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | null;
75
+ type: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo" | null;
76
76
  getValue: ({ commandLine }: {
77
77
  commandLine: Record<string, unknown>;
78
78
  }) => {
79
- value: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo";
79
+ value: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo";
80
80
  source: string;
81
81
  } | {
82
82
  value: null;
83
83
  source: string;
84
84
  };
85
- setConfig: (profile: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | null) => void;
85
+ setConfig: (profile: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo" | null) => void;
86
86
  };
87
87
  readonly audioBitrate: {
88
88
  name: string;
@@ -303,6 +303,16 @@ export declare const optionsMap: {
303
303
  ssrName: "audioCodec";
304
304
  type: "mp3" | "aac" | "pcm-16" | "opus";
305
305
  };
306
+ readonly onBrowserDownload: {
307
+ name: string;
308
+ cliFlag: "on-browser-download";
309
+ description: () => import("react/jsx-runtime").JSX.Element;
310
+ ssrName: "onBrowserDownload";
311
+ docLink: string;
312
+ type: import("./on-browser-download").OnBrowserDownload;
313
+ getValue: () => never;
314
+ setConfig: () => never;
315
+ };
306
316
  };
307
317
  readonly stitchFramesToVideo: {
308
318
  readonly separateAudioTo: {
@@ -403,6 +413,16 @@ export declare const optionsMap: {
403
413
  };
404
414
  setConfig: (value: string | null) => void;
405
415
  };
416
+ readonly onBrowserDownload: {
417
+ name: string;
418
+ cliFlag: "on-browser-download";
419
+ description: () => import("react/jsx-runtime").JSX.Element;
420
+ ssrName: "onBrowserDownload";
421
+ docLink: string;
422
+ type: import("./on-browser-download").OnBrowserDownload;
423
+ getValue: () => never;
424
+ setConfig: () => never;
425
+ };
406
426
  };
407
427
  readonly getCompositions: {
408
428
  readonly offthreadVideoCacheSizeInBytes: {
@@ -468,6 +488,16 @@ export declare const optionsMap: {
468
488
  };
469
489
  setConfig: (value: string | null) => void;
470
490
  };
491
+ readonly onBrowserDownload: {
492
+ name: string;
493
+ cliFlag: "on-browser-download";
494
+ description: () => import("react/jsx-runtime").JSX.Element;
495
+ ssrName: "onBrowserDownload";
496
+ docLink: string;
497
+ type: import("./on-browser-download").OnBrowserDownload;
498
+ getValue: () => never;
499
+ setConfig: () => never;
500
+ };
471
501
  };
472
502
  readonly selectComposition: {
473
503
  readonly offthreadVideoCacheSizeInBytes: {
@@ -533,6 +563,16 @@ export declare const optionsMap: {
533
563
  };
534
564
  setConfig: (value: string | null) => void;
535
565
  };
566
+ readonly onBrowserDownload: {
567
+ name: string;
568
+ cliFlag: "on-browser-download";
569
+ description: () => import("react/jsx-runtime").JSX.Element;
570
+ ssrName: "onBrowserDownload";
571
+ docLink: string;
572
+ type: import("./on-browser-download").OnBrowserDownload;
573
+ getValue: () => never;
574
+ setConfig: () => never;
575
+ };
536
576
  };
537
577
  readonly renderFrames: {
538
578
  readonly forSeamlessAacConcatenation: {
@@ -631,6 +671,16 @@ export declare const optionsMap: {
631
671
  };
632
672
  setConfig: (value: string | null) => void;
633
673
  };
674
+ readonly onBrowserDownload: {
675
+ name: string;
676
+ cliFlag: "on-browser-download";
677
+ description: () => import("react/jsx-runtime").JSX.Element;
678
+ ssrName: "onBrowserDownload";
679
+ docLink: string;
680
+ type: import("./on-browser-download").OnBrowserDownload;
681
+ getValue: () => never;
682
+ setConfig: () => never;
683
+ };
634
684
  };
635
685
  readonly renderMediaOnLambda: {
636
686
  readonly offthreadVideoCacheSizeInBytes: {
@@ -744,17 +794,17 @@ export declare const optionsMap: {
744
794
  description: () => import("react/jsx-runtime").JSX.Element;
745
795
  ssrName: "x264Preset";
746
796
  docLink: string;
747
- type: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | null;
797
+ type: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo" | null;
748
798
  getValue: ({ commandLine }: {
749
799
  commandLine: Record<string, unknown>;
750
800
  }) => {
751
- value: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo";
801
+ value: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo";
752
802
  source: string;
753
803
  } | {
754
804
  value: null;
755
805
  source: string;
756
806
  };
757
- setConfig: (profile: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | null) => void;
807
+ setConfig: (profile: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo" | null) => void;
758
808
  };
759
809
  readonly encodingMaxRate: {
760
810
  name: string;
@@ -1110,17 +1160,17 @@ export declare const optionsMap: {
1110
1160
  description: () => import("react/jsx-runtime").JSX.Element;
1111
1161
  ssrName: "x264Preset";
1112
1162
  docLink: string;
1113
- type: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | null;
1163
+ type: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo" | null;
1114
1164
  getValue: ({ commandLine }: {
1115
1165
  commandLine: Record<string, unknown>;
1116
1166
  }) => {
1117
- value: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo";
1167
+ value: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo";
1118
1168
  source: string;
1119
1169
  } | {
1120
1170
  value: null;
1121
1171
  source: string;
1122
1172
  };
1123
- setConfig: (profile: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | null) => void;
1173
+ setConfig: (profile: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo" | null) => void;
1124
1174
  };
1125
1175
  readonly encodingMaxRate: {
1126
1176
  name: string;
@@ -1347,4 +1397,31 @@ export declare const optionsMap: {
1347
1397
  setConfig: (value: number) => void;
1348
1398
  };
1349
1399
  };
1400
+ readonly ensureBrowser: {
1401
+ readonly logLevel: {
1402
+ cliFlag: "log";
1403
+ name: string;
1404
+ ssrName: string;
1405
+ description: () => import("react/jsx-runtime").JSX.Element;
1406
+ docLink: string;
1407
+ getValue: ({ commandLine }: {
1408
+ commandLine: Record<string, unknown>;
1409
+ }) => {
1410
+ value: "verbose" | "info" | "warn" | "error";
1411
+ source: string;
1412
+ };
1413
+ setConfig: (newLogLevel: "verbose" | "info" | "warn" | "error") => void;
1414
+ type: "verbose" | "info" | "warn" | "error";
1415
+ };
1416
+ readonly onBrowserDownload: {
1417
+ name: string;
1418
+ cliFlag: "on-browser-download";
1419
+ description: () => import("react/jsx-runtime").JSX.Element;
1420
+ ssrName: "onBrowserDownload";
1421
+ docLink: string;
1422
+ type: import("./on-browser-download").OnBrowserDownload;
1423
+ getValue: () => never;
1424
+ setConfig: () => never;
1425
+ };
1426
+ };
1350
1427
  };
@@ -16,6 +16,7 @@ const log_level_1 = require("./log-level");
16
16
  const mute_1 = require("./mute");
17
17
  const number_of_gif_loops_1 = require("./number-of-gif-loops");
18
18
  const offthreadvideo_cache_size_1 = require("./offthreadvideo-cache-size");
19
+ const on_browser_download_1 = require("./on-browser-download");
19
20
  const prefer_lossless_1 = require("./prefer-lossless");
20
21
  const repro_1 = require("./repro");
21
22
  const scale_1 = require("./scale");
@@ -44,6 +45,7 @@ exports.optionsMap = {
44
45
  forSeamlessAacConcatenation: for_seamless_aac_concatenation_1.forSeamlessAacConcatenationOption,
45
46
  separateAudioTo: separate_audio_1.separateAudioOption,
46
47
  audioCodec: audio_codec_1.audioCodecOption,
48
+ onBrowserDownload: on_browser_download_1.onBrowserDownloadOption,
47
49
  },
48
50
  stitchFramesToVideo: {
49
51
  separateAudioTo: separate_audio_1.separateAudioOption,
@@ -54,18 +56,21 @@ exports.optionsMap = {
54
56
  logLevel: log_level_1.logLevelOption,
55
57
  timeoutInMilliseconds: timeout_1.delayRenderTimeoutInMillisecondsOption,
56
58
  binariesDirectory: binaries_directory_1.binariesDirectoryOption,
59
+ onBrowserDownload: on_browser_download_1.onBrowserDownloadOption,
57
60
  },
58
61
  getCompositions: {
59
62
  offthreadVideoCacheSizeInBytes: offthreadvideo_cache_size_1.offthreadVideoCacheSizeInBytesOption,
60
63
  logLevel: log_level_1.logLevelOption,
61
64
  timeoutInMilliseconds: timeout_1.delayRenderTimeoutInMillisecondsOption,
62
65
  binariesDirectory: binaries_directory_1.binariesDirectoryOption,
66
+ onBrowserDownload: on_browser_download_1.onBrowserDownloadOption,
63
67
  },
64
68
  selectComposition: {
65
69
  offthreadVideoCacheSizeInBytes: offthreadvideo_cache_size_1.offthreadVideoCacheSizeInBytesOption,
66
70
  logLevel: log_level_1.logLevelOption,
67
71
  timeoutInMilliseconds: timeout_1.delayRenderTimeoutInMillisecondsOption,
68
72
  binariesDirectory: binaries_directory_1.binariesDirectoryOption,
73
+ onBrowserDownload: on_browser_download_1.onBrowserDownloadOption,
69
74
  },
70
75
  renderFrames: {
71
76
  forSeamlessAacConcatenation: for_seamless_aac_concatenation_1.forSeamlessAacConcatenationOption,
@@ -74,6 +79,7 @@ exports.optionsMap = {
74
79
  logLevel: log_level_1.logLevelOption,
75
80
  timeoutInMilliseconds: timeout_1.delayRenderTimeoutInMillisecondsOption,
76
81
  binariesDirectory: binaries_directory_1.binariesDirectoryOption,
82
+ onBrowserDownload: on_browser_download_1.onBrowserDownloadOption,
77
83
  },
78
84
  renderMediaOnLambda: {
79
85
  offthreadVideoCacheSizeInBytes: offthreadvideo_cache_size_1.offthreadVideoCacheSizeInBytesOption,
@@ -128,4 +134,8 @@ exports.optionsMap = {
128
134
  jpegQuality: jpeg_quality_1.jpegQualityOption,
129
135
  delayRenderTimeoutInMilliseconds: timeout_1.delayRenderTimeoutInMillisecondsOption,
130
136
  },
137
+ ensureBrowser: {
138
+ logLevel: log_level_1.logLevelOption,
139
+ onBrowserDownload: on_browser_download_1.onBrowserDownloadOption,
140
+ },
131
141
  };
@@ -11,11 +11,11 @@ export declare const x264Option: {
11
11
  description: () => import("react/jsx-runtime").JSX.Element;
12
12
  ssrName: "x264Preset";
13
13
  docLink: string;
14
- type: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | null;
14
+ type: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo" | null;
15
15
  getValue: ({ commandLine }: {
16
16
  commandLine: Record<string, unknown>;
17
17
  }) => {
18
- value: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo";
18
+ value: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo";
19
19
  source: string;
20
20
  } | {
21
21
  value: null;
@@ -2,6 +2,7 @@
2
2
  /// <reference types="node" />
3
3
  /// <reference types="node" />
4
4
  /// <reference types="node" />
5
+ /// <reference types="node" />
5
6
  import type { NetworkInterfaceInfo } from 'os';
6
7
  import os from 'os';
7
8
  type PortConfig = {
@@ -10,8 +10,9 @@ const perf_hooks_1 = require("perf_hooks");
10
10
  const no_react_1 = require("remotion/no-react");
11
11
  const download_and_map_assets_to_file_1 = require("./assets/download-and-map-assets-to-file");
12
12
  const browser_1 = require("./browser");
13
- const is_target_closed_err_1 = require("./browser/is-target-closed-err");
14
13
  const TimeoutSettings_1 = require("./browser/TimeoutSettings");
14
+ const browser_download_progress_bar_1 = require("./browser/browser-download-progress-bar");
15
+ const is_target_closed_err_1 = require("./browser/is-target-closed-err");
15
16
  const compress_assets_1 = require("./compress-assets");
16
17
  const cycle_browser_tabs_1 = require("./cycle-browser-tabs");
17
18
  const handle_javascript_exception_1 = require("./error-handling/handle-javascript-exception");
@@ -356,7 +357,7 @@ const innerRenderFrames = async ({ onFrameUpdate, outputDir, onStart, serialized
356
357
  frameCount: framesToRender.length,
357
358
  };
358
359
  };
359
- const internalRenderFramesRaw = ({ browserExecutable, cancelSignal, chromiumOptions, composition, concurrency, envVariables, everyNthFrame, frameRange, imageFormat, indent, jpegQuality, muted, onBrowserLog, onDownload, onFrameBuffer, onFrameUpdate, onStart, outputDir, port, puppeteerInstance, scale, server, timeoutInMilliseconds, logLevel, webpackBundleOrServeUrl, serializedInputPropsWithCustomSchema, serializedResolvedPropsWithCustomSchema, offthreadVideoCacheSizeInBytes, parallelEncodingEnabled, binariesDirectory, forSeamlessAacConcatenation, compositionStart, }) => {
360
+ const internalRenderFramesRaw = ({ browserExecutable, cancelSignal, chromiumOptions, composition, concurrency, envVariables, everyNthFrame, frameRange, imageFormat, indent, jpegQuality, muted, onBrowserLog, onDownload, onFrameBuffer, onFrameUpdate, onStart, outputDir, port, puppeteerInstance, scale, server, timeoutInMilliseconds, logLevel, webpackBundleOrServeUrl, serializedInputPropsWithCustomSchema, serializedResolvedPropsWithCustomSchema, offthreadVideoCacheSizeInBytes, parallelEncodingEnabled, binariesDirectory, forSeamlessAacConcatenation, compositionStart, onBrowserDownload, }) => {
360
361
  (0, validate_1.validateDimension)(composition.height, 'height', 'in the `config` object passed to `renderFrames()`');
361
362
  (0, validate_1.validateDimension)(composition.width, 'width', 'in the `config` object passed to `renderFrames()`');
362
363
  (0, validate_1.validateFps)(composition.fps, 'in the `config` object of `renderFrames()`', false);
@@ -374,6 +375,7 @@ const internalRenderFramesRaw = ({ browserExecutable, cancelSignal, chromiumOpti
374
375
  indent,
375
376
  viewport: null,
376
377
  logLevel,
378
+ onBrowserDownload,
377
379
  });
378
380
  const browserInstance = puppeteerInstance !== null && puppeteerInstance !== void 0 ? puppeteerInstance : makeBrowser();
379
381
  const actualConcurrency = (0, get_concurrency_1.getActualConcurrency)(concurrency);
@@ -449,6 +451,7 @@ const internalRenderFramesRaw = ({ browserExecutable, cancelSignal, chromiumOpti
449
451
  binariesDirectory,
450
452
  forSeamlessAacConcatenation,
451
453
  compositionStart,
454
+ onBrowserDownload,
452
455
  });
453
456
  }),
454
457
  ])
@@ -492,7 +495,7 @@ exports.internalRenderFrames = (0, wrap_with_error_handling_1.wrapWithErrorHandl
492
495
  * @see [Documentation](https://www.remotion.dev/docs/renderer/render-frames)
493
496
  */
494
497
  const renderFrames = (options) => {
495
- const { composition, inputProps, onFrameUpdate, onStart, outputDir, serveUrl, browserExecutable, cancelSignal, chromiumOptions, concurrency, dumpBrowserLogs, envVariables, everyNthFrame, frameRange, imageFormat, jpegQuality, muted, onBrowserLog, onDownload, onFrameBuffer, port, puppeteerInstance, scale, timeoutInMilliseconds, verbose, quality, logLevel, offthreadVideoCacheSizeInBytes, binariesDirectory, } = options;
498
+ const { composition, inputProps, onFrameUpdate, onStart, outputDir, serveUrl, browserExecutable, cancelSignal, chromiumOptions, concurrency, dumpBrowserLogs, envVariables, everyNthFrame, frameRange, imageFormat, jpegQuality, muted, onBrowserLog, onDownload, onFrameBuffer, port, puppeteerInstance, scale, timeoutInMilliseconds, verbose, quality, logLevel: passedLogLevel, offthreadVideoCacheSizeInBytes, binariesDirectory, onBrowserDownload, } = options;
496
499
  if (!composition) {
497
500
  throw new Error('No `composition` option has been specified for renderFrames()');
498
501
  }
@@ -502,6 +505,8 @@ const renderFrames = (options) => {
502
505
  if (quality) {
503
506
  console.warn('Passing `quality()` to `renderStill` is deprecated. Use `jpegQuality` instead.');
504
507
  }
508
+ const logLevel = verbose || dumpBrowserLogs ? 'verbose' : passedLogLevel !== null && passedLogLevel !== void 0 ? passedLogLevel : 'info';
509
+ const indent = false;
505
510
  return (0, exports.internalRenderFrames)({
506
511
  browserExecutable: browserExecutable !== null && browserExecutable !== void 0 ? browserExecutable : null,
507
512
  cancelSignal,
@@ -512,7 +517,7 @@ const renderFrames = (options) => {
512
517
  everyNthFrame: everyNthFrame !== null && everyNthFrame !== void 0 ? everyNthFrame : 1,
513
518
  frameRange: frameRange !== null && frameRange !== void 0 ? frameRange : null,
514
519
  imageFormat: imageFormat !== null && imageFormat !== void 0 ? imageFormat : 'jpeg',
515
- indent: false,
520
+ indent,
516
521
  jpegQuality: jpegQuality !== null && jpegQuality !== void 0 ? jpegQuality : jpeg_quality_1.DEFAULT_JPEG_QUALITY,
517
522
  onDownload: onDownload !== null && onDownload !== void 0 ? onDownload : null,
518
523
  serializedInputPropsWithCustomSchema: no_react_1.NoReactInternals.serializeJSONWithDate({
@@ -534,7 +539,7 @@ const renderFrames = (options) => {
534
539
  outputDir,
535
540
  port: port !== null && port !== void 0 ? port : null,
536
541
  scale: scale !== null && scale !== void 0 ? scale : 1,
537
- logLevel: verbose || dumpBrowserLogs ? 'verbose' : logLevel !== null && logLevel !== void 0 ? logLevel : 'info',
542
+ logLevel,
538
543
  timeoutInMilliseconds: timeoutInMilliseconds !== null && timeoutInMilliseconds !== void 0 ? timeoutInMilliseconds : TimeoutSettings_1.DEFAULT_TIMEOUT,
539
544
  webpackBundleOrServeUrl: serveUrl,
540
545
  server: undefined,
@@ -543,6 +548,7 @@ const renderFrames = (options) => {
543
548
  binariesDirectory: binariesDirectory !== null && binariesDirectory !== void 0 ? binariesDirectory : null,
544
549
  compositionStart: 0,
545
550
  forSeamlessAacConcatenation: false,
551
+ onBrowserDownload: onBrowserDownload !== null && onBrowserDownload !== void 0 ? onBrowserDownload : (0, browser_download_progress_bar_1.defaultBrowserDownloadProgress)({ indent, logLevel, api: 'renderFrames()' }),
546
552
  });
547
553
  };
548
554
  exports.renderFrames = renderFrames;
@@ -129,5 +129,5 @@ export declare const internalRenderMedia: (args_0: InternalRenderMediaOptions) =
129
129
  * @description Render a video from a composition
130
130
  * @see [Documentation](https://www.remotion.dev/docs/renderer/render-media)
131
131
  */
132
- export declare const renderMedia: ({ proResProfile, x264Preset, crf, composition, inputProps, pixelFormat, codec, envVariables, frameRange, puppeteerInstance, outputLocation, onProgress, overwrite, onDownload, onBrowserLog, onStart, timeoutInMilliseconds, chromiumOptions, scale, browserExecutable, port, cancelSignal, muted, enforceAudioTrack, ffmpegOverride, audioBitrate, videoBitrate, encodingMaxRate, encodingBufferSize, audioCodec, jpegQuality, concurrency, serveUrl, disallowParallelEncoding, everyNthFrame, imageFormat, numberOfGifLoops, dumpBrowserLogs, preferLossless, verbose, quality, logLevel, offthreadVideoCacheSizeInBytes, colorSpace, repro, binariesDirectory, separateAudioTo, forSeamlessAacConcatenation, }: RenderMediaOptions) => Promise<RenderMediaResult>;
132
+ export declare const renderMedia: ({ proResProfile, x264Preset, crf, composition, inputProps, pixelFormat, codec, envVariables, frameRange, puppeteerInstance, outputLocation, onProgress, overwrite, onDownload, onBrowserLog, onStart, timeoutInMilliseconds, chromiumOptions, scale, browserExecutable, port, cancelSignal, muted, enforceAudioTrack, ffmpegOverride, audioBitrate, videoBitrate, encodingMaxRate, encodingBufferSize, audioCodec, jpegQuality, concurrency, serveUrl, disallowParallelEncoding, everyNthFrame, imageFormat, numberOfGifLoops, dumpBrowserLogs, preferLossless, verbose, quality, logLevel: passedLogLevel, offthreadVideoCacheSizeInBytes, colorSpace, repro, binariesDirectory, separateAudioTo, forSeamlessAacConcatenation, onBrowserDownload, }: RenderMediaOptions) => Promise<RenderMediaResult>;
133
133
  export {};