@remotion/renderer 4.0.0-offthread.9 → 4.0.0-prefetch.10

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 (429) hide show
  1. package/dist/assets/calculate-asset-positions.d.ts +2 -2
  2. package/dist/assets/convert-assets-to-file-urls.d.ts +5 -4
  3. package/dist/assets/convert-assets-to-file-urls.js +2 -2
  4. package/dist/assets/download-and-map-assets-to-file.d.ts +16 -12
  5. package/dist/assets/download-and-map-assets-to-file.js +145 -65
  6. package/dist/assets/download-file.d.ts +10 -5
  7. package/dist/assets/download-file.js +20 -5
  8. package/dist/assets/download-map.d.ts +64 -0
  9. package/dist/assets/download-map.js +73 -0
  10. package/dist/assets/ffmpeg-volume-expression.d.ts +2 -3
  11. package/dist/assets/ffmpeg-volume-expression.js +2 -3
  12. package/dist/assets/flatten-volume-array.d.ts +1 -1
  13. package/dist/assets/get-audio-channels.d.ts +3 -4
  14. package/dist/assets/get-audio-channels.js +14 -4
  15. package/dist/assets/get-video-stream-duration.d.ts +4 -0
  16. package/dist/assets/get-video-stream-duration.js +59 -0
  17. package/dist/assets/read-file.js +4 -1
  18. package/dist/assets/types.d.ts +1 -1
  19. package/dist/browser/Browser.d.ts +60 -0
  20. package/dist/browser/Browser.js +218 -0
  21. package/dist/browser/BrowserConnector.d.ts +19 -0
  22. package/dist/browser/BrowserConnector.js +17 -0
  23. package/dist/browser/BrowserFetcher.d.ts +89 -0
  24. package/dist/browser/BrowserFetcher.js +510 -0
  25. package/dist/browser/BrowserPage.d.ts +74 -0
  26. package/dist/browser/BrowserPage.js +283 -0
  27. package/dist/browser/BrowserRunner.d.ts +39 -0
  28. package/dist/browser/BrowserRunner.js +308 -0
  29. package/dist/browser/Connection.d.ts +42 -0
  30. package/dist/browser/Connection.js +242 -0
  31. package/dist/browser/ConsoleMessage.d.ts +31 -0
  32. package/dist/browser/ConsoleMessage.js +48 -0
  33. package/dist/browser/DOMWorld.d.ts +52 -0
  34. package/dist/browser/DOMWorld.js +272 -0
  35. package/dist/browser/Errors.d.ts +25 -0
  36. package/dist/browser/Errors.js +35 -0
  37. package/dist/browser/EvalTypes.d.ts +27 -0
  38. package/dist/browser/EvalTypes.js +17 -0
  39. package/dist/browser/EventEmitter.d.ts +23 -0
  40. package/dist/browser/EventEmitter.js +53 -0
  41. package/dist/browser/ExecutionContext.d.ts +34 -0
  42. package/dist/browser/ExecutionContext.js +174 -0
  43. package/dist/browser/FrameManager.d.ts +93 -0
  44. package/dist/browser/FrameManager.js +496 -0
  45. package/dist/browser/HTTPRequest.d.ts +28 -0
  46. package/dist/browser/HTTPRequest.js +37 -0
  47. package/dist/browser/HTTPResponse.d.ts +21 -0
  48. package/dist/browser/HTTPResponse.js +41 -0
  49. package/dist/browser/JSHandle.d.ts +35 -0
  50. package/dist/browser/JSHandle.js +90 -0
  51. package/dist/browser/LaunchOptions.d.ts +37 -0
  52. package/dist/browser/LaunchOptions.js +17 -0
  53. package/dist/browser/Launcher.d.ts +9 -0
  54. package/dist/browser/Launcher.js +504 -0
  55. package/dist/browser/LifecycleWatcher.d.ts +29 -0
  56. package/dist/browser/LifecycleWatcher.js +180 -0
  57. package/dist/browser/NetworkEventManager.d.ts +33 -0
  58. package/dist/browser/NetworkEventManager.js +81 -0
  59. package/dist/browser/NetworkManager.d.ts +34 -0
  60. package/dist/browser/NetworkManager.js +231 -0
  61. package/dist/browser/NodeWebSocketTransport.d.ts +17 -0
  62. package/dist/browser/NodeWebSocketTransport.js +87 -0
  63. package/dist/browser/Product.d.ts +16 -0
  64. package/dist/browser/Product.js +17 -0
  65. package/dist/browser/PuppeteerNode.d.ts +40 -0
  66. package/dist/browser/PuppeteerNode.js +81 -0
  67. package/dist/browser/PuppeteerViewport.d.ts +5 -0
  68. package/dist/browser/PuppeteerViewport.js +2 -0
  69. package/dist/browser/ScreenshotOptions.d.ts +14 -0
  70. package/dist/browser/ScreenshotOptions.js +2 -0
  71. package/dist/browser/Target.d.ts +61 -0
  72. package/dist/browser/Target.js +146 -0
  73. package/dist/browser/TaskQueue.d.ts +20 -0
  74. package/dist/browser/TaskQueue.js +47 -0
  75. package/dist/browser/TimeoutSettings.d.ts +24 -0
  76. package/dist/browser/TimeoutSettings.js +62 -0
  77. package/dist/browser/assert.d.ts +1 -0
  78. package/dist/browser/assert.js +9 -0
  79. package/dist/browser/create-browser-fetcher.d.ts +17 -0
  80. package/dist/browser/create-browser-fetcher.js +119 -0
  81. package/dist/browser/devtools-commands.d.ts +270 -0
  82. package/dist/browser/devtools-commands.js +2 -0
  83. package/dist/browser/devtools-types.d.ts +1122 -0
  84. package/dist/browser/devtools-types.js +2 -0
  85. package/dist/browser/get-download-destination.d.ts +1 -0
  86. package/dist/browser/get-download-destination.js +38 -0
  87. package/dist/browser/mitt/index.d.ts +22 -0
  88. package/dist/browser/mitt/index.js +49 -0
  89. package/dist/browser/node.d.ts +2 -0
  90. package/dist/browser/node.js +9 -0
  91. package/dist/browser/revisions.d.ts +21 -0
  92. package/dist/browser/revisions.js +22 -0
  93. package/dist/browser/util.d.ts +47 -0
  94. package/dist/browser/util.js +169 -0
  95. package/dist/browser-executable.d.ts +1 -0
  96. package/dist/browser-executable.js +2 -0
  97. package/dist/browser-log.d.ts +1 -1
  98. package/dist/browser.d.ts +2 -0
  99. package/dist/browser.js +4 -0
  100. package/dist/calculate-ffmpeg-filters.d.ts +1 -1
  101. package/dist/calculate-ffmpeg-filters.js +2 -2
  102. package/dist/calculate-sar-dar-pixels.d.ts +9 -0
  103. package/dist/calculate-sar-dar-pixels.js +19 -0
  104. package/dist/can-use-parallel-encoding.d.ts +1 -1
  105. package/dist/can-use-parallel-encoding.js +2 -2
  106. package/dist/codec-supports-media.d.ts +8 -0
  107. package/dist/codec-supports-media.js +56 -0
  108. package/dist/codec.d.ts +4 -0
  109. package/dist/codec.js +16 -0
  110. package/dist/combine-videos.d.ts +3 -2
  111. package/dist/combine-videos.js +17 -7
  112. package/dist/compress-assets.d.ts +7 -0
  113. package/dist/compress-assets.js +25 -0
  114. package/dist/convert-number-of-gif-loops-to-ffmpeg.d.ts +1 -0
  115. package/dist/convert-number-of-gif-loops-to-ffmpeg.js +17 -0
  116. package/dist/convert-to-pcm.d.ts +1 -1
  117. package/dist/create-ffmpeg-complex-filter.d.ts +2 -1
  118. package/dist/create-ffmpeg-complex-filter.js +2 -11
  119. package/dist/create-ffmpeg-merge-filter.js +3 -3
  120. package/dist/create-silent-audio.d.ts +1 -1
  121. package/dist/crf.d.ts +5 -0
  122. package/dist/crf.js +64 -0
  123. package/dist/cycle-browser-tabs.d.ts +1 -1
  124. package/dist/delay-render-embedded-stack.d.ts +1 -1
  125. package/dist/ensure-frames-in-order.d.ts +1 -1
  126. package/dist/ensure-frames-in-order.js +3 -2
  127. package/dist/ensure-presentation-timestamp.d.ts +2 -0
  128. package/dist/ensure-presentation-timestamp.js +69 -0
  129. package/dist/error-handling/handle-javascript-exception.d.ts +2 -2
  130. package/dist/error-handling/handle-javascript-exception.js +3 -4
  131. package/dist/error-handling/symbolicate-error.d.ts +1 -1
  132. package/dist/error-handling/symbolicateable-error.d.ts +1 -1
  133. package/dist/extract-frame-from-video.d.ts +8 -4
  134. package/dist/extract-frame-from-video.js +173 -55
  135. package/dist/ffmpeg-executable.d.ts +1 -0
  136. package/dist/ffmpeg-executable.js +2 -0
  137. package/dist/ffmpeg-filter-file.d.ts +2 -1
  138. package/dist/ffmpeg-filter-file.js +4 -6
  139. package/dist/frame-range.d.ts +2 -0
  140. package/dist/frame-range.js +49 -0
  141. package/dist/get-audio-codec-name.d.ts +1 -1
  142. package/dist/get-audio-codec-name.js +2 -2
  143. package/dist/get-browser-instance.d.ts +4 -3
  144. package/dist/get-browser-instance.js +2 -2
  145. package/dist/get-codec-name.d.ts +1 -1
  146. package/dist/get-codec-name.js +5 -2
  147. package/dist/get-compositions.d.ts +12 -4
  148. package/dist/get-compositions.js +18 -11
  149. package/dist/get-duration-from-frame-range.d.ts +1 -2
  150. package/dist/get-duration-from-frame-range.js +13 -9
  151. package/dist/get-extension-from-codec.d.ts +2 -2
  152. package/dist/get-extension-from-codec.js +5 -0
  153. package/dist/get-extension-of-filename.d.ts +1 -1
  154. package/dist/get-extension-of-filename.js +3 -0
  155. package/dist/get-frame-padded-index.d.ts +14 -0
  156. package/dist/get-frame-padded-index.js +33 -0
  157. package/dist/get-frame-to-render.d.ts +1 -1
  158. package/dist/get-local-browser-executable.d.ts +2 -1
  159. package/dist/get-local-browser-executable.js +7 -5
  160. package/dist/get-port.js +30 -37
  161. package/dist/get-prores-profile-name.d.ts +2 -1
  162. package/dist/get-video-info.d.ts +3 -0
  163. package/dist/get-video-info.js +49 -0
  164. package/dist/get-video-threads-flag.d.ts +1 -0
  165. package/dist/get-video-threads-flag.js +18 -0
  166. package/dist/guess-extension-for-media.d.ts +1 -0
  167. package/dist/guess-extension-for-media.js +27 -0
  168. package/dist/image-format.d.ts +6 -1
  169. package/dist/image-format.js +25 -1
  170. package/dist/index.d.ts +89 -14
  171. package/dist/index.js +91 -2
  172. package/dist/is-audio-codec.d.ts +2 -0
  173. package/dist/is-audio-codec.js +7 -0
  174. package/dist/is-beyond-last-frame.d.ts +3 -2
  175. package/dist/is-beyond-last-frame.js +5 -5
  176. package/dist/last-frame-from-video-cache.d.ts +9 -4
  177. package/dist/last-frame-from-video-cache.js +24 -21
  178. package/dist/log-level.d.ts +4 -0
  179. package/dist/log-level.js +15 -0
  180. package/dist/merge-audio-track.d.ts +3 -1
  181. package/dist/merge-audio-track.js +12 -6
  182. package/dist/mime-db.d.ts +6 -0
  183. package/dist/mime-db.js +8636 -0
  184. package/dist/mime-types.d.ts +3 -0
  185. package/dist/mime-types.js +94 -0
  186. package/dist/offthread-video-server.d.ts +9 -5
  187. package/dist/offthread-video-server.js +31 -10
  188. package/dist/open-browser.d.ts +5 -3
  189. package/dist/open-browser.js +15 -15
  190. package/dist/overwrite.d.ts +1 -0
  191. package/dist/overwrite.js +4 -0
  192. package/dist/perf.d.ts +5 -0
  193. package/dist/perf.js +35 -0
  194. package/dist/pixel-format.d.ts +5 -0
  195. package/dist/pixel-format.js +26 -0
  196. package/dist/prepare-server.d.ts +6 -4
  197. package/dist/prepare-server.js +21 -5
  198. package/dist/preprocess-audio-track.d.ts +5 -2
  199. package/dist/preprocess-audio-track.js +3 -3
  200. package/dist/prespawn-ffmpeg.d.ts +6 -2
  201. package/dist/prespawn-ffmpeg.js +10 -7
  202. package/dist/prestitcher-memory-usage.d.ts +12 -0
  203. package/dist/prestitcher-memory-usage.js +30 -0
  204. package/dist/prores-profile.d.ts +5 -0
  205. package/dist/prores-profile.js +23 -0
  206. package/dist/provide-screenshot.d.ts +5 -4
  207. package/dist/provide-screenshot.js +0 -1
  208. package/dist/puppeteer-evaluate.d.ts +1 -1
  209. package/dist/puppeteer-evaluate.js +3 -4
  210. package/dist/puppeteer-screenshot.d.ts +3 -2
  211. package/dist/puppeteer-screenshot.js +2 -4
  212. package/dist/quality.d.ts +1 -0
  213. package/dist/quality.js +21 -0
  214. package/dist/render-frames.d.ts +21 -9
  215. package/dist/render-frames.js +111 -82
  216. package/dist/render-media.d.ts +33 -10
  217. package/dist/render-media.js +83 -25
  218. package/dist/render-still.d.ts +18 -7
  219. package/dist/render-still.js +44 -16
  220. package/dist/screenshot-dom-element.d.ts +6 -7
  221. package/dist/screenshot-dom-element.js +3 -6
  222. package/dist/screenshot-task.d.ts +3 -2
  223. package/dist/screenshot-task.js +36 -23
  224. package/dist/seek-to-frame.d.ts +2 -2
  225. package/dist/seek-to-frame.js +2 -2
  226. package/dist/serve-handler/index.d.ts +4 -0
  227. package/dist/serve-handler/index.js +204 -0
  228. package/dist/serve-handler/is-path-inside.d.ts +1 -0
  229. package/dist/serve-handler/is-path-inside.js +27 -0
  230. package/dist/serve-handler/range-parser.d.ts +13 -0
  231. package/dist/serve-handler/range-parser.js +57 -0
  232. package/dist/serve-static.d.ts +5 -3
  233. package/dist/serve-static.js +19 -8
  234. package/dist/set-props-and-env.d.ts +4 -2
  235. package/dist/set-props-and-env.js +42 -11
  236. package/dist/stitch-frames-to-video.d.ts +16 -6
  237. package/dist/stitch-frames-to-video.js +112 -42
  238. package/dist/stringify-ffmpeg-filter.d.ts +2 -2
  239. package/dist/stringify-ffmpeg-filter.js +11 -9
  240. package/dist/symbolicate-stacktrace.d.ts +1 -1
  241. package/dist/symbolicate-stacktrace.js +3 -3
  242. package/dist/truthy.d.ts +3 -0
  243. package/dist/truthy.js +7 -0
  244. package/dist/types.d.ts +1 -1
  245. package/dist/validate-concurrency.d.ts +1 -0
  246. package/dist/validate-concurrency.js +24 -0
  247. package/dist/validate-even-dimensions-with-codec.d.ts +1 -1
  248. package/dist/validate-even-dimensions-with-codec.js +2 -2
  249. package/dist/validate-every-nth-frame.d.ts +1 -0
  250. package/dist/validate-every-nth-frame.js +21 -0
  251. package/dist/validate-ffmpeg.js +2 -3
  252. package/dist/validate-frame.d.ts +1 -0
  253. package/dist/validate-frame.js +24 -0
  254. package/dist/validate-opengl-renderer.d.ts +5 -0
  255. package/dist/validate-opengl-renderer.js +15 -0
  256. package/dist/validate-output-filename.d.ts +1 -1
  257. package/dist/validate-output-filename.js +5 -0
  258. package/dist/wait-for-symbolication-error-to-be-done.d.ts +3 -0
  259. package/dist/wait-for-symbolication-error-to-be-done.js +34 -0
  260. package/dist/ws/ws-types.d.ts +14 -0
  261. package/dist/ws/ws-types.js +10 -0
  262. package/package.json +13 -15
  263. package/tsconfig.json +2 -2
  264. package/types/ws/index.d.ts +509 -0
  265. package/vitest.config.ts +8 -0
  266. package/dist/assets/calculate-asset-positions.d.ts.map +0 -1
  267. package/dist/assets/calculate-asset-positions.js.map +0 -1
  268. package/dist/assets/calculate-atempo.d.ts.map +0 -1
  269. package/dist/assets/calculate-atempo.js.map +0 -1
  270. package/dist/assets/convert-assets-to-file-urls.d.ts.map +0 -1
  271. package/dist/assets/convert-assets-to-file-urls.js.map +0 -1
  272. package/dist/assets/download-and-map-assets-to-file.d.ts.map +0 -1
  273. package/dist/assets/download-and-map-assets-to-file.js.map +0 -1
  274. package/dist/assets/download-file.d.ts.map +0 -1
  275. package/dist/assets/download-file.js.map +0 -1
  276. package/dist/assets/ffmpeg-volume-expression.d.ts.map +0 -1
  277. package/dist/assets/ffmpeg-volume-expression.js.map +0 -1
  278. package/dist/assets/flatten-volume-array.d.ts.map +0 -1
  279. package/dist/assets/flatten-volume-array.js.map +0 -1
  280. package/dist/assets/get-audio-channels.d.ts.map +0 -1
  281. package/dist/assets/get-audio-channels.js.map +0 -1
  282. package/dist/assets/read-file.d.ts.map +0 -1
  283. package/dist/assets/read-file.js.map +0 -1
  284. package/dist/assets/round-volume-to-avoid-stack-overflow.d.ts.map +0 -1
  285. package/dist/assets/round-volume-to-avoid-stack-overflow.js.map +0 -1
  286. package/dist/assets/sanitize-filename.d.ts.map +0 -1
  287. package/dist/assets/sanitize-filename.js.map +0 -1
  288. package/dist/assets/sanitize-filepath.d.ts.map +0 -1
  289. package/dist/assets/sanitize-filepath.js.map +0 -1
  290. package/dist/assets/truncate-utf8-bytes.d.ts.map +0 -1
  291. package/dist/assets/truncate-utf8-bytes.js.map +0 -1
  292. package/dist/assets/types.d.ts.map +0 -1
  293. package/dist/assets/types.js.map +0 -1
  294. package/dist/browser-log.d.ts.map +0 -1
  295. package/dist/browser-log.js.map +0 -1
  296. package/dist/calculate-ffmpeg-filters.d.ts.map +0 -1
  297. package/dist/calculate-ffmpeg-filters.js.map +0 -1
  298. package/dist/can-use-parallel-encoding.d.ts.map +0 -1
  299. package/dist/can-use-parallel-encoding.js.map +0 -1
  300. package/dist/chunk.d.ts.map +0 -1
  301. package/dist/chunk.js.map +0 -1
  302. package/dist/combine-videos.d.ts.map +0 -1
  303. package/dist/combine-videos.js.map +0 -1
  304. package/dist/convert-to-pcm.d.ts.map +0 -1
  305. package/dist/convert-to-pcm.js.map +0 -1
  306. package/dist/create-ffmpeg-complex-filter.d.ts.map +0 -1
  307. package/dist/create-ffmpeg-complex-filter.js.map +0 -1
  308. package/dist/create-ffmpeg-merge-filter.d.ts.map +0 -1
  309. package/dist/create-ffmpeg-merge-filter.js.map +0 -1
  310. package/dist/create-silent-audio.d.ts.map +0 -1
  311. package/dist/create-silent-audio.js.map +0 -1
  312. package/dist/cycle-browser-tabs.d.ts.map +0 -1
  313. package/dist/cycle-browser-tabs.js.map +0 -1
  314. package/dist/delay-render-embedded-stack.d.ts.map +0 -1
  315. package/dist/delay-render-embedded-stack.js.map +0 -1
  316. package/dist/delete-directory.d.ts.map +0 -1
  317. package/dist/delete-directory.js.map +0 -1
  318. package/dist/ensure-frames-in-order.d.ts.map +0 -1
  319. package/dist/ensure-frames-in-order.js.map +0 -1
  320. package/dist/ensure-output-directory.d.ts.map +0 -1
  321. package/dist/ensure-output-directory.js.map +0 -1
  322. package/dist/error-handling/handle-javascript-exception.d.ts.map +0 -1
  323. package/dist/error-handling/handle-javascript-exception.js.map +0 -1
  324. package/dist/error-handling/symbolicate-error.d.ts.map +0 -1
  325. package/dist/error-handling/symbolicate-error.js.map +0 -1
  326. package/dist/error-handling/symbolicateable-error.d.ts.map +0 -1
  327. package/dist/error-handling/symbolicateable-error.js.map +0 -1
  328. package/dist/ffmpeg-filter-file.d.ts.map +0 -1
  329. package/dist/ffmpeg-filter-file.js.map +0 -1
  330. package/dist/ffmpeg-flags.d.ts.map +0 -1
  331. package/dist/ffmpeg-flags.js.map +0 -1
  332. package/dist/get-audio-codec-name.d.ts.map +0 -1
  333. package/dist/get-audio-codec-name.js.map +0 -1
  334. package/dist/get-browser-instance.d.ts.map +0 -1
  335. package/dist/get-browser-instance.js.map +0 -1
  336. package/dist/get-codec-name.d.ts.map +0 -1
  337. package/dist/get-codec-name.js.map +0 -1
  338. package/dist/get-compositions.d.ts.map +0 -1
  339. package/dist/get-compositions.js.map +0 -1
  340. package/dist/get-concurrency.d.ts.map +0 -1
  341. package/dist/get-concurrency.js.map +0 -1
  342. package/dist/get-duration-from-frame-range.d.ts.map +0 -1
  343. package/dist/get-duration-from-frame-range.js.map +0 -1
  344. package/dist/get-extension-from-codec.d.ts.map +0 -1
  345. package/dist/get-extension-from-codec.js.map +0 -1
  346. package/dist/get-frame-to-render.d.ts.map +0 -1
  347. package/dist/get-frame-to-render.js.map +0 -1
  348. package/dist/get-local-browser-executable.d.ts.map +0 -1
  349. package/dist/get-local-browser-executable.js.map +0 -1
  350. package/dist/get-port.d.ts.map +0 -1
  351. package/dist/get-port.js.map +0 -1
  352. package/dist/get-prores-profile-name.d.ts.map +0 -1
  353. package/dist/get-prores-profile-name.js.map +0 -1
  354. package/dist/image-format.d.ts.map +0 -1
  355. package/dist/image-format.js.map +0 -1
  356. package/dist/index.d.ts.map +0 -1
  357. package/dist/index.js.map +0 -1
  358. package/dist/is-serve-url.d.ts.map +0 -1
  359. package/dist/is-serve-url.js.map +0 -1
  360. package/dist/legacy-webpack-config.d.ts.map +0 -1
  361. package/dist/legacy-webpack-config.js.map +0 -1
  362. package/dist/make-assets-download-dir.d.ts +0 -1
  363. package/dist/make-assets-download-dir.d.ts.map +0 -1
  364. package/dist/make-assets-download-dir.js +0 -8
  365. package/dist/make-assets-download-dir.js.map +0 -1
  366. package/dist/merge-audio-track.d.ts.map +0 -1
  367. package/dist/merge-audio-track.js.map +0 -1
  368. package/dist/normalize-serve-url.d.ts.map +0 -1
  369. package/dist/normalize-serve-url.js.map +0 -1
  370. package/dist/open-browser.d.ts.map +0 -1
  371. package/dist/open-browser.js.map +0 -1
  372. package/dist/p-limit.d.ts.map +0 -1
  373. package/dist/p-limit.js.map +0 -1
  374. package/dist/parse-browser-error-stack.d.ts.map +0 -1
  375. package/dist/parse-browser-error-stack.js.map +0 -1
  376. package/dist/parse-ffmpeg-progress.d.ts.map +0 -1
  377. package/dist/parse-ffmpeg-progress.js.map +0 -1
  378. package/dist/pool.d.ts.map +0 -1
  379. package/dist/pool.js.map +0 -1
  380. package/dist/prepare-server.d.ts.map +0 -1
  381. package/dist/prepare-server.js.map +0 -1
  382. package/dist/preprocess-audio-track.d.ts.map +0 -1
  383. package/dist/preprocess-audio-track.js.map +0 -1
  384. package/dist/prespawn-ffmpeg.d.ts.map +0 -1
  385. package/dist/prespawn-ffmpeg.js.map +0 -1
  386. package/dist/provide-screenshot.d.ts.map +0 -1
  387. package/dist/provide-screenshot.js.map +0 -1
  388. package/dist/puppeteer-evaluate.d.ts.map +0 -1
  389. package/dist/puppeteer-evaluate.js.map +0 -1
  390. package/dist/puppeteer-screenshot.d.ts.map +0 -1
  391. package/dist/puppeteer-screenshot.js.map +0 -1
  392. package/dist/render-frames.d.ts.map +0 -1
  393. package/dist/render-frames.js.map +0 -1
  394. package/dist/render-media.d.ts.map +0 -1
  395. package/dist/render-media.js.map +0 -1
  396. package/dist/render-still.d.ts.map +0 -1
  397. package/dist/render-still.js.map +0 -1
  398. package/dist/resolve-asset-src.d.ts.map +0 -1
  399. package/dist/resolve-asset-src.js.map +0 -1
  400. package/dist/sample-rate.d.ts.map +0 -1
  401. package/dist/sample-rate.js.map +0 -1
  402. package/dist/screenshot-dom-element.d.ts.map +0 -1
  403. package/dist/screenshot-dom-element.js.map +0 -1
  404. package/dist/screenshot-task.d.ts.map +0 -1
  405. package/dist/screenshot-task.js.map +0 -1
  406. package/dist/seek-to-frame.d.ts.map +0 -1
  407. package/dist/seek-to-frame.js.map +0 -1
  408. package/dist/serve-static.d.ts.map +0 -1
  409. package/dist/serve-static.js.map +0 -1
  410. package/dist/set-props-and-env.d.ts.map +0 -1
  411. package/dist/set-props-and-env.js.map +0 -1
  412. package/dist/stitch-frames-to-video.d.ts.map +0 -1
  413. package/dist/stitch-frames-to-video.js.map +0 -1
  414. package/dist/stringify-ffmpeg-filter.d.ts.map +0 -1
  415. package/dist/stringify-ffmpeg-filter.js.map +0 -1
  416. package/dist/symbolicate-stacktrace.d.ts.map +0 -1
  417. package/dist/symbolicate-stacktrace.js.map +0 -1
  418. package/dist/tmp-dir.d.ts.map +0 -1
  419. package/dist/tmp-dir.js.map +0 -1
  420. package/dist/types.d.ts.map +0 -1
  421. package/dist/types.js.map +0 -1
  422. package/dist/validate-even-dimensions-with-codec.d.ts.map +0 -1
  423. package/dist/validate-even-dimensions-with-codec.js.map +0 -1
  424. package/dist/validate-ffmpeg.d.ts.map +0 -1
  425. package/dist/validate-ffmpeg.js.map +0 -1
  426. package/dist/validate-puppeteer-timeout.d.ts.map +0 -1
  427. package/dist/validate-puppeteer-timeout.js.map +0 -1
  428. package/dist/validate-scale.d.ts.map +0 -1
  429. package/dist/validate-scale.js.map +0 -1
@@ -1,11 +1,12 @@
1
- import puppeteer from 'puppeteer-core';
2
- import { ImageFormat } from 'remotion';
1
+ /// <reference types="node" />
2
+ import type { Page } from './browser/BrowserPage';
3
+ import type { ImageFormat } from './image-format';
3
4
  export declare const provideScreenshot: ({ page, imageFormat, options, quality, }: {
4
- page: puppeteer.Page;
5
+ page: Page;
5
6
  imageFormat: ImageFormat;
6
7
  quality: number | undefined;
7
8
  options: {
8
9
  frame: number;
9
- output?: string;
10
+ output: string | null;
10
11
  };
11
12
  }) => Promise<Buffer>;
@@ -7,7 +7,6 @@ const provideScreenshot = ({ page, imageFormat, options, quality, }) => {
7
7
  page,
8
8
  opts: {
9
9
  path: options.output,
10
- selector: '#remotion-canvas',
11
10
  },
12
11
  imageFormat,
13
12
  quality,
@@ -1,4 +1,4 @@
1
- import { Page } from 'puppeteer-core';
1
+ import type { Page } from './browser/BrowserPage';
2
2
  export declare function puppeteerEvaluateWithCatch<ReturnType>({ page, pageFunction, frame, args, }: {
3
3
  page: Page;
4
4
  pageFunction: Function | string;
@@ -1,8 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.puppeteerEvaluateWithCatch = void 0;
4
- /* eslint-disable no-new */
5
- const puppeteer_core_1 = require("puppeteer-core");
4
+ const JSHandle_1 = require("./browser/JSHandle");
6
5
  const symbolicateable_error_1 = require("./error-handling/symbolicateable-error");
7
6
  const parse_browser_error_stack_1 = require("./parse-browser-error-stack");
8
7
  const EVALUATION_SCRIPT_URL = '__puppeteer_evaluation_script__';
@@ -33,7 +32,7 @@ function isString(obj) {
33
32
  async function puppeteerEvaluateWithCatch({ page, pageFunction, frame, args, }) {
34
33
  var _a, _b, _c, _d, _e, _f, _g;
35
34
  const contextId = (await page.mainFrame().executionContext())._contextId;
36
- const client = page._client;
35
+ const client = page._client();
37
36
  const suffix = `//# sourceURL=${EVALUATION_SCRIPT_URL}`;
38
37
  if (isString(pageFunction)) {
39
38
  const expression = pageFunction;
@@ -140,7 +139,7 @@ function convertArgument(arg) {
140
139
  return { unserializableValue: '-Infinity' };
141
140
  if (Object.is(arg, NaN))
142
141
  return { unserializableValue: 'NaN' };
143
- const objectHandle = arg && arg instanceof puppeteer_core_1.JSHandle ? arg : null;
142
+ const objectHandle = arg && arg instanceof JSHandle_1.JSHandle ? arg : null;
144
143
  if (objectHandle) {
145
144
  if (objectHandle._disposed)
146
145
  throw new Error('JSHandle is disposed!');
@@ -1,3 +1,4 @@
1
1
  /// <reference types="node" />
2
- import { Page, ScreenshotOptions } from 'puppeteer-core';
3
- export declare const screenshot: (page: Page, options?: ScreenshotOptions) => Promise<Buffer | string | void>;
2
+ 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>;
@@ -26,7 +26,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.screenshot = void 0;
27
27
  const assert = __importStar(require("assert"));
28
28
  const screenshot_task_1 = require("./screenshot-task");
29
- const screenshot = (page, options = {}) => {
29
+ const screenshot = (page, options) => {
30
30
  let screenshotType = null;
31
31
  // options.type takes precedence over inferring the type from options.path
32
32
  // because it may be a 0-length file with no extension created beforehand
@@ -58,7 +58,6 @@ const screenshot = (page, options = {}) => {
58
58
  assert.ok(options.quality >= 0 && options.quality <= 100, 'Expected options.quality to be between 0 and 100 (inclusive), got ' +
59
59
  options.quality);
60
60
  }
61
- assert.ok(!options.clip || !options.fullPage, 'options.clip and options.fullPage are exclusive');
62
61
  if (options.clip) {
63
62
  assert.ok(typeof options.clip.x === 'number', 'Expected options.clip.x to be a number but found ' +
64
63
  typeof options.clip.x);
@@ -71,7 +70,6 @@ const screenshot = (page, options = {}) => {
71
70
  assert.ok(options.clip.width !== 0, 'Expected options.clip.width not to be 0.');
72
71
  assert.ok(options.clip.height !== 0, 'Expected options.clip.height not to be 0.');
73
72
  }
74
- // @ts-expect-error
75
- return page._screenshotTaskQueue.postTask(() => (0, screenshot_task_1._screenshotTask)(page, screenshotType, options));
73
+ return page.screenshotTaskQueue.postTask(() => (0, screenshot_task_1._screenshotTask)(page, screenshotType, options));
76
74
  };
77
75
  exports.screenshot = screenshot;
@@ -0,0 +1 @@
1
+ export declare const validateQuality: (q: number | undefined) => void;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateQuality = void 0;
4
+ const validateQuality = (q) => {
5
+ if (typeof q !== 'undefined' && typeof q !== 'number') {
6
+ throw new Error(`Quality option must be a number or undefined. Got ${typeof q} (${JSON.stringify(q)})`);
7
+ }
8
+ if (typeof q === 'undefined') {
9
+ return;
10
+ }
11
+ if (!Number.isFinite(q)) {
12
+ throw new RangeError(`Quality must be a finite number, but is ${q}`);
13
+ }
14
+ if (Number.isNaN(q)) {
15
+ throw new RangeError(`Quality is NaN, but must be a real number`);
16
+ }
17
+ if (q > 100 || q < 0) {
18
+ throw new RangeError('Quality option must be between 0 and 100.');
19
+ }
20
+ };
21
+ exports.validateQuality = validateQuality;
@@ -1,12 +1,17 @@
1
1
  /// <reference types="node" />
2
- import { Browser as PuppeteerBrowser } from 'puppeteer-core';
3
- import { BrowserExecutable, FfmpegExecutable, FrameRange, ImageFormat, SmallTCompMetadata } from 'remotion';
4
- import { RenderMediaOnDownload } from './assets/download-and-map-assets-to-file';
5
- import { BrowserLog } from './browser-log';
6
- import { ServeUrlOrWebpackBundle } from './legacy-webpack-config';
7
- import { CancelSignal } from './make-cancel-signal';
8
- import { ChromiumOptions } from './open-browser';
9
- import { OnStartData, RenderFramesOutput } from './types';
2
+ import type { SmallTCompMetadata } from 'remotion';
3
+ import type { RenderMediaOnDownload } from './assets/download-and-map-assets-to-file';
4
+ import type { DownloadMap } from './assets/download-map';
5
+ import type { BrowserExecutable } from './browser-executable';
6
+ import type { BrowserLog } from './browser-log';
7
+ import type { Browser } from './browser/Browser';
8
+ import type { FfmpegExecutable } from './ffmpeg-executable';
9
+ import type { FrameRange } from './frame-range';
10
+ import type { ImageFormat } from './image-format';
11
+ import type { ServeUrlOrWebpackBundle } from './legacy-webpack-config';
12
+ import type { CancelSignal } from './make-cancel-signal';
13
+ import type { ChromiumOptions } from './open-browser';
14
+ import type { OnStartData, RenderFramesOutput } from './types';
10
15
  declare type ConfigOrComposition = {
11
16
  /**
12
17
  * @deprecated This field has been renamed to `composition`
@@ -25,8 +30,9 @@ declare type RenderFramesOptions = {
25
30
  parallelism?: number | null;
26
31
  quality?: number;
27
32
  frameRange?: FrameRange | null;
33
+ everyNthFrame?: number;
28
34
  dumpBrowserLogs?: boolean;
29
- puppeteerInstance?: PuppeteerBrowser;
35
+ puppeteerInstance?: Browser;
30
36
  browserExecutable?: BrowserExecutable;
31
37
  onBrowserLog?: (log: BrowserLog) => void;
32
38
  onFrameBuffer?: (buffer: Buffer, frame: number) => void;
@@ -35,8 +41,14 @@ declare type RenderFramesOptions = {
35
41
  chromiumOptions?: ChromiumOptions;
36
42
  scale?: number;
37
43
  ffmpegExecutable?: FfmpegExecutable;
44
+ ffprobeExecutable?: FfmpegExecutable;
38
45
  port?: number | null;
39
46
  cancelSignal?: CancelSignal;
47
+ /**
48
+ * @deprecated Only for Remotion internal usage
49
+ */
50
+ downloadMap?: DownloadMap;
51
+ muted?: boolean;
40
52
  } & ConfigOrComposition & ServeUrlOrWebpackBundle;
41
53
  export declare const renderFrames: (options: RenderFramesOptions) => Promise<RenderFramesOutput>;
42
54
  export {};
@@ -8,21 +8,27 @@ const fs_1 = __importDefault(require("fs"));
8
8
  const path_1 = __importDefault(require("path"));
9
9
  const remotion_1 = require("remotion");
10
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");
12
+ const browser_1 = require("./browser");
13
+ const compress_assets_1 = require("./compress-assets");
11
14
  const cycle_browser_tabs_1 = require("./cycle-browser-tabs");
12
15
  const handle_javascript_exception_1 = require("./error-handling/handle-javascript-exception");
13
16
  const get_concurrency_1 = require("./get-concurrency");
14
17
  const get_duration_from_frame_range_1 = require("./get-duration-from-frame-range");
18
+ const get_frame_padded_index_1 = require("./get-frame-padded-index");
15
19
  const get_frame_to_render_1 = require("./get-frame-to-render");
16
20
  const image_format_1 = require("./image-format");
17
21
  const legacy_webpack_config_1 = require("./legacy-webpack-config");
18
- const make_assets_download_dir_1 = require("./make-assets-download-dir");
19
22
  const open_browser_1 = require("./open-browser");
23
+ const perf_1 = require("./perf");
20
24
  const pool_1 = require("./pool");
21
25
  const prepare_server_1 = require("./prepare-server");
22
26
  const provide_screenshot_1 = require("./provide-screenshot");
23
27
  const puppeteer_evaluate_1 = require("./puppeteer-evaluate");
28
+ const quality_1 = require("./quality");
24
29
  const seek_to_frame_1 = require("./seek-to-frame");
25
30
  const set_props_and_env_1 = require("./set-props-and-env");
31
+ const truthy_1 = require("./truthy");
26
32
  const validate_scale_1 = require("./validate-scale");
27
33
  const getComposition = (others) => {
28
34
  if ('composition' in others) {
@@ -38,7 +44,7 @@ const getPool = async (pages) => {
38
44
  const pool = new pool_1.Pool(puppeteerPages);
39
45
  return pool;
40
46
  };
41
- const innerRenderFrames = ({ onFrameUpdate, outputDir, onStart, inputProps, quality, imageFormat = image_format_1.DEFAULT_IMAGE_FORMAT, frameRange, puppeteerInstance, onError, envVariables, onBrowserLog, onFrameBuffer, onDownload, pagesArray, serveUrl, composition, timeoutInMilliseconds, scale, actualParallelism, downloadDir, proxyPort, cancelSignal, }) => {
47
+ const innerRenderFrames = ({ onFrameUpdate, outputDir, onStart, inputProps, quality, imageFormat = image_format_1.DEFAULT_IMAGE_FORMAT, frameRange, puppeteerInstance, onError, envVariables, onBrowserLog, onFrameBuffer, onDownload, pagesArray, serveUrl, composition, timeoutInMilliseconds, scale, actualParallelism, everyNthFrame = 1, proxyPort, cancelSignal, downloadMap, muted, }) => {
42
48
  if (!puppeteerInstance) {
43
49
  throw new Error('no puppeteer instance passed to innerRenderFrames - internal error');
44
50
  }
@@ -49,8 +55,10 @@ const innerRenderFrames = ({ onFrameUpdate, outputDir, onStart, inputProps, qual
49
55
  });
50
56
  }
51
57
  }
58
+ const downloadPromises = [];
52
59
  const realFrameRange = (0, get_frame_to_render_1.getRealFrameRange)(composition.durationInFrames, frameRange !== null && frameRange !== void 0 ? frameRange : null);
53
- const frameCount = (0, get_duration_from_frame_range_1.getDurationFromFrameRange)(realFrameRange, composition.durationInFrames);
60
+ const framesToRender = (0, get_duration_from_frame_range_1.getFramesToRender)(realFrameRange, everyNthFrame);
61
+ const lastFrame = framesToRender[framesToRender.length - 1];
54
62
  const pages = new Array(actualParallelism).fill(true).map(async () => {
55
63
  const page = await puppeteerInstance.newPage();
56
64
  pagesArray.push(page);
@@ -62,18 +70,14 @@ const innerRenderFrames = ({ onFrameUpdate, outputDir, onStart, inputProps, qual
62
70
  const logCallback = (log) => {
63
71
  onBrowserLog === null || onBrowserLog === void 0 ? void 0 : onBrowserLog({
64
72
  stackTrace: log.stackTrace(),
65
- text: log.text(),
66
- type: log.type(),
73
+ text: log.text,
74
+ type: log.type,
67
75
  });
68
76
  };
69
77
  if (onBrowserLog) {
70
78
  page.on('console', logCallback);
71
79
  }
72
- const initialFrame = typeof frameRange === 'number'
73
- ? frameRange
74
- : frameRange === null || frameRange === undefined
75
- ? 0
76
- : frameRange[0];
80
+ const initialFrame = realFrameRange[0];
77
81
  await (0, set_props_and_env_1.setPropsAndEnv)({
78
82
  inputProps,
79
83
  envVariables,
@@ -83,46 +87,60 @@ const innerRenderFrames = ({ onFrameUpdate, outputDir, onStart, inputProps, qual
83
87
  timeoutInMilliseconds,
84
88
  proxyPort,
85
89
  retriesRemaining: 2,
90
+ audioEnabled: !muted,
91
+ videoEnabled: imageFormat !== 'none',
86
92
  });
87
93
  await (0, puppeteer_evaluate_1.puppeteerEvaluateWithCatch)({
88
- pageFunction: (id) => {
94
+ // eslint-disable-next-line max-params
95
+ pageFunction: (id, defaultProps, durationInFrames, fps, height, width) => {
89
96
  window.setBundleMode({
90
97
  type: 'composition',
91
98
  compositionName: id,
99
+ compositionDefaultProps: defaultProps,
100
+ compositionDurationInFrames: durationInFrames,
101
+ compositionFps: fps,
102
+ compositionHeight: height,
103
+ compositionWidth: width,
92
104
  });
93
105
  },
94
- args: [composition.id],
106
+ args: [
107
+ composition.id,
108
+ composition.defaultProps,
109
+ composition.durationInFrames,
110
+ composition.fps,
111
+ composition.height,
112
+ composition.width,
113
+ ],
95
114
  frame: null,
96
115
  page,
97
116
  });
98
117
  page.off('console', logCallback);
99
118
  return page;
100
119
  });
101
- const [firstFrameIndex, lastFrameIndex] = realFrameRange;
102
- // Substract one because 100 frames will be 00-99
103
- // --> 2 digits
104
- const filePadLength = String(lastFrameIndex).length;
120
+ // If rendering a GIF and skipping frames, we must ensure it starts from 0
121
+ // and then is consecutive so FFMPEG recognizes the sequence
122
+ const countType = everyNthFrame === 1 ? 'actual-frames' : 'from-zero';
123
+ const filePadLength = (0, get_frame_padded_index_1.getFilePadLength)({
124
+ lastFrame,
125
+ totalFrames: framesToRender.length,
126
+ countType,
127
+ });
105
128
  let framesRendered = 0;
106
129
  const poolPromise = getPool(pages);
107
130
  onStart({
108
- frameCount,
131
+ frameCount: framesToRender.length,
109
132
  });
110
- const assets = new Array(frameCount).fill(undefined);
133
+ const assets = new Array(framesToRender.length).fill(undefined);
111
134
  let stopped = false;
112
135
  cancelSignal === null || cancelSignal === void 0 ? void 0 : cancelSignal(() => {
113
136
  stopped = true;
114
137
  });
115
- const progress = Promise.all(new Array(frameCount)
116
- .fill(Boolean)
117
- .map((_x, i) => i)
118
- .map(async (index) => {
119
- const frame = realFrameRange[0] + index;
138
+ const progress = Promise.all(framesToRender.map(async (frame, index) => {
120
139
  const pool = await poolPromise;
121
140
  const freePage = await pool.acquire();
122
141
  if (stopped) {
123
142
  throw new Error('Render was stopped');
124
143
  }
125
- const paddedIndex = String(frame).padStart(filePadLength, '0');
126
144
  const errorCallbackOnFrame = (err) => {
127
145
  onError(err);
128
146
  };
@@ -135,24 +153,31 @@ const innerRenderFrames = ({ onFrameUpdate, outputDir, onStart, inputProps, qual
135
153
  await (0, seek_to_frame_1.seekToFrame)({ frame, page: freePage });
136
154
  if (imageFormat !== 'none') {
137
155
  if (onFrameBuffer) {
138
- const id = remotion_1.Internals.perf.startPerfMeasure('save');
156
+ const id = (0, perf_1.startPerfMeasure)('save');
139
157
  const buffer = await (0, provide_screenshot_1.provideScreenshot)({
140
158
  page: freePage,
141
159
  imageFormat,
142
160
  quality,
143
161
  options: {
144
162
  frame,
145
- output: undefined,
163
+ output: null,
146
164
  },
147
165
  });
148
- remotion_1.Internals.perf.stopPerfMeasure(id);
166
+ (0, perf_1.stopPerfMeasure)(id);
149
167
  onFrameBuffer(buffer, frame);
150
168
  }
151
169
  else {
152
170
  if (!outputDir) {
153
171
  throw new Error('Called renderFrames() without specifying either `outputDir` or `onFrameBuffer`');
154
172
  }
155
- const output = path_1.default.join(outputDir, `element-${paddedIndex}.${imageFormat}`);
173
+ const output = path_1.default.join(outputDir, (0, get_frame_padded_index_1.getFrameOutputFileName)({
174
+ frame,
175
+ imageFormat,
176
+ index,
177
+ countType,
178
+ lastFrame,
179
+ totalFrames: framesToRender.length,
180
+ }));
156
181
  await (0, provide_screenshot_1.provideScreenshot)({
157
182
  page: freePage,
158
183
  imageFormat,
@@ -172,13 +197,13 @@ const innerRenderFrames = ({ onFrameUpdate, outputDir, onStart, inputProps, qual
172
197
  frame,
173
198
  page: freePage,
174
199
  });
175
- const compressedAssets = collectedAssets.map((asset) => remotion_1.Internals.AssetCompression.compressAsset(assets.filter(remotion_1.Internals.truthy).flat(1), asset));
200
+ const compressedAssets = collectedAssets.map((asset) => (0, compress_assets_1.compressAsset)(assets.filter(truthy_1.truthy).flat(1), asset));
176
201
  assets[index] = compressedAssets;
177
202
  compressedAssets.forEach((asset) => {
178
203
  (0, download_and_map_assets_to_file_1.downloadAndMapAssetsToFileUrl)({
179
204
  asset,
180
- downloadDir,
181
205
  onDownload,
206
+ downloadMap,
182
207
  }).catch((err) => {
183
208
  onError(new Error(`Error while downloading asset: ${err.stack}`));
184
209
  });
@@ -194,88 +219,91 @@ const innerRenderFrames = ({ onFrameUpdate, outputDir, onStart, inputProps, qual
194
219
  const returnValue = {
195
220
  assetsInfo: {
196
221
  assets,
197
- downloadDir,
198
- firstFrameIndex,
199
222
  imageSequenceName: `element-%0${filePadLength}d.${imageFormat}`,
223
+ firstFrameIndex: framesToRender[0],
224
+ downloadMap,
200
225
  },
201
- frameCount,
226
+ frameCount: framesToRender.length,
202
227
  };
203
228
  return returnValue;
204
229
  });
205
- return Promise.race([
206
- happyPath,
207
- new Promise((_resolve, reject) => {
208
- cancelSignal === null || cancelSignal === void 0 ? void 0 : cancelSignal(() => {
209
- reject(new Error('renderFrames() got cancelled'));
210
- });
211
- }),
212
- ]);
230
+ return happyPath
231
+ .then(() => {
232
+ return Promise.all(downloadPromises);
233
+ })
234
+ .then(() => happyPath);
213
235
  };
214
236
  const renderFrames = (options) => {
215
- var _a, _b, _c, _d;
237
+ var _a, _b, _c, _d, _e;
216
238
  const composition = getComposition(options);
217
239
  if (!composition) {
218
240
  throw new Error('No `composition` option has been specified for renderFrames()');
219
241
  }
220
242
  remotion_1.Internals.validateDimension(composition.height, 'height', 'in the `config` object passed to `renderFrames()`');
221
243
  remotion_1.Internals.validateDimension(composition.width, 'width', 'in the `config` object passed to `renderFrames()`');
222
- remotion_1.Internals.validateFps(composition.fps, 'in the `config` object of `renderFrames()`');
244
+ remotion_1.Internals.validateFps(composition.fps, 'in the `config` object of `renderFrames()`', false);
223
245
  remotion_1.Internals.validateDurationInFrames(composition.durationInFrames, 'in the `config` object passed to `renderFrames()`');
224
246
  if (options.quality !== undefined && options.imageFormat !== 'jpeg') {
225
247
  throw new Error("You can only pass the `quality` option if `imageFormat` is 'jpeg'.");
226
248
  }
227
249
  const selectedServeUrl = (0, legacy_webpack_config_1.getServeUrlWithFallback)(options);
228
- remotion_1.Internals.validateQuality(options.quality);
250
+ (0, quality_1.validateQuality)(options.quality);
229
251
  (0, validate_scale_1.validateScale)(options.scale);
230
- const browserInstance = (_a = options.puppeteerInstance) !== null && _a !== void 0 ? _a : (0, open_browser_1.openBrowser)(remotion_1.Internals.DEFAULT_BROWSER, {
252
+ const browserInstance = (_a = options.puppeteerInstance) !== null && _a !== void 0 ? _a : (0, open_browser_1.openBrowser)(browser_1.DEFAULT_BROWSER, {
231
253
  shouldDumpIo: options.dumpBrowserLogs,
232
254
  browserExecutable: options.browserExecutable,
233
255
  chromiumOptions: options.chromiumOptions,
234
256
  forceDeviceScaleFactor: (_b = options.scale) !== null && _b !== void 0 ? _b : 1,
235
257
  });
236
- const downloadDir = (0, make_assets_download_dir_1.makeAssetsDownloadTmpDir)();
237
- const onDownload = (_c = options.onDownload) !== null && _c !== void 0 ? _c : (() => () => undefined);
238
- const actualParallelism = (0, get_concurrency_1.getActualConcurrency)((_d = options.parallelism) !== null && _d !== void 0 ? _d : null);
258
+ const downloadMap = (_c = options.downloadMap) !== null && _c !== void 0 ? _c : (0, download_map_1.makeDownloadMap)();
259
+ const onDownload = (_d = options.onDownload) !== null && _d !== void 0 ? _d : (() => () => undefined);
260
+ const actualParallelism = (0, get_concurrency_1.getActualConcurrency)((_e = options.parallelism) !== null && _e !== void 0 ? _e : null);
239
261
  const openedPages = [];
240
262
  return new Promise((resolve, reject) => {
241
- var _a, _b;
263
+ var _a, _b, _c;
242
264
  const cleanup = [];
243
- const onError = (err) => reject(err);
244
- Promise.all([
245
- (0, prepare_server_1.prepareServer)({
246
- webpackConfigOrServeUrl: selectedServeUrl,
247
- downloadDir,
248
- onDownload,
249
- onError,
250
- ffmpegExecutable: (_a = options.ffmpegExecutable) !== null && _a !== void 0 ? _a : null,
251
- port: (_b = options.port) !== null && _b !== void 0 ? _b : null,
265
+ const onError = (err) => {
266
+ reject(err);
267
+ };
268
+ Promise.race([
269
+ new Promise((_, rej) => {
270
+ var _a;
271
+ (_a = options.cancelSignal) === null || _a === void 0 ? void 0 : _a.call(options, () => {
272
+ rej(new Error('renderFrames() got cancelled'));
273
+ });
274
+ }),
275
+ Promise.all([
276
+ (0, prepare_server_1.prepareServer)({
277
+ webpackConfigOrServeUrl: selectedServeUrl,
278
+ onDownload,
279
+ onError,
280
+ ffmpegExecutable: (_a = options.ffmpegExecutable) !== null && _a !== void 0 ? _a : null,
281
+ ffprobeExecutable: (_b = options.ffprobeExecutable) !== null && _b !== void 0 ? _b : null,
282
+ port: (_c = options.port) !== null && _c !== void 0 ? _c : null,
283
+ downloadMap,
284
+ }),
285
+ browserInstance,
286
+ ]).then(([{ serveUrl, closeServer, offthreadPort }, puppeteerInstance]) => {
287
+ const { stopCycling } = (0, cycle_browser_tabs_1.cycleBrowserTabs)(puppeteerInstance, actualParallelism);
288
+ cleanup.push(stopCycling);
289
+ cleanup.push(closeServer);
290
+ return innerRenderFrames({
291
+ ...options,
292
+ puppeteerInstance,
293
+ onError,
294
+ pagesArray: openedPages,
295
+ serveUrl,
296
+ composition,
297
+ actualParallelism,
298
+ onDownload,
299
+ proxyPort: offthreadPort,
300
+ downloadMap,
301
+ });
252
302
  }),
253
- browserInstance,
254
303
  ])
255
- .then(([{ serveUrl, closeServer, offthreadPort }, puppeteerInstance]) => {
256
- var _a;
257
- const { stopCycling } = (0, cycle_browser_tabs_1.cycleBrowserTabs)(puppeteerInstance, actualParallelism);
258
- cleanup.push(stopCycling);
259
- (_a = options.cancelSignal) === null || _a === void 0 ? void 0 : _a.call(options, () => {
260
- stopCycling();
261
- closeServer();
262
- });
263
- cleanup.push(closeServer);
264
- const renderFramesProm = innerRenderFrames({
265
- ...options,
266
- puppeteerInstance,
267
- onError,
268
- pagesArray: openedPages,
269
- serveUrl,
270
- composition,
271
- actualParallelism,
272
- onDownload,
273
- downloadDir,
274
- proxyPort: offthreadPort,
275
- });
276
- return renderFramesProm;
304
+ .then((res) => {
305
+ return resolve(res);
277
306
  })
278
- .then((res) => resolve(res))
279
307
  .catch((err) => reject(err))
280
308
  .finally(() => {
281
309
  // If browser instance was passed in, we close all the pages
@@ -298,6 +326,7 @@ const renderFrames = (options) => {
298
326
  cleanup.forEach((c) => {
299
327
  c();
300
328
  });
329
+ // Don't clear download dir because it might be used by stitchFramesToVideo
301
330
  });
302
331
  });
303
332
  };
@@ -1,11 +1,19 @@
1
- import type { Browser as PuppeteerBrowser } from 'puppeteer-core';
2
- import { BrowserExecutable, Codec, FfmpegExecutable, FrameRange, PixelFormat, ProResProfile, SmallTCompMetadata } from 'remotion';
3
- import { RenderMediaOnDownload } from './assets/download-and-map-assets-to-file';
4
- import { BrowserLog } from './browser-log';
5
- import { ServeUrlOrWebpackBundle } from './legacy-webpack-config';
6
- import { CancelSignal } from './make-cancel-signal';
7
- import { ChromiumOptions } from './open-browser';
8
- import { OnStartData } from './types';
1
+ /// <reference types="node" />
2
+ import type { SmallTCompMetadata } from 'remotion';
3
+ import type { RenderMediaOnDownload } from './assets/download-and-map-assets-to-file';
4
+ import type { DownloadMap } from './assets/download-map';
5
+ import type { BrowserExecutable } from './browser-executable';
6
+ import type { BrowserLog } from './browser-log';
7
+ import type { Browser as PuppeteerBrowser } from './browser/Browser';
8
+ import type { Codec } from './codec';
9
+ import type { FfmpegExecutable } from './ffmpeg-executable';
10
+ import type { FrameRange } from './frame-range';
11
+ import type { ServeUrlOrWebpackBundle } from './legacy-webpack-config';
12
+ import type { CancelSignal } from './make-cancel-signal';
13
+ import type { ChromiumOptions } from './open-browser';
14
+ import type { PixelFormat } from './pixel-format';
15
+ import type { ProResProfile } from './prores-profile';
16
+ import type { OnStartData } from './types';
9
17
  export declare type StitchingState = 'encoding' | 'muxing';
10
18
  export declare type RenderMediaOnProgress = (progress: {
11
19
  renderedFrames: number;
@@ -15,7 +23,7 @@ export declare type RenderMediaOnProgress = (progress: {
15
23
  stitchStage: StitchingState;
16
24
  }) => void;
17
25
  export declare type RenderMediaOptions = {
18
- outputLocation: string;
26
+ outputLocation?: string | null;
19
27
  codec: Codec;
20
28
  composition: SmallTCompMetadata;
21
29
  inputProps?: unknown;
@@ -23,10 +31,13 @@ export declare type RenderMediaOptions = {
23
31
  crf?: number | null;
24
32
  imageFormat?: 'png' | 'jpeg' | 'none';
25
33
  ffmpegExecutable?: FfmpegExecutable;
34
+ ffprobeExecutable?: FfmpegExecutable;
26
35
  pixelFormat?: PixelFormat;
27
36
  envVariables?: Record<string, string>;
28
37
  quality?: number;
29
38
  frameRange?: FrameRange | null;
39
+ everyNthFrame?: number;
40
+ numberOfGifLoops?: number | null;
30
41
  puppeteerInstance?: PuppeteerBrowser;
31
42
  overwrite?: boolean;
32
43
  onProgress?: RenderMediaOnProgress;
@@ -41,5 +52,17 @@ export declare type RenderMediaOptions = {
41
52
  port?: number | null;
42
53
  cancelSignal?: CancelSignal;
43
54
  browserExecutable?: BrowserExecutable;
55
+ verbose?: boolean;
56
+ /**
57
+ * @deprecated Only for Remotion internal usage
58
+ */
59
+ downloadMap?: DownloadMap;
60
+ muted?: boolean;
61
+ enforceAudioTrack?: boolean;
44
62
  } & ServeUrlOrWebpackBundle;
45
- export declare const renderMedia: ({ parallelism, proResProfile, crf, composition, imageFormat, ffmpegExecutable, inputProps, pixelFormat, codec, envVariables, quality, frameRange, puppeteerInstance, outputLocation, onProgress, overwrite, onDownload, dumpBrowserLogs, onBrowserLog, onStart, timeoutInMilliseconds, chromiumOptions, scale, browserExecutable, port, cancelSignal, ...options }: RenderMediaOptions) => Promise<void>;
63
+ /**
64
+ *
65
+ * @description Render a video from a composition
66
+ * @link https://www.remotion.dev/docs/renderer/render-media
67
+ */
68
+ export declare const renderMedia: ({ parallelism, proResProfile, crf, composition, ffmpegExecutable, ffprobeExecutable, inputProps, pixelFormat, codec, envVariables, frameRange, puppeteerInstance, outputLocation, onProgress, overwrite, onDownload, dumpBrowserLogs, onBrowserLog, onStart, timeoutInMilliseconds, chromiumOptions, scale, browserExecutable, port, cancelSignal, muted, enforceAudioTrack, ...options }: RenderMediaOptions) => Promise<Buffer | null>;