@remotion/renderer 4.0.532 → 4.0.534

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 (176) hide show
  1. package/dist/aac-priming.js +6 -2
  2. package/dist/browser/BrowserFetcher.d.ts +7 -1
  3. package/dist/browser/BrowserFetcher.js +33 -13
  4. package/dist/browser/Connection.js +5 -17
  5. package/dist/browser/DOMWorld.js +19 -13
  6. package/dist/browser/devtools-commands.d.ts +13 -1
  7. package/dist/browser/devtools-types.d.ts +62 -0
  8. package/dist/browser/get-chrome-download-url.d.ts +1 -1
  9. package/dist/browser/get-chrome-download-url.js +19 -33
  10. package/dist/can-use-parallel-encoding.d.ts +0 -1
  11. package/dist/can-use-parallel-encoding.js +10 -10
  12. package/dist/client.d.ts +93 -4
  13. package/dist/client.js +2 -0
  14. package/dist/compress-assets.d.ts +1 -1
  15. package/dist/compress-assets.js +1 -1
  16. package/dist/cycle-browser-tabs.js +9 -1
  17. package/dist/ensure-browser.js +30 -6
  18. package/dist/esm/client.mjs +943 -796
  19. package/dist/esm/index.mjs +4113 -2997
  20. package/dist/esm/pure.mjs +33 -9
  21. package/dist/file-extensions.js +4 -1
  22. package/dist/get-mp4-brand.d.ts +1 -0
  23. package/dist/get-mp4-brand.js +21 -0
  24. package/dist/image-format.d.ts +1 -0
  25. package/dist/image-format.js +8 -4
  26. package/dist/index.d.ts +14 -1
  27. package/dist/index.js +4 -0
  28. package/dist/memory/from-macos-sysctl.d.ts +1 -0
  29. package/dist/memory/from-macos-sysctl.js +50 -0
  30. package/dist/memory/from-proc-meminfo.d.ts +1 -1
  31. package/dist/memory/from-proc-meminfo.js +7 -4
  32. package/dist/memory/get-available-memory.js +29 -21
  33. package/dist/mux-video-and-audio.js +8 -2
  34. package/dist/next-frame-to-render.d.ts +3 -7
  35. package/dist/next-frame-to-render.js +3 -22
  36. package/dist/open-browser.js +1 -0
  37. package/dist/options/allow-html-in-canvas.js +1 -1
  38. package/dist/options/api-key.js +1 -1
  39. package/dist/options/ask-ai.js +1 -1
  40. package/dist/options/audio-bitrate.js +1 -1
  41. package/dist/options/audio-codec.js +12 -6
  42. package/dist/options/beep-on-finish.js +1 -1
  43. package/dist/options/benchmark-concurrencies.js +1 -1
  44. package/dist/options/binaries-directory.js +1 -1
  45. package/dist/options/browser-executable.js +1 -1
  46. package/dist/options/browser.js +1 -1
  47. package/dist/options/bundle-cache.js +1 -1
  48. package/dist/options/canvas-tabs.js +1 -1
  49. package/dist/options/chrome-mode.js +1 -1
  50. package/dist/options/color-space.js +1 -1
  51. package/dist/options/concurrency.js +1 -1
  52. package/dist/options/config.js +1 -1
  53. package/dist/options/crf.js +1 -1
  54. package/dist/options/cross-site-isolation.js +1 -1
  55. package/dist/options/dark-mode.js +1 -1
  56. package/dist/options/default-coding-agent.js +1 -1
  57. package/dist/options/default-editor.js +1 -1
  58. package/dist/options/delete-after.js +1 -1
  59. package/dist/options/disable-git-source.js +1 -1
  60. package/dist/options/disable-shared-memory-capture.d.ts +16 -0
  61. package/dist/options/disable-shared-memory-capture.js +29 -0
  62. package/dist/options/disable-web-security.js +1 -1
  63. package/dist/options/disallow-parallel-encoding.js +1 -1
  64. package/dist/options/enable-cancellation.js +1 -1
  65. package/dist/options/enable-lambda-insights.js +1 -1
  66. package/dist/options/enable-multiprocess-on-linux.js +1 -1
  67. package/dist/options/encoding-buffer-size.js +1 -1
  68. package/dist/options/encoding-max-rate.js +1 -1
  69. package/dist/options/enforce-audio.js +1 -1
  70. package/dist/options/env-file.js +1 -1
  71. package/dist/options/every-nth-frame.js +1 -1
  72. package/dist/options/experimental-keep-audio-context-alive.js +1 -1
  73. package/dist/options/experimental-tracks.d.ts +18 -0
  74. package/dist/options/experimental-tracks.js +42 -0
  75. package/dist/options/folder-expiry.js +1 -1
  76. package/dist/options/for-seamless-aac-concatenation.js +1 -1
  77. package/dist/options/force-new-studio.js +1 -1
  78. package/dist/options/frames.js +1 -1
  79. package/dist/options/gl.js +1 -1
  80. package/dist/options/gop-size.js +1 -1
  81. package/dist/options/hardware-acceleration.js +1 -1
  82. package/dist/options/headless.js +1 -1
  83. package/dist/options/ignore-certificate-errors.js +1 -1
  84. package/dist/options/image-sequence-pattern.d.ts +4 -1
  85. package/dist/options/image-sequence-pattern.js +9 -3
  86. package/dist/options/image-sequence.js +1 -1
  87. package/dist/options/index.d.ts +39 -2
  88. package/dist/options/index.js +4 -0
  89. package/dist/options/interactivity.js +1 -1
  90. package/dist/options/ipv4.js +1 -1
  91. package/dist/options/is-production.js +1 -1
  92. package/dist/options/jpeg-quality.js +5 -2
  93. package/dist/options/keyboard-shortcuts.js +1 -1
  94. package/dist/options/latency-hint.js +1 -1
  95. package/dist/options/license-key.js +1 -1
  96. package/dist/options/log-level.js +1 -1
  97. package/dist/options/metadata.js +1 -1
  98. package/dist/options/mute.js +1 -1
  99. package/dist/options/no-open.js +1 -1
  100. package/dist/options/number-of-gif-loops.js +1 -1
  101. package/dist/options/number-of-shared-audio-tags.js +1 -1
  102. package/dist/options/offthreadvideo-cache-size.js +1 -1
  103. package/dist/options/offthreadvideo-threads.js +1 -1
  104. package/dist/options/on-browser-download.js +1 -1
  105. package/dist/options/options-map.d.ts +52 -1
  106. package/dist/options/options-map.js +4 -0
  107. package/dist/options/out-dir.js +1 -1
  108. package/dist/options/override-duration.js +1 -1
  109. package/dist/options/override-fps.js +1 -1
  110. package/dist/options/override-height.js +1 -1
  111. package/dist/options/override-width.js +1 -1
  112. package/dist/options/overwrite.js +1 -1
  113. package/dist/options/package-manager.js +1 -1
  114. package/dist/options/pixel-format.js +1 -1
  115. package/dist/options/port.js +1 -1
  116. package/dist/options/prefer-lossless.js +1 -1
  117. package/dist/options/preview-sample-rate.js +1 -1
  118. package/dist/options/props.js +1 -1
  119. package/dist/options/prores-profile.js +1 -1
  120. package/dist/options/public-dir.js +1 -1
  121. package/dist/options/public-license-key.js +1 -1
  122. package/dist/options/public-path.js +1 -1
  123. package/dist/options/repro.js +1 -1
  124. package/dist/options/rspack.d.ts +1 -1
  125. package/dist/options/rspack.js +1 -1
  126. package/dist/options/runs.js +1 -1
  127. package/dist/options/sample-rate.js +1 -1
  128. package/dist/options/scale.js +1 -1
  129. package/dist/options/separate-audio.js +1 -1
  130. package/dist/options/skip-skills.js +1 -1
  131. package/dist/options/still-frame.js +1 -1
  132. package/dist/options/still-image-format.js +1 -1
  133. package/dist/options/throw-if-site-exists.js +1 -1
  134. package/dist/options/timeout.js +1 -1
  135. package/dist/options/user-agent.js +1 -1
  136. package/dist/options/version-flag.js +1 -1
  137. package/dist/options/video-bitrate.js +1 -1
  138. package/dist/options/video-cache-size.js +1 -1
  139. package/dist/options/video-codec.js +4 -3
  140. package/dist/options/video-image-format.js +6 -2
  141. package/dist/options/webhook-custom-data.js +1 -1
  142. package/dist/options/webpack-poll.js +1 -1
  143. package/dist/options/x264-preset.js +1 -1
  144. package/dist/prespawn-ffmpeg.d.ts +20 -0
  145. package/dist/prespawn-ffmpeg.js +152 -29
  146. package/dist/probe-shared-memory-capture.d.ts +8 -0
  147. package/dist/probe-shared-memory-capture.js +111 -0
  148. package/dist/puppeteer-screenshot.d.ts +3 -1
  149. package/dist/puppeteer-screenshot.js +1 -0
  150. package/dist/pure.d.ts +1 -1
  151. package/dist/remotion-shared-memory-ffmpeg.d.ts +26 -0
  152. package/dist/remotion-shared-memory-ffmpeg.js +312 -0
  153. package/dist/remotion-shared-memory.d.ts +49 -0
  154. package/dist/remotion-shared-memory.js +359 -0
  155. package/dist/render-frame-and-retry-target-close.d.ts +7 -3
  156. package/dist/render-frame-and-retry-target-close.js +23 -4
  157. package/dist/render-frame-with-option-to-reject.d.ts +6 -2
  158. package/dist/render-frame-with-option-to-reject.js +207 -115
  159. package/dist/render-frame.d.ts +6 -6
  160. package/dist/render-frame.js +4 -1
  161. package/dist/render-frames.d.ts +7 -0
  162. package/dist/render-frames.js +20 -18
  163. package/dist/render-media.d.ts +1 -1
  164. package/dist/render-media.js +131 -46
  165. package/dist/render-still.js +1 -0
  166. package/dist/screenshot-background.d.ts +2 -0
  167. package/dist/screenshot-background.js +20 -0
  168. package/dist/screenshot-task.d.ts +4 -2
  169. package/dist/screenshot-task.js +40 -21
  170. package/dist/seek-to-frame.js +1 -1
  171. package/dist/stitch-frames-to-video.js +71 -10
  172. package/dist/take-frame.d.ts +11 -3
  173. package/dist/take-frame.js +10 -8
  174. package/dist/validate-output-filename.d.ts +1 -1
  175. package/dist/validate-output-filename.js +10 -2
  176. package/package.json +13 -13
package/dist/client.d.ts CHANGED
@@ -6,6 +6,7 @@ export type { BuiltInEditor, CustomEditor, DefaultEditor, } from './options/defa
6
6
  export { HardwareAccelerationOption } from './options/hardware-acceleration';
7
7
  export { ProResProfile } from './options/prores-profile';
8
8
  export declare const BrowserSafeApis: {
9
+ canUseParallelEncoding: (codec: "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav") => boolean;
9
10
  getExtensionOfFilename: (filename: string | null) => string | null;
10
11
  getFileExtensionFromCodec: <T extends "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav">(codec: T, audioCodec: "aac" | "mp3" | "opus" | "pcm-16" | null) => import("./file-extensions").FileExtension;
11
12
  validCodecs: readonly ["h264", "h265", "vp8", "vp9", "av1", "mp3", "aac", "wav", "prores", "h264-mkv", "h264-ts", "gif"];
@@ -246,7 +247,7 @@ export declare const BrowserSafeApis: {
246
247
  validateOutputFilename: <T extends "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav">({ codec, audioCodecSetting, extension, preferLossless, separateAudioTo, }: {
247
248
  codec: T;
248
249
  audioCodecSetting: "aac" | "mp3" | "opus" | "pcm-16" | null;
249
- extension: string;
250
+ extension: string | null;
250
251
  preferLossless: boolean;
251
252
  separateAudioTo: string | null;
252
253
  }) => void;
@@ -611,6 +612,22 @@ export declare const BrowserSafeApis: {
611
612
  setConfig(value: boolean): void;
612
613
  id: "disallow-parallel-encoding";
613
614
  };
615
+ disableSharedMemoryCaptureOption: {
616
+ name: string;
617
+ cliFlag: "disable-shared-memory-capture";
618
+ description: () => import("react/jsx-runtime").JSX.Element;
619
+ ssrName: string;
620
+ docLink: string;
621
+ type: boolean;
622
+ getValue: ({ commandLine }: {
623
+ commandLine: Record<string, unknown>;
624
+ }) => {
625
+ value: boolean;
626
+ source: string;
627
+ };
628
+ setConfig(value: boolean): void;
629
+ id: "disable-shared-memory-capture";
630
+ };
614
631
  folderExpiryOption: {
615
632
  name: string;
616
633
  cliFlag: "enable-folder-expiry";
@@ -1276,13 +1293,16 @@ export declare const BrowserSafeApis: {
1276
1293
  cliFlag: "image-sequence-pattern";
1277
1294
  ssrName: string;
1278
1295
  description: () => import("react/jsx-runtime").JSX.Element;
1279
- docLink: null;
1296
+ docLink: string;
1280
1297
  type: string | null;
1281
1298
  getValue: ({ commandLine }: {
1282
1299
  commandLine: Record<string, unknown>;
1283
1300
  }) => {
1284
1301
  value: string;
1285
1302
  source: string;
1303
+ } | {
1304
+ value: null;
1305
+ source: string;
1286
1306
  };
1287
1307
  setConfig: (pattern: string | null) => void;
1288
1308
  reset: () => void;
@@ -1507,6 +1527,24 @@ export declare const BrowserSafeApis: {
1507
1527
  setConfig(value: boolean): void;
1508
1528
  id: "experimental-keep-audio-context-alive";
1509
1529
  };
1530
+ experimentalTracksOption: {
1531
+ name: string;
1532
+ cliFlag: "experimental-tracks";
1533
+ description: () => import("react/jsx-runtime").JSX.Element;
1534
+ ssrName: null;
1535
+ docLink: string;
1536
+ type: boolean;
1537
+ getValue: ({ commandLine }: {
1538
+ commandLine: Record<string, unknown>;
1539
+ }) => {
1540
+ value: boolean;
1541
+ source: string;
1542
+ };
1543
+ setConfig(value: boolean): void;
1544
+ getConfigValue: () => boolean | null;
1545
+ reset: () => void;
1546
+ id: "experimental-tracks";
1547
+ };
1510
1548
  numberOfSharedAudioTagsOption: {
1511
1549
  name: string;
1512
1550
  cliFlag: "number-of-shared-audio-tags";
@@ -1687,7 +1725,7 @@ export declare const BrowserSafeApis: {
1687
1725
  cliFlag: "rspack";
1688
1726
  description: () => import("react/jsx-runtime").JSX.Element;
1689
1727
  ssrName: null;
1690
- docLink: null;
1728
+ docLink: string;
1691
1729
  type: boolean;
1692
1730
  getValue: ({ commandLine }: {
1693
1731
  commandLine: Record<string, unknown>;
@@ -2178,6 +2216,22 @@ export declare const BrowserSafeApis: {
2178
2216
  setConfig(value: boolean): void;
2179
2217
  id: "disallow-parallel-encoding";
2180
2218
  };
2219
+ readonly disableSharedMemoryCapture: {
2220
+ name: string;
2221
+ cliFlag: "disable-shared-memory-capture";
2222
+ description: () => import("react/jsx-runtime").JSX.Element;
2223
+ ssrName: string;
2224
+ docLink: string;
2225
+ type: boolean;
2226
+ getValue: ({ commandLine }: {
2227
+ commandLine: Record<string, unknown>;
2228
+ }) => {
2229
+ value: boolean;
2230
+ source: string;
2231
+ };
2232
+ setConfig(value: boolean): void;
2233
+ id: "disable-shared-memory-capture";
2234
+ };
2181
2235
  readonly jpegQuality: {
2182
2236
  name: string;
2183
2237
  cliFlag: "jpeg-quality";
@@ -3100,13 +3154,16 @@ export declare const BrowserSafeApis: {
3100
3154
  cliFlag: "image-sequence-pattern";
3101
3155
  ssrName: string;
3102
3156
  description: () => import("react/jsx-runtime").JSX.Element;
3103
- docLink: null;
3157
+ docLink: string;
3104
3158
  type: string | null;
3105
3159
  getValue: ({ commandLine }: {
3106
3160
  commandLine: Record<string, unknown>;
3107
3161
  }) => {
3108
3162
  value: string;
3109
3163
  source: string;
3164
+ } | {
3165
+ value: null;
3166
+ source: string;
3110
3167
  };
3111
3168
  setConfig: (pattern: string | null) => void;
3112
3169
  reset: () => void;
@@ -3130,6 +3187,22 @@ export declare const BrowserSafeApis: {
3130
3187
  };
3131
3188
  };
3132
3189
  readonly renderMediaOnLambda: {
3190
+ readonly disableSharedMemoryCapture: {
3191
+ name: string;
3192
+ cliFlag: "disable-shared-memory-capture";
3193
+ description: () => import("react/jsx-runtime").JSX.Element;
3194
+ ssrName: string;
3195
+ docLink: string;
3196
+ type: boolean;
3197
+ getValue: ({ commandLine }: {
3198
+ commandLine: Record<string, unknown>;
3199
+ }) => {
3200
+ value: boolean;
3201
+ source: string;
3202
+ };
3203
+ setConfig(value: boolean): void;
3204
+ id: "disable-shared-memory-capture";
3205
+ };
3133
3206
  readonly mediaCacheSizeInBytes: {
3134
3207
  name: string;
3135
3208
  cliFlag: "media-cache-size-in-bytes";
@@ -3719,6 +3792,22 @@ export declare const BrowserSafeApis: {
3719
3792
  };
3720
3793
  };
3721
3794
  readonly renderMediaOnCloudRun: {
3795
+ readonly disableSharedMemoryCapture: {
3796
+ name: string;
3797
+ cliFlag: "disable-shared-memory-capture";
3798
+ description: () => import("react/jsx-runtime").JSX.Element;
3799
+ ssrName: string;
3800
+ docLink: string;
3801
+ type: boolean;
3802
+ getValue: ({ commandLine }: {
3803
+ commandLine: Record<string, unknown>;
3804
+ }) => {
3805
+ value: boolean;
3806
+ source: string;
3807
+ };
3808
+ setConfig(value: boolean): void;
3809
+ id: "disable-shared-memory-capture";
3810
+ };
3722
3811
  readonly mediaCacheSizeInBytes: {
3723
3812
  name: string;
3724
3813
  cliFlag: "media-cache-size-in-bytes";
package/dist/client.js CHANGED
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.BrowserSafeApis = exports.defaultEditorIds = exports.customEditorTargetPathPlaceholder = exports.customEditorLineNumberPlaceholder = exports.customEditorColumnNumberPlaceholder = exports.defaultCodingAgentIds = void 0;
4
4
  const no_react_1 = require("remotion/no-react");
5
5
  const TimeoutSettings_1 = require("./browser/TimeoutSettings");
6
+ const can_use_parallel_encoding_1 = require("./can-use-parallel-encoding");
6
7
  const codec_1 = require("./codec");
7
8
  const codec_supports_media_1 = require("./codec-supports-media");
8
9
  const crf_1 = require("./crf");
@@ -31,6 +32,7 @@ Object.defineProperty(exports, "customEditorLineNumberPlaceholder", { enumerable
31
32
  Object.defineProperty(exports, "customEditorTargetPathPlaceholder", { enumerable: true, get: function () { return default_editor_1.customEditorTargetPathPlaceholder; } });
32
33
  Object.defineProperty(exports, "defaultEditorIds", { enumerable: true, get: function () { return default_editor_1.defaultEditorIds; } });
33
34
  exports.BrowserSafeApis = {
35
+ canUseParallelEncoding: can_use_parallel_encoding_1.canUseParallelEncoding,
34
36
  getExtensionOfFilename: get_extension_of_filename_1.getExtensionOfFilename,
35
37
  getFileExtensionFromCodec: get_extension_from_codec_1.getFileExtensionFromCodec,
36
38
  validCodecs: codec_1.validCodecs,
@@ -3,5 +3,5 @@
3
3
  * Since we track the `src` property for every frame, Node.JS can run out of memory easily. Instead of duplicating the src for every frame, we save memory by replacing the full base 64 encoded data with a string `same-as-[asset-id]-[frame]` referencing a previous asset with the same src.
4
4
  */
5
5
  import type { AudioOrVideoAsset } from 'remotion/no-react';
6
- export declare const compressAsset: (previousRenderAssets: AudioOrVideoAsset[], newRenderAsset: AudioOrVideoAsset) => AudioOrVideoAsset;
6
+ export declare const compressAsset: (previousRenderAssets: ReadonlyMap<string, AudioOrVideoAsset>, newRenderAsset: AudioOrVideoAsset) => AudioOrVideoAsset;
7
7
  export declare const isAssetCompressed: (src: string) => boolean;
@@ -9,7 +9,7 @@ const compressAsset = (previousRenderAssets, newRenderAsset) => {
9
9
  if (newRenderAsset.src.length < 400) {
10
10
  return newRenderAsset;
11
11
  }
12
- const assetWithSameSrc = previousRenderAssets.find((a) => a.src === newRenderAsset.src);
12
+ const assetWithSameSrc = previousRenderAssets.get(newRenderAsset.src);
13
13
  if (!assetWithSameSrc) {
14
14
  return newRenderAsset;
15
15
  }
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.cycleBrowserTabs = void 0;
4
+ const flaky_errors_1 = require("./browser/flaky-errors");
4
5
  const logger_1 = require("./logger");
5
6
  const cycleBrowserTabs = ({ puppeteerInstance, concurrency, logLevel, indent, }) => {
6
7
  if (concurrency <= 1) {
@@ -25,7 +26,14 @@ const cycleBrowserTabs = ({ puppeteerInstance, concurrency, logLevel, indent, })
25
26
  if (!(currentPage === null || currentPage === void 0 ? void 0 : currentPage.closed) &&
26
27
  !stopped &&
27
28
  (currentPage === null || currentPage === void 0 ? void 0 : currentPage.url()) !== 'about:blank') {
28
- return currentPage.bringToFront();
29
+ return currentPage.bringToFront().catch((err) => {
30
+ // The tabs are closed at the end of a render while a
31
+ // bringToFront() may still be in flight. Only that case is ignored.
32
+ if (stopped && (0, flaky_errors_1.isTargetClosedErr)(err)) {
33
+ return;
34
+ }
35
+ throw err;
36
+ });
29
37
  }
30
38
  })
31
39
  .catch((err) => logger_1.Log.error({ indent, logLevel }, err))
@@ -10,18 +10,37 @@ const BrowserFetcher_1 = require("./browser/BrowserFetcher");
10
10
  const logger_1 = require("./logger");
11
11
  let currentEnsureBrowserOperation = Promise.resolve();
12
12
  const internalEnsureBrowserUncapped = async ({ indent, logLevel, browserExecutable, onBrowserDownload, chromeMode, }) => {
13
- const status = getBrowserStatus({ browserExecutable, chromeMode });
13
+ const defaultStatus = getBrowserStatus({
14
+ browserExecutable,
15
+ chromeMode,
16
+ version: null,
17
+ });
18
+ if (defaultStatus.type === 'local-puppeteer-browser' ||
19
+ defaultStatus.type === 'user-defined-path') {
20
+ return defaultStatus;
21
+ }
22
+ const { onProgress, version } = onBrowserDownload({ chromeMode });
23
+ const status = version
24
+ ? getBrowserStatus({ browserExecutable, chromeMode, version })
25
+ : defaultStatus;
26
+ if (status.type === 'local-puppeteer-browser') {
27
+ return status;
28
+ }
14
29
  if (status.type === 'version-mismatch') {
30
+ const expectedVersion = (0, BrowserFetcher_1.getExpectedVersion)({
31
+ version,
32
+ chromeMode,
33
+ platform: (0, BrowserFetcher_1.getPlatform)(),
34
+ });
15
35
  const versionInfo = status.actualVersion
16
36
  ? ` (installed: ${status.actualVersion})`
17
37
  : '';
18
- logger_1.Log.info({ indent, logLevel }, `This version of Remotion uses Chrome version ${BrowserFetcher_1.TESTED_VERSION}, but the installed one differs${versionInfo}. Re-downloading.`);
38
+ logger_1.Log.info({ indent, logLevel }, `This version of Remotion uses Chrome version ${expectedVersion}, but the installed one differs${versionInfo}. Re-downloading.`);
19
39
  }
20
40
  if (status.type === 'no-browser' || status.type === 'version-mismatch') {
21
- const { onProgress, version } = onBrowserDownload({ chromeMode });
22
41
  await (0, BrowserFetcher_1.downloadBrowser)({ indent, logLevel, onProgress, version, chromeMode });
23
42
  }
24
- const newStatus = getBrowserStatus({ browserExecutable, chromeMode });
43
+ const newStatus = getBrowserStatus({ browserExecutable, chromeMode, version });
25
44
  return newStatus;
26
45
  };
27
46
  const internalEnsureBrowser = (options) => {
@@ -29,7 +48,7 @@ const internalEnsureBrowser = (options) => {
29
48
  return currentEnsureBrowserOperation;
30
49
  };
31
50
  exports.internalEnsureBrowser = internalEnsureBrowser;
32
- const getBrowserStatus = ({ browserExecutable, chromeMode, }) => {
51
+ const getBrowserStatus = ({ browserExecutable, chromeMode, version, }) => {
33
52
  if (browserExecutable) {
34
53
  if (!fs_1.default.existsSync(browserExecutable)) {
35
54
  throw new Error(`"browserExecutable" was specified as '${browserExecutable}' but the path doesn't exist. Pass "null" for "browserExecutable" to download a browser automatically.`);
@@ -39,7 +58,12 @@ const getBrowserStatus = ({ browserExecutable, chromeMode, }) => {
39
58
  const revision = (0, BrowserFetcher_1.getRevisionInfo)(chromeMode);
40
59
  if (revision.local && fs_1.default.existsSync(revision.executablePath)) {
41
60
  const actualVersion = (0, BrowserFetcher_1.readVersionFile)(chromeMode);
42
- if (actualVersion === BrowserFetcher_1.TESTED_VERSION) {
61
+ if (actualVersion ===
62
+ (0, BrowserFetcher_1.getExpectedVersion)({
63
+ version,
64
+ chromeMode,
65
+ platform: (0, BrowserFetcher_1.getPlatform)(),
66
+ })) {
43
67
  return { path: revision.executablePath, type: 'local-puppeteer-browser' };
44
68
  }
45
69
  return { type: 'version-mismatch', actualVersion };