@remotion/renderer 4.0.0-webhook.27 → 4.1.0-alpha2

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 (411) hide show
  1. package/LICENSE.md +8 -8
  2. package/README.md +9 -0
  3. package/client.d.ts +1 -0
  4. package/client.js +1 -0
  5. package/dist/assets/calculate-asset-positions.d.ts +0 -0
  6. package/dist/assets/calculate-asset-positions.js +1 -0
  7. package/dist/assets/calculate-atempo.d.ts +0 -0
  8. package/dist/assets/calculate-atempo.js +0 -0
  9. package/dist/assets/convert-assets-to-file-urls.d.ts +0 -0
  10. package/dist/assets/convert-assets-to-file-urls.js +0 -0
  11. package/dist/assets/download-and-map-assets-to-file.d.ts +6 -4
  12. package/dist/assets/download-and-map-assets-to-file.js +49 -19
  13. package/dist/assets/download-file.d.ts +8 -5
  14. package/dist/assets/download-file.js +71 -8
  15. package/dist/assets/download-map.d.ts +8 -29
  16. package/dist/assets/download-map.js +15 -16
  17. package/dist/assets/ffmpeg-volume-expression.d.ts +4 -3
  18. package/dist/assets/ffmpeg-volume-expression.js +5 -3
  19. package/dist/assets/flatten-volume-array.d.ts +0 -0
  20. package/dist/assets/flatten-volume-array.js +0 -0
  21. package/dist/assets/get-audio-channels.d.ts +2 -2
  22. package/dist/assets/get-audio-channels.js +14 -12
  23. package/dist/assets/read-file.d.ts +1 -1
  24. package/dist/assets/read-file.js +5 -7
  25. package/dist/assets/round-volume-to-avoid-stack-overflow.d.ts +0 -0
  26. package/dist/assets/round-volume-to-avoid-stack-overflow.js +0 -0
  27. package/dist/assets/sanitize-filename.d.ts +0 -0
  28. package/dist/assets/sanitize-filename.js +0 -0
  29. package/dist/assets/sanitize-filepath.d.ts +0 -0
  30. package/dist/assets/sanitize-filepath.js +2 -2
  31. package/dist/assets/truncate-utf8-bytes.d.ts +0 -0
  32. package/dist/assets/truncate-utf8-bytes.js +0 -0
  33. package/dist/assets/types.d.ts +5 -4
  34. package/dist/assets/types.js +0 -0
  35. package/dist/audio-codec.d.ts +28 -0
  36. package/dist/audio-codec.js +83 -0
  37. package/dist/browser/Browser.d.ts +16 -14
  38. package/dist/browser/Browser.js +69 -72
  39. package/dist/browser/BrowserConnector.d.ts +0 -0
  40. package/dist/browser/BrowserConnector.js +0 -0
  41. package/dist/browser/BrowserFetcher.d.ts +16 -64
  42. package/dist/browser/BrowserFetcher.js +147 -235
  43. package/dist/browser/BrowserPage.d.ts +21 -6
  44. package/dist/browser/BrowserPage.js +54 -22
  45. package/dist/browser/BrowserRunner.d.ts +1 -1
  46. package/dist/browser/BrowserRunner.js +32 -22
  47. package/dist/browser/Connection.d.ts +0 -0
  48. package/dist/browser/Connection.js +1 -1
  49. package/dist/browser/ConsoleMessage.d.ts +1 -1
  50. package/dist/browser/ConsoleMessage.js +0 -0
  51. package/dist/browser/DOMWorld.d.ts +5 -4
  52. package/dist/browser/DOMWorld.js +16 -9
  53. package/dist/browser/Errors.d.ts +0 -0
  54. package/dist/browser/Errors.js +0 -0
  55. package/dist/browser/EvalTypes.d.ts +7 -7
  56. package/dist/browser/EvalTypes.js +0 -0
  57. package/dist/browser/EventEmitter.d.ts +0 -0
  58. package/dist/browser/EventEmitter.js +0 -0
  59. package/dist/browser/ExecutionContext.d.ts +0 -0
  60. package/dist/browser/ExecutionContext.js +0 -0
  61. package/dist/browser/FrameManager.d.ts +0 -2
  62. package/dist/browser/FrameManager.js +13 -17
  63. package/dist/browser/HTTPRequest.d.ts +0 -0
  64. package/dist/browser/HTTPRequest.js +0 -0
  65. package/dist/browser/HTTPResponse.d.ts +0 -0
  66. package/dist/browser/HTTPResponse.js +0 -0
  67. package/dist/browser/JSHandle.d.ts +0 -0
  68. package/dist/browser/JSHandle.js +14 -14
  69. package/dist/browser/LaunchOptions.d.ts +2 -2
  70. package/dist/browser/LaunchOptions.js +0 -0
  71. package/dist/browser/Launcher.d.ts +9 -3
  72. package/dist/browser/Launcher.js +16 -29
  73. package/dist/browser/LifecycleWatcher.d.ts +1 -1
  74. package/dist/browser/LifecycleWatcher.js +0 -0
  75. package/dist/browser/NetworkEventManager.d.ts +4 -4
  76. package/dist/browser/NetworkEventManager.js +0 -0
  77. package/dist/browser/NetworkManager.d.ts +0 -0
  78. package/dist/browser/NetworkManager.js +0 -0
  79. package/dist/browser/NodeWebSocketTransport.d.ts +0 -0
  80. package/dist/browser/NodeWebSocketTransport.js +21 -21
  81. package/dist/browser/Product.d.ts +1 -1
  82. package/dist/browser/Product.js +0 -0
  83. package/dist/browser/PuppeteerNode.d.ts +2 -5
  84. package/dist/browser/PuppeteerNode.js +2 -11
  85. package/dist/browser/PuppeteerViewport.d.ts +0 -0
  86. package/dist/browser/PuppeteerViewport.js +0 -0
  87. package/dist/browser/ScreenshotOptions.d.ts +0 -14
  88. package/dist/browser/ScreenshotOptions.js +0 -1
  89. package/dist/browser/Target.d.ts +4 -3
  90. package/dist/browser/Target.js +8 -2
  91. package/dist/browser/TaskQueue.d.ts +0 -0
  92. package/dist/browser/TaskQueue.js +0 -0
  93. package/dist/browser/TimeoutSettings.d.ts +0 -0
  94. package/dist/browser/TimeoutSettings.js +0 -0
  95. package/dist/browser/assert.d.ts +0 -0
  96. package/dist/browser/assert.js +0 -0
  97. package/dist/browser/create-browser-fetcher.d.ts +0 -0
  98. package/dist/browser/create-browser-fetcher.js +34 -48
  99. package/dist/browser/devtools-commands.d.ts +5 -1
  100. package/dist/browser/devtools-commands.js +0 -0
  101. package/dist/browser/devtools-types.d.ts +92 -10
  102. package/dist/browser/devtools-types.js +0 -0
  103. package/dist/browser/get-download-destination.d.ts +0 -0
  104. package/dist/browser/get-download-destination.js +8 -8
  105. package/dist/browser/is-target-closed-err.d.ts +1 -0
  106. package/dist/browser/is-target-closed-err.js +9 -0
  107. package/dist/browser/mitt/index.d.ts +6 -6
  108. package/dist/browser/mitt/index.js +0 -0
  109. package/dist/browser/node.d.ts +0 -0
  110. package/dist/browser/node.js +0 -0
  111. package/dist/browser/revisions.d.ts +1 -1
  112. package/dist/browser/revisions.js +0 -0
  113. package/dist/browser/should-log-message.d.ts +24 -0
  114. package/dist/browser/should-log-message.js +72 -0
  115. package/dist/browser/util.d.ts +2 -2
  116. package/dist/browser/util.js +0 -0
  117. package/dist/browser-executable.d.ts +1 -1
  118. package/dist/browser-executable.js +0 -0
  119. package/dist/browser-log.d.ts +1 -1
  120. package/dist/browser-log.js +0 -0
  121. package/dist/browser.d.ts +1 -1
  122. package/dist/browser.js +0 -0
  123. package/dist/calculate-ffmpeg-filters.d.ts +2 -1
  124. package/dist/calculate-ffmpeg-filters.js +1 -0
  125. package/dist/call-ffmpeg.d.ts +14 -0
  126. package/dist/call-ffmpeg.js +42 -0
  127. package/dist/can-use-parallel-encoding.d.ts +0 -0
  128. package/dist/can-use-parallel-encoding.js +0 -0
  129. package/dist/chalk/index.d.ts +54 -0
  130. package/dist/chalk/index.js +135 -0
  131. package/dist/chalk/is-color-supported.d.ts +1 -0
  132. package/dist/chalk/is-color-supported.js +37 -0
  133. package/dist/check-apple-silicon.d.ts +1 -1
  134. package/dist/check-apple-silicon.js +8 -47
  135. package/dist/chunk.d.ts +0 -0
  136. package/dist/chunk.js +0 -0
  137. package/dist/client.d.ts +204 -0
  138. package/dist/client.js +49 -0
  139. package/dist/codec-supports-media.d.ts +3 -2
  140. package/dist/codec-supports-media.js +20 -5
  141. package/dist/codec.d.ts +2 -2
  142. package/dist/codec.js +0 -0
  143. package/dist/combine-videos.d.ts +6 -2
  144. package/dist/combine-videos.js +17 -17
  145. package/dist/compositor/compose.d.ts +26 -0
  146. package/dist/compositor/compose.js +82 -0
  147. package/dist/compositor/compositor.d.ts +11 -0
  148. package/dist/compositor/compositor.js +219 -0
  149. package/dist/compositor/get-executable-path.d.ts +1 -0
  150. package/dist/compositor/get-executable-path.js +57 -0
  151. package/dist/compositor/make-nonce.d.ts +1 -0
  152. package/dist/compositor/make-nonce.js +8 -0
  153. package/dist/compositor/payloads.d.ts +68 -0
  154. package/dist/{ffmpeg-executable.js → compositor/payloads.js} +0 -0
  155. package/dist/compress-assets.d.ts +0 -0
  156. package/dist/compress-assets.js +0 -0
  157. package/dist/convert-number-of-gif-loops-to-ffmpeg.d.ts +0 -0
  158. package/dist/convert-number-of-gif-loops-to-ffmpeg.js +0 -0
  159. package/dist/convert-to-positive-frame-index.d.ts +0 -0
  160. package/dist/convert-to-positive-frame-index.js +0 -0
  161. package/dist/create-ffmpeg-complex-filter.d.ts +5 -1
  162. package/dist/create-ffmpeg-complex-filter.js +6 -4
  163. package/dist/create-ffmpeg-merge-filter.d.ts +5 -1
  164. package/dist/create-ffmpeg-merge-filter.js +21 -13
  165. package/dist/create-silent-audio.d.ts +1 -3
  166. package/dist/create-silent-audio.js +3 -6
  167. package/dist/crf.d.ts +6 -2
  168. package/dist/crf.js +41 -8
  169. package/dist/cycle-browser-tabs.d.ts +2 -5
  170. package/dist/cycle-browser-tabs.js +5 -5
  171. package/dist/delay-render-embedded-stack.d.ts +0 -0
  172. package/dist/delay-render-embedded-stack.js +0 -0
  173. package/dist/delete-directory.d.ts +1 -1
  174. package/dist/delete-directory.js +43 -17
  175. package/dist/does-have-m2-bug.d.ts +3 -0
  176. package/dist/does-have-m2-bug.js +12 -0
  177. package/dist/ensure-frames-in-order.d.ts +0 -0
  178. package/dist/ensure-frames-in-order.js +0 -0
  179. package/dist/ensure-output-directory.d.ts +0 -0
  180. package/dist/ensure-output-directory.js +5 -5
  181. package/dist/error-handling/handle-javascript-exception.d.ts +0 -0
  182. package/dist/error-handling/handle-javascript-exception.js +10 -0
  183. package/dist/error-handling/symbolicate-error.d.ts +0 -0
  184. package/dist/error-handling/symbolicate-error.js +6 -3
  185. package/dist/error-handling/symbolicateable-error.d.ts +0 -0
  186. package/dist/error-handling/symbolicateable-error.js +0 -0
  187. package/dist/ffmpeg-filter-file.d.ts +6 -1
  188. package/dist/ffmpeg-filter-file.js +40 -8
  189. package/dist/ffmpeg-override.d.ts +1 -1
  190. package/dist/ffmpeg-override.js +0 -0
  191. package/dist/file-extensions.d.ts +14 -0
  192. package/dist/file-extensions.js +76 -0
  193. package/dist/find-closest-package-json.d.ts +2 -0
  194. package/dist/find-closest-package-json.js +31 -0
  195. package/dist/frame-range.d.ts +1 -1
  196. package/dist/frame-range.js +0 -0
  197. package/dist/get-browser-instance.d.ts +8 -3
  198. package/dist/get-browser-instance.js +10 -5
  199. package/dist/get-codec-name.d.ts +0 -0
  200. package/dist/get-codec-name.js +0 -0
  201. package/dist/get-compositions.d.ts +27 -14
  202. package/dist/get-compositions.js +72 -39
  203. package/dist/get-concurrency.d.ts +1 -1
  204. package/dist/get-concurrency.js +11 -4
  205. package/dist/get-duration-from-frame-range.d.ts +0 -0
  206. package/dist/get-duration-from-frame-range.js +0 -0
  207. package/dist/get-extension-from-codec.d.ts +5 -1
  208. package/dist/get-extension-from-codec.js +56 -32
  209. package/dist/get-extension-of-filename.d.ts +0 -0
  210. package/dist/get-extension-of-filename.js +5 -1
  211. package/dist/get-frame-padded-index.d.ts +3 -2
  212. package/dist/get-frame-padded-index.js +3 -2
  213. package/dist/get-frame-to-render.d.ts +0 -0
  214. package/dist/get-frame-to-render.js +1 -1
  215. package/dist/get-local-browser-executable.d.ts +0 -0
  216. package/dist/get-local-browser-executable.js +7 -15
  217. package/dist/get-port.d.ts +4 -1
  218. package/dist/get-port.js +8 -8
  219. package/dist/get-prores-profile-name.d.ts +0 -0
  220. package/dist/get-prores-profile-name.js +0 -0
  221. package/dist/get-video-threads-flag.d.ts +0 -0
  222. package/dist/get-video-threads-flag.js +3 -3
  223. package/dist/guess-extension-for-media.d.ts +3 -1
  224. package/dist/guess-extension-for-media.js +4 -7
  225. package/dist/image-format.d.ts +12 -6
  226. package/dist/image-format.js +19 -13
  227. package/dist/index.d.ts +368 -49
  228. package/dist/index.js +68 -46
  229. package/dist/is-audio-codec.d.ts +0 -0
  230. package/dist/is-audio-codec.js +0 -0
  231. package/dist/is-serve-url.d.ts +0 -0
  232. package/dist/is-serve-url.js +0 -0
  233. package/dist/jpeg-quality.d.ts +2 -0
  234. package/dist/jpeg-quality.js +22 -0
  235. package/dist/locks.d.ts +7 -0
  236. package/dist/locks.js +44 -0
  237. package/dist/log-level.d.ts +1 -1
  238. package/dist/log-level.js +0 -0
  239. package/dist/logger.d.ts +24 -0
  240. package/dist/logger.js +68 -0
  241. package/dist/make-cancel-signal.d.ts +13 -2
  242. package/dist/make-cancel-signal.js +24 -1
  243. package/dist/merge-audio-track.d.ts +4 -4
  244. package/dist/merge-audio-track.js +38 -33
  245. package/dist/mime-db.d.ts +0 -0
  246. package/dist/mime-db.js +0 -0
  247. package/dist/mime-types.d.ts +0 -0
  248. package/dist/mime-types.js +3 -3
  249. package/dist/normalize-serve-url.d.ts +0 -0
  250. package/dist/normalize-serve-url.js +0 -0
  251. package/dist/offthread-video-server.d.ts +47 -11
  252. package/dist/offthread-video-server.js +111 -58
  253. package/dist/open-browser.d.ts +21 -6
  254. package/dist/open-browser.js +37 -16
  255. package/dist/options/audio-bitrate.d.ts +2 -0
  256. package/dist/options/audio-bitrate.js +11 -0
  257. package/dist/options/crf.d.ts +2 -0
  258. package/dist/options/crf.js +11 -0
  259. package/dist/options/enforce-audio.d.ts +2 -0
  260. package/dist/options/enforce-audio.js +11 -0
  261. package/dist/options/jpeg-quality.d.ts +2 -0
  262. package/dist/options/jpeg-quality.js +11 -0
  263. package/dist/options/mute.d.ts +2 -0
  264. package/dist/options/mute.js +11 -0
  265. package/dist/options/option.d.ts +8 -0
  266. package/dist/options/option.js +2 -0
  267. package/dist/options/scale.d.ts +2 -0
  268. package/dist/options/scale.js +11 -0
  269. package/dist/options/video-bitrate.d.ts +2 -0
  270. package/dist/options/video-bitrate.js +11 -0
  271. package/dist/options/video-codec.d.ts +2 -0
  272. package/dist/options/video-codec.js +11 -0
  273. package/dist/overwrite.d.ts +0 -0
  274. package/dist/overwrite.js +0 -0
  275. package/dist/p-limit.d.ts +0 -0
  276. package/dist/p-limit.js +0 -0
  277. package/dist/parse-browser-error-stack.d.ts +1 -1
  278. package/dist/parse-browser-error-stack.js +0 -0
  279. package/dist/parse-ffmpeg-progress.d.ts +0 -0
  280. package/dist/parse-ffmpeg-progress.js +0 -0
  281. package/dist/perf.d.ts +2 -2
  282. package/dist/perf.js +9 -7
  283. package/dist/pixel-format.d.ts +2 -2
  284. package/dist/pixel-format.js +3 -0
  285. package/dist/pool.d.ts +0 -0
  286. package/dist/pool.js +0 -0
  287. package/dist/prepare-server.d.ts +25 -10
  288. package/dist/prepare-server.js +71 -18
  289. package/dist/preprocess-audio-track.d.ts +7 -5
  290. package/dist/preprocess-audio-track.js +7 -8
  291. package/dist/prespawn-ffmpeg.d.ts +20 -10
  292. package/dist/prespawn-ffmpeg.js +67 -29
  293. package/dist/prestitcher-memory-usage.d.ts +0 -4
  294. package/dist/prestitcher-memory-usage.js +4 -5
  295. package/dist/prores-profile.d.ts +6 -4
  296. package/dist/prores-profile.js +8 -8
  297. package/dist/provide-screenshot.d.ts +8 -4
  298. package/dist/provide-screenshot.js +5 -2
  299. package/dist/puppeteer-evaluate.d.ts +0 -0
  300. package/dist/puppeteer-evaluate.js +20 -12
  301. package/dist/puppeteer-screenshot.d.ts +12 -2
  302. package/dist/puppeteer-screenshot.js +18 -45
  303. package/dist/redirect-status-codes.d.ts +1 -0
  304. package/dist/redirect-status-codes.js +6 -0
  305. package/dist/render-frames.d.ts +52 -35
  306. package/dist/render-frames.js +248 -143
  307. package/dist/render-media.d.ts +76 -29
  308. package/dist/render-media.js +324 -195
  309. package/dist/render-still.d.ts +46 -19
  310. package/dist/render-still.js +128 -69
  311. package/dist/replace-browser.d.ts +6 -0
  312. package/dist/replace-browser.js +47 -0
  313. package/dist/resolve-asset-src.d.ts +0 -0
  314. package/dist/resolve-asset-src.js +2 -2
  315. package/dist/sample-rate.d.ts +0 -0
  316. package/dist/sample-rate.js +0 -0
  317. package/dist/screenshot-dom-element.d.ts +8 -4
  318. package/dist/screenshot-dom-element.js +15 -4
  319. package/dist/screenshot-task.d.ts +11 -2
  320. package/dist/screenshot-task.js +43 -13
  321. package/dist/seek-to-frame.d.ts +1 -0
  322. package/dist/seek-to-frame.js +49 -3
  323. package/dist/select-composition.d.ts +41 -0
  324. package/dist/select-composition.js +156 -0
  325. package/dist/serve-handler/index.d.ts +1 -1
  326. package/dist/serve-handler/index.js +21 -19
  327. package/dist/serve-handler/is-path-inside.d.ts +0 -0
  328. package/dist/serve-handler/is-path-inside.js +3 -3
  329. package/dist/serve-handler/range-parser.d.ts +0 -0
  330. package/dist/serve-handler/range-parser.js +0 -0
  331. package/dist/serve-static.d.ts +8 -6
  332. package/dist/serve-static.js +85 -59
  333. package/dist/set-props-and-env.d.ts +5 -3
  334. package/dist/set-props-and-env.js +18 -10
  335. package/dist/stitch-frames-to-video.d.ts +39 -16
  336. package/dist/stitch-frames-to-video.js +210 -121
  337. package/dist/stringify-ffmpeg-filter.d.ts +10 -2
  338. package/dist/stringify-ffmpeg-filter.js +37 -34
  339. package/dist/symbolicate-stacktrace.d.ts +16 -3
  340. package/dist/symbolicate-stacktrace.js +49 -24
  341. package/dist/take-frame-and-compose.d.ts +22 -0
  342. package/dist/take-frame-and-compose.js +103 -0
  343. package/dist/tmp-dir.d.ts +0 -0
  344. package/dist/tmp-dir.js +7 -8
  345. package/dist/truthy.d.ts +1 -1
  346. package/dist/truthy.js +0 -0
  347. package/dist/types.d.ts +2 -2
  348. package/dist/types.js +0 -0
  349. package/dist/validate-concurrency.d.ts +2 -0
  350. package/dist/validate-concurrency.js +21 -10
  351. package/dist/validate-even-dimensions-with-codec.d.ts +0 -0
  352. package/dist/validate-even-dimensions-with-codec.js +0 -0
  353. package/dist/validate-every-nth-frame.d.ts +2 -1
  354. package/dist/validate-every-nth-frame.js +8 -1
  355. package/dist/validate-ffmpeg-override.d.ts +0 -0
  356. package/dist/validate-ffmpeg-override.js +0 -0
  357. package/dist/validate-number-of-gif-loops.d.ts +2 -0
  358. package/dist/validate-number-of-gif-loops.js +24 -0
  359. package/dist/validate-opengl-renderer.d.ts +2 -3
  360. package/dist/validate-opengl-renderer.js +9 -4
  361. package/dist/validate-output-filename.d.ts +7 -2
  362. package/dist/validate-output-filename.js +20 -51
  363. package/dist/validate-puppeteer-timeout.d.ts +0 -0
  364. package/dist/validate-puppeteer-timeout.js +1 -0
  365. package/dist/validate-scale.d.ts +0 -0
  366. package/dist/validate-scale.js +0 -0
  367. package/dist/validate-videobitrate.d.ts +1 -0
  368. package/dist/validate-videobitrate.js +20 -0
  369. package/dist/wait-for-symbolication-error-to-be-done.d.ts +0 -0
  370. package/dist/wait-for-symbolication-error-to-be-done.js +5 -31
  371. package/dist/ws/ws-types.d.ts +0 -0
  372. package/dist/ws/ws-types.js +2 -1
  373. package/install-toolchain.mjs +36 -0
  374. package/package.json +70 -60
  375. package/types/ws/index.d.ts +5 -5
  376. package/.prettierrc.js +0 -14
  377. package/dist/assets/dl-browser.d.ts +0 -1
  378. package/dist/assets/dl-browser.js +0 -38
  379. package/dist/assets/get-video-stream-duration.d.ts +0 -4
  380. package/dist/assets/get-video-stream-duration.js +0 -59
  381. package/dist/calculate-sar-dar-pixels.d.ts +0 -9
  382. package/dist/calculate-sar-dar-pixels.js +0 -19
  383. package/dist/convert-to-pcm.d.ts +0 -6
  384. package/dist/convert-to-pcm.js +0 -20
  385. package/dist/ensure-presentation-timestamp.d.ts +0 -2
  386. package/dist/ensure-presentation-timestamp.js +0 -69
  387. package/dist/extract-frame-from-video.d.ts +0 -16
  388. package/dist/extract-frame-from-video.js +0 -277
  389. package/dist/ffmpeg-executable.d.ts +0 -1
  390. package/dist/ffmpeg-flags.d.ts +0 -12
  391. package/dist/ffmpeg-flags.js +0 -45
  392. package/dist/frame-to-ffmpeg-timestamp.d.ts +0 -1
  393. package/dist/frame-to-ffmpeg-timestamp.js +0 -8
  394. package/dist/get-audio-codec-name.d.ts +0 -2
  395. package/dist/get-audio-codec-name.js +0 -28
  396. package/dist/get-video-info.d.ts +0 -3
  397. package/dist/get-video-info.js +0 -49
  398. package/dist/is-beyond-last-frame.d.ts +0 -3
  399. package/dist/is-beyond-last-frame.js +0 -12
  400. package/dist/last-frame-from-video-cache.d.ts +0 -17
  401. package/dist/last-frame-from-video-cache.js +0 -55
  402. package/dist/legacy-webpack-config.d.ts +0 -9
  403. package/dist/legacy-webpack-config.js +0 -13
  404. package/dist/quality.d.ts +0 -1
  405. package/dist/quality.js +0 -21
  406. package/dist/validate-ffmpeg.d.ts +0 -2
  407. package/dist/validate-ffmpeg.js +0 -72
  408. package/dist/validate-frame.d.ts +0 -1
  409. package/dist/validate-frame.js +0 -24
  410. package/tsconfig.json +0 -10
  411. package/vitest.config.ts +0 -8
@@ -13,6 +13,9 @@ exports.validPixelFormats = [
13
13
  ];
14
14
  exports.DEFAULT_PIXEL_FORMAT = 'yuv420p';
15
15
  const validateSelectedPixelFormatAndCodecCombination = (pixelFormat, codec) => {
16
+ if (typeof pixelFormat === 'undefined') {
17
+ return pixelFormat;
18
+ }
16
19
  if (!exports.validPixelFormats.includes(pixelFormat)) {
17
20
  throw new TypeError(`Value ${pixelFormat} is not valid as a pixel format.`);
18
21
  }
package/dist/pool.d.ts CHANGED
File without changes
package/dist/pool.js CHANGED
File without changes
@@ -1,16 +1,31 @@
1
1
  import type { RenderMediaOnDownload } from './assets/download-and-map-assets-to-file';
2
2
  import type { DownloadMap } from './assets/download-map';
3
- import type { FfmpegExecutable } from './ffmpeg-executable';
4
- export declare const prepareServer: ({ ffmpegExecutable, ffprobeExecutable, onDownload, onError, webpackConfigOrServeUrl, port, downloadMap, }: {
3
+ import type { Compositor } from './compositor/compositor';
4
+ import type { OffthreadVideoServerEmitter } from './offthread-video-server';
5
+ import type { AnySourceMapConsumer } from './symbolicate-stacktrace';
6
+ export type RemotionServer = {
7
+ serveUrl: string;
8
+ closeServer: (force: boolean) => Promise<unknown>;
9
+ offthreadPort: number;
10
+ compositor: Compositor;
11
+ sourceMap: AnySourceMapConsumer | null;
12
+ events: OffthreadVideoServerEmitter;
13
+ downloadMap: DownloadMap;
14
+ };
15
+ type PrepareServerOptions = {
5
16
  webpackConfigOrServeUrl: string;
6
- onDownload: RenderMediaOnDownload;
7
- onError: (err: Error) => void;
8
- ffmpegExecutable: FfmpegExecutable;
9
- ffprobeExecutable: FfmpegExecutable;
10
17
  port: number | null;
11
- downloadMap: DownloadMap;
18
+ remotionRoot: string;
19
+ concurrency: number;
20
+ verbose: boolean;
21
+ indent: boolean;
22
+ };
23
+ export declare const prepareServer: ({ webpackConfigOrServeUrl, port, remotionRoot, concurrency, verbose, indent, }: PrepareServerOptions) => Promise<RemotionServer>;
24
+ export declare const makeOrReuseServer: (server: RemotionServer | undefined, config: PrepareServerOptions, { onDownload, onError, }: {
25
+ onError: (err: Error) => void;
26
+ onDownload: RenderMediaOnDownload | null;
12
27
  }) => Promise<{
13
- serveUrl: string;
14
- closeServer: () => Promise<unknown>;
15
- offthreadPort: number;
28
+ server: RemotionServer;
29
+ cleanupServer: (force: boolean) => Promise<unknown>;
16
30
  }>;
31
+ export {};
@@ -3,50 +3,103 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.prepareServer = void 0;
7
- const fs_1 = require("fs");
8
- const path_1 = __importDefault(require("path"));
6
+ exports.makeOrReuseServer = exports.prepareServer = void 0;
7
+ const node_fs_1 = require("node:fs");
8
+ const node_path_1 = __importDefault(require("node:path"));
9
+ const remotion_1 = require("remotion");
10
+ const download_and_map_assets_to_file_1 = require("./assets/download-and-map-assets-to-file");
11
+ const download_map_1 = require("./assets/download-map");
9
12
  const is_serve_url_1 = require("./is-serve-url");
13
+ const logger_1 = require("./logger");
10
14
  const serve_static_1 = require("./serve-static");
15
+ const symbolicate_stacktrace_1 = require("./symbolicate-stacktrace");
11
16
  const wait_for_symbolication_error_to_be_done_1 = require("./wait-for-symbolication-error-to-be-done");
12
- const prepareServer = async ({ ffmpegExecutable, ffprobeExecutable, onDownload, onError, webpackConfigOrServeUrl, port, downloadMap, }) => {
17
+ const prepareServer = async ({ webpackConfigOrServeUrl, port, remotionRoot, concurrency, verbose, indent, }) => {
18
+ const downloadMap = (0, download_map_1.makeDownloadMap)();
19
+ logger_1.Log.verboseAdvanced({ indent, logLevel: verbose ? 'verbose' : 'info' }, 'Created directory for temporary files', downloadMap.assetDir);
13
20
  if ((0, is_serve_url_1.isServeUrl)(webpackConfigOrServeUrl)) {
14
- const { port: offthreadPort, close: closeProxy } = await (0, serve_static_1.serveStatic)(null, {
15
- onDownload,
16
- onError,
17
- ffmpegExecutable,
18
- ffprobeExecutable,
21
+ const { port: offthreadPort, close: closeProxy, compositor: comp, events, } = await (0, serve_static_1.serveStatic)(null, {
19
22
  port,
20
23
  downloadMap,
24
+ remotionRoot,
25
+ concurrency,
26
+ verbose,
27
+ indent,
21
28
  });
22
29
  return Promise.resolve({
23
30
  serveUrl: webpackConfigOrServeUrl,
24
31
  closeServer: () => {
32
+ (0, download_map_1.cleanDownloadMap)(downloadMap);
25
33
  return closeProxy();
26
34
  },
27
35
  offthreadPort,
36
+ compositor: comp,
37
+ sourceMap: null,
38
+ events,
39
+ downloadMap,
28
40
  });
29
41
  }
30
42
  // Check if the path has a `index.html` file
31
- const indexFile = path_1.default.join(webpackConfigOrServeUrl, 'index.html');
32
- const exists = (0, fs_1.existsSync)(indexFile);
43
+ const indexFile = node_path_1.default.join(webpackConfigOrServeUrl, 'index.html');
44
+ const exists = (0, node_fs_1.existsSync)(indexFile);
33
45
  if (!exists) {
34
46
  throw new Error(`Tried to serve the Webpack bundle on a HTTP server, but the file ${indexFile} does not exist. Is this a valid path to a Webpack bundle?`);
35
47
  }
36
- const { port: serverPort, close } = await (0, serve_static_1.serveStatic)(webpackConfigOrServeUrl, {
37
- onDownload,
38
- onError,
39
- ffmpegExecutable,
40
- ffprobeExecutable,
48
+ const sourceMap = (0, symbolicate_stacktrace_1.getSourceMapFromLocalFile)(node_path_1.default.join(webpackConfigOrServeUrl, remotion_1.Internals.bundleName));
49
+ const { port: serverPort, close, compositor, events: newEvents, } = await (0, serve_static_1.serveStatic)(webpackConfigOrServeUrl, {
41
50
  port,
42
51
  downloadMap,
52
+ remotionRoot,
53
+ concurrency,
54
+ verbose,
55
+ indent,
43
56
  });
44
57
  return Promise.resolve({
45
- closeServer: () => {
46
- return (0, wait_for_symbolication_error_to_be_done_1.waitForSymbolicationToBeDone)().then(() => close());
58
+ closeServer: async (force) => {
59
+ sourceMap.then((s) => s === null || s === void 0 ? void 0 : s.destroy());
60
+ (0, download_map_1.cleanDownloadMap)(downloadMap);
61
+ if (!force) {
62
+ await (0, wait_for_symbolication_error_to_be_done_1.waitForSymbolicationToBeDone)();
63
+ }
64
+ return close();
47
65
  },
48
66
  serveUrl: `http://localhost:${serverPort}`,
49
67
  offthreadPort: serverPort,
68
+ compositor,
69
+ sourceMap: await sourceMap,
70
+ events: newEvents,
71
+ downloadMap,
50
72
  });
51
73
  };
52
74
  exports.prepareServer = prepareServer;
75
+ const makeOrReuseServer = async (server, config, { onDownload, onError, }) => {
76
+ if (server) {
77
+ const cleanupOnDownload = (0, download_and_map_assets_to_file_1.attachDownloadListenerToEmitter)(server.events, onDownload);
78
+ const cleanupError = server.events.addEventListener('error', ({ detail: { error } }) => {
79
+ onError(error);
80
+ });
81
+ return {
82
+ server,
83
+ cleanupServer: () => {
84
+ cleanupOnDownload();
85
+ cleanupError();
86
+ return Promise.resolve();
87
+ },
88
+ };
89
+ }
90
+ const newServer = await (0, exports.prepareServer)(config);
91
+ const cleanupOnDownloadNew = (0, download_and_map_assets_to_file_1.attachDownloadListenerToEmitter)(newServer.events, onDownload);
92
+ const cleanupErrorNew = newServer.events.addEventListener('error', ({ detail: { error } }) => {
93
+ onError(error);
94
+ });
95
+ return {
96
+ server: newServer,
97
+ cleanupServer: (force) => {
98
+ newServer.closeServer(force);
99
+ cleanupOnDownloadNew();
100
+ cleanupErrorNew();
101
+ return Promise.resolve();
102
+ },
103
+ };
104
+ };
105
+ exports.makeOrReuseServer = makeOrReuseServer;
@@ -1,14 +1,16 @@
1
1
  import type { DownloadMap } from './assets/download-map';
2
2
  import type { MediaAsset } from './assets/types';
3
- import type { FfmpegExecutable } from './ffmpeg-executable';
4
- declare type Options = {
5
- ffmpegExecutable: FfmpegExecutable;
6
- ffprobeExecutable: FfmpegExecutable;
3
+ import type { ProcessedTrack } from './stringify-ffmpeg-filter';
4
+ type Options = {
7
5
  outName: string;
8
6
  asset: MediaAsset;
9
7
  expectedFrames: number;
10
8
  fps: number;
11
9
  downloadMap: DownloadMap;
12
10
  };
13
- export declare const preprocessAudioTrack: (options: Options) => Promise<string | null>;
11
+ export type PreprocessedAudioTrack = {
12
+ outName: string;
13
+ filter: ProcessedTrack;
14
+ };
15
+ export declare const preprocessAudioTrack: (options: Options) => Promise<PreprocessedAudioTrack | null>;
14
16
  export {};
@@ -1,17 +1,15 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.preprocessAudioTrack = void 0;
7
- const execa_1 = __importDefault(require("execa"));
8
4
  const get_audio_channels_1 = require("./assets/get-audio-channels");
9
5
  const calculate_ffmpeg_filters_1 = require("./calculate-ffmpeg-filters");
6
+ const call_ffmpeg_1 = require("./call-ffmpeg");
10
7
  const ffmpeg_filter_file_1 = require("./ffmpeg-filter-file");
11
8
  const p_limit_1 = require("./p-limit");
12
9
  const resolve_asset_src_1 = require("./resolve-asset-src");
13
- const preprocessAudioTrackUnlimited = async ({ ffmpegExecutable, ffprobeExecutable, outName, asset, expectedFrames, fps, downloadMap, }) => {
14
- const { channels, duration } = await (0, get_audio_channels_1.getAudioChannelsAndDuration)(downloadMap, (0, resolve_asset_src_1.resolveAssetSrc)(asset.src), ffprobeExecutable);
10
+ const sample_rate_1 = require("./sample-rate");
11
+ const preprocessAudioTrackUnlimited = async ({ outName, asset, expectedFrames, fps, downloadMap, }) => {
12
+ const { channels, duration } = await (0, get_audio_channels_1.getAudioChannelsAndDuration)(downloadMap, (0, resolve_asset_src_1.resolveAssetSrc)(asset.src));
15
13
  const filter = (0, calculate_ffmpeg_filters_1.calculateFfmpegFilter)({
16
14
  asset,
17
15
  durationInFrames: expectedFrames,
@@ -28,11 +26,12 @@ const preprocessAudioTrackUnlimited = async ({ ffmpegExecutable, ffprobeExecutab
28
26
  ['-ac', '2'],
29
27
  ['-filter_script:a', file],
30
28
  ['-c:a', 'pcm_s16le'],
29
+ ['-ar', String(sample_rate_1.DEFAULT_SAMPLE_RATE)],
31
30
  ['-y', outName],
32
31
  ].flat(2);
33
- await (0, execa_1.default)(ffmpegExecutable !== null && ffmpegExecutable !== void 0 ? ffmpegExecutable : 'ffmpeg', args);
32
+ await (0, call_ffmpeg_1.callFf)('ffmpeg', args);
34
33
  cleanup();
35
- return outName;
34
+ return { outName, filter };
36
35
  };
37
36
  const limit = (0, p_limit_1.pLimit)(2);
38
37
  const preprocessAudioTrack = (options) => {
@@ -1,12 +1,20 @@
1
- import execa from 'execa';
2
1
  import type { Codec } from './codec';
3
- import type { FfmpegExecutable } from './ffmpeg-executable';
4
2
  import type { FfmpegOverrideFn } from './ffmpeg-override';
5
- import type { ImageFormat } from './image-format';
3
+ import type { VideoImageFormat } from './image-format';
6
4
  import type { CancelSignal } from './make-cancel-signal';
7
5
  import type { PixelFormat } from './pixel-format';
8
6
  import type { ProResProfile } from './prores-profile';
9
- declare type PreSticherOptions = {
7
+ type RunningStatus = {
8
+ type: 'running';
9
+ } | {
10
+ type: 'quit-successfully';
11
+ stderr: string;
12
+ } | {
13
+ type: 'quit-with-error';
14
+ exitCode: number;
15
+ stderr: string;
16
+ };
17
+ type PreStitcherOptions = {
10
18
  fps: number;
11
19
  width: number;
12
20
  height: number;
@@ -17,13 +25,15 @@ declare type PreSticherOptions = {
17
25
  onProgress: (progress: number) => void;
18
26
  proResProfile: ProResProfile | undefined;
19
27
  verbose: boolean;
20
- ffmpegExecutable: FfmpegExecutable | undefined;
21
- imageFormat: ImageFormat;
22
- ffmpegOverride?: FfmpegOverrideFn;
28
+ imageFormat: VideoImageFormat;
29
+ ffmpegOverride: FfmpegOverrideFn;
23
30
  signal: CancelSignal;
31
+ videoBitrate: string | null;
32
+ indent: boolean;
24
33
  };
25
- export declare const prespawnFfmpeg: (options: PreSticherOptions) => Promise<{
26
- task: execa.ExecaChildProcess<string>;
34
+ export declare const prespawnFfmpeg: (options: PreStitcherOptions) => {
35
+ task: import("execa").ExecaChildProcess<string>;
27
36
  getLogs: () => string;
28
- }>;
37
+ getExitStatus: () => RunningStatus;
38
+ };
29
39
  export {};
@@ -1,21 +1,18 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.prespawnFfmpeg = void 0;
7
- const execa_1 = __importDefault(require("execa"));
8
4
  const remotion_1 = require("remotion");
5
+ const call_ffmpeg_1 = require("./call-ffmpeg");
9
6
  const codec_1 = require("./codec");
10
7
  const crf_1 = require("./crf");
11
8
  const get_codec_name_1 = require("./get-codec-name");
12
9
  const get_prores_profile_name_1 = require("./get-prores-profile-name");
10
+ const logger_1 = require("./logger");
13
11
  const parse_ffmpeg_progress_1 = require("./parse-ffmpeg-progress");
14
12
  const pixel_format_1 = require("./pixel-format");
15
13
  const validate_even_dimensions_with_codec_1 = require("./validate-even-dimensions-with-codec");
16
- const validate_ffmpeg_1 = require("./validate-ffmpeg");
17
- const prespawnFfmpeg = async (options) => {
18
- var _a, _b, _c, _d, _e, _f, _g;
14
+ const prespawnFfmpeg = (options) => {
15
+ var _a, _b, _c;
19
16
  remotion_1.Internals.validateDimension(options.height, 'height', 'passed to `stitchFramesToVideo()`');
20
17
  remotion_1.Internals.validateDimension(options.width, 'width', 'passed to `stitchFramesToVideo()`');
21
18
  const codec = (_a = options.codec) !== null && _a !== void 0 ? _a : codec_1.DEFAULT_CODEC;
@@ -26,26 +23,40 @@ const prespawnFfmpeg = async (options) => {
26
23
  codec,
27
24
  scale: 1,
28
25
  });
29
- const crf = (_b = options.crf) !== null && _b !== void 0 ? _b : (0, crf_1.getDefaultCrfForCodec)(codec);
30
- const pixelFormat = (_c = options.pixelFormat) !== null && _c !== void 0 ? _c : pixel_format_1.DEFAULT_PIXEL_FORMAT;
31
- await (0, validate_ffmpeg_1.validateFfmpeg)((_d = options.ffmpegExecutable) !== null && _d !== void 0 ? _d : null);
26
+ const pixelFormat = (_b = options.pixelFormat) !== null && _b !== void 0 ? _b : pixel_format_1.DEFAULT_PIXEL_FORMAT;
32
27
  const encoderName = (0, get_codec_name_1.getCodecName)(codec);
33
28
  const proResProfileName = (0, get_prores_profile_name_1.getProResProfileName)(codec, options.proResProfile);
34
29
  if (encoderName === null) {
35
30
  throw new TypeError('encoderName is null: ' + JSON.stringify(options));
36
31
  }
37
32
  const supportsCrf = codec !== 'prores';
38
- if (options.verbose) {
39
- console.log('[verbose] ffmpeg', (_e = options.ffmpegExecutable) !== null && _e !== void 0 ? _e : 'ffmpeg in PATH');
40
- console.log('[verbose] encoder', encoderName);
41
- console.log('[verbose] pixelFormat', pixelFormat);
42
- if (supportsCrf) {
43
- console.log('[verbose] crf', crf);
44
- }
45
- console.log('[verbose] codec', codec);
46
- console.log('[verbose] proResProfileName', proResProfileName);
33
+ logger_1.Log.verboseAdvanced({
34
+ indent: options.indent,
35
+ logLevel: options.verbose ? 'verbose' : 'info',
36
+ tag: 'prespawnFfmpeg()',
37
+ }, 'encoder', encoderName);
38
+ logger_1.Log.verboseAdvanced({
39
+ indent: options.indent,
40
+ logLevel: options.verbose ? 'verbose' : 'info',
41
+ tag: 'prespawnFfmpeg()',
42
+ }, 'pixelFormat', pixelFormat);
43
+ if (supportsCrf) {
44
+ logger_1.Log.verboseAdvanced({
45
+ indent: options.indent,
46
+ logLevel: options.verbose ? 'verbose' : 'info',
47
+ tag: 'prespawnFfmpeg()',
48
+ }, 'pixelFormat', options.crf);
47
49
  }
48
- (0, crf_1.validateSelectedCrfAndCodecCombination)(crf, codec);
50
+ logger_1.Log.verboseAdvanced({
51
+ indent: options.indent,
52
+ logLevel: options.verbose ? 'verbose' : 'info',
53
+ tag: 'prespawnFfmpeg()',
54
+ }, 'codec', codec);
55
+ logger_1.Log.verboseAdvanced({
56
+ indent: options.indent,
57
+ logLevel: options.verbose ? 'verbose' : 'info',
58
+ tag: 'prespawnFfmpeg()',
59
+ }, 'proResProfileName', proResProfileName);
49
60
  (0, pixel_format_1.validateSelectedPixelFormatAndCodecCombination)(pixelFormat, codec);
50
61
  const ffmpegArgs = [
51
62
  ['-r', options.fps.toFixed(2)],
@@ -61,29 +72,38 @@ const prespawnFfmpeg = async (options) => {
61
72
  // and specified the video codec.
62
73
  ['-c:v', encoderName],
63
74
  proResProfileName ? ['-profile:v', proResProfileName] : null,
64
- supportsCrf ? ['-crf', String(crf)] : null,
65
75
  ['-pix_fmt', pixelFormat],
66
76
  // Without explicitly disabling auto-alt-ref,
67
77
  // transparent WebM generation doesn't work
68
78
  pixelFormat === 'yuva420p' ? ['-auto-alt-ref', '0'] : null,
69
- ['-b:v', '1M'],
79
+ ...(0, crf_1.validateQualitySettings)({
80
+ crf: options.crf,
81
+ videoBitrate: options.videoBitrate,
82
+ codec,
83
+ }),
70
84
  '-y',
71
85
  options.outputLocation,
72
86
  ];
73
- if (options.verbose) {
74
- console.log('Generated FFMPEG command:');
75
- console.log(ffmpegArgs);
76
- }
87
+ logger_1.Log.verboseAdvanced({
88
+ indent: options.indent,
89
+ logLevel: options.verbose ? 'verbose' : 'info',
90
+ tag: 'prespawnFfmpeg()',
91
+ }, 'Generated FFMPEG command:');
92
+ logger_1.Log.verboseAdvanced({
93
+ indent: options.indent,
94
+ logLevel: options.verbose ? 'verbose' : 'info',
95
+ tag: 'prespawnFfmpeg()',
96
+ }, ffmpegArgs.join(' '));
77
97
  const ffmpegString = ffmpegArgs.flat(2).filter(Boolean);
78
98
  const finalFfmpegString = options.ffmpegOverride
79
99
  ? options.ffmpegOverride({ type: 'pre-stitcher', args: ffmpegString })
80
100
  : ffmpegString;
81
- const task = (0, execa_1.default)((_f = options.ffmpegExecutable) !== null && _f !== void 0 ? _f : 'ffmpeg', finalFfmpegString);
101
+ const task = (0, call_ffmpeg_1.callFf)('ffmpeg', finalFfmpegString);
82
102
  options.signal(() => {
83
103
  task.kill();
84
104
  });
85
105
  let ffmpegOutput = '';
86
- (_g = task.stderr) === null || _g === void 0 ? void 0 : _g.on('data', (data) => {
106
+ (_c = task.stderr) === null || _c === void 0 ? void 0 : _c.on('data', (data) => {
87
107
  const str = data.toString();
88
108
  ffmpegOutput += str;
89
109
  if (options.onProgress) {
@@ -93,6 +113,24 @@ const prespawnFfmpeg = async (options) => {
93
113
  }
94
114
  }
95
115
  });
96
- return { task, getLogs: () => ffmpegOutput };
116
+ let exitCode = {
117
+ type: 'running',
118
+ };
119
+ task.on('exit', (code) => {
120
+ if (typeof code === 'number' && code > 0) {
121
+ exitCode = {
122
+ type: 'quit-with-error',
123
+ exitCode: code,
124
+ stderr: ffmpegOutput,
125
+ };
126
+ }
127
+ else {
128
+ exitCode = {
129
+ type: 'quit-successfully',
130
+ stderr: ffmpegOutput,
131
+ };
132
+ }
133
+ });
134
+ return { task, getLogs: () => ffmpegOutput, getExitStatus: () => exitCode };
97
135
  };
98
136
  exports.prespawnFfmpeg = prespawnFfmpeg;
@@ -1,7 +1,3 @@
1
- export declare const estimateMemoryUsageForPrestitcher: ({ width, height, }: {
2
- width: number;
3
- height: number;
4
- }) => number;
5
1
  export declare const shouldUseParallelEncoding: ({ width, height, }: {
6
2
  width: number;
7
3
  height: number;
@@ -3,8 +3,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.shouldUseParallelEncoding = exports.estimateMemoryUsageForPrestitcher = void 0;
7
- const os_1 = __importDefault(require("os"));
6
+ exports.shouldUseParallelEncoding = void 0;
7
+ const node_os_1 = __importDefault(require("node:os"));
8
8
  const estimateMemoryUsageForPrestitcher = ({ width, height, }) => {
9
9
  // Empirically we detected that per 1 million pixels, FFMPEG uses around 1GB of memory, relatively independent of
10
10
  // the duration of the video.
@@ -12,10 +12,9 @@ const estimateMemoryUsageForPrestitcher = ({ width, height, }) => {
12
12
  const memoryUsageOfPixel = memoryUsageFor4K / 1000000;
13
13
  return memoryUsageOfPixel * width * height;
14
14
  };
15
- exports.estimateMemoryUsageForPrestitcher = estimateMemoryUsageForPrestitcher;
16
15
  const shouldUseParallelEncoding = ({ width, height, }) => {
17
- const freeMemory = os_1.default.freemem();
18
- const estimatedUsage = (0, exports.estimateMemoryUsageForPrestitcher)({
16
+ const freeMemory = node_os_1.default.freemem();
17
+ const estimatedUsage = estimateMemoryUsageForPrestitcher({
19
18
  height,
20
19
  width,
21
20
  });
@@ -1,5 +1,7 @@
1
1
  import type { Codec } from './codec';
2
- declare const proResProfileOptions: readonly ["4444-xq", "4444", "hq", "standard", "light", "proxy"];
3
- export declare type ProResProfile = typeof proResProfileOptions[number];
4
- export declare const validateSelectedCodecAndProResCombination: (actualCodec: Codec, actualProResProfile: ProResProfile | undefined) => void;
5
- export {};
2
+ export declare const proResProfileOptions: readonly ["4444-xq", "4444", "hq", "standard", "light", "proxy"];
3
+ export type ProResProfile = typeof proResProfileOptions[number];
4
+ export declare const validateSelectedCodecAndProResCombination: ({ codec, proResProfile, }: {
5
+ codec: Codec;
6
+ proResProfile: ProResProfile | undefined;
7
+ }) => void;
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.validateSelectedCodecAndProResCombination = void 0;
4
- const proResProfileOptions = [
3
+ exports.validateSelectedCodecAndProResCombination = exports.proResProfileOptions = void 0;
4
+ exports.proResProfileOptions = [
5
5
  '4444-xq',
6
6
  '4444',
7
7
  'hq',
@@ -9,13 +9,13 @@ const proResProfileOptions = [
9
9
  'light',
10
10
  'proxy',
11
11
  ];
12
- const validateSelectedCodecAndProResCombination = (actualCodec, actualProResProfile) => {
13
- if (typeof actualProResProfile !== 'undefined' && actualCodec !== 'prores') {
14
- throw new TypeError('You have set a ProRes profile but the codec is not "prores". Set the codec to "prores" or remove the ProRes profile.');
12
+ const validateSelectedCodecAndProResCombination = ({ codec, proResProfile, }) => {
13
+ if (typeof proResProfile !== 'undefined' && codec !== 'prores') {
14
+ throw new TypeError(`You have set a ProRes profile but the codec is "${codec}". Set the codec to "prores" or remove the ProRes profile.`);
15
15
  }
16
- if (actualProResProfile !== undefined &&
17
- !proResProfileOptions.includes(actualProResProfile)) {
18
- throw new TypeError(`The ProRes profile "${actualProResProfile}" is not valid. Valid options are ${proResProfileOptions
16
+ if (proResProfile !== undefined &&
17
+ !exports.proResProfileOptions.includes(proResProfile)) {
18
+ throw new TypeError(`The ProRes profile "${proResProfile}" is not valid. Valid options are ${exports.proResProfileOptions
19
19
  .map((p) => `"${p}"`)
20
20
  .join(', ')}`);
21
21
  }
@@ -1,12 +1,16 @@
1
1
  /// <reference types="node" />
2
+ import type { ClipRegion } from 'remotion';
2
3
  import type { Page } from './browser/BrowserPage';
3
- import type { ImageFormat } from './image-format';
4
- export declare const provideScreenshot: ({ page, imageFormat, options, quality, }: {
4
+ import type { StillImageFormat } from './image-format';
5
+ export declare const provideScreenshot: ({ page, imageFormat, options, jpegQuality, height, width, clipRegion, }: {
5
6
  page: Page;
6
- imageFormat: ImageFormat;
7
- quality: number | undefined;
7
+ imageFormat: StillImageFormat;
8
+ jpegQuality: number | undefined;
8
9
  options: {
9
10
  frame: number;
10
11
  output: string | null;
11
12
  };
13
+ height: number;
14
+ width: number;
15
+ clipRegion: ClipRegion | null;
12
16
  }) => Promise<Buffer>;
@@ -2,14 +2,17 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.provideScreenshot = void 0;
4
4
  const screenshot_dom_element_1 = require("./screenshot-dom-element");
5
- const provideScreenshot = ({ page, imageFormat, options, quality, }) => {
5
+ const provideScreenshot = ({ page, imageFormat, options, jpegQuality, height, width, clipRegion, }) => {
6
6
  return (0, screenshot_dom_element_1.screenshotDOMElement)({
7
7
  page,
8
8
  opts: {
9
9
  path: options.output,
10
10
  },
11
11
  imageFormat,
12
- quality,
12
+ jpegQuality,
13
+ height,
14
+ width,
15
+ clipRegion,
13
16
  });
14
17
  };
15
18
  exports.provideScreenshot = provideScreenshot;
File without changes
@@ -30,7 +30,7 @@ function isString(obj) {
30
30
  return typeof obj === 'string' || obj instanceof String;
31
31
  }
32
32
  async function puppeteerEvaluateWithCatch({ page, pageFunction, frame, args, }) {
33
- var _a, _b, _c, _d, _e, _f, _g;
33
+ var _a, _b, _c, _d, _e, _f, _g, _h;
34
34
  const contextId = (await page.mainFrame().executionContext())._contextId;
35
35
  const client = page._client();
36
36
  const suffix = `//# sourceURL=${EVALUATION_SCRIPT_URL}`;
@@ -99,18 +99,26 @@ async function puppeteerEvaluateWithCatch({ page, pageFunction, frame, args, })
99
99
  error.message += ' Are you passing a nested JSHandle?';
100
100
  throw error;
101
101
  }
102
- const { exceptionDetails, result: remoteObject } = await callFunctionOnPromise;
103
- if (exceptionDetails) {
104
- const err = new symbolicateable_error_1.SymbolicateableError({
105
- stack: (_c = exceptionDetails.exception) === null || _c === void 0 ? void 0 : _c.description,
106
- name: (_d = exceptionDetails.exception) === null || _d === void 0 ? void 0 : _d.className,
107
- message: (_f = (_e = exceptionDetails.exception) === null || _e === void 0 ? void 0 : _e.description) === null || _f === void 0 ? void 0 : _f.split('\n')[0],
108
- frame,
109
- stackFrame: (0, parse_browser_error_stack_1.parseStack)(((_g = exceptionDetails.exception) === null || _g === void 0 ? void 0 : _g.description).split('\n')),
110
- });
111
- throw err;
102
+ try {
103
+ const { exceptionDetails, result: remoteObject } = await callFunctionOnPromise;
104
+ if (exceptionDetails) {
105
+ const err = new symbolicateable_error_1.SymbolicateableError({
106
+ stack: (_c = exceptionDetails.exception) === null || _c === void 0 ? void 0 : _c.description,
107
+ name: (_d = exceptionDetails.exception) === null || _d === void 0 ? void 0 : _d.className,
108
+ message: (_f = (_e = exceptionDetails.exception) === null || _e === void 0 ? void 0 : _e.description) === null || _f === void 0 ? void 0 : _f.split('\n')[0],
109
+ frame,
110
+ stackFrame: (0, parse_browser_error_stack_1.parseStack)(((_g = exceptionDetails.exception) === null || _g === void 0 ? void 0 : _g.description).split('\n')),
111
+ });
112
+ throw err;
113
+ }
114
+ return valueFromRemoteObject(remoteObject);
115
+ }
116
+ catch (error) {
117
+ if ((_h = error === null || error === void 0 ? void 0 : error.originalMessage) === null || _h === void 0 ? void 0 : _h.startsWith("Object couldn't be returned by value")) {
118
+ throw new Error('Could not serialize the return value of the function. Did you pass non-serializable values to defaultProps?');
119
+ }
120
+ throw error;
112
121
  }
113
- return valueFromRemoteObject(remoteObject);
114
122
  }
115
123
  exports.puppeteerEvaluateWithCatch = puppeteerEvaluateWithCatch;
116
124
  /**
@@ -1,4 +1,14 @@
1
1
  /// <reference types="node" />
2
+ import type { ClipRegion } from 'remotion';
2
3
  import type { Page } from './browser/BrowserPage';
3
- import type { ScreenshotOptions } from './browser/ScreenshotOptions';
4
- export declare const screenshot: (page: Page, options: ScreenshotOptions) => Promise<Buffer | string | void>;
4
+ import type { StillImageFormat } from './image-format';
5
+ export declare const screenshot: (options: {
6
+ page: Page;
7
+ type: StillImageFormat;
8
+ path?: string;
9
+ jpegQuality?: number;
10
+ omitBackground: boolean;
11
+ width: number;
12
+ height: number;
13
+ clipRegion: ClipRegion | null;
14
+ }) => Promise<Buffer | string>;