@remotion/renderer 4.0.537 → 4.0.539

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 (297) hide show
  1. package/dist/aac-priming.d.ts +2 -1
  2. package/dist/assets/apply-tone-frequency.d.ts +2 -1
  3. package/dist/assets/apply-tone-frequency.js +8 -1
  4. package/dist/assets/calculate-asset-positions.js +2 -0
  5. package/dist/assets/convert-assets-to-file-urls.d.ts +2 -1
  6. package/dist/assets/download-and-map-assets-to-file.d.ts +3 -2
  7. package/dist/assets/get-audio-channels.d.ts +3 -2
  8. package/dist/assets/inline-audio-mixing.d.ts +2 -1
  9. package/dist/assets/read-file.js +1 -2
  10. package/dist/assets/types.d.ts +2 -1
  11. package/dist/browser/Browser.d.ts +5 -5
  12. package/dist/browser/Browser.js +74 -65
  13. package/dist/browser/BrowserFetcher.d.ts +7 -5
  14. package/dist/browser/BrowserPage.d.ts +4 -4
  15. package/dist/browser/BrowserPage.js +222 -226
  16. package/dist/browser/BrowserRunner.d.ts +2 -1
  17. package/dist/browser/Connection.js +109 -96
  18. package/dist/browser/ConsoleMessage.d.ts +1 -1
  19. package/dist/browser/ConsoleMessage.js +16 -9
  20. package/dist/browser/DOMWorld.d.ts +1 -1
  21. package/dist/browser/DOMWorld.js +91 -77
  22. package/dist/browser/Errors.js +4 -2
  23. package/dist/browser/EventEmitter.js +1 -2
  24. package/dist/browser/ExecutionContext.js +120 -117
  25. package/dist/browser/FrameManager.js +244 -249
  26. package/dist/browser/HTTPRequest.js +22 -11
  27. package/dist/browser/HTTPResponse.js +16 -3
  28. package/dist/browser/JSHandle.js +30 -17
  29. package/dist/browser/LifecycleWatcher.js +128 -122
  30. package/dist/browser/NetworkEventManager.js +40 -31
  31. package/dist/browser/NetworkManager.js +203 -210
  32. package/dist/browser/NodeWebSocketTransport.js +0 -3
  33. package/dist/browser/Target.d.ts +1 -1
  34. package/dist/browser/Target.js +39 -32
  35. package/dist/browser/TaskQueue.js +18 -5
  36. package/dist/browser/TimeoutSettings.js +25 -12
  37. package/dist/browser/browser-download-progress-bar.d.ts +2 -1
  38. package/dist/browser/get-chrome-download-url.d.ts +3 -2
  39. package/dist/browser/handle-failed-resource.d.ts +2 -1
  40. package/dist/call-ffmpeg.d.ts +7 -6
  41. package/dist/can-concat-seamlessly.d.ts +4 -2
  42. package/dist/can-use-parallel-encoding.d.ts +2 -1
  43. package/dist/check-version-requirements.d.ts +2 -1
  44. package/dist/client.d.ts +302 -280
  45. package/dist/client.js +2 -2
  46. package/dist/codec-supports-media.d.ts +4 -3
  47. package/dist/codec.d.ts +1 -1
  48. package/dist/collect-assets.d.ts +1 -1
  49. package/dist/combine-audio.d.ts +4 -2
  50. package/dist/combine-chunks.d.ts +2 -1
  51. package/dist/combine-video-streams.d.ts +4 -2
  52. package/dist/compositor/compositor.d.ts +4 -3
  53. package/dist/compositor/get-executable-path.d.ts +4 -4
  54. package/dist/compress-audio.d.ts +4 -2
  55. package/dist/create-audio.d.ts +4 -2
  56. package/dist/create-silent-audio.d.ts +2 -1
  57. package/dist/crf.d.ts +6 -4
  58. package/dist/cycle-browser-tabs.d.ts +2 -1
  59. package/dist/ensure-browser.d.ts +1 -52
  60. package/dist/error-handling/handle-javascript-exception.d.ts +1 -1
  61. package/dist/error-handling/handle-javascript-exception.js +0 -5
  62. package/dist/error-handling/symbolicateable-error.d.ts +1 -1
  63. package/dist/error-handling/symbolicateable-error.js +0 -4
  64. package/dist/error-handling.js +1 -1
  65. package/dist/esm/client.mjs +329 -242
  66. package/dist/esm/index.mjs +129 -110
  67. package/dist/extract-audio.d.ts +3 -2
  68. package/dist/ffmpeg-args.d.ts +12 -6
  69. package/dist/finalize-fast-start.d.ts +2 -1
  70. package/dist/get-browser-instance.d.ts +6 -4
  71. package/dist/get-codec-name.d.ts +6 -3
  72. package/dist/get-compositions.d.ts +2 -1
  73. package/dist/get-concurrency.d.ts +1 -1
  74. package/dist/get-concurrency.js +1 -1
  75. package/dist/get-duration-from-frame-range.d.ts +1 -1
  76. package/dist/get-extension-from-codec.d.ts +2 -1
  77. package/dist/get-frame-padded-index.d.ts +2 -1
  78. package/dist/get-local-browser-executable.d.ts +4 -2
  79. package/dist/get-port.d.ts +1 -1
  80. package/dist/get-prores-profile-name.d.ts +3 -1
  81. package/dist/get-silent-parts.d.ts +5 -4
  82. package/dist/get-video-metadata.d.ts +4 -3
  83. package/dist/get-video-threads-flag.d.ts +2 -1
  84. package/dist/goto-page-or-throw.d.ts +1 -1
  85. package/dist/guess-extension-for-media.d.ts +2 -1
  86. package/dist/image-format.d.ts +6 -5
  87. package/dist/index.d.ts +213 -440
  88. package/dist/index.js +18 -18
  89. package/dist/is-audio-codec.d.ts +2 -1
  90. package/dist/log-level.d.ts +2 -2
  91. package/dist/logger.d.ts +6 -6
  92. package/dist/make-page.d.ts +5 -3
  93. package/dist/memory/from-macos-sysctl.d.ts +2 -1
  94. package/dist/memory/from-proc-meminfo.d.ts +2 -1
  95. package/dist/memory/get-available-memory.d.ts +2 -1
  96. package/dist/merge-audio-track.d.ts +1 -1
  97. package/dist/merge-audio-track.js +24 -23
  98. package/dist/merge-inline-audio-tracks.d.ts +2 -1
  99. package/dist/mux-video-and-audio.d.ts +5 -3
  100. package/dist/offthread-video-server.d.ts +2 -1
  101. package/dist/offthread-video-server.js +6 -4
  102. package/dist/open-browser.d.ts +2 -2
  103. package/dist/options/allow-html-in-canvas.js +1 -2
  104. package/dist/options/api-key.d.ts +1 -1
  105. package/dist/options/api-key.js +1 -3
  106. package/dist/options/ask-ai.js +1 -1
  107. package/dist/options/audio-bitrate.js +1 -9
  108. package/dist/options/audio-codec.d.ts +23 -20
  109. package/dist/options/beep-on-finish.js +1 -1
  110. package/dist/options/benchmark-concurrencies.js +1 -2
  111. package/dist/options/binaries-directory.d.ts +1 -1
  112. package/dist/options/binaries-directory.js +1 -9
  113. package/dist/options/browser-executable.d.ts +1 -1
  114. package/dist/options/browser-executable.js +1 -1
  115. package/dist/options/browser.js +1 -2
  116. package/dist/options/bundle-cache.js +1 -2
  117. package/dist/options/canvas-tabs.js +1 -1
  118. package/dist/options/chrome-mode.d.ts +4 -4
  119. package/dist/options/chrome-mode.js +1 -6
  120. package/dist/options/color-space.d.ts +9 -5
  121. package/dist/options/color-space.js +1 -8
  122. package/dist/options/concurrency.d.ts +1 -1
  123. package/dist/options/concurrency.js +1 -5
  124. package/dist/options/config.js +1 -1
  125. package/dist/options/crf.js +1 -1
  126. package/dist/options/cross-site-isolation.js +1 -2
  127. package/dist/options/dark-mode.js +1 -2
  128. package/dist/options/default-coding-agent.d.ts +2 -2
  129. package/dist/options/default-coding-agent.js +1 -2
  130. package/dist/options/default-editor.d.ts +4 -4
  131. package/dist/options/default-editor.js +1 -3
  132. package/dist/options/default-premount-in-seconds.js +1 -1
  133. package/dist/options/delete-after.d.ts +1 -1
  134. package/dist/options/delete-after.js +1 -11
  135. package/dist/options/disable-shared-memory-capture.js +1 -3
  136. package/dist/options/disable-web-security.d.ts +1 -1
  137. package/dist/options/disable-web-security.js +1 -1
  138. package/dist/options/disallow-parallel-encoding.js +1 -1
  139. package/dist/options/enable-cancellation.js +1 -2
  140. package/dist/options/enable-lambda-insights.js +1 -2
  141. package/dist/options/enable-multiprocess-on-linux.js +1 -13
  142. package/dist/options/encoding-buffer-size.d.ts +4 -2
  143. package/dist/options/encoding-buffer-size.js +1 -3
  144. package/dist/options/encoding-max-rate.d.ts +1 -1
  145. package/dist/options/encoding-max-rate.js +1 -3
  146. package/dist/options/enforce-audio.js +1 -15
  147. package/dist/options/env-file.js +1 -3
  148. package/dist/options/every-nth-frame.d.ts +1 -1
  149. package/dist/options/every-nth-frame.js +1 -6
  150. package/dist/options/experimental-client-side-rendering.d.ts +16 -0
  151. package/dist/options/experimental-client-side-rendering.js +30 -0
  152. package/dist/options/experimental-keep-audio-context-alive.js +1 -3
  153. package/dist/options/folder-expiry.d.ts +1 -1
  154. package/dist/options/folder-expiry.js +1 -4
  155. package/dist/options/for-seamless-aac-concatenation.js +1 -3
  156. package/dist/options/force-new-studio.js +1 -1
  157. package/dist/options/frames.d.ts +1 -1
  158. package/dist/options/frames.js +1 -4
  159. package/dist/options/gl.d.ts +6 -6
  160. package/dist/options/gl.js +3 -28
  161. package/dist/options/gop-size.js +1 -3
  162. package/dist/options/hardware-acceleration.d.ts +3 -3
  163. package/dist/options/headless.js +1 -1
  164. package/dist/options/ignore-certificate-errors.d.ts +1 -1
  165. package/dist/options/ignore-certificate-errors.js +1 -1
  166. package/dist/options/image-sequence-pattern.js +1 -5
  167. package/dist/options/image-sequence.js +1 -1
  168. package/dist/options/index.d.ts +91 -72
  169. package/dist/options/index.js +2 -0
  170. package/dist/options/interactivity.js +1 -1
  171. package/dist/options/ipv4.js +1 -1
  172. package/dist/options/is-production.d.ts +1 -1
  173. package/dist/options/is-production.js +1 -4
  174. package/dist/options/jpeg-quality.d.ts +1 -1
  175. package/dist/options/jpeg-quality.js +1 -4
  176. package/dist/options/keyboard-shortcuts.js +1 -1
  177. package/dist/options/latency-hint.d.ts +1 -1
  178. package/dist/options/latency-hint.js +1 -10
  179. package/dist/options/license-key.d.ts +1 -1
  180. package/dist/options/license-key.js +1 -2
  181. package/dist/options/log-level.d.ts +4 -3
  182. package/dist/options/log-level.js +1 -16
  183. package/dist/options/metadata.js +2 -7
  184. package/dist/options/mute.js +1 -1
  185. package/dist/options/no-open.js +1 -1
  186. package/dist/options/number-of-gif-loops.d.ts +1 -1
  187. package/dist/options/number-of-gif-loops.js +1 -13
  188. package/dist/options/number-of-shared-audio-tags.js +1 -1
  189. package/dist/options/offthreadvideo-cache-size.d.ts +1 -1
  190. package/dist/options/offthreadvideo-cache-size.js +1 -11
  191. package/dist/options/offthreadvideo-threads.d.ts +1 -1
  192. package/dist/options/offthreadvideo-threads.js +1 -2
  193. package/dist/options/on-browser-download.d.ts +1 -1
  194. package/dist/options/on-browser-download.js +1 -2
  195. package/dist/options/options-map.d.ts +180 -180
  196. package/dist/options/out-dir.d.ts +1 -1
  197. package/dist/options/out-dir.js +1 -4
  198. package/dist/options/override-duration.js +1 -1
  199. package/dist/options/override-fps.js +1 -1
  200. package/dist/options/override-height.js +1 -1
  201. package/dist/options/override-width.js +1 -1
  202. package/dist/options/overwrite.js +1 -5
  203. package/dist/options/package-manager.d.ts +1 -1
  204. package/dist/options/package-manager.js +1 -12
  205. package/dist/options/pixel-format.d.ts +6 -5
  206. package/dist/options/pixel-format.js +1 -2
  207. package/dist/options/port.js +1 -1
  208. package/dist/options/prefer-lossless.d.ts +1 -1
  209. package/dist/options/prefer-lossless.js +1 -4
  210. package/dist/options/preserve-pitch-on-playback.d.ts +19 -0
  211. package/dist/options/preserve-pitch-on-playback.js +36 -0
  212. package/dist/options/preview-sample-rate.js +1 -3
  213. package/dist/options/props.js +1 -5
  214. package/dist/options/prores-profile.d.ts +2 -2
  215. package/dist/options/prores-profile.js +1 -5
  216. package/dist/options/public-dir.d.ts +1 -1
  217. package/dist/options/public-dir.js +1 -2
  218. package/dist/options/public-license-key.d.ts +1 -1
  219. package/dist/options/public-license-key.js +1 -3
  220. package/dist/options/public-path.d.ts +1 -1
  221. package/dist/options/public-path.js +1 -5
  222. package/dist/options/repro.d.ts +3 -1
  223. package/dist/options/repro.js +1 -1
  224. package/dist/options/rspack.js +1 -1
  225. package/dist/options/runs.js +1 -3
  226. package/dist/options/sample-rate.d.ts +2 -2
  227. package/dist/options/sample-rate.js +1 -2
  228. package/dist/options/scale.js +1 -5
  229. package/dist/options/sequence-activity-limit.js +1 -4
  230. package/dist/options/show-layer-frame-numbers.js +1 -3
  231. package/dist/options/show-premounting.js +1 -2
  232. package/dist/options/skip-skills.js +1 -1
  233. package/dist/options/still-frame.d.ts +1 -1
  234. package/dist/options/still-frame.js +1 -3
  235. package/dist/options/still-image-format.d.ts +3 -2
  236. package/dist/options/still-image-format.js +1 -2
  237. package/dist/options/timeout.d.ts +1 -1
  238. package/dist/options/timeout.js +1 -4
  239. package/dist/options/user-agent.d.ts +1 -1
  240. package/dist/options/user-agent.js +1 -1
  241. package/dist/options/version-flag.js +1 -1
  242. package/dist/options/video-bitrate.js +1 -7
  243. package/dist/options/video-cache-size.d.ts +1 -1
  244. package/dist/options/video-cache-size.js +1 -7
  245. package/dist/options/video-codec.d.ts +9 -7
  246. package/dist/options/video-codec.js +1 -1
  247. package/dist/options/video-image-format.d.ts +6 -5
  248. package/dist/options/video-image-format.js +1 -6
  249. package/dist/options/webhook-custom-data.d.ts +1 -1
  250. package/dist/options/webhook-custom-data.js +1 -1
  251. package/dist/options/webpack-poll.js +1 -1
  252. package/dist/options/x264-preset.d.ts +8 -7
  253. package/dist/options/x264-preset.js +1 -23
  254. package/dist/p-limit.d.ts +1 -1
  255. package/dist/pixel-format.d.ts +4 -3
  256. package/dist/pool.js +0 -2
  257. package/dist/port-config.d.ts +6 -5
  258. package/dist/prespawn-ffmpeg.d.ts +1 -1
  259. package/dist/prestitcher-memory-usage.d.ts +13 -0
  260. package/dist/prestitcher-memory-usage.js +33 -0
  261. package/dist/print-useful-error-message.d.ts +2 -1
  262. package/dist/probe-encoder.d.ts +8 -5
  263. package/dist/probe-shared-memory-capture.d.ts +4 -2
  264. package/dist/prores-profile.d.ts +4 -2
  265. package/dist/puppeteer-evaluate.d.ts +2 -2
  266. package/dist/puppeteer-screenshot.d.ts +4 -3
  267. package/dist/pure.d.ts +12 -15
  268. package/dist/remotion-shared-memory.d.ts +1 -1
  269. package/dist/remotion-shared-memory.js +199 -187
  270. package/dist/render-frame-and-retry-target-close.d.ts +10 -10
  271. package/dist/render-frame-with-option-to-reject.d.ts +7 -5
  272. package/dist/render-frame-with-option-to-reject.js +1 -5
  273. package/dist/render-frame.d.ts +8 -6
  274. package/dist/render-frames.d.ts +1 -40
  275. package/dist/render-has-audio.d.ts +3 -2
  276. package/dist/render-partitions.d.ts +7 -0
  277. package/dist/render-partitions.js +50 -0
  278. package/dist/replace-browser.d.ts +2 -1
  279. package/dist/repro.d.ts +1 -1
  280. package/dist/screenshot-task.d.ts +4 -3
  281. package/dist/seek-to-frame.d.ts +3 -2
  282. package/dist/select-composition.d.ts +1 -20
  283. package/dist/serve-handler/index.d.ts +1 -1
  284. package/dist/serve-handler/range-parser.d.ts +2 -2
  285. package/dist/serve-handler/range-parser.js +1 -1
  286. package/dist/serve-static.d.ts +2 -1
  287. package/dist/serve-static.js +4 -1
  288. package/dist/set-props-and-env.js +2 -6
  289. package/dist/stringify-ffmpeg-filter.d.ts +2 -1
  290. package/dist/stringify-ffmpeg-filter.js +20 -2
  291. package/dist/take-frame.d.ts +1 -1
  292. package/dist/test-gpu.d.ts +4 -2
  293. package/dist/validate-even-dimensions-with-codec.d.ts +4 -2
  294. package/dist/validate-ffmpeg-override.d.ts +1 -1
  295. package/dist/validate-number-of-gif-loops.d.ts +2 -1
  296. package/dist/validate-output-filename.d.ts +4 -2
  297. package/package.json +16 -16
@@ -1155,8 +1155,7 @@ var readFile = async (url, redirectsSoFar = 0) => {
1155
1155
  if (!response.headers.location) {
1156
1156
  throw new Error(`Received a status code ${response.statusCode} but no "Location" header while calling ${response.headers.location}`);
1157
1157
  }
1158
- const { origin } = new URL(url);
1159
- const redirectUrl = new URL(response.headers.location, origin).toString();
1158
+ const redirectUrl = new URL(response.headers.location, url).toString();
1160
1159
  request.destroy();
1161
1160
  response.destroy();
1162
1161
  return readFile(redirectUrl, redirectsSoFar + 1);
@@ -17246,6 +17245,17 @@ var tmpDir = (str) => {
17246
17245
  import fs15, { writeSync } from "node:fs";
17247
17246
  import path15 from "node:path";
17248
17247
 
17248
+ // src/assets/calculate-atempo.ts
17249
+ var calculateATempo = (playbackRate) => {
17250
+ if (playbackRate === 1) {
17251
+ return null;
17252
+ }
17253
+ if (playbackRate >= 0.5 && playbackRate <= 2) {
17254
+ return `atempo=${playbackRate.toFixed(5)}`;
17255
+ }
17256
+ return `${calculateATempo(Math.sqrt(playbackRate))},${calculateATempo(Math.sqrt(playbackRate))}`;
17257
+ };
17258
+
17249
17259
  // src/assets/apply-tone-frequency.ts
17250
17260
  var applyToneFrequencyUsingFfmpeg = async ({
17251
17261
  input,
@@ -17257,7 +17267,11 @@ var applyToneFrequencyUsingFfmpeg = async ({
17257
17267
  cancelSignal,
17258
17268
  sampleRate
17259
17269
  }) => {
17260
- const filter = `asetrate=${sampleRate}*${toneFrequency},aresample=${sampleRate},atempo=1/${toneFrequency}`;
17270
+ const filter = [
17271
+ `asetrate=${sampleRate}*${toneFrequency}`,
17272
+ `aresample=${sampleRate}`,
17273
+ calculateATempo(1 / toneFrequency)
17274
+ ].filter((part) => part !== null).join(",");
17261
17275
  const args = [
17262
17276
  "-hide_banner",
17263
17277
  "-i",
@@ -17683,6 +17697,69 @@ var makeRange = (from, to) => {
17683
17697
  });
17684
17698
  };
17685
17699
 
17700
+ // src/port-config.ts
17701
+ import os9 from "os";
17702
+ var cached = null;
17703
+ var getPortConfig = (preferIpv4) => {
17704
+ if (cached) {
17705
+ return cached;
17706
+ }
17707
+ const networkInterfaces = os9.networkInterfaces();
17708
+ const flattened = flattenNetworkInterfaces(networkInterfaces);
17709
+ const host = getHostToBind(flattened, preferIpv4);
17710
+ const hostsToTry = getHostsToTry(flattened);
17711
+ const response = { host, hostsToTry };
17712
+ cached = response;
17713
+ return response;
17714
+ };
17715
+ var getHostToBind = (flattened, preferIpv4) => {
17716
+ if (preferIpv4 || !isIpV6Supported(flattened)) {
17717
+ return "0.0.0.0";
17718
+ }
17719
+ return "::";
17720
+ };
17721
+ var getHostsToTry = (flattened) => {
17722
+ return [
17723
+ hasIPv6LoopbackAddress(flattened) ? "::1" : null,
17724
+ hasIpv4LoopbackAddress(flattened) ? "127.0.0.1" : null,
17725
+ isIpV6Supported(flattened) ? "::" : null,
17726
+ "0.0.0.0"
17727
+ ].filter(truthy);
17728
+ };
17729
+ var flattenNetworkInterfaces = (networkInterfaces) => {
17730
+ const result = [];
17731
+ for (const iface in networkInterfaces) {
17732
+ for (const configuration of networkInterfaces[iface]) {
17733
+ result.push(configuration);
17734
+ }
17735
+ }
17736
+ return result;
17737
+ };
17738
+ var isIpV6Supported = (flattened) => {
17739
+ for (const configuration of flattened) {
17740
+ if (configuration.family === "IPv6" && !configuration.internal) {
17741
+ return true;
17742
+ }
17743
+ }
17744
+ return false;
17745
+ };
17746
+ var hasIPv6LoopbackAddress = (flattened) => {
17747
+ for (const configuration of flattened) {
17748
+ if (configuration.family === "IPv6" && configuration.internal && configuration.address === "::1") {
17749
+ return true;
17750
+ }
17751
+ }
17752
+ return false;
17753
+ };
17754
+ var hasIpv4LoopbackAddress = (flattened) => {
17755
+ for (const configuration of flattened) {
17756
+ if (configuration.family === "IPv4" && configuration.internal && configuration.address === "127.0.0.1") {
17757
+ return true;
17758
+ }
17759
+ }
17760
+ return false;
17761
+ };
17762
+
17686
17763
  // src/serve-handler/index.ts
17687
17764
  import { createReadStream, promises as promises3 } from "node:fs";
17688
17765
  import path19 from "node:path";
@@ -17728,7 +17805,7 @@ var rangeParser = (size, str) => {
17728
17805
  let start = parseInt(range[0], 10);
17729
17806
  let end = parseInt(range[1], 10);
17730
17807
  if (isNaN(start)) {
17731
- start = size - end;
17808
+ start = Math.max(size - end, 0);
17732
17809
  end = size - 1;
17733
17810
  } else if (isNaN(end)) {
17734
17811
  end = size - 1;
@@ -17970,6 +18047,7 @@ var serveStatic = async (path, options2) => {
17970
18047
  let selectedPort = null;
17971
18048
  const maxTries = 10;
17972
18049
  const host = "127.0.0.1";
18050
+ const { hostsToTry } = getPortConfig(options2.forceIPv4);
17973
18051
  for (let i = 0;i < maxTries; i++) {
17974
18052
  let unlock = () => {};
17975
18053
  try {
@@ -17978,7 +18056,7 @@ var serveStatic = async (path, options2) => {
17978
18056
  desiredPort: options2?.port ?? undefined,
17979
18057
  from: 3000,
17980
18058
  to: 3100,
17981
- hostsToTry: [host]
18059
+ hostsToTry
17982
18060
  }).then(({ port, unlockPort }) => {
17983
18061
  unlock = unlockPort;
17984
18062
  server.listen({ port, host });
@@ -19117,7 +19195,7 @@ var resolveConcurrency = (userPreference) => {
19117
19195
  const min = 1;
19118
19196
  let rounded;
19119
19197
  if (typeof userPreference === "string") {
19120
- const percentage = parseInt(userPreference.slice(0, -1), 10);
19198
+ const percentage = parseFloat(userPreference.slice(0, -1));
19121
19199
  rounded = Math.floor(percentage / 100 * maxCpus);
19122
19200
  } else {
19123
19201
  rounded = Math.floor(userPreference);
@@ -19481,69 +19559,6 @@ var validateSelectedPixelFormatAndCodecCombination = (pixelFormat, codec) => {
19481
19559
  }
19482
19560
  };
19483
19561
 
19484
- // src/port-config.ts
19485
- import os9 from "os";
19486
- var cached = null;
19487
- var getPortConfig = (preferIpv4) => {
19488
- if (cached) {
19489
- return cached;
19490
- }
19491
- const networkInterfaces = os9.networkInterfaces();
19492
- const flattened = flattenNetworkInterfaces(networkInterfaces);
19493
- const host = getHostToBind(flattened, preferIpv4);
19494
- const hostsToTry = getHostsToTry(flattened);
19495
- const response = { host, hostsToTry };
19496
- cached = response;
19497
- return response;
19498
- };
19499
- var getHostToBind = (flattened, preferIpv4) => {
19500
- if (preferIpv4 || !isIpV6Supported(flattened)) {
19501
- return "0.0.0.0";
19502
- }
19503
- return "::";
19504
- };
19505
- var getHostsToTry = (flattened) => {
19506
- return [
19507
- hasIPv6LoopbackAddress(flattened) ? "::1" : null,
19508
- hasIpv4LoopbackAddress(flattened) ? "127.0.0.1" : null,
19509
- isIpV6Supported(flattened) ? "::" : null,
19510
- "0.0.0.0"
19511
- ].filter(truthy);
19512
- };
19513
- var flattenNetworkInterfaces = (networkInterfaces) => {
19514
- const result = [];
19515
- for (const iface in networkInterfaces) {
19516
- for (const configuration of networkInterfaces[iface]) {
19517
- result.push(configuration);
19518
- }
19519
- }
19520
- return result;
19521
- };
19522
- var isIpV6Supported = (flattened) => {
19523
- for (const configuration of flattened) {
19524
- if (configuration.family === "IPv6" && !configuration.internal) {
19525
- return true;
19526
- }
19527
- }
19528
- return false;
19529
- };
19530
- var hasIPv6LoopbackAddress = (flattened) => {
19531
- for (const configuration of flattened) {
19532
- if (configuration.family === "IPv6" && configuration.internal && configuration.address === "::1") {
19533
- return true;
19534
- }
19535
- }
19536
- return false;
19537
- };
19538
- var hasIpv4LoopbackAddress = (flattened) => {
19539
- for (const configuration of flattened) {
19540
- if (configuration.family === "IPv4" && configuration.internal && configuration.address === "127.0.0.1") {
19541
- return true;
19542
- }
19543
- }
19544
- return false;
19545
- };
19546
-
19547
19562
  // src/probe-shared-memory-capture.ts
19548
19563
  import fs16 from "node:fs";
19549
19564
  import os10 from "node:os";
@@ -22302,6 +22317,7 @@ var renderFrameWithOptionToReject = async ({
22302
22317
  if (previousFrame !== undefined) {
22303
22318
  return Promise.reject(new Error(`An artifact with output "${artifact.filename}" was already registered at frame ${previousFrame}, but now registered again at frame ${artifact.frame}. Artifacts must have unique names. https://remotion.dev/docs/artifacts`));
22304
22319
  }
22320
+ assetIndex.firstArtifactFrameByFilename.set(artifact.filename, artifact.frame);
22305
22321
  onArtifact?.(artifact);
22306
22322
  }
22307
22323
  const compressedAssets = audioAndVideoAssets.map((asset) => {
@@ -22325,11 +22341,6 @@ var renderFrameWithOptionToReject = async ({
22325
22341
  assetIndex.firstAssetBySrc.set(asset.src, asset);
22326
22342
  }
22327
22343
  }
22328
- for (const artifact of artifactAssets) {
22329
- if (!assetIndex.firstArtifactFrameByFilename.has(artifact.filename)) {
22330
- assetIndex.firstArtifactFrameByFilename.set(artifact.filename, artifact.frame);
22331
- }
22332
- }
22333
22344
  for (const renderAsset of compressedAssets) {
22334
22345
  downloadAndMapAssetsToFileUrl({
22335
22346
  renderAsset,
@@ -23582,7 +23593,8 @@ var calculateAssetPositions = (frames, sourceFrames = frames.map((_, index) => i
23582
23593
  playbackRate: asset.playbackRate,
23583
23594
  toneFrequency: asset.toneFrequency,
23584
23595
  audioStartFrame: asset.audioStartFrame,
23585
- audioStreamIndex: asset.audioStreamIndex
23596
+ audioStreamIndex: asset.audioStreamIndex,
23597
+ preservePitch: asset.preservePitch ?? true
23586
23598
  };
23587
23599
  assets.push(openAsset);
23588
23600
  openAssets.set(asset.id, openAsset);
@@ -23804,7 +23816,8 @@ var createSilentAudio = async ({
23804
23816
  };
23805
23817
 
23806
23818
  // src/merge-audio-track.ts
23807
- var mergeAudioTrackUnlimited = async ({
23819
+ var limit2 = pLimit(3);
23820
+ var mergeAudioTrack = async ({
23808
23821
  outName,
23809
23822
  files,
23810
23823
  downloadMap,
@@ -23819,7 +23832,7 @@ var mergeAudioTrackUnlimited = async ({
23819
23832
  sampleRate
23820
23833
  }) => {
23821
23834
  if (files.length === 0) {
23822
- await createSilentAudio({
23835
+ await limit2(createSilentAudio, {
23823
23836
  outName,
23824
23837
  chunkLengthInSeconds,
23825
23838
  indent,
@@ -23908,29 +23921,27 @@ var mergeAudioTrackUnlimited = async ({
23908
23921
  ["-y", outName]
23909
23922
  ].filter(truthy).flat(2);
23910
23923
  Log.verbose({ indent, logLevel }, `Merging audio tracks`, "Command:", `ffmpeg ${args.join(" ")}`, "Complex filter script:", complexFilter);
23911
- const task = callFf({
23912
- bin: "ffmpeg",
23913
- args,
23914
- indent,
23915
- logLevel,
23916
- binariesDirectory,
23917
- cancelSignal
23918
- });
23919
- task.stderr?.on("data", (data) => {
23920
- const utf8 = data.toString("utf8");
23921
- const parsed = parseFfmpegProgress(utf8, fps);
23922
- if (parsed !== undefined) {
23923
- onProgress(parsed / (chunkLengthInSeconds * fps));
23924
- }
23924
+ await limit2(async () => {
23925
+ const task = callFf({
23926
+ bin: "ffmpeg",
23927
+ args,
23928
+ indent,
23929
+ logLevel,
23930
+ binariesDirectory,
23931
+ cancelSignal
23932
+ });
23933
+ task.stderr?.on("data", (data) => {
23934
+ const utf8 = data.toString("utf8");
23935
+ const parsed = parseFfmpegProgress(utf8, fps);
23936
+ if (parsed !== undefined) {
23937
+ onProgress(parsed / (chunkLengthInSeconds * fps));
23938
+ }
23939
+ });
23940
+ await task;
23925
23941
  });
23926
- await task;
23927
23942
  onProgress(1);
23928
23943
  cleanup();
23929
23944
  };
23930
- var limit2 = pLimit(3);
23931
- var mergeAudioTrack = (options2) => {
23932
- return limit2(mergeAudioTrackUnlimited, options2);
23933
- };
23934
23945
 
23935
23946
  // src/merge-inline-audio-tracks.ts
23936
23947
  import path27 from "node:path";
@@ -24009,17 +24020,6 @@ var mergeInlineAudioTracks = async ({
24009
24020
  return currentTracks[0] ?? null;
24010
24021
  };
24011
24022
 
24012
- // src/assets/calculate-atempo.ts
24013
- var calculateATempo = (playbackRate) => {
24014
- if (playbackRate === 1) {
24015
- return null;
24016
- }
24017
- if (playbackRate >= 0.5 && playbackRate <= 2) {
24018
- return `atempo=${playbackRate.toFixed(5)}`;
24019
- }
24020
- return `${calculateATempo(Math.sqrt(playbackRate))},${calculateATempo(Math.sqrt(playbackRate))}`;
24021
- };
24022
-
24023
24023
  // src/assets/round-volume-to-avoid-stack-overflow.ts
24024
24024
  var MAX_FFMPEG_STACK_DEPTH = 98;
24025
24025
  var roundVolumeToAvoidStackOverflow = (volume) => {
@@ -24151,6 +24151,19 @@ var stringifyTrim = (trim) => {
24151
24151
  }
24152
24152
  return asString;
24153
24153
  };
24154
+ var calculateSpeedChangeFilter = ({
24155
+ playbackRate,
24156
+ preservePitch,
24157
+ sampleRate
24158
+ }) => {
24159
+ if (playbackRate === 1) {
24160
+ return null;
24161
+ }
24162
+ if (preservePitch) {
24163
+ return calculateATempo(playbackRate);
24164
+ }
24165
+ return `asetrate=${sampleRate}*${playbackRate},aresample=${sampleRate}`;
24166
+ };
24154
24167
  var trimAndSetTempo = ({
24155
24168
  assetDuration,
24156
24169
  asset,
@@ -24158,7 +24171,8 @@ var trimAndSetTempo = ({
24158
24171
  trimRightOffset,
24159
24172
  fps,
24160
24173
  indent,
24161
- logLevel
24174
+ logLevel,
24175
+ sampleRate
24162
24176
  }) => {
24163
24177
  const { trimLeft, maxTrim } = getActualTrimLeft({
24164
24178
  trimLeft: asset.trimLeft,
@@ -24182,7 +24196,11 @@ var trimAndSetTempo = ({
24182
24196
  }
24183
24197
  return {
24184
24198
  filter: [
24185
- calculateATempo(asset.playbackRate),
24199
+ calculateSpeedChangeFilter({
24200
+ playbackRate: asset.playbackRate,
24201
+ preservePitch: asset.preservePitch,
24202
+ sampleRate
24203
+ }),
24186
24204
  `atrim=${stringifyTrim(trimLeft)}:${stringifyTrim(trimRightOrAssetDuration)}`
24187
24205
  ],
24188
24206
  actualTrimLeft: trimLeft,
@@ -24237,7 +24255,8 @@ var stringifyFfmpegFilter = ({
24237
24255
  asset,
24238
24256
  fps,
24239
24257
  indent,
24240
- logLevel
24258
+ logLevel,
24259
+ sampleRate
24241
24260
  });
24242
24261
  const volumeFilter = ffmpegVolumeExpression({
24243
24262
  volume,
@@ -1,6 +1,7 @@
1
+ import type { LogLevel } from './log-level';
1
2
  export declare const extractAudio: (options: {
2
3
  videoSource: string;
3
4
  audioOutput: string;
4
- logLevel?: "error" | "info" | "trace" | "verbose" | "warn" | undefined;
5
- binariesDirectory?: string | null | undefined;
5
+ logLevel?: LogLevel;
6
+ binariesDirectory?: string | null;
6
7
  }) => Promise<void>;
@@ -1,18 +1,24 @@
1
+ import type { HardwareAccelerationOption } from './client';
2
+ import type { Codec } from './codec';
3
+ import type { LogLevel } from './log-level';
4
+ import { type ColorSpace } from './options/color-space';
5
+ import type { X264Preset } from './options/x264-preset';
6
+ import type { PixelFormat } from './pixel-format';
1
7
  export declare const generateFfmpegArgs: ({ hasPreencoded, proResProfileName, pixelFormat, x264Preset, gopSize, codec, crf, videoBitrate, encodingMaxRate, encodingBufferSize, colorSpace, hardwareAcceleration, indent, logLevel, cpuCount, lambdaMemoryInBytes, }: {
2
8
  hasPreencoded: boolean;
3
9
  proResProfileName: string | null;
4
- pixelFormat: "yuv420p" | "yuv420p10le" | "yuv422p" | "yuv422p10le" | "yuv444p" | "yuv444p10le" | "yuva420p" | "yuva444p10le";
5
- x264Preset: "fast" | "faster" | "medium" | "placebo" | "slow" | "slower" | "superfast" | "ultrafast" | "veryfast" | "veryslow" | null;
10
+ pixelFormat: PixelFormat;
11
+ x264Preset: X264Preset | null;
6
12
  gopSize: number | null;
7
13
  crf: unknown;
8
- codec: "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav";
14
+ codec: Codec;
9
15
  videoBitrate: string | null;
10
16
  encodingMaxRate: string | null;
11
17
  encodingBufferSize: string | null;
12
- colorSpace: "bt2020-ncl" | "bt601" | "bt709" | "default" | null;
13
- hardwareAcceleration: "disable" | "if-possible" | "required";
18
+ colorSpace: ColorSpace | null;
19
+ hardwareAcceleration: HardwareAccelerationOption;
14
20
  indent: boolean;
15
- logLevel: "error" | "info" | "trace" | "verbose" | "warn";
21
+ logLevel: LogLevel;
16
22
  cpuCount: number;
17
23
  lambdaMemoryInBytes: number | null;
18
24
  }) => string[][];
@@ -1,4 +1,5 @@
1
1
  import type { FastStartMuxer } from './get-fast-start-muxer';
2
+ import type { LogLevel } from './log-level';
2
3
  import type { CancelSignal } from './make-cancel-signal';
3
4
  export declare const finalizeFastStart: ({ input, output, muxer, force, indent, logLevel, binariesDirectory, cancelSignal, }: {
4
5
  input: string;
@@ -6,7 +7,7 @@ export declare const finalizeFastStart: ({ input, output, muxer, force, indent,
6
7
  muxer: FastStartMuxer;
7
8
  force: boolean;
8
9
  indent: boolean;
9
- logLevel: "error" | "info" | "trace" | "verbose" | "warn";
10
+ logLevel: LogLevel;
10
11
  binariesDirectory: string | null;
11
12
  cancelSignal: CancelSignal | null;
12
13
  }) => Promise<void>;
@@ -2,19 +2,21 @@ import type { BrowserExecutable } from './browser-executable';
2
2
  import type { BrowserLog } from './browser-log';
3
3
  import type { HeadlessBrowser } from './browser/Browser';
4
4
  import type { OnLog, Page } from './browser/BrowserPage';
5
+ import type { LogLevel } from './log-level';
5
6
  import type { ChromiumOptions } from './open-browser';
7
+ import type { ChromeMode } from './options/chrome-mode';
6
8
  import type { OnBrowserDownload } from './options/on-browser-download';
7
9
  export declare const getPageAndCleanupFn: ({ passedInInstance, browserExecutable, chromiumOptions, forceDeviceScaleFactor, indent, logLevel, onBrowserDownload, chromeMode, pageIndex, onBrowserLog, onLog, }: {
8
10
  passedInInstance: HeadlessBrowser | undefined;
9
- browserExecutable: BrowserExecutable;
11
+ browserExecutable: BrowserExecutable | null;
10
12
  chromiumOptions: ChromiumOptions;
11
13
  indent: boolean;
12
14
  forceDeviceScaleFactor: number | undefined;
13
- logLevel: "error" | "info" | "trace" | "verbose" | "warn";
15
+ logLevel: LogLevel;
14
16
  onBrowserDownload: OnBrowserDownload;
15
- chromeMode: "chrome-for-testing" | "headless-shell";
17
+ chromeMode: ChromeMode;
16
18
  pageIndex: number;
17
- onBrowserLog: ((log: BrowserLog) => void) | null;
19
+ onBrowserLog: null | ((log: BrowserLog) => void);
18
20
  onLog: OnLog;
19
21
  }) => Promise<{
20
22
  cleanupPage: () => Promise<void>;
@@ -1,4 +1,7 @@
1
1
  import type { OnLog } from './browser/BrowserPage';
2
+ import type { Codec } from './codec';
3
+ import type { LogLevel } from './log-level';
4
+ import type { HardwareAccelerationOption } from './options/hardware-acceleration';
2
5
  export type CodecSettings = {
3
6
  encoderName: string;
4
7
  hardwareAccelerated: boolean;
@@ -9,12 +12,12 @@ export declare const hasSpecifiedUnsupportedHardwareQualifySettings: ({ encoding
9
12
  crf: unknown;
10
13
  }) => "crf" | "encodingBufferSize" | "encodingMaxRate" | null;
11
14
  export declare const getCodecName: ({ codec, encodingMaxRate, encodingBufferSize, crf, hardwareAcceleration, logLevel, indent, onLog, }: {
12
- codec: "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav";
13
- hardwareAcceleration: "disable" | "if-possible" | "required";
15
+ codec: Codec;
16
+ hardwareAcceleration: HardwareAccelerationOption;
14
17
  encodingMaxRate: string | null;
15
18
  encodingBufferSize: string | null;
16
19
  crf: unknown;
17
- logLevel: "error" | "info" | "trace" | "verbose" | "warn";
20
+ logLevel: LogLevel;
18
21
  indent: boolean;
19
22
  onLog: OnLog | null;
20
23
  }) => CodecSettings | null;
@@ -38,7 +38,8 @@ export type GetCompositionsOptions = RequiredInputPropsInV5 & SharedGetCompositi
38
38
  serveUrl: string;
39
39
  };
40
40
  type V4GetCompositionsArguments = [options: GetCompositionsOptions] | [serveUrlOrWebpackUrl: string, config?: V4LegacyGetCompositionsOptions];
41
+ type GetCompositionsArguments = typeof NoReactInternals.ENABLE_V5_BREAKING_CHANGES extends true ? [options: GetCompositionsOptions] : V4GetCompositionsArguments;
41
42
  export declare const convertGetCompositionsArgumentsToOptions: (args: V4GetCompositionsArguments, enableV5BreakingChanges: boolean) => GetCompositionsOptions;
42
43
  export declare const internalGetCompositions: (args_0: InternalGetCompositionsOptions) => Promise<VideoConfig[]>;
43
- export declare const getCompositions: (...args: V4GetCompositionsArguments) => Promise<VideoConfig[]>;
44
+ export declare const getCompositions: (...args: GetCompositionsArguments) => Promise<VideoConfig[]>;
44
45
  export {};
@@ -1 +1 @@
1
- export declare const resolveConcurrency: (userPreference: string | number | null) => number;
1
+ export declare const resolveConcurrency: (userPreference: number | string | null) => number;
@@ -10,7 +10,7 @@ const resolveConcurrency = (userPreference) => {
10
10
  const min = 1;
11
11
  let rounded;
12
12
  if (typeof userPreference === 'string') {
13
- const percentage = parseInt(userPreference.slice(0, -1), 10);
13
+ const percentage = parseFloat(userPreference.slice(0, -1));
14
14
  rounded = Math.floor((percentage / 100) * maxCpus);
15
15
  }
16
16
  else {
@@ -1,2 +1,2 @@
1
1
  import type { ResolvedFrameRange } from './frame-range';
2
- export declare const getFramesToRender: (frameRange: ResolvedFrameRange[] | ResolvedFrameRange, everyNthFrame: number) => number[];
2
+ export declare const getFramesToRender: (frameRange: ResolvedFrameRange | ResolvedFrameRange[], everyNthFrame: number) => number[];
@@ -1,5 +1,6 @@
1
1
  import type { Codec } from './codec';
2
2
  import type { FileExtension } from './file-extensions';
3
- export declare const 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) => FileExtension;
3
+ import type { AudioCodec } from './options/audio-codec';
4
+ export declare const getFileExtensionFromCodec: <T extends Codec>(codec: T, audioCodec: AudioCodec | null) => FileExtension;
4
5
  export declare const makeFileExtensionMap: () => Record<string, ("aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav")[]>;
5
6
  export declare const defaultCodecsForFileExtension: Record<FileExtension, Codec>;
@@ -1,3 +1,4 @@
1
+ import type { VideoImageFormat } from './image-format';
1
2
  export type CountType = 'from-zero' | 'actual-frames';
2
3
  export declare const getFrameOutputFileNameFromPattern: ({ pattern, frame, ext, }: {
3
4
  pattern: string;
@@ -7,7 +8,7 @@ export declare const getFrameOutputFileNameFromPattern: ({ pattern, frame, ext,
7
8
  export declare const getFrameOutputFileName: ({ index, frame, imageFormat, countType, lastFrame, totalFrames, imageSequencePattern, }: {
8
9
  index: number;
9
10
  frame: number;
10
- imageFormat: "jpeg" | "none" | "png";
11
+ imageFormat: VideoImageFormat;
11
12
  countType: CountType;
12
13
  lastFrame: number;
13
14
  totalFrames: number;
@@ -1,7 +1,9 @@
1
1
  import type { BrowserExecutable } from './browser-executable';
2
+ import type { LogLevel } from './log-level';
3
+ import type { ChromeMode } from './options/chrome-mode';
2
4
  export declare const getLocalBrowserExecutable: ({ preferredBrowserExecutable, logLevel, indent, chromeMode, }: {
3
5
  preferredBrowserExecutable: BrowserExecutable;
4
- logLevel: "error" | "info" | "trace" | "verbose" | "warn";
6
+ logLevel: LogLevel;
5
7
  indent: boolean;
6
- chromeMode: "chrome-for-testing" | "headless-shell";
8
+ chromeMode: ChromeMode;
7
9
  }) => string;
@@ -8,7 +8,7 @@ export declare const getDesiredPort: ({ desiredPort, from, hostsToTry, to, onPor
8
8
  from: number;
9
9
  to: number;
10
10
  hostsToTry: string[];
11
- onPortUnavailable?: ((port: number) => Promise<"continue" | "stop">) | undefined;
11
+ onPortUnavailable?: (port: number) => Promise<'continue' | 'stop'>;
12
12
  }) => Promise<{
13
13
  port: number;
14
14
  unlockPort: () => void;
@@ -1 +1,3 @@
1
- export declare const getProResProfileName: (codec: "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav", proResProfile: "4444" | "4444-xq" | "hq" | "light" | "proxy" | "standard" | undefined) => string | null;
1
+ import type { _InternalTypes } from 'remotion';
2
+ import type { Codec } from './codec';
3
+ export declare const getProResProfileName: (codec: Codec, proResProfile: _InternalTypes['ProResProfile'] | undefined) => string | null;
@@ -1,9 +1,10 @@
1
1
  import type { GetSilentPartsResponse, SilentPart } from './compositor/payloads';
2
+ import type { LogLevel } from './log-level';
2
3
  export type { SilentPart };
3
4
  export declare const getSilentParts: ({ src, noiseThresholdInDecibels: passedNoiseThresholdInDecibels, minDurationInSeconds: passedMinDuration, logLevel, binariesDirectory, }: {
4
5
  src: string;
5
- minDurationInSeconds?: number | undefined;
6
- logLevel?: "error" | "info" | "trace" | "verbose" | "warn" | undefined;
7
- noiseThresholdInDecibels?: number | undefined;
8
- binariesDirectory?: string | null | undefined;
6
+ minDurationInSeconds?: number;
7
+ logLevel?: LogLevel;
8
+ noiseThresholdInDecibels?: number;
9
+ binariesDirectory?: string | null;
9
10
  }) => Promise<GetSilentPartsResponse>;
@@ -1,9 +1,10 @@
1
1
  import type { VideoMetadata } from './compositor/payloads';
2
+ import type { LogLevel } from './log-level';
2
3
  export { VideoMetadata } from './compositor/payloads';
3
4
  /**
4
5
  * @deprecated Use Mediabunny instead: https://www.remotion.dev/docs/mediabunny/metadata
5
6
  */
6
7
  export declare const getVideoMetadata: (videoSource: string, options?: {
7
- logLevel?: "error" | "info" | "trace" | "verbose" | "warn" | undefined;
8
- binariesDirectory?: string | null | undefined;
9
- } | undefined) => Promise<VideoMetadata>;
8
+ logLevel?: LogLevel;
9
+ binariesDirectory?: string | null;
10
+ }) => Promise<VideoMetadata>;
@@ -1 +1,2 @@
1
- export declare const getIdealVideoThreadsFlag: (logLevel: "error" | "info" | "trace" | "verbose" | "warn") => number;
1
+ import type { LogLevel } from './log-level';
2
+ export declare const getIdealVideoThreadsFlag: (logLevel: LogLevel) => number;
@@ -1,3 +1,3 @@
1
1
  import type { Page } from './browser/BrowserPage';
2
2
  import type { HTTPResponse } from './browser/HTTPResponse';
3
- export declare const gotoPageOrThrow: (page: Page, urlToVisit: string, actualTimeout: number) => Promise<[null, Error] | [HTTPResponse, null]>;
3
+ export declare const gotoPageOrThrow: (page: Page, urlToVisit: string, actualTimeout: number) => Promise<[HTTPResponse, null] | [null, Error]>;
@@ -1,8 +1,9 @@
1
+ import type { LogLevel } from './log-level';
1
2
  import type { CancelSignal } from './make-cancel-signal';
2
3
  export declare const guessExtensionForVideo: ({ src, indent, logLevel, binariesDirectory, cancelSignal, }: {
3
4
  src: string;
4
5
  indent: boolean;
5
- logLevel: "error" | "info" | "trace" | "verbose" | "warn";
6
+ logLevel: LogLevel;
6
7
  binariesDirectory: string | null;
7
8
  cancelSignal: CancelSignal | undefined;
8
9
  }) => Promise<"mp3" | "mp4" | "wav" | "webm">;
@@ -1,5 +1,6 @@
1
- export declare const validVideoImageFormats: readonly ["png", "jpeg", "none"];
2
- export declare const validStillImageFormats: readonly ["png", "jpeg", "pdf", "webp"];
1
+ import type { PixelFormat } from './pixel-format';
2
+ export declare const validVideoImageFormats: readonly ['png', 'jpeg', 'none'];
3
+ export declare const validStillImageFormats: readonly ['png', 'jpeg', 'pdf', 'webp'];
3
4
  export type VideoImageFormat = (typeof validVideoImageFormats)[number];
4
5
  export type StillImageFormat = (typeof validStillImageFormats)[number];
5
6
  /**
@@ -8,6 +9,6 @@ export type StillImageFormat = (typeof validStillImageFormats)[number];
8
9
  export type ImageFormat = 'This type is deprecated, use VideoImageFormat or StillImageFormat instead';
9
10
  export declare const DEFAULT_VIDEO_IMAGE_FORMAT: VideoImageFormat;
10
11
  export declare const DEFAULT_STILL_IMAGE_FORMAT: StillImageFormat;
11
- export declare const validateVideoImageFormat: (videoImageFormat: "jpeg" | "none" | "png") => void;
12
- export declare const validateSelectedPixelFormatAndImageFormatCombination: (pixelFormat: "yuv420p" | "yuv420p10le" | "yuv422p" | "yuv422p10le" | "yuv444p" | "yuv444p10le" | "yuva420p" | "yuva444p10le" | undefined, videoImageFormat: "jpeg" | "none" | "png") => "none" | "valid";
13
- export declare const validateStillImageFormat: (imageFormat: "jpeg" | "pdf" | "png" | "webp") => void;
12
+ export declare const validateVideoImageFormat: (videoImageFormat: VideoImageFormat) => void;
13
+ export declare const validateSelectedPixelFormatAndImageFormatCombination: (pixelFormat: PixelFormat | undefined, videoImageFormat: VideoImageFormat) => 'none' | 'valid';
14
+ export declare const validateStillImageFormat: (imageFormat: StillImageFormat) => void;