@remotion/renderer 3.1.5 → 3.1.8

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 (347) hide show
  1. package/dist/assets/convert-assets-to-file-urls.d.ts +3 -2
  2. package/dist/assets/convert-assets-to-file-urls.js +2 -2
  3. package/dist/assets/download-and-map-assets-to-file.d.ts +6 -5
  4. package/dist/assets/download-and-map-assets-to-file.js +47 -48
  5. package/dist/assets/download-map.d.ts +64 -0
  6. package/dist/assets/download-map.js +73 -0
  7. package/dist/assets/get-audio-channels.d.ts +3 -7
  8. package/dist/assets/get-audio-channels.js +6 -7
  9. package/dist/assets/get-video-stream-duration.d.ts +3 -0
  10. package/dist/assets/get-video-stream-duration.js +35 -0
  11. package/dist/browser/TimeoutSettings.d.ts +1 -0
  12. package/dist/browser/TimeoutSettings.js +4 -4
  13. package/dist/browser-executable.d.ts +1 -0
  14. package/dist/{assets/cleanup-assets.js → browser-executable.js} +0 -0
  15. package/dist/browser.d.ts +2 -0
  16. package/dist/browser.js +4 -0
  17. package/dist/can-use-parallel-encoding.d.ts +1 -1
  18. package/dist/can-use-parallel-encoding.js +2 -2
  19. package/dist/codec-supports-media.d.ts +1 -1
  20. package/dist/codec.d.ts +4 -0
  21. package/dist/codec.js +16 -0
  22. package/dist/combine-videos.d.ts +1 -1
  23. package/dist/combine-videos.js +7 -6
  24. package/dist/compress-assets.d.ts +7 -0
  25. package/dist/compress-assets.js +25 -0
  26. package/dist/convert-to-pcm.d.ts +1 -1
  27. package/dist/create-ffmpeg-complex-filter.d.ts +6 -2
  28. package/dist/create-ffmpeg-complex-filter.js +2 -11
  29. package/dist/create-ffmpeg-merge-filter.js +3 -3
  30. package/dist/create-silent-audio.d.ts +1 -1
  31. package/dist/crf.d.ts +5 -0
  32. package/dist/crf.js +64 -0
  33. package/dist/ensure-presentation-timestamp.d.ts +2 -1
  34. package/dist/ensure-presentation-timestamp.js +9 -7
  35. package/dist/extract-frame-from-video.d.ts +4 -2
  36. package/dist/extract-frame-from-video.js +22 -17
  37. package/dist/ffmpeg-executable.d.ts +1 -0
  38. package/dist/ffmpeg-executable.js +2 -0
  39. package/dist/ffmpeg-filter-file.d.ts +2 -1
  40. package/dist/ffmpeg-filter-file.js +4 -6
  41. package/dist/frame-range.d.ts +2 -0
  42. package/dist/frame-range.js +49 -0
  43. package/dist/get-audio-codec-name.d.ts +1 -1
  44. package/dist/get-audio-codec-name.js +2 -2
  45. package/dist/get-browser-instance.d.ts +1 -1
  46. package/dist/get-browser-instance.js +2 -2
  47. package/dist/get-codec-name.d.ts +1 -1
  48. package/dist/get-codec-name.js +2 -2
  49. package/dist/get-compositions.d.ts +8 -1
  50. package/dist/get-compositions.js +10 -6
  51. package/dist/get-extension-from-codec.d.ts +2 -2
  52. package/dist/get-extension-of-filename.d.ts +1 -1
  53. package/dist/get-extension-of-filename.js +3 -0
  54. package/dist/get-frame-to-render.d.ts +1 -1
  55. package/dist/get-local-browser-executable.d.ts +2 -1
  56. package/dist/get-prores-profile-name.d.ts +2 -1
  57. package/dist/get-video-info.d.ts +3 -8
  58. package/dist/get-video-info.js +7 -8
  59. package/dist/guess-extension-for-media.d.ts +1 -1
  60. package/dist/image-format.d.ts +6 -1
  61. package/dist/image-format.js +25 -1
  62. package/dist/index.d.ts +49 -10
  63. package/dist/index.js +71 -1
  64. package/dist/is-audio-codec.d.ts +2 -0
  65. package/dist/is-audio-codec.js +7 -0
  66. package/dist/is-beyond-last-frame.d.ts +3 -2
  67. package/dist/is-beyond-last-frame.js +5 -5
  68. package/dist/last-frame-from-video-cache.d.ts +5 -4
  69. package/dist/last-frame-from-video-cache.js +17 -17
  70. package/dist/log-level.d.ts +4 -0
  71. package/dist/log-level.js +15 -0
  72. package/dist/merge-audio-track.d.ts +3 -1
  73. package/dist/merge-audio-track.js +6 -4
  74. package/dist/offthread-video-server.d.ts +5 -3
  75. package/dist/offthread-video-server.js +3 -2
  76. package/dist/open-browser.d.ts +1 -1
  77. package/dist/open-browser.js +4 -4
  78. package/dist/overwrite.d.ts +1 -0
  79. package/dist/overwrite.js +4 -0
  80. package/dist/perf.d.ts +5 -0
  81. package/dist/perf.js +35 -0
  82. package/dist/pixel-format.d.ts +5 -0
  83. package/dist/pixel-format.js +26 -0
  84. package/dist/prepare-server.d.ts +4 -3
  85. package/dist/prepare-server.js +3 -3
  86. package/dist/preprocess-audio-track.d.ts +3 -1
  87. package/dist/preprocess-audio-track.js +3 -3
  88. package/dist/prespawn-ffmpeg.d.ts +5 -1
  89. package/dist/prespawn-ffmpeg.js +9 -6
  90. package/dist/prores-profile.d.ts +5 -0
  91. package/dist/prores-profile.js +23 -0
  92. package/dist/provide-screenshot.d.ts +1 -1
  93. package/dist/quality.d.ts +1 -0
  94. package/dist/quality.js +21 -0
  95. package/dist/render-frames.d.ts +10 -1
  96. package/dist/render-frames.js +22 -16
  97. package/dist/render-media.d.ts +13 -2
  98. package/dist/render-media.js +24 -13
  99. package/dist/render-still.d.ts +9 -1
  100. package/dist/render-still.js +21 -11
  101. package/dist/screenshot-dom-element.d.ts +1 -1
  102. package/dist/screenshot-task.d.ts +1 -1
  103. package/dist/screenshot-task.js +7 -7
  104. package/dist/serve-static.d.ts +3 -2
  105. package/dist/serve-static.js +3 -4
  106. package/dist/set-props-and-env.js +2 -2
  107. package/dist/stitch-frames-to-video.d.ts +6 -1
  108. package/dist/stitch-frames-to-video.js +30 -43
  109. package/dist/stringify-ffmpeg-filter.js +2 -2
  110. package/dist/symbolicate-stacktrace.js +3 -3
  111. package/dist/truthy.d.ts +3 -0
  112. package/dist/truthy.js +7 -0
  113. package/dist/types.d.ts +1 -1
  114. package/dist/validate-even-dimensions-with-codec.d.ts +1 -1
  115. package/dist/validate-even-dimensions-with-codec.js +2 -2
  116. package/dist/validate-every-nth-frame.d.ts +1 -0
  117. package/dist/validate-every-nth-frame.js +21 -0
  118. package/dist/validate-ffmpeg.js +2 -3
  119. package/dist/validate-frame.d.ts +1 -0
  120. package/dist/validate-frame.js +24 -0
  121. package/dist/validate-opengl-renderer.d.ts +5 -0
  122. package/dist/validate-opengl-renderer.js +15 -0
  123. package/dist/validate-output-filename.d.ts +1 -1
  124. package/package.json +3 -3
  125. package/dist/assets/calculate-asset-positions.d.ts.map +0 -1
  126. package/dist/assets/calculate-asset-positions.js.map +0 -1
  127. package/dist/assets/calculate-atempo.d.ts.map +0 -1
  128. package/dist/assets/calculate-atempo.js.map +0 -1
  129. package/dist/assets/cleanup-assets.d.ts +0 -2
  130. package/dist/assets/convert-assets-to-file-urls.d.ts.map +0 -1
  131. package/dist/assets/convert-assets-to-file-urls.js.map +0 -1
  132. package/dist/assets/download-and-map-assets-to-file.d.ts.map +0 -1
  133. package/dist/assets/download-and-map-assets-to-file.js.map +0 -1
  134. package/dist/assets/download-file.d.ts.map +0 -1
  135. package/dist/assets/download-file.js.map +0 -1
  136. package/dist/assets/ffmpeg-volume-expression.d.ts.map +0 -1
  137. package/dist/assets/ffmpeg-volume-expression.js.map +0 -1
  138. package/dist/assets/flatten-volume-array.d.ts.map +0 -1
  139. package/dist/assets/flatten-volume-array.js.map +0 -1
  140. package/dist/assets/get-audio-channels.d.ts.map +0 -1
  141. package/dist/assets/get-audio-channels.js.map +0 -1
  142. package/dist/assets/read-file.d.ts.map +0 -1
  143. package/dist/assets/read-file.js.map +0 -1
  144. package/dist/assets/round-volume-to-avoid-stack-overflow.d.ts.map +0 -1
  145. package/dist/assets/round-volume-to-avoid-stack-overflow.js.map +0 -1
  146. package/dist/assets/sanitize-filename.d.ts.map +0 -1
  147. package/dist/assets/sanitize-filename.js.map +0 -1
  148. package/dist/assets/sanitize-filepath.d.ts.map +0 -1
  149. package/dist/assets/sanitize-filepath.js.map +0 -1
  150. package/dist/assets/truncate-utf8-bytes.d.ts.map +0 -1
  151. package/dist/assets/truncate-utf8-bytes.js.map +0 -1
  152. package/dist/assets/types.d.ts.map +0 -1
  153. package/dist/assets/types.js.map +0 -1
  154. package/dist/browser/Accessibility.d.ts +0 -175
  155. package/dist/browser/Accessibility.js +0 -423
  156. package/dist/browser/AriaQueryHandler.d.ts +0 -20
  157. package/dist/browser/AriaQueryHandler.js +0 -108
  158. package/dist/browser/ConnectionTransport.d.ts +0 -21
  159. package/dist/browser/ConnectionTransport.js +0 -17
  160. package/dist/browser/Coverage.d.ts +0 -180
  161. package/dist/browser/Coverage.js +0 -371
  162. package/dist/browser/Debug.d.ts +0 -19
  163. package/dist/browser/Debug.js +0 -42
  164. package/dist/browser/DeviceDescriptors.d.ts +0 -40
  165. package/dist/browser/DeviceDescriptors.js +0 -1407
  166. package/dist/browser/EmulationManager.d.ts +0 -7
  167. package/dist/browser/EmulationManager.js +0 -40
  168. package/dist/browser/FileChooser.d.ts +0 -56
  169. package/dist/browser/FileChooser.js +0 -86
  170. package/dist/browser/Input.d.ts +0 -355
  171. package/dist/browser/Input.js +0 -592
  172. package/dist/browser/NetworkConditions.d.ts +0 -26
  173. package/dist/browser/NetworkConditions.js +0 -33
  174. package/dist/browser/PDFOptions.d.ts +0 -165
  175. package/dist/browser/PDFOptions.js +0 -34
  176. package/dist/browser/PipeTransport.d.ts +0 -10
  177. package/dist/browser/PipeTransport.js +0 -86
  178. package/dist/browser/Puppeteer.d.ts +0 -35
  179. package/dist/browser/Puppeteer.js +0 -17
  180. package/dist/browser/QueryHandler.d.ts +0 -64
  181. package/dist/browser/QueryHandler.js +0 -183
  182. package/dist/browser/SecurityDetails.d.ts +0 -55
  183. package/dist/browser/SecurityDetails.js +0 -95
  184. package/dist/browser/Tracing.d.ts +0 -45
  185. package/dist/browser/Tracing.js +0 -136
  186. package/dist/browser/USKeyboardLayout.d.ts +0 -39
  187. package/dist/browser/USKeyboardLayout.js +0 -406
  188. package/dist/browser/WebWorker.d.ts +0 -96
  189. package/dist/browser/WebWorker.js +0 -122
  190. package/dist/browser/compat.d.ts +0 -2
  191. package/dist/browser/compat.js +0 -17
  192. package/dist/browser/dialog.d.ts +0 -70
  193. package/dist/browser/dialog.js +0 -114
  194. package/dist/browser/environment.d.ts +0 -16
  195. package/dist/browser/environment.js +0 -19
  196. package/dist/browser/fetch.d.ts +0 -16
  197. package/dist/browser/fetch.js +0 -46
  198. package/dist/browser/find-up.d.ts +0 -4
  199. package/dist/browser/find-up.js +0 -85
  200. package/dist/browser/page.d.ts +0 -74
  201. package/dist/browser/page.js +0 -283
  202. package/dist/browser/pkg-dir.d.ts +0 -3
  203. package/dist/browser/pkg-dir.js +0 -13
  204. package/dist/browser-log.d.ts.map +0 -1
  205. package/dist/browser-log.js.map +0 -1
  206. package/dist/calculate-ffmpeg-filters.d.ts.map +0 -1
  207. package/dist/calculate-ffmpeg-filters.js.map +0 -1
  208. package/dist/can-use-parallel-encoding.d.ts.map +0 -1
  209. package/dist/can-use-parallel-encoding.js.map +0 -1
  210. package/dist/chunk.d.ts.map +0 -1
  211. package/dist/chunk.js.map +0 -1
  212. package/dist/combine-videos.d.ts.map +0 -1
  213. package/dist/combine-videos.js.map +0 -1
  214. package/dist/convert-to-pcm.d.ts.map +0 -1
  215. package/dist/convert-to-pcm.js.map +0 -1
  216. package/dist/create-ffmpeg-complex-filter.d.ts.map +0 -1
  217. package/dist/create-ffmpeg-complex-filter.js.map +0 -1
  218. package/dist/create-ffmpeg-merge-filter.d.ts.map +0 -1
  219. package/dist/create-ffmpeg-merge-filter.js.map +0 -1
  220. package/dist/create-silent-audio.d.ts.map +0 -1
  221. package/dist/create-silent-audio.js.map +0 -1
  222. package/dist/cycle-browser-tabs.d.ts.map +0 -1
  223. package/dist/cycle-browser-tabs.js.map +0 -1
  224. package/dist/delay-render-embedded-stack.d.ts.map +0 -1
  225. package/dist/delay-render-embedded-stack.js.map +0 -1
  226. package/dist/delete-directory.d.ts.map +0 -1
  227. package/dist/delete-directory.js.map +0 -1
  228. package/dist/ensure-frames-in-order.d.ts.map +0 -1
  229. package/dist/ensure-frames-in-order.js.map +0 -1
  230. package/dist/ensure-output-directory.d.ts.map +0 -1
  231. package/dist/ensure-output-directory.js.map +0 -1
  232. package/dist/error-handling/handle-javascript-exception.d.ts.map +0 -1
  233. package/dist/error-handling/handle-javascript-exception.js.map +0 -1
  234. package/dist/error-handling/symbolicate-error.d.ts.map +0 -1
  235. package/dist/error-handling/symbolicate-error.js.map +0 -1
  236. package/dist/error-handling/symbolicateable-error.d.ts.map +0 -1
  237. package/dist/error-handling/symbolicateable-error.js.map +0 -1
  238. package/dist/ffmpeg-filter-file.d.ts.map +0 -1
  239. package/dist/ffmpeg-filter-file.js.map +0 -1
  240. package/dist/ffmpeg-flags.d.ts.map +0 -1
  241. package/dist/ffmpeg-flags.js.map +0 -1
  242. package/dist/get-audio-codec-name.d.ts.map +0 -1
  243. package/dist/get-audio-codec-name.js.map +0 -1
  244. package/dist/get-browser-instance.d.ts.map +0 -1
  245. package/dist/get-browser-instance.js.map +0 -1
  246. package/dist/get-codec-name.d.ts.map +0 -1
  247. package/dist/get-codec-name.js.map +0 -1
  248. package/dist/get-compositions.d.ts.map +0 -1
  249. package/dist/get-compositions.js.map +0 -1
  250. package/dist/get-concurrency.d.ts.map +0 -1
  251. package/dist/get-concurrency.js.map +0 -1
  252. package/dist/get-duration-from-frame-range.d.ts.map +0 -1
  253. package/dist/get-duration-from-frame-range.js.map +0 -1
  254. package/dist/get-duration-of-asset.d.ts +0 -7
  255. package/dist/get-duration-of-asset.js +0 -36
  256. package/dist/get-extension-from-codec.d.ts.map +0 -1
  257. package/dist/get-extension-from-codec.js.map +0 -1
  258. package/dist/get-format-for-codec.d.ts +0 -2
  259. package/dist/get-format-for-codec.js +0 -34
  260. package/dist/get-frame-to-render.d.ts.map +0 -1
  261. package/dist/get-frame-to-render.js.map +0 -1
  262. package/dist/get-local-browser-executable.d.ts.map +0 -1
  263. package/dist/get-local-browser-executable.js.map +0 -1
  264. package/dist/get-port.d.ts.map +0 -1
  265. package/dist/get-port.js.map +0 -1
  266. package/dist/get-prores-profile-name.d.ts.map +0 -1
  267. package/dist/get-prores-profile-name.js.map +0 -1
  268. package/dist/image-format.d.ts.map +0 -1
  269. package/dist/image-format.js.map +0 -1
  270. package/dist/index.d.ts.map +0 -1
  271. package/dist/index.js.map +0 -1
  272. package/dist/is-serve-url.d.ts.map +0 -1
  273. package/dist/is-serve-url.js.map +0 -1
  274. package/dist/is-vp9-video.d.ts +0 -3
  275. package/dist/is-vp9-video.js +0 -24
  276. package/dist/legacy-webpack-config.d.ts.map +0 -1
  277. package/dist/legacy-webpack-config.js.map +0 -1
  278. package/dist/make-assets-download-dir.d.ts.map +0 -1
  279. package/dist/make-assets-download-dir.js.map +0 -1
  280. package/dist/merge-audio-track.d.ts.map +0 -1
  281. package/dist/merge-audio-track.js.map +0 -1
  282. package/dist/normalize-serve-url.d.ts.map +0 -1
  283. package/dist/normalize-serve-url.js.map +0 -1
  284. package/dist/open-browser.d.ts.map +0 -1
  285. package/dist/open-browser.js.map +0 -1
  286. package/dist/p-limit.d.ts.map +0 -1
  287. package/dist/p-limit.js.map +0 -1
  288. package/dist/parse-browser-error-stack.d.ts.map +0 -1
  289. package/dist/parse-browser-error-stack.js.map +0 -1
  290. package/dist/parse-ffmpeg-progress.d.ts.map +0 -1
  291. package/dist/parse-ffmpeg-progress.js.map +0 -1
  292. package/dist/pool.d.ts.map +0 -1
  293. package/dist/pool.js.map +0 -1
  294. package/dist/prepare-server.d.ts.map +0 -1
  295. package/dist/prepare-server.js.map +0 -1
  296. package/dist/preprocess-audio-track.d.ts.map +0 -1
  297. package/dist/preprocess-audio-track.js.map +0 -1
  298. package/dist/prespawn-ffmpeg.d.ts.map +0 -1
  299. package/dist/prespawn-ffmpeg.js.map +0 -1
  300. package/dist/provide-screenshot.d.ts.map +0 -1
  301. package/dist/provide-screenshot.js.map +0 -1
  302. package/dist/puppeteer-evaluate.d.ts.map +0 -1
  303. package/dist/puppeteer-evaluate.js.map +0 -1
  304. package/dist/puppeteer-screenshot.d.ts.map +0 -1
  305. package/dist/puppeteer-screenshot.js.map +0 -1
  306. package/dist/render-frames.d.ts.map +0 -1
  307. package/dist/render-frames.js.map +0 -1
  308. package/dist/render-media.d.ts.map +0 -1
  309. package/dist/render-media.js.map +0 -1
  310. package/dist/render-still.d.ts.map +0 -1
  311. package/dist/render-still.js.map +0 -1
  312. package/dist/resolve-asset-src.d.ts.map +0 -1
  313. package/dist/resolve-asset-src.js.map +0 -1
  314. package/dist/sample-rate.d.ts.map +0 -1
  315. package/dist/sample-rate.js.map +0 -1
  316. package/dist/screenshot-dom-element.d.ts.map +0 -1
  317. package/dist/screenshot-dom-element.js.map +0 -1
  318. package/dist/screenshot-task.d.ts.map +0 -1
  319. package/dist/screenshot-task.js.map +0 -1
  320. package/dist/seek-to-frame.d.ts.map +0 -1
  321. package/dist/seek-to-frame.js.map +0 -1
  322. package/dist/serve-handler/glob-slash.d.ts +0 -1
  323. package/dist/serve-handler/glob-slash.js +0 -12
  324. package/dist/serve-static.d.ts.map +0 -1
  325. package/dist/serve-static.js.map +0 -1
  326. package/dist/set-props-and-env.d.ts.map +0 -1
  327. package/dist/set-props-and-env.js.map +0 -1
  328. package/dist/stitch-frames-to-video.d.ts.map +0 -1
  329. package/dist/stitch-frames-to-video.js.map +0 -1
  330. package/dist/stringify-ffmpeg-filter.d.ts.map +0 -1
  331. package/dist/stringify-ffmpeg-filter.js.map +0 -1
  332. package/dist/symbolicate-stacktrace.d.ts.map +0 -1
  333. package/dist/symbolicate-stacktrace.js.map +0 -1
  334. package/dist/tmp-dir.d.ts.map +0 -1
  335. package/dist/tmp-dir.js.map +0 -1
  336. package/dist/types.d.ts.map +0 -1
  337. package/dist/types.js.map +0 -1
  338. package/dist/validate-even-dimensions-with-codec.d.ts.map +0 -1
  339. package/dist/validate-even-dimensions-with-codec.js.map +0 -1
  340. package/dist/validate-ffmpeg.d.ts.map +0 -1
  341. package/dist/validate-ffmpeg.js.map +0 -1
  342. package/dist/validate-fps-for-gif.d.ts +0 -2
  343. package/dist/validate-fps-for-gif.js +0 -9
  344. package/dist/validate-puppeteer-timeout.d.ts.map +0 -1
  345. package/dist/validate-puppeteer-timeout.js.map +0 -1
  346. package/dist/validate-scale.d.ts.map +0 -1
  347. package/dist/validate-scale.js.map +0 -1
@@ -7,13 +7,13 @@ exports.openBrowser = exports.killAllBrowsers = void 0;
7
7
  const fs_1 = __importDefault(require("fs"));
8
8
  const os_1 = __importDefault(require("os"));
9
9
  const path_1 = __importDefault(require("path"));
10
- const remotion_1 = require("remotion");
11
10
  const node_1 = require("./browser/node");
12
11
  const get_local_browser_executable_1 = require("./get-local-browser-executable");
12
+ const validate_opengl_renderer_1 = require("./validate-opengl-renderer");
13
13
  const validRenderers = ['swangle', 'angle', 'egl', 'swiftshader'];
14
14
  const getOpenGlRenderer = (option) => {
15
- const renderer = option !== null && option !== void 0 ? option : remotion_1.Internals.DEFAULT_OPENGL_RENDERER;
16
- remotion_1.Internals.validateOpenGlRenderer(renderer);
15
+ const renderer = option !== null && option !== void 0 ? option : validate_opengl_renderer_1.DEFAULT_OPENGL_RENDERER;
16
+ (0, validate_opengl_renderer_1.validateOpenGlRenderer)(renderer);
17
17
  if (renderer === 'swangle') {
18
18
  return [`--use-gl=angle`, `--use-angle=swiftshader`];
19
19
  }
@@ -34,7 +34,7 @@ const killAllBrowsers = async () => {
34
34
  exports.killAllBrowsers = killAllBrowsers;
35
35
  const openBrowser = async (browser, options) => {
36
36
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
37
- if (browser === 'firefox' && !remotion_1.Internals.FEATURE_FLAG_FIREFOX_SUPPORT) {
37
+ if (browser === 'firefox') {
38
38
  throw new TypeError('Firefox supported is not yet turned on. Stay tuned for the future.');
39
39
  }
40
40
  await (0, get_local_browser_executable_1.ensureLocalBrowser)(browser, (_a = options === null || options === void 0 ? void 0 : options.browserExecutable) !== null && _a !== void 0 ? _a : null);
@@ -0,0 +1 @@
1
+ export declare const DEFAULT_OVERWRITE = true;
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEFAULT_OVERWRITE = void 0;
4
+ exports.DEFAULT_OVERWRITE = true;
package/dist/perf.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ declare type PerfId = 'activate-target' | 'capture' | 'save' | 'extract-frame' | 'piping';
2
+ export declare const startPerfMeasure: (marker: PerfId) => number;
3
+ export declare const stopPerfMeasure: (id: number) => void;
4
+ export declare const logPerf: () => void;
5
+ export {};
package/dist/perf.js ADDED
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.logPerf = exports.stopPerfMeasure = exports.startPerfMeasure = void 0;
4
+ const perf = {
5
+ 'activate-target': [],
6
+ capture: [],
7
+ save: [],
8
+ 'extract-frame': [],
9
+ piping: [],
10
+ };
11
+ const map = {};
12
+ const startPerfMeasure = (marker) => {
13
+ const id = Math.random();
14
+ map[id] = {
15
+ id,
16
+ marker,
17
+ start: Date.now(),
18
+ };
19
+ return id;
20
+ };
21
+ exports.startPerfMeasure = startPerfMeasure;
22
+ const stopPerfMeasure = (id) => {
23
+ const now = Date.now();
24
+ const diff = now - map[id].start;
25
+ perf[map[id].marker].push(diff);
26
+ delete map[id];
27
+ };
28
+ exports.stopPerfMeasure = stopPerfMeasure;
29
+ const logPerf = () => {
30
+ console.log('Render performance:');
31
+ Object.keys(perf).forEach((p) => {
32
+ console.log(` ${p} => ${perf[p].reduce((a, b) => a + b, 0) / perf[p].length} (n = ${perf[p].length})`);
33
+ });
34
+ };
35
+ exports.logPerf = logPerf;
@@ -0,0 +1,5 @@
1
+ import type { Codec } from './codec';
2
+ export declare const validPixelFormats: readonly ["yuv420p", "yuva420p", "yuv422p", "yuv444p", "yuv420p10le", "yuv422p10le", "yuv444p10le", "yuva444p10le"];
3
+ export declare type PixelFormat = typeof validPixelFormats[number];
4
+ export declare const DEFAULT_PIXEL_FORMAT: PixelFormat;
5
+ export declare const validateSelectedPixelFormatAndCodecCombination: (pixelFormat: PixelFormat, codec: Codec) => void;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateSelectedPixelFormatAndCodecCombination = exports.DEFAULT_PIXEL_FORMAT = exports.validPixelFormats = void 0;
4
+ exports.validPixelFormats = [
5
+ 'yuv420p',
6
+ 'yuva420p',
7
+ 'yuv422p',
8
+ 'yuv444p',
9
+ 'yuv420p10le',
10
+ 'yuv422p10le',
11
+ 'yuv444p10le',
12
+ 'yuva444p10le',
13
+ ];
14
+ exports.DEFAULT_PIXEL_FORMAT = 'yuv420p';
15
+ const validateSelectedPixelFormatAndCodecCombination = (pixelFormat, codec) => {
16
+ if (!exports.validPixelFormats.includes(pixelFormat)) {
17
+ throw new TypeError(`Value ${pixelFormat} is not valid as a pixel format.`);
18
+ }
19
+ if (pixelFormat !== 'yuva420p') {
20
+ return;
21
+ }
22
+ if (codec !== 'vp8' && codec !== 'vp9') {
23
+ throw new TypeError("Pixel format was set to 'yuva420p' but codec is not 'vp8' or 'vp9'. To render videos with alpha channel, you must choose a codec that supports it.");
24
+ }
25
+ };
26
+ exports.validateSelectedPixelFormatAndCodecCombination = validateSelectedPixelFormatAndCodecCombination;
@@ -1,13 +1,14 @@
1
- import type { FfmpegExecutable } from 'remotion';
2
1
  import type { RenderMediaOnDownload } from './assets/download-and-map-assets-to-file';
3
- export declare const prepareServer: ({ downloadDir, ffmpegExecutable, ffprobeExecutable, onDownload, onError, webpackConfigOrServeUrl, port, }: {
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, }: {
4
5
  webpackConfigOrServeUrl: string;
5
- downloadDir: string;
6
6
  onDownload: RenderMediaOnDownload;
7
7
  onError: (err: Error) => void;
8
8
  ffmpegExecutable: FfmpegExecutable;
9
9
  ffprobeExecutable: FfmpegExecutable;
10
10
  port: number | null;
11
+ downloadMap: DownloadMap;
11
12
  }) => Promise<{
12
13
  serveUrl: string;
13
14
  closeServer: () => Promise<unknown>;
@@ -9,15 +9,15 @@ const path_1 = __importDefault(require("path"));
9
9
  const is_serve_url_1 = require("./is-serve-url");
10
10
  const serve_static_1 = require("./serve-static");
11
11
  const wait_for_symbolication_error_to_be_done_1 = require("./wait-for-symbolication-error-to-be-done");
12
- const prepareServer = async ({ downloadDir, ffmpegExecutable, ffprobeExecutable, onDownload, onError, webpackConfigOrServeUrl, port, }) => {
12
+ const prepareServer = async ({ ffmpegExecutable, ffprobeExecutable, onDownload, onError, webpackConfigOrServeUrl, port, downloadMap, }) => {
13
13
  if ((0, is_serve_url_1.isServeUrl)(webpackConfigOrServeUrl)) {
14
14
  const { port: offthreadPort, close: closeProxy } = await (0, serve_static_1.serveStatic)(null, {
15
- downloadDir,
16
15
  onDownload,
17
16
  onError,
18
17
  ffmpegExecutable,
19
18
  ffprobeExecutable,
20
19
  port,
20
+ downloadMap,
21
21
  });
22
22
  return Promise.resolve({
23
23
  serveUrl: webpackConfigOrServeUrl,
@@ -34,12 +34,12 @@ const prepareServer = async ({ downloadDir, ffmpegExecutable, ffprobeExecutable,
34
34
  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
35
  }
36
36
  const { port: serverPort, close } = await (0, serve_static_1.serveStatic)(webpackConfigOrServeUrl, {
37
- downloadDir,
38
37
  onDownload,
39
38
  onError,
40
39
  ffmpegExecutable,
41
40
  ffprobeExecutable,
42
41
  port,
42
+ downloadMap,
43
43
  });
44
44
  return Promise.resolve({
45
45
  closeServer: () => {
@@ -1,5 +1,6 @@
1
- import type { FfmpegExecutable } from 'remotion';
1
+ import type { DownloadMap } from './assets/download-map';
2
2
  import type { MediaAsset } from './assets/types';
3
+ import type { FfmpegExecutable } from './ffmpeg-executable';
3
4
  declare type Options = {
4
5
  ffmpegExecutable: FfmpegExecutable;
5
6
  ffprobeExecutable: FfmpegExecutable;
@@ -7,6 +8,7 @@ declare type Options = {
7
8
  asset: MediaAsset;
8
9
  expectedFrames: number;
9
10
  fps: number;
11
+ downloadMap: DownloadMap;
10
12
  };
11
13
  export declare const preprocessAudioTrack: (options: Options) => Promise<string | null>;
12
14
  export {};
@@ -10,8 +10,8 @@ const calculate_ffmpeg_filters_1 = require("./calculate-ffmpeg-filters");
10
10
  const ffmpeg_filter_file_1 = require("./ffmpeg-filter-file");
11
11
  const p_limit_1 = require("./p-limit");
12
12
  const resolve_asset_src_1 = require("./resolve-asset-src");
13
- const preprocessAudioTrackUnlimited = async ({ ffmpegExecutable, ffprobeExecutable, outName, asset, expectedFrames, fps, }) => {
14
- const { channels, duration } = await (0, get_audio_channels_1.getAudioChannelsAndDuration)((0, resolve_asset_src_1.resolveAssetSrc)(asset.src), ffprobeExecutable);
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);
15
15
  const filter = (0, calculate_ffmpeg_filters_1.calculateFfmpegFilter)({
16
16
  asset,
17
17
  durationInFrames: expectedFrames,
@@ -22,7 +22,7 @@ const preprocessAudioTrackUnlimited = async ({ ffmpegExecutable, ffprobeExecutab
22
22
  if (filter === null) {
23
23
  return null;
24
24
  }
25
- const { cleanup, file } = await (0, ffmpeg_filter_file_1.makeFfmpegFilterFile)(filter);
25
+ const { cleanup, file } = await (0, ffmpeg_filter_file_1.makeFfmpegFilterFile)(filter, downloadMap);
26
26
  const args = [
27
27
  ['-i', (0, resolve_asset_src_1.resolveAssetSrc)(asset.src)],
28
28
  ['-ac', '2'],
@@ -1,6 +1,10 @@
1
1
  import execa from 'execa';
2
- import type { Codec, FfmpegExecutable, ImageFormat, PixelFormat, ProResProfile } from 'remotion';
2
+ import type { Codec } from './codec';
3
+ import type { FfmpegExecutable } from './ffmpeg-executable';
4
+ import type { ImageFormat } from './image-format';
3
5
  import type { CancelSignal } from './make-cancel-signal';
6
+ import type { PixelFormat } from './pixel-format';
7
+ import type { ProResProfile } from './prores-profile';
4
8
  declare type PreSticherOptions = {
5
9
  fps: number;
6
10
  width: number;
@@ -6,25 +6,28 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.prespawnFfmpeg = void 0;
7
7
  const execa_1 = __importDefault(require("execa"));
8
8
  const remotion_1 = require("remotion");
9
+ const codec_1 = require("./codec");
10
+ const crf_1 = require("./crf");
9
11
  const get_codec_name_1 = require("./get-codec-name");
10
12
  const get_prores_profile_name_1 = require("./get-prores-profile-name");
11
13
  const parse_ffmpeg_progress_1 = require("./parse-ffmpeg-progress");
14
+ const pixel_format_1 = require("./pixel-format");
12
15
  const validate_even_dimensions_with_codec_1 = require("./validate-even-dimensions-with-codec");
13
16
  const validate_ffmpeg_1 = require("./validate-ffmpeg");
14
17
  const prespawnFfmpeg = async (options) => {
15
18
  var _a, _b, _c, _d, _e, _f, _g;
16
19
  remotion_1.Internals.validateDimension(options.height, 'height', 'passed to `stitchFramesToVideo()`');
17
20
  remotion_1.Internals.validateDimension(options.width, 'width', 'passed to `stitchFramesToVideo()`');
18
- const codec = (_a = options.codec) !== null && _a !== void 0 ? _a : remotion_1.Internals.DEFAULT_CODEC;
19
- remotion_1.Internals.validateFps(options.fps, 'in `stitchFramesToVideo()`', codec);
21
+ const codec = (_a = options.codec) !== null && _a !== void 0 ? _a : codec_1.DEFAULT_CODEC;
22
+ remotion_1.Internals.validateFps(options.fps, 'in `stitchFramesToVideo()`', codec === 'gif');
20
23
  (0, validate_even_dimensions_with_codec_1.validateEvenDimensionsWithCodec)({
21
24
  width: options.width,
22
25
  height: options.height,
23
26
  codec,
24
27
  scale: 1,
25
28
  });
26
- const crf = (_b = options.crf) !== null && _b !== void 0 ? _b : remotion_1.Internals.getDefaultCrfForCodec(codec);
27
- const pixelFormat = (_c = options.pixelFormat) !== null && _c !== void 0 ? _c : remotion_1.Internals.DEFAULT_PIXEL_FORMAT;
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;
28
31
  await (0, validate_ffmpeg_1.validateFfmpeg)((_d = options.ffmpegExecutable) !== null && _d !== void 0 ? _d : null);
29
32
  const encoderName = (0, get_codec_name_1.getCodecName)(codec);
30
33
  const proResProfileName = (0, get_prores_profile_name_1.getProResProfileName)(codec, options.proResProfile);
@@ -42,8 +45,8 @@ const prespawnFfmpeg = async (options) => {
42
45
  console.log('[verbose] codec', codec);
43
46
  console.log('[verbose] proResProfileName', proResProfileName);
44
47
  }
45
- remotion_1.Internals.validateSelectedCrfAndCodecCombination(crf, codec);
46
- remotion_1.Internals.validateSelectedPixelFormatAndCodecCombination(pixelFormat, codec);
48
+ (0, crf_1.validateSelectedCrfAndCodecCombination)(crf, codec);
49
+ (0, pixel_format_1.validateSelectedPixelFormatAndCodecCombination)(pixelFormat, codec);
47
50
  const ffmpegArgs = [
48
51
  ['-r', options.fps.toFixed(2)],
49
52
  ...[
@@ -0,0 +1,5 @@
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 {};
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateSelectedCodecAndProResCombination = void 0;
4
+ const proResProfileOptions = [
5
+ '4444-xq',
6
+ '4444',
7
+ 'hq',
8
+ 'standard',
9
+ 'light',
10
+ 'proxy',
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.');
15
+ }
16
+ if (actualProResProfile !== undefined &&
17
+ !proResProfileOptions.includes(actualProResProfile)) {
18
+ throw new TypeError(`The ProRes profile "${actualProResProfile}" is not valid. Valid options are ${proResProfileOptions
19
+ .map((p) => `"${p}"`)
20
+ .join(', ')}`);
21
+ }
22
+ };
23
+ exports.validateSelectedCodecAndProResCombination = validateSelectedCodecAndProResCombination;
@@ -1,6 +1,6 @@
1
1
  /// <reference types="node" />
2
- import type { ImageFormat } from 'remotion';
3
2
  import type { Page } from './browser/BrowserPage';
3
+ import type { ImageFormat } from './image-format';
4
4
  export declare const provideScreenshot: ({ page, imageFormat, options, quality, }: {
5
5
  page: Page;
6
6
  imageFormat: ImageFormat;
@@ -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,8 +1,13 @@
1
1
  /// <reference types="node" />
2
- import type { BrowserExecutable, FfmpegExecutable, FrameRange, ImageFormat, SmallTCompMetadata } from 'remotion';
2
+ import type { SmallTCompMetadata } from 'remotion';
3
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';
4
6
  import type { BrowserLog } from './browser-log';
5
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';
6
11
  import type { ServeUrlOrWebpackBundle } from './legacy-webpack-config';
7
12
  import type { CancelSignal } from './make-cancel-signal';
8
13
  import type { ChromiumOptions } from './open-browser';
@@ -39,6 +44,10 @@ declare type RenderFramesOptions = {
39
44
  ffprobeExecutable?: FfmpegExecutable;
40
45
  port?: number | null;
41
46
  cancelSignal?: CancelSignal;
47
+ /**
48
+ * @deprecated Only for Remotion internal usage
49
+ */
50
+ downloadMap?: DownloadMap;
42
51
  } & ConfigOrComposition & ServeUrlOrWebpackBundle;
43
52
  export declare const renderFrames: (options: RenderFramesOptions) => Promise<RenderFramesOutput>;
44
53
  export {};
@@ -8,6 +8,9 @@ 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");
@@ -16,14 +19,16 @@ const get_frame_padded_index_1 = require("./get-frame-padded-index");
16
19
  const get_frame_to_render_1 = require("./get-frame-to-render");
17
20
  const image_format_1 = require("./image-format");
18
21
  const legacy_webpack_config_1 = require("./legacy-webpack-config");
19
- const make_assets_download_dir_1 = require("./make-assets-download-dir");
20
22
  const open_browser_1 = require("./open-browser");
23
+ const perf_1 = require("./perf");
21
24
  const pool_1 = require("./pool");
22
25
  const prepare_server_1 = require("./prepare-server");
23
26
  const provide_screenshot_1 = require("./provide-screenshot");
24
27
  const puppeteer_evaluate_1 = require("./puppeteer-evaluate");
28
+ const quality_1 = require("./quality");
25
29
  const seek_to_frame_1 = require("./seek-to-frame");
26
30
  const set_props_and_env_1 = require("./set-props-and-env");
31
+ const truthy_1 = require("./truthy");
27
32
  const validate_scale_1 = require("./validate-scale");
28
33
  const getComposition = (others) => {
29
34
  if ('composition' in others) {
@@ -39,7 +44,7 @@ const getPool = async (pages) => {
39
44
  const pool = new pool_1.Pool(puppeteerPages);
40
45
  return pool;
41
46
  };
42
- 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, everyNthFrame = 1, 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, }) => {
43
48
  if (!puppeteerInstance) {
44
49
  throw new Error('no puppeteer instance passed to innerRenderFrames - internal error');
45
50
  }
@@ -133,7 +138,7 @@ const innerRenderFrames = ({ onFrameUpdate, outputDir, onStart, inputProps, qual
133
138
  await (0, seek_to_frame_1.seekToFrame)({ frame, page: freePage });
134
139
  if (imageFormat !== 'none') {
135
140
  if (onFrameBuffer) {
136
- const id = remotion_1.Internals.perf.startPerfMeasure('save');
141
+ const id = (0, perf_1.startPerfMeasure)('save');
137
142
  const buffer = await (0, provide_screenshot_1.provideScreenshot)({
138
143
  page: freePage,
139
144
  imageFormat,
@@ -143,7 +148,7 @@ const innerRenderFrames = ({ onFrameUpdate, outputDir, onStart, inputProps, qual
143
148
  output: null,
144
149
  },
145
150
  });
146
- remotion_1.Internals.perf.stopPerfMeasure(id);
151
+ (0, perf_1.stopPerfMeasure)(id);
147
152
  onFrameBuffer(buffer, frame);
148
153
  }
149
154
  else {
@@ -177,13 +182,13 @@ const innerRenderFrames = ({ onFrameUpdate, outputDir, onStart, inputProps, qual
177
182
  frame,
178
183
  page: freePage,
179
184
  });
180
- const compressedAssets = collectedAssets.map((asset) => remotion_1.Internals.AssetCompression.compressAsset(assets.filter(remotion_1.Internals.truthy).flat(1), asset));
185
+ const compressedAssets = collectedAssets.map((asset) => (0, compress_assets_1.compressAsset)(assets.filter(truthy_1.truthy).flat(1), asset));
181
186
  assets[index] = compressedAssets;
182
187
  compressedAssets.forEach((asset) => {
183
188
  (0, download_and_map_assets_to_file_1.downloadAndMapAssetsToFileUrl)({
184
189
  asset,
185
- downloadDir,
186
190
  onDownload,
191
+ downloadMap,
187
192
  }).catch((err) => {
188
193
  onError(new Error(`Error while downloading asset: ${err.stack}`));
189
194
  });
@@ -199,9 +204,9 @@ const innerRenderFrames = ({ onFrameUpdate, outputDir, onStart, inputProps, qual
199
204
  const returnValue = {
200
205
  assetsInfo: {
201
206
  assets,
202
- downloadDir,
203
207
  imageSequenceName: `element-%0${filePadLength}d.${imageFormat}`,
204
208
  firstFrameIndex: framesToRender[0],
209
+ downloadMap,
205
210
  },
206
211
  frameCount: framesToRender.length,
207
212
  };
@@ -214,30 +219,30 @@ const innerRenderFrames = ({ onFrameUpdate, outputDir, onStart, inputProps, qual
214
219
  .then(() => happyPath);
215
220
  };
216
221
  const renderFrames = (options) => {
217
- var _a, _b, _c, _d;
222
+ var _a, _b, _c, _d, _e;
218
223
  const composition = getComposition(options);
219
224
  if (!composition) {
220
225
  throw new Error('No `composition` option has been specified for renderFrames()');
221
226
  }
222
227
  remotion_1.Internals.validateDimension(composition.height, 'height', 'in the `config` object passed to `renderFrames()`');
223
228
  remotion_1.Internals.validateDimension(composition.width, 'width', 'in the `config` object passed to `renderFrames()`');
224
- remotion_1.Internals.validateFps(composition.fps, 'in the `config` object of `renderFrames()`', null);
229
+ remotion_1.Internals.validateFps(composition.fps, 'in the `config` object of `renderFrames()`', false);
225
230
  remotion_1.Internals.validateDurationInFrames(composition.durationInFrames, 'in the `config` object passed to `renderFrames()`');
226
231
  if (options.quality !== undefined && options.imageFormat !== 'jpeg') {
227
232
  throw new Error("You can only pass the `quality` option if `imageFormat` is 'jpeg'.");
228
233
  }
229
234
  const selectedServeUrl = (0, legacy_webpack_config_1.getServeUrlWithFallback)(options);
230
- remotion_1.Internals.validateQuality(options.quality);
235
+ (0, quality_1.validateQuality)(options.quality);
231
236
  (0, validate_scale_1.validateScale)(options.scale);
232
- const browserInstance = (_a = options.puppeteerInstance) !== null && _a !== void 0 ? _a : (0, open_browser_1.openBrowser)(remotion_1.Internals.DEFAULT_BROWSER, {
237
+ const browserInstance = (_a = options.puppeteerInstance) !== null && _a !== void 0 ? _a : (0, open_browser_1.openBrowser)(browser_1.DEFAULT_BROWSER, {
233
238
  shouldDumpIo: options.dumpBrowserLogs,
234
239
  browserExecutable: options.browserExecutable,
235
240
  chromiumOptions: options.chromiumOptions,
236
241
  forceDeviceScaleFactor: (_b = options.scale) !== null && _b !== void 0 ? _b : 1,
237
242
  });
238
- const downloadDir = (0, make_assets_download_dir_1.makeAssetsDownloadTmpDir)();
239
- const onDownload = (_c = options.onDownload) !== null && _c !== void 0 ? _c : (() => () => undefined);
240
- const actualParallelism = (0, get_concurrency_1.getActualConcurrency)((_d = options.parallelism) !== null && _d !== void 0 ? _d : null);
243
+ const downloadMap = (_c = options.downloadMap) !== null && _c !== void 0 ? _c : (0, download_map_1.makeDownloadMap)();
244
+ const onDownload = (_d = options.onDownload) !== null && _d !== void 0 ? _d : (() => () => undefined);
245
+ const actualParallelism = (0, get_concurrency_1.getActualConcurrency)((_e = options.parallelism) !== null && _e !== void 0 ? _e : null);
241
246
  const openedPages = [];
242
247
  return new Promise((resolve, reject) => {
243
248
  var _a, _b, _c;
@@ -255,12 +260,12 @@ const renderFrames = (options) => {
255
260
  Promise.all([
256
261
  (0, prepare_server_1.prepareServer)({
257
262
  webpackConfigOrServeUrl: selectedServeUrl,
258
- downloadDir,
259
263
  onDownload,
260
264
  onError,
261
265
  ffmpegExecutable: (_a = options.ffmpegExecutable) !== null && _a !== void 0 ? _a : null,
262
266
  ffprobeExecutable: (_b = options.ffprobeExecutable) !== null && _b !== void 0 ? _b : null,
263
267
  port: (_c = options.port) !== null && _c !== void 0 ? _c : null,
268
+ downloadMap,
264
269
  }),
265
270
  browserInstance,
266
271
  ]).then(([{ serveUrl, closeServer, offthreadPort }, puppeteerInstance]) => {
@@ -276,8 +281,8 @@ const renderFrames = (options) => {
276
281
  composition,
277
282
  actualParallelism,
278
283
  onDownload,
279
- downloadDir,
280
284
  proxyPort: offthreadPort,
285
+ downloadMap,
281
286
  });
282
287
  }),
283
288
  ])
@@ -306,6 +311,7 @@ const renderFrames = (options) => {
306
311
  cleanup.forEach((c) => {
307
312
  c();
308
313
  });
314
+ // Don't clear download dir because it might be used by stitchFramesToVideo
309
315
  });
310
316
  });
311
317
  };
@@ -1,11 +1,17 @@
1
- /// <reference types="node" />
2
- import type { BrowserExecutable, Codec, FfmpegExecutable, FrameRange, PixelFormat, ProResProfile, SmallTCompMetadata } from 'remotion';
1
+ import type { SmallTCompMetadata } from 'remotion';
3
2
  import type { RenderMediaOnDownload } from './assets/download-and-map-assets-to-file';
3
+ import type { DownloadMap } from './assets/download-map';
4
+ import type { BrowserExecutable } from './browser-executable';
4
5
  import type { BrowserLog } from './browser-log';
5
6
  import type { Browser as PuppeteerBrowser } from './browser/Browser';
7
+ import type { Codec } from './codec';
8
+ import type { FfmpegExecutable } from './ffmpeg-executable';
9
+ import type { FrameRange } from './frame-range';
6
10
  import type { ServeUrlOrWebpackBundle } from './legacy-webpack-config';
7
11
  import type { CancelSignal } from './make-cancel-signal';
8
12
  import type { ChromiumOptions } from './open-browser';
13
+ import type { PixelFormat } from './pixel-format';
14
+ import type { ProResProfile } from './prores-profile';
9
15
  import type { OnStartData } from './types';
10
16
  export declare type StitchingState = 'encoding' | 'muxing';
11
17
  export declare type RenderMediaOnProgress = (progress: {
@@ -45,6 +51,11 @@ export declare type RenderMediaOptions = {
45
51
  port?: number | null;
46
52
  cancelSignal?: CancelSignal;
47
53
  browserExecutable?: BrowserExecutable;
54
+ verbose?: boolean;
55
+ /**
56
+ * @deprecated Only for Remotion internal usage
57
+ */
58
+ downloadMap?: DownloadMap;
48
59
  } & ServeUrlOrWebpackBundle;
49
60
  /**
50
61
  *