@remotion/renderer 4.0.0-alpha.4 → 4.0.0-alpha11

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 (594) hide show
  1. package/LICENSE.md +8 -8
  2. package/README.md +9 -0
  3. package/client.d.ts +1 -0
  4. package/client.js +1 -0
  5. package/dist/assets/calculate-asset-positions.d.ts +0 -0
  6. package/dist/assets/calculate-asset-positions.js +1 -0
  7. package/dist/assets/calculate-atempo.d.ts +0 -0
  8. package/dist/assets/calculate-atempo.js +0 -0
  9. package/dist/assets/convert-assets-to-file-urls.d.ts +0 -0
  10. package/dist/assets/convert-assets-to-file-urls.js +0 -0
  11. package/dist/assets/download-and-map-assets-to-file.d.ts +2 -1
  12. package/dist/assets/download-and-map-assets-to-file.js +64 -15
  13. package/dist/assets/download-file.d.ts +9 -6
  14. package/dist/assets/download-file.js +67 -9
  15. package/dist/assets/download-map.d.ts +5 -26
  16. package/dist/assets/download-map.js +15 -16
  17. package/dist/assets/ffmpeg-volume-expression.d.ts +2 -1
  18. package/dist/assets/ffmpeg-volume-expression.js +5 -3
  19. package/dist/assets/flatten-volume-array.d.ts +0 -0
  20. package/dist/assets/flatten-volume-array.js +0 -0
  21. package/dist/assets/get-audio-channels.d.ts +1 -2
  22. package/dist/assets/get-audio-channels.js +5 -8
  23. package/dist/assets/get-video-stream-duration.d.ts +7 -1
  24. package/dist/assets/get-video-stream-duration.js +50 -14
  25. package/dist/assets/read-file.d.ts +1 -1
  26. package/dist/assets/read-file.js +4 -6
  27. package/dist/assets/round-volume-to-avoid-stack-overflow.d.ts +0 -0
  28. package/dist/assets/round-volume-to-avoid-stack-overflow.js +0 -0
  29. package/dist/assets/sanitize-filename.d.ts +0 -0
  30. package/dist/assets/sanitize-filename.js +0 -0
  31. package/dist/assets/sanitize-filepath.d.ts +0 -0
  32. package/dist/assets/sanitize-filepath.js +2 -2
  33. package/dist/assets/truncate-utf8-bytes.d.ts +0 -0
  34. package/dist/assets/truncate-utf8-bytes.js +0 -0
  35. package/dist/assets/types.d.ts +1 -0
  36. package/dist/assets/types.js +0 -0
  37. package/dist/audio-codec.d.ts +28 -0
  38. package/dist/audio-codec.js +83 -0
  39. package/dist/browser/Browser.d.ts +8 -6
  40. package/dist/browser/Browser.js +48 -45
  41. package/dist/browser/BrowserConnector.d.ts +0 -0
  42. package/dist/browser/BrowserConnector.js +0 -0
  43. package/dist/browser/BrowserFetcher.d.ts +15 -63
  44. package/dist/browser/BrowserFetcher.js +151 -237
  45. package/dist/browser/BrowserPage.d.ts +12 -6
  46. package/dist/browser/BrowserPage.js +8 -11
  47. package/dist/browser/BrowserRunner.d.ts +2 -5
  48. package/dist/browser/BrowserRunner.js +42 -92
  49. package/dist/browser/Connection.d.ts +0 -0
  50. package/dist/browser/Connection.js +1 -1
  51. package/dist/browser/ConsoleMessage.d.ts +0 -0
  52. package/dist/browser/ConsoleMessage.js +0 -0
  53. package/dist/browser/DOMWorld.d.ts +5 -4
  54. package/dist/browser/DOMWorld.js +8 -1
  55. package/dist/browser/Errors.d.ts +0 -0
  56. package/dist/browser/Errors.js +0 -0
  57. package/dist/browser/EvalTypes.d.ts +0 -0
  58. package/dist/browser/EvalTypes.js +0 -0
  59. package/dist/browser/EventEmitter.d.ts +0 -0
  60. package/dist/browser/EventEmitter.js +0 -0
  61. package/dist/browser/ExecutionContext.d.ts +0 -0
  62. package/dist/browser/ExecutionContext.js +0 -0
  63. package/dist/browser/FrameManager.d.ts +0 -2
  64. package/dist/browser/FrameManager.js +2 -6
  65. package/dist/browser/HTTPRequest.d.ts +0 -0
  66. package/dist/browser/HTTPRequest.js +0 -0
  67. package/dist/browser/HTTPResponse.d.ts +0 -0
  68. package/dist/browser/HTTPResponse.js +0 -0
  69. package/dist/browser/JSHandle.d.ts +0 -0
  70. package/dist/browser/JSHandle.js +0 -0
  71. package/dist/browser/LaunchOptions.d.ts +1 -5
  72. package/dist/browser/LaunchOptions.js +0 -0
  73. package/dist/browser/Launcher.d.ts +9 -3
  74. package/dist/browser/Launcher.js +17 -387
  75. package/dist/browser/LifecycleWatcher.d.ts +0 -0
  76. package/dist/browser/LifecycleWatcher.js +0 -0
  77. package/dist/browser/NetworkEventManager.d.ts +0 -0
  78. package/dist/browser/NetworkEventManager.js +0 -0
  79. package/dist/browser/NetworkManager.d.ts +0 -0
  80. package/dist/browser/NetworkManager.js +0 -0
  81. package/dist/browser/NodeWebSocketTransport.d.ts +0 -0
  82. package/dist/browser/NodeWebSocketTransport.js +5 -5
  83. package/dist/browser/Product.d.ts +0 -0
  84. package/dist/browser/Product.js +0 -0
  85. package/dist/browser/PuppeteerNode.d.ts +2 -5
  86. package/dist/browser/PuppeteerNode.js +2 -14
  87. package/dist/browser/PuppeteerViewport.d.ts +0 -0
  88. package/dist/browser/PuppeteerViewport.js +0 -0
  89. package/dist/browser/ScreenshotOptions.d.ts +0 -14
  90. package/dist/browser/ScreenshotOptions.js +0 -1
  91. package/dist/browser/Target.d.ts +2 -2
  92. package/dist/browser/Target.js +0 -0
  93. package/dist/browser/TaskQueue.d.ts +0 -0
  94. package/dist/browser/TaskQueue.js +0 -0
  95. package/dist/browser/TimeoutSettings.d.ts +0 -0
  96. package/dist/browser/TimeoutSettings.js +0 -0
  97. package/dist/browser/assert.d.ts +0 -0
  98. package/dist/browser/assert.js +0 -0
  99. package/dist/browser/create-browser-fetcher.d.ts +0 -0
  100. package/dist/browser/create-browser-fetcher.js +34 -90
  101. package/dist/browser/devtools-commands.d.ts +5 -1
  102. package/dist/browser/devtools-commands.js +0 -0
  103. package/dist/browser/devtools-types.d.ts +82 -0
  104. package/dist/browser/devtools-types.js +0 -0
  105. package/dist/browser/get-download-destination.d.ts +0 -0
  106. package/dist/browser/get-download-destination.js +8 -8
  107. package/dist/browser/is-target-closed-err.d.ts +1 -0
  108. package/dist/browser/is-target-closed-err.js +9 -0
  109. package/dist/browser/mitt/index.d.ts +0 -0
  110. package/dist/browser/mitt/index.js +0 -0
  111. package/dist/browser/node.d.ts +0 -0
  112. package/dist/browser/node.js +0 -0
  113. package/dist/browser/revisions.d.ts +0 -1
  114. package/dist/browser/revisions.js +0 -1
  115. package/dist/browser/util.d.ts +2 -2
  116. package/dist/browser/util.js +0 -0
  117. package/dist/browser-executable.d.ts +0 -0
  118. package/dist/browser-executable.js +0 -0
  119. package/dist/browser-log.d.ts +0 -0
  120. package/dist/browser-log.js +0 -0
  121. package/dist/browser.d.ts +0 -0
  122. package/dist/browser.js +0 -0
  123. package/dist/calculate-ffmpeg-filters.d.ts +2 -1
  124. package/dist/calculate-ffmpeg-filters.js +1 -0
  125. package/dist/calculate-sar-dar-pixels.d.ts +0 -0
  126. package/dist/calculate-sar-dar-pixels.js +0 -0
  127. package/dist/call-ffmpeg.d.ts +14 -0
  128. package/dist/call-ffmpeg.js +42 -0
  129. package/dist/can-use-parallel-encoding.d.ts +0 -0
  130. package/dist/can-use-parallel-encoding.js +0 -0
  131. package/dist/chalk/index.d.ts +54 -0
  132. package/dist/chalk/index.js +135 -0
  133. package/dist/chalk/is-color-supported.d.ts +1 -0
  134. package/dist/chalk/is-color-supported.js +37 -0
  135. package/dist/check-apple-silicon.d.ts +1 -0
  136. package/dist/check-apple-silicon.js +12 -0
  137. package/dist/chunk.d.ts +0 -0
  138. package/dist/chunk.js +0 -0
  139. package/dist/client.d.ts +204 -0
  140. package/dist/client.js +49 -0
  141. package/dist/codec-supports-media.d.ts +2 -0
  142. package/dist/codec-supports-media.js +23 -1
  143. package/dist/codec.d.ts +0 -0
  144. package/dist/codec.js +0 -0
  145. package/dist/combine-videos.d.ts +6 -2
  146. package/dist/combine-videos.js +18 -18
  147. package/dist/compositor/compose.d.ts +17 -0
  148. package/dist/compositor/compose.js +71 -0
  149. package/dist/compositor/compositor.d.ts +11 -0
  150. package/dist/compositor/compositor.js +207 -0
  151. package/dist/compositor/get-executable-path.d.ts +1 -0
  152. package/dist/compositor/get-executable-path.js +57 -0
  153. package/dist/compositor/make-nonce.d.ts +1 -0
  154. package/dist/compositor/make-nonce.js +8 -0
  155. package/dist/compositor/payloads.d.ts +68 -0
  156. package/dist/compositor/payloads.js +2 -0
  157. package/dist/compress-assets.d.ts +0 -0
  158. package/dist/compress-assets.js +0 -0
  159. package/dist/convert-number-of-gif-loops-to-ffmpeg.d.ts +0 -0
  160. package/dist/convert-number-of-gif-loops-to-ffmpeg.js +0 -0
  161. package/dist/convert-to-positive-frame-index.d.ts +4 -0
  162. package/dist/convert-to-positive-frame-index.js +8 -0
  163. package/dist/create-ffmpeg-complex-filter.d.ts +6 -5
  164. package/dist/create-ffmpeg-complex-filter.js +6 -4
  165. package/dist/create-ffmpeg-merge-filter.d.ts +5 -1
  166. package/dist/create-ffmpeg-merge-filter.js +21 -13
  167. package/dist/create-silent-audio.d.ts +1 -3
  168. package/dist/create-silent-audio.js +3 -6
  169. package/dist/crf.d.ts +5 -1
  170. package/dist/crf.js +41 -8
  171. package/dist/cycle-browser-tabs.d.ts +2 -5
  172. package/dist/cycle-browser-tabs.js +5 -5
  173. package/dist/delay-render-embedded-stack.d.ts +0 -0
  174. package/dist/delay-render-embedded-stack.js +0 -0
  175. package/dist/delete-directory.d.ts +1 -1
  176. package/dist/delete-directory.js +43 -17
  177. package/dist/determine-resize-params.d.ts +1 -0
  178. package/dist/determine-resize-params.js +10 -0
  179. package/dist/determine-vcodec-ffmpeg-flags.d.ts +2 -0
  180. package/dist/determine-vcodec-ffmpeg-flags.js +13 -0
  181. package/dist/does-have-m2-bug.d.ts +3 -0
  182. package/dist/does-have-m2-bug.js +12 -0
  183. package/dist/ensure-ffmpeg.d.ts +18 -0
  184. package/dist/ensure-ffmpeg.js +58 -0
  185. package/dist/ensure-frames-in-order.d.ts +0 -0
  186. package/dist/ensure-frames-in-order.js +0 -0
  187. package/dist/ensure-output-directory.d.ts +0 -0
  188. package/dist/ensure-output-directory.js +5 -5
  189. package/dist/ensure-presentation-timestamp.d.ts +14 -1
  190. package/dist/ensure-presentation-timestamp.js +36 -17
  191. package/dist/error-handling/handle-javascript-exception.d.ts +0 -0
  192. package/dist/error-handling/handle-javascript-exception.js +10 -0
  193. package/dist/error-handling/symbolicate-error.d.ts +0 -0
  194. package/dist/error-handling/symbolicate-error.js +2 -1
  195. package/dist/error-handling/symbolicateable-error.d.ts +0 -0
  196. package/dist/error-handling/symbolicateable-error.js +0 -0
  197. package/dist/extract-frame-from-video.d.ts +1 -0
  198. package/dist/extract-frame-from-video.js +47 -110
  199. package/dist/ffmpeg-executable.d.ts +0 -0
  200. package/dist/ffmpeg-executable.js +0 -0
  201. package/dist/ffmpeg-filter-file.d.ts +6 -1
  202. package/dist/ffmpeg-filter-file.js +40 -8
  203. package/dist/ffmpeg-flags.d.ts +20 -2
  204. package/dist/ffmpeg-flags.js +205 -9
  205. package/dist/ffmpeg-override.d.ts +4 -0
  206. package/dist/ffmpeg-override.js +2 -0
  207. package/dist/file-extensions.d.ts +14 -0
  208. package/dist/file-extensions.js +76 -0
  209. package/dist/find-closest-package-json.d.ts +2 -0
  210. package/dist/find-closest-package-json.js +31 -0
  211. package/dist/frame-range.d.ts +0 -0
  212. package/dist/frame-range.js +0 -0
  213. package/dist/frame-to-ffmpeg-timestamp.d.ts +0 -0
  214. package/dist/frame-to-ffmpeg-timestamp.js +0 -0
  215. package/dist/get-browser-instance.d.ts +2 -2
  216. package/dist/get-browser-instance.js +1 -1
  217. package/dist/get-can-extract-frames-fast.d.ts +14 -0
  218. package/dist/get-can-extract-frames-fast.js +71 -0
  219. package/dist/get-codec-name.d.ts +0 -0
  220. package/dist/get-codec-name.js +0 -0
  221. package/dist/get-compositions.d.ts +14 -8
  222. package/dist/get-compositions.js +25 -7
  223. package/dist/get-concurrency.d.ts +1 -1
  224. package/dist/get-concurrency.js +11 -4
  225. package/dist/get-duration-from-frame-range.d.ts +0 -0
  226. package/dist/get-duration-from-frame-range.js +0 -0
  227. package/dist/get-extension-from-codec.d.ts +5 -1
  228. package/dist/get-extension-from-codec.js +56 -32
  229. package/dist/get-extension-of-filename.d.ts +0 -0
  230. package/dist/get-extension-of-filename.js +5 -1
  231. package/dist/get-frame-of-video-slow.d.ts +17 -0
  232. package/dist/get-frame-of-video-slow.js +72 -0
  233. package/dist/get-frame-padded-index.d.ts +2 -1
  234. package/dist/get-frame-padded-index.js +3 -2
  235. package/dist/get-frame-to-render.d.ts +0 -0
  236. package/dist/get-frame-to-render.js +1 -1
  237. package/dist/get-local-browser-executable.d.ts +0 -0
  238. package/dist/get-local-browser-executable.js +7 -17
  239. package/dist/get-port.d.ts +4 -1
  240. package/dist/get-port.js +8 -8
  241. package/dist/get-prores-profile-name.d.ts +0 -0
  242. package/dist/get-prores-profile-name.js +0 -0
  243. package/dist/get-video-info.d.ts +6 -1
  244. package/dist/get-video-info.js +19 -9
  245. package/dist/get-video-threads-flag.d.ts +0 -0
  246. package/dist/get-video-threads-flag.js +3 -3
  247. package/dist/guess-extension-for-media.d.ts +3 -1
  248. package/dist/guess-extension-for-media.js +5 -8
  249. package/dist/image-format.d.ts +12 -6
  250. package/dist/image-format.js +19 -13
  251. package/dist/index.d.ts +286 -53
  252. package/dist/index.js +50 -36
  253. package/dist/is-audio-codec.d.ts +0 -0
  254. package/dist/is-audio-codec.js +0 -0
  255. package/dist/is-beyond-last-frame.d.ts +0 -0
  256. package/dist/is-beyond-last-frame.js +0 -0
  257. package/dist/is-serve-url.d.ts +0 -0
  258. package/dist/is-serve-url.js +0 -0
  259. package/dist/jpeg-quality.d.ts +1 -0
  260. package/dist/jpeg-quality.js +21 -0
  261. package/dist/last-frame-from-video-cache.d.ts +1 -0
  262. package/dist/last-frame-from-video-cache.js +0 -0
  263. package/dist/legacy-webpack-config.d.ts +0 -0
  264. package/dist/legacy-webpack-config.js +0 -0
  265. package/dist/locks.d.ts +7 -0
  266. package/dist/locks.js +44 -0
  267. package/dist/log-level.d.ts +0 -0
  268. package/dist/log-level.js +0 -0
  269. package/dist/logger.d.ts +22 -0
  270. package/dist/logger.js +61 -0
  271. package/dist/make-cancel-signal.d.ts +11 -0
  272. package/dist/make-cancel-signal.js +24 -1
  273. package/dist/merge-audio-track.d.ts +3 -3
  274. package/dist/merge-audio-track.js +40 -34
  275. package/dist/mime-db.d.ts +0 -0
  276. package/dist/mime-db.js +0 -0
  277. package/dist/mime-types.d.ts +1 -0
  278. package/dist/mime-types.js +8 -3
  279. package/dist/normalize-serve-url.d.ts +0 -0
  280. package/dist/normalize-serve-url.js +0 -0
  281. package/dist/offthread-video-server.d.ts +12 -8
  282. package/dist/offthread-video-server.js +67 -47
  283. package/dist/open-browser.d.ts +8 -2
  284. package/dist/open-browser.js +16 -18
  285. package/dist/options/audio-bitrate.d.ts +2 -0
  286. package/dist/options/audio-bitrate.js +11 -0
  287. package/dist/options/crf.d.ts +2 -0
  288. package/dist/options/crf.js +11 -0
  289. package/dist/options/enforce-audio.d.ts +2 -0
  290. package/dist/options/enforce-audio.js +11 -0
  291. package/dist/options/jpeg-quality.d.ts +2 -0
  292. package/dist/options/jpeg-quality.js +11 -0
  293. package/dist/options/mute.d.ts +2 -0
  294. package/dist/options/mute.js +11 -0
  295. package/dist/options/option.d.ts +8 -0
  296. package/dist/options/option.js +2 -0
  297. package/dist/options/scale.d.ts +2 -0
  298. package/dist/options/scale.js +11 -0
  299. package/dist/options/video-bitrate.d.ts +2 -0
  300. package/dist/options/video-bitrate.js +11 -0
  301. package/dist/options/video-codec.d.ts +2 -0
  302. package/dist/options/video-codec.js +11 -0
  303. package/dist/overwrite.d.ts +0 -0
  304. package/dist/overwrite.js +0 -0
  305. package/dist/p-limit.d.ts +0 -0
  306. package/dist/p-limit.js +0 -0
  307. package/dist/parse-browser-error-stack.d.ts +0 -0
  308. package/dist/parse-browser-error-stack.js +0 -0
  309. package/dist/parse-ffmpeg-progress.d.ts +0 -0
  310. package/dist/parse-ffmpeg-progress.js +0 -0
  311. package/dist/perf.d.ts +1 -1
  312. package/dist/perf.js +9 -7
  313. package/dist/pixel-format.d.ts +1 -1
  314. package/dist/pixel-format.js +3 -0
  315. package/dist/pool.d.ts +0 -0
  316. package/dist/pool.js +0 -0
  317. package/dist/prepare-server.d.ts +8 -5
  318. package/dist/prepare-server.js +22 -13
  319. package/dist/preprocess-audio-track.d.ts +6 -4
  320. package/dist/preprocess-audio-track.js +7 -8
  321. package/dist/prespawn-ffmpeg.d.ts +10 -9
  322. package/dist/prespawn-ffmpeg.js +51 -28
  323. package/dist/prestitcher-memory-usage.d.ts +0 -4
  324. package/dist/prestitcher-memory-usage.js +4 -5
  325. package/dist/prores-profile.d.ts +5 -3
  326. package/dist/prores-profile.js +8 -8
  327. package/dist/provide-screenshot.d.ts +8 -4
  328. package/dist/provide-screenshot.js +5 -2
  329. package/dist/puppeteer-evaluate.d.ts +0 -0
  330. package/dist/puppeteer-evaluate.js +20 -12
  331. package/dist/puppeteer-screenshot.d.ts +12 -2
  332. package/dist/puppeteer-screenshot.js +19 -45
  333. package/dist/quality.d.ts +0 -0
  334. package/dist/quality.js +0 -0
  335. package/dist/redirect-status-codes.d.ts +1 -0
  336. package/dist/redirect-status-codes.js +6 -0
  337. package/dist/render-frames.d.ts +26 -22
  338. package/dist/render-frames.js +204 -109
  339. package/dist/render-media.d.ts +52 -19
  340. package/dist/render-media.js +162 -55
  341. package/dist/render-still.d.ts +26 -14
  342. package/dist/render-still.js +97 -46
  343. package/dist/replace-browser.d.ts +6 -0
  344. package/dist/replace-browser.js +47 -0
  345. package/dist/resolve-asset-src.d.ts +0 -0
  346. package/dist/resolve-asset-src.js +2 -2
  347. package/dist/sample-rate.d.ts +0 -0
  348. package/dist/sample-rate.js +0 -0
  349. package/dist/screenshot-dom-element.d.ts +8 -4
  350. package/dist/screenshot-dom-element.js +15 -4
  351. package/dist/screenshot-task.d.ts +12 -2
  352. package/dist/screenshot-task.js +44 -14
  353. package/dist/seek-to-frame.d.ts +1 -0
  354. package/dist/seek-to-frame.js +49 -3
  355. package/dist/select-composition.d.ts +33 -0
  356. package/dist/select-composition.js +119 -0
  357. package/dist/serve-handler/index.d.ts +1 -1
  358. package/dist/serve-handler/index.js +21 -19
  359. package/dist/serve-handler/is-path-inside.d.ts +0 -0
  360. package/dist/serve-handler/is-path-inside.js +3 -3
  361. package/dist/serve-handler/range-parser.d.ts +0 -0
  362. package/dist/serve-handler/range-parser.js +0 -0
  363. package/dist/serve-static.d.ts +6 -3
  364. package/dist/serve-static.js +86 -45
  365. package/dist/set-props-and-env.d.ts +7 -3
  366. package/dist/set-props-and-env.js +50 -16
  367. package/dist/stitch-frames-to-video.d.ts +16 -11
  368. package/dist/stitch-frames-to-video.js +165 -79
  369. package/dist/stringify-ffmpeg-filter.d.ts +10 -2
  370. package/dist/stringify-ffmpeg-filter.js +37 -34
  371. package/dist/symbolicate-stacktrace.d.ts +0 -0
  372. package/dist/symbolicate-stacktrace.js +0 -0
  373. package/dist/take-frame-and-compose.d.ts +22 -0
  374. package/dist/take-frame-and-compose.js +103 -0
  375. package/dist/tmp-dir.d.ts +0 -0
  376. package/dist/tmp-dir.js +7 -8
  377. package/dist/truthy.d.ts +0 -0
  378. package/dist/truthy.js +0 -0
  379. package/dist/try-to-extract-frame-of-video-fast.d.ts +12 -0
  380. package/dist/try-to-extract-frame-of-video-fast.js +55 -0
  381. package/dist/types.d.ts +0 -0
  382. package/dist/types.js +0 -0
  383. package/dist/validate-concurrency.d.ts +2 -0
  384. package/dist/validate-concurrency.js +21 -10
  385. package/dist/validate-even-dimensions-with-codec.d.ts +0 -0
  386. package/dist/validate-even-dimensions-with-codec.js +0 -0
  387. package/dist/validate-every-nth-frame.d.ts +2 -1
  388. package/dist/validate-every-nth-frame.js +8 -1
  389. package/dist/validate-ffmpeg-override.d.ts +2 -0
  390. package/dist/validate-ffmpeg-override.js +12 -0
  391. package/dist/validate-ffmpeg.d.ts +7 -2
  392. package/dist/validate-ffmpeg.js +48 -43
  393. package/dist/validate-number-of-gif-loops.d.ts +2 -0
  394. package/dist/validate-number-of-gif-loops.js +24 -0
  395. package/dist/validate-opengl-renderer.d.ts +0 -0
  396. package/dist/validate-opengl-renderer.js +0 -0
  397. package/dist/validate-output-filename.d.ts +7 -2
  398. package/dist/validate-output-filename.js +20 -51
  399. package/dist/validate-puppeteer-timeout.d.ts +0 -0
  400. package/dist/validate-puppeteer-timeout.js +2 -1
  401. package/dist/validate-scale.d.ts +0 -0
  402. package/dist/validate-scale.js +0 -0
  403. package/dist/validate-videobitrate.d.ts +1 -0
  404. package/dist/validate-videobitrate.js +20 -0
  405. package/dist/wait-for-symbolication-error-to-be-done.d.ts +0 -0
  406. package/dist/wait-for-symbolication-error-to-be-done.js +5 -31
  407. package/dist/warn-about-ffmpeg-version.d.ts +5 -0
  408. package/dist/warn-about-ffmpeg-version.js +37 -0
  409. package/dist/ws/ws-types.d.ts +0 -0
  410. package/dist/ws/ws-types.js +2 -1
  411. package/install-toolchain.mjs +36 -0
  412. package/package.json +70 -60
  413. package/types/ws/index.d.ts +5 -5
  414. package/.prettierrc.js +0 -14
  415. package/dist/add-silent-audio-if-necessary.d.ts +0 -8
  416. package/dist/add-silent-audio-if-necessary.d.ts.map +0 -1
  417. package/dist/add-silent-audio-if-necessary.js +0 -51
  418. package/dist/add-silent-audio-if-necessary.js.map +0 -1
  419. package/dist/assets/asset-is-used-at-time.d.ts +0 -3
  420. package/dist/assets/asset-is-used-at-time.d.ts.map +0 -1
  421. package/dist/assets/asset-is-used-at-time.js +0 -8
  422. package/dist/assets/asset-is-used-at-time.js.map +0 -1
  423. package/dist/assets/calculate-asset-positions.d.ts.map +0 -1
  424. package/dist/assets/calculate-asset-positions.js.map +0 -1
  425. package/dist/assets/calculate-atempo.d.ts.map +0 -1
  426. package/dist/assets/calculate-atempo.js.map +0 -1
  427. package/dist/assets/convert-assets-to-file-urls.d.ts.map +0 -1
  428. package/dist/assets/convert-assets-to-file-urls.js.map +0 -1
  429. package/dist/assets/download-and-map-assets-to-file.d.ts.map +0 -1
  430. package/dist/assets/download-and-map-assets-to-file.js.map +0 -1
  431. package/dist/assets/download-file.d.ts.map +0 -1
  432. package/dist/assets/download-file.js.map +0 -1
  433. package/dist/assets/ffmpeg-volume-expression.d.ts.map +0 -1
  434. package/dist/assets/ffmpeg-volume-expression.js.map +0 -1
  435. package/dist/assets/flatten-volume-array.d.ts.map +0 -1
  436. package/dist/assets/flatten-volume-array.js.map +0 -1
  437. package/dist/assets/get-asset-audio-details.d.ts +0 -5
  438. package/dist/assets/get-asset-audio-details.d.ts.map +0 -1
  439. package/dist/assets/get-asset-audio-details.js +0 -21
  440. package/dist/assets/get-asset-audio-details.js.map +0 -1
  441. package/dist/assets/get-audio-channels.d.ts.map +0 -1
  442. package/dist/assets/get-audio-channels.js.map +0 -1
  443. package/dist/assets/get-simulatenous-assets.d.ts +0 -3
  444. package/dist/assets/get-simulatenous-assets.d.ts.map +0 -1
  445. package/dist/assets/get-simulatenous-assets.js +0 -14
  446. package/dist/assets/get-simulatenous-assets.js.map +0 -1
  447. package/dist/assets/read-file.d.ts.map +0 -1
  448. package/dist/assets/read-file.js.map +0 -1
  449. package/dist/assets/round-volume-to-avoid-stack-overflow.d.ts.map +0 -1
  450. package/dist/assets/round-volume-to-avoid-stack-overflow.js.map +0 -1
  451. package/dist/assets/sanitize-filename.d.ts.map +0 -1
  452. package/dist/assets/sanitize-filename.js.map +0 -1
  453. package/dist/assets/sanitize-filepath.d.ts.map +0 -1
  454. package/dist/assets/sanitize-filepath.js.map +0 -1
  455. package/dist/assets/split-assets-into-segments.d.ts +0 -6
  456. package/dist/assets/split-assets-into-segments.d.ts.map +0 -1
  457. package/dist/assets/split-assets-into-segments.js +0 -89
  458. package/dist/assets/split-assets-into-segments.js.map +0 -1
  459. package/dist/assets/truncate-utf8-bytes.d.ts.map +0 -1
  460. package/dist/assets/truncate-utf8-bytes.js.map +0 -1
  461. package/dist/assets/types.d.ts.map +0 -1
  462. package/dist/assets/types.js.map +0 -1
  463. package/dist/assets-to-ffmpeg-inputs.d.ts +0 -7
  464. package/dist/assets-to-ffmpeg-inputs.d.ts.map +0 -1
  465. package/dist/assets-to-ffmpeg-inputs.js +0 -15
  466. package/dist/assets-to-ffmpeg-inputs.js.map +0 -1
  467. package/dist/browser-log.d.ts.map +0 -1
  468. package/dist/browser-log.js.map +0 -1
  469. package/dist/calculate-ffmpeg-filters.d.ts.map +0 -1
  470. package/dist/calculate-ffmpeg-filters.js.map +0 -1
  471. package/dist/can-use-parallel-encoding.d.ts.map +0 -1
  472. package/dist/can-use-parallel-encoding.js.map +0 -1
  473. package/dist/combine-videos.d.ts.map +0 -1
  474. package/dist/combine-videos.js.map +0 -1
  475. package/dist/convert-to-pcm.d.ts +0 -6
  476. package/dist/convert-to-pcm.js +0 -20
  477. package/dist/create-ffmpeg-complex-filter.d.ts.map +0 -1
  478. package/dist/create-ffmpeg-complex-filter.js.map +0 -1
  479. package/dist/cycle-browser-tabs.d.ts.map +0 -1
  480. package/dist/cycle-browser-tabs.js.map +0 -1
  481. package/dist/delay-render-embedded-stack.d.ts.map +0 -1
  482. package/dist/delay-render-embedded-stack.js.map +0 -1
  483. package/dist/delete-directory.d.ts.map +0 -1
  484. package/dist/delete-directory.js.map +0 -1
  485. package/dist/ensure-frames-in-order.d.ts.map +0 -1
  486. package/dist/ensure-frames-in-order.js.map +0 -1
  487. package/dist/ensure-output-directory.d.ts.map +0 -1
  488. package/dist/ensure-output-directory.js.map +0 -1
  489. package/dist/error-handling/handle-javascript-exception.d.ts.map +0 -1
  490. package/dist/error-handling/handle-javascript-exception.js.map +0 -1
  491. package/dist/error-handling/symbolicate-error.d.ts.map +0 -1
  492. package/dist/error-handling/symbolicate-error.js.map +0 -1
  493. package/dist/error-handling/symbolicateable-error.d.ts.map +0 -1
  494. package/dist/error-handling/symbolicateable-error.js.map +0 -1
  495. package/dist/ffmpeg-flags.d.ts.map +0 -1
  496. package/dist/ffmpeg-flags.js.map +0 -1
  497. package/dist/get-audio-codec-name.d.ts +0 -2
  498. package/dist/get-audio-codec-name.d.ts.map +0 -1
  499. package/dist/get-audio-codec-name.js +0 -28
  500. package/dist/get-audio-codec-name.js.map +0 -1
  501. package/dist/get-browser-instance.d.ts.map +0 -1
  502. package/dist/get-browser-instance.js.map +0 -1
  503. package/dist/get-codec-name.d.ts.map +0 -1
  504. package/dist/get-codec-name.js.map +0 -1
  505. package/dist/get-compositions.d.ts.map +0 -1
  506. package/dist/get-compositions.js.map +0 -1
  507. package/dist/get-concurrency.d.ts.map +0 -1
  508. package/dist/get-concurrency.js.map +0 -1
  509. package/dist/get-extension-from-codec.d.ts.map +0 -1
  510. package/dist/get-extension-from-codec.js.map +0 -1
  511. package/dist/get-frame-to-render.d.ts.map +0 -1
  512. package/dist/get-frame-to-render.js.map +0 -1
  513. package/dist/get-local-browser-executable.d.ts.map +0 -1
  514. package/dist/get-local-browser-executable.js.map +0 -1
  515. package/dist/get-port.d.ts.map +0 -1
  516. package/dist/get-port.js.map +0 -1
  517. package/dist/get-prores-profile-name.d.ts.map +0 -1
  518. package/dist/get-prores-profile-name.js.map +0 -1
  519. package/dist/image-format.d.ts.map +0 -1
  520. package/dist/image-format.js.map +0 -1
  521. package/dist/index.d.ts.map +0 -1
  522. package/dist/index.js.map +0 -1
  523. package/dist/is-serve-url.d.ts.map +0 -1
  524. package/dist/is-serve-url.js.map +0 -1
  525. package/dist/legacy-webpack-config.d.ts.map +0 -1
  526. package/dist/legacy-webpack-config.js.map +0 -1
  527. package/dist/make-assets-download-dir.d.ts +0 -1
  528. package/dist/make-assets-download-dir.d.ts.map +0 -1
  529. package/dist/make-assets-download-dir.js +0 -13
  530. package/dist/make-assets-download-dir.js.map +0 -1
  531. package/dist/normalize-serve-url.d.ts.map +0 -1
  532. package/dist/normalize-serve-url.js.map +0 -1
  533. package/dist/open-browser.d.ts.map +0 -1
  534. package/dist/open-browser.js.map +0 -1
  535. package/dist/parse-browser-error-stack.d.ts.map +0 -1
  536. package/dist/parse-browser-error-stack.js.map +0 -1
  537. package/dist/parse-ffmpeg-progress.d.ts.map +0 -1
  538. package/dist/parse-ffmpeg-progress.js.map +0 -1
  539. package/dist/pool.d.ts.map +0 -1
  540. package/dist/pool.js.map +0 -1
  541. package/dist/prepare-server.d.ts.map +0 -1
  542. package/dist/prepare-server.js.map +0 -1
  543. package/dist/provide-screenshot.d.ts.map +0 -1
  544. package/dist/provide-screenshot.js.map +0 -1
  545. package/dist/puppeteer-evaluate.d.ts.map +0 -1
  546. package/dist/puppeteer-evaluate.js.map +0 -1
  547. package/dist/puppeteer-screenshot.d.ts.map +0 -1
  548. package/dist/puppeteer-screenshot.js.map +0 -1
  549. package/dist/render-media.d.ts.map +0 -1
  550. package/dist/render-media.js.map +0 -1
  551. package/dist/render-still.d.ts.map +0 -1
  552. package/dist/render-still.js.map +0 -1
  553. package/dist/render.d.ts +0 -45
  554. package/dist/render.d.ts.map +0 -1
  555. package/dist/render.js +0 -245
  556. package/dist/render.js.map +0 -1
  557. package/dist/resolve-asset-src.d.ts.map +0 -1
  558. package/dist/resolve-asset-src.js.map +0 -1
  559. package/dist/sample-rate.d.ts.map +0 -1
  560. package/dist/sample-rate.js.map +0 -1
  561. package/dist/screenshot-dom-element.d.ts.map +0 -1
  562. package/dist/screenshot-dom-element.js.map +0 -1
  563. package/dist/screenshot-task.d.ts.map +0 -1
  564. package/dist/screenshot-task.js.map +0 -1
  565. package/dist/seek-to-frame.d.ts.map +0 -1
  566. package/dist/seek-to-frame.js.map +0 -1
  567. package/dist/serve-static.d.ts.map +0 -1
  568. package/dist/serve-static.js.map +0 -1
  569. package/dist/set-props-and-env.d.ts.map +0 -1
  570. package/dist/set-props-and-env.js.map +0 -1
  571. package/dist/stitcher.d.ts +0 -32
  572. package/dist/stitcher.d.ts.map +0 -1
  573. package/dist/stitcher.js +0 -204
  574. package/dist/stitcher.js.map +0 -1
  575. package/dist/stringify-ffmpeg-filter.d.ts.map +0 -1
  576. package/dist/stringify-ffmpeg-filter.js.map +0 -1
  577. package/dist/symbolicate-stacktrace.d.ts.map +0 -1
  578. package/dist/symbolicate-stacktrace.js.map +0 -1
  579. package/dist/tmp-dir.d.ts.map +0 -1
  580. package/dist/tmp-dir.js.map +0 -1
  581. package/dist/types.d.ts.map +0 -1
  582. package/dist/types.js.map +0 -1
  583. package/dist/validate-even-dimensions-with-codec.d.ts.map +0 -1
  584. package/dist/validate-even-dimensions-with-codec.js.map +0 -1
  585. package/dist/validate-ffmpeg.d.ts.map +0 -1
  586. package/dist/validate-ffmpeg.js.map +0 -1
  587. package/dist/validate-frame.d.ts +0 -1
  588. package/dist/validate-frame.js +0 -24
  589. package/dist/validate-puppeteer-timeout.d.ts.map +0 -1
  590. package/dist/validate-puppeteer-timeout.js.map +0 -1
  591. package/dist/validate-scale.d.ts.map +0 -1
  592. package/dist/validate-scale.js.map +0 -1
  593. package/tsconfig.json +0 -10
  594. package/vitest.config.ts +0 -8
@@ -4,12 +4,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.renderMedia = void 0;
7
- const fs_1 = __importDefault(require("fs"));
8
- const os_1 = __importDefault(require("os"));
9
- const path_1 = __importDefault(require("path"));
7
+ const node_fs_1 = __importDefault(require("node:fs"));
8
+ const node_os_1 = __importDefault(require("node:os"));
9
+ const node_path_1 = __importDefault(require("node:path"));
10
10
  const remotion_1 = require("remotion");
11
11
  const download_map_1 = require("./assets/download-map");
12
12
  const can_use_parallel_encoding_1 = require("./can-use-parallel-encoding");
13
+ const codec_supports_media_1 = require("./codec-supports-media");
13
14
  const crf_1 = require("./crf");
14
15
  const delete_directory_1 = require("./delete-directory");
15
16
  const ensure_frames_in_order_1 = require("./ensure-frames-in-order");
@@ -18,36 +19,63 @@ const get_duration_from_frame_range_1 = require("./get-duration-from-frame-range
18
19
  const get_extension_from_codec_1 = require("./get-extension-from-codec");
19
20
  const get_extension_of_filename_1 = require("./get-extension-of-filename");
20
21
  const get_frame_to_render_1 = require("./get-frame-to-render");
21
- const legacy_webpack_config_1 = require("./legacy-webpack-config");
22
+ const image_format_1 = require("./image-format");
23
+ const is_audio_codec_1 = require("./is-audio-codec");
24
+ const jpeg_quality_1 = require("./jpeg-quality");
25
+ const logger_1 = require("./logger");
22
26
  const make_cancel_signal_1 = require("./make-cancel-signal");
23
27
  const overwrite_1 = require("./overwrite");
24
28
  const perf_1 = require("./perf");
29
+ const pixel_format_1 = require("./pixel-format");
25
30
  const prespawn_ffmpeg_1 = require("./prespawn-ffmpeg");
26
31
  const prestitcher_memory_usage_1 = require("./prestitcher-memory-usage");
27
- const quality_1 = require("./quality");
32
+ const prores_profile_1 = require("./prores-profile");
28
33
  const render_frames_1 = require("./render-frames");
29
34
  const stitch_frames_to_video_1 = require("./stitch-frames-to-video");
30
35
  const validate_even_dimensions_with_codec_1 = require("./validate-even-dimensions-with-codec");
36
+ const validate_every_nth_frame_1 = require("./validate-every-nth-frame");
37
+ const validate_ffmpeg_override_1 = require("./validate-ffmpeg-override");
38
+ const validate_number_of_gif_loops_1 = require("./validate-number-of-gif-loops");
31
39
  const validate_output_filename_1 = require("./validate-output-filename");
32
40
  const validate_scale_1 = require("./validate-scale");
41
+ const validate_videobitrate_1 = require("./validate-videobitrate");
42
+ const SLOWEST_FRAME_COUNT = 10;
33
43
  /**
34
44
  *
35
45
  * @description Render a video from a composition
36
- * @link https://www.remotion.dev/docs/renderer/render-media
46
+ * @see [Documentation](https://www.remotion.dev/docs/renderer/render-media)
37
47
  */
38
- const renderMedia = ({ parallelism, proResProfile, crf, composition, imageFormat, ffmpegExecutable, ffprobeExecutable, inputProps, pixelFormat, codec, envVariables, quality, frameRange, puppeteerInstance, outputLocation, onProgress, overwrite, onDownload, dumpBrowserLogs, onBrowserLog, onStart, timeoutInMilliseconds, chromiumOptions, scale, browserExecutable, port, cancelSignal, ...options }) => {
39
- var _a, _b, _c;
40
- (0, quality_1.validateQuality)(quality);
41
- if (typeof crf !== 'undefined' && crf !== null) {
42
- (0, crf_1.validateSelectedCrfAndCodecCombination)(crf, codec);
48
+ const renderMedia = ({ proResProfile, crf, composition, inputProps, pixelFormat, codec, envVariables, frameRange, puppeteerInstance, outputLocation, onProgress, overwrite, onDownload, dumpBrowserLogs, onBrowserLog, onStart, timeoutInMilliseconds, chromiumOptions, scale, browserExecutable, port, cancelSignal, muted, enforceAudioTrack, ffmpegOverride, audioBitrate, videoBitrate, audioCodec, ...options }) => {
49
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s;
50
+ if (options.quality) {
51
+ throw new Error(`The "quality" option has been renamed. Please use "jpegQuality" instead.`);
43
52
  }
53
+ (0, jpeg_quality_1.validateJpegQuality)(options.jpegQuality);
54
+ (0, crf_1.validateQualitySettings)({ crf, codec, videoBitrate });
55
+ (0, validate_videobitrate_1.validateBitrate)(audioBitrate, 'audioBitrate');
56
+ (0, validate_videobitrate_1.validateBitrate)(videoBitrate, 'videoBitrate');
57
+ (0, prores_profile_1.validateSelectedCodecAndProResCombination)({
58
+ codec,
59
+ proResProfile,
60
+ });
61
+ (0, pixel_format_1.validateSelectedPixelFormatAndCodecCombination)(pixelFormat, codec);
44
62
  if (outputLocation) {
45
- (0, validate_output_filename_1.validateOutputFilename)(codec, (0, get_extension_of_filename_1.getExtensionOfFilename)(outputLocation));
63
+ (0, validate_output_filename_1.validateOutputFilename)({
64
+ codec,
65
+ audioCodec: audioCodec !== null && audioCodec !== void 0 ? audioCodec : null,
66
+ extension: (0, get_extension_of_filename_1.getExtensionOfFilename)(outputLocation),
67
+ preferLossless: (_a = options.preferLossless) !== null && _a !== void 0 ? _a : false,
68
+ });
46
69
  }
70
+ const absoluteOutputLocation = outputLocation
71
+ ? node_path_1.default.resolve(process.cwd(), outputLocation)
72
+ : null;
47
73
  (0, validate_scale_1.validateScale)(scale);
48
- const everyNthFrame = (_a = options.everyNthFrame) !== null && _a !== void 0 ? _a : 1;
49
- const numberOfGifLoops = (_b = options.numberOfGifLoops) !== null && _b !== void 0 ? _b : null;
50
- const serveUrl = (0, legacy_webpack_config_1.getServeUrlWithFallback)(options);
74
+ (0, validate_ffmpeg_override_1.validateFfmpegOverride)(ffmpegOverride);
75
+ const everyNthFrame = (_b = options.everyNthFrame) !== null && _b !== void 0 ? _b : 1;
76
+ (0, validate_every_nth_frame_1.validateEveryNthFrame)(everyNthFrame, codec);
77
+ const numberOfGifLoops = (_c = options.numberOfGifLoops) !== null && _c !== void 0 ? _c : null;
78
+ (0, validate_number_of_gif_loops_1.validateNumberOfGifLoops)(numberOfGifLoops, codec);
51
79
  let stitchStage = 'encoding';
52
80
  let stitcherFfmpeg;
53
81
  let preStitcher = null;
@@ -57,29 +85,57 @@ const renderMedia = ({ parallelism, proResProfile, crf, composition, imageFormat
57
85
  let encodedDoneIn = null;
58
86
  let cancelled = false;
59
87
  const renderStart = Date.now();
60
- const downloadMap = (_c = options.downloadMap) !== null && _c !== void 0 ? _c : (0, download_map_1.makeDownloadMap)();
88
+ const downloadMap = (_e = (_d = options.internal) === null || _d === void 0 ? void 0 : _d.downloadMap) !== null && _e !== void 0 ? _e : (0, download_map_1.makeDownloadMap)();
61
89
  const { estimatedUsage, freeMemory, hasEnoughMemory } = (0, prestitcher_memory_usage_1.shouldUseParallelEncoding)({
62
90
  height: composition.height,
63
91
  width: composition.width,
64
92
  });
65
- const parallelEncoding = hasEnoughMemory && (0, can_use_parallel_encoding_1.canUseParallelEncoding)(codec);
66
- if (options.verbose) {
67
- console.log('[PRESTITCHER] Free memory:', freeMemory, 'Estimated usage parallel encoding', estimatedUsage);
68
- console.log('[PRESTICHER]: Codec supports parallel rendering:', (0, can_use_parallel_encoding_1.canUseParallelEncoding)(codec));
69
- if (parallelEncoding) {
70
- console.log('[PRESTICHER] Parallel encoding is enabled.');
71
- }
72
- else {
73
- console.log('[PRESTITCHER] Parallel encoding is disabled.');
74
- }
93
+ const parallelEncoding = !options.disallowParallelEncoding &&
94
+ hasEnoughMemory &&
95
+ (0, can_use_parallel_encoding_1.canUseParallelEncoding)(codec);
96
+ logger_1.Log.verboseAdvanced({
97
+ indent: (_g = (_f = options.internal) === null || _f === void 0 ? void 0 : _f.indent) !== null && _g !== void 0 ? _g : false,
98
+ logLevel: options.verbose ? 'verbose' : 'info',
99
+ tag: 'PARALLEL ENCODING',
100
+ }, 'Free memory:', freeMemory, 'Estimated usage parallel encoding', estimatedUsage);
101
+ logger_1.Log.verboseAdvanced({
102
+ indent: (_j = (_h = options.internal) === null || _h === void 0 ? void 0 : _h.indent) !== null && _j !== void 0 ? _j : false,
103
+ logLevel: options.verbose ? 'verbose' : 'info',
104
+ tag: 'PARALLEL ENCODING',
105
+ }, 'Codec supports parallel rendering:', (0, can_use_parallel_encoding_1.canUseParallelEncoding)(codec));
106
+ logger_1.Log.verboseAdvanced({
107
+ indent: (_l = (_k = options.internal) === null || _k === void 0 ? void 0 : _k.indent) !== null && _l !== void 0 ? _l : false,
108
+ logLevel: options.verbose ? 'verbose' : 'info',
109
+ tag: 'PARALLEL ENCODING',
110
+ }, 'User disallowed parallel encoding:', Boolean(options.disallowParallelEncoding));
111
+ if (parallelEncoding) {
112
+ logger_1.Log.verboseAdvanced({
113
+ indent: (_o = (_m = options.internal) === null || _m === void 0 ? void 0 : _m.indent) !== null && _o !== void 0 ? _o : false,
114
+ logLevel: options.verbose ? 'verbose' : 'info',
115
+ tag: 'PARALLEL ENCODING',
116
+ }, 'Parallel encoding is enabled.');
75
117
  }
76
- const actualImageFormat = imageFormat !== null && imageFormat !== void 0 ? imageFormat : 'jpeg';
118
+ else {
119
+ logger_1.Log.verboseAdvanced({
120
+ indent: (_q = (_p = options.internal) === null || _p === void 0 ? void 0 : _p.indent) !== null && _q !== void 0 ? _q : false,
121
+ logLevel: options.verbose ? 'verbose' : 'info',
122
+ tag: 'PARALLEL ENCODING',
123
+ }, 'Parallel encoding is disabled.');
124
+ }
125
+ const imageFormat = (0, is_audio_codec_1.isAudioCodec)(codec)
126
+ ? 'none'
127
+ : (_r = options.imageFormat) !== null && _r !== void 0 ? _r : 'jpeg';
128
+ const jpegQuality = imageFormat === 'jpeg' ? options.jpegQuality : undefined;
129
+ (0, image_format_1.validateSelectedPixelFormatAndImageFormatCombination)(pixelFormat, imageFormat);
77
130
  const preEncodedFileLocation = parallelEncoding
78
- ? path_1.default.join(downloadMap.preEncode, 'pre-encode.' + (0, get_extension_from_codec_1.getFileExtensionFromCodec)(codec, 'chunk'))
131
+ ? node_path_1.default.join(downloadMap.preEncode, 'pre-encode.' + (0, get_extension_from_codec_1.getFileExtensionFromCodec)(codec, audioCodec !== null && audioCodec !== void 0 ? audioCodec : null))
79
132
  : null;
80
133
  const outputDir = parallelEncoding
81
134
  ? null
82
- : fs_1.default.mkdtempSync(path_1.default.join(os_1.default.tmpdir(), 'react-motion-render'));
135
+ : node_fs_1.default.mkdtempSync(node_path_1.default.join(node_os_1.default.tmpdir(), 'react-motion-render'));
136
+ if (((_s = options.internal) === null || _s === void 0 ? void 0 : _s.onCtrlCExit) && outputDir) {
137
+ options.internal.onCtrlCExit(() => (0, delete_directory_1.deleteDirectory)(outputDir));
138
+ }
83
139
  (0, validate_even_dimensions_with_codec_1.validateEvenDimensionsWithCodec)({
84
140
  codec,
85
141
  height: composition.height,
@@ -93,6 +149,9 @@ const renderMedia = ({ parallelism, proResProfile, crf, composition, imageFormat
93
149
  renderedDoneIn,
94
150
  renderedFrames,
95
151
  stitchStage,
152
+ progress: Math.round(((0.7 * renderedFrames + 0.3 * encodedFrames) /
153
+ composition.durationInFrames) *
154
+ 100) / 100,
96
155
  });
97
156
  };
98
157
  const realFrameRange = (0, get_frame_to_render_1.getRealFrameRange)(composition.durationInFrames, frameRange !== null && frameRange !== void 0 ? frameRange : null);
@@ -105,10 +164,10 @@ const renderMedia = ({ parallelism, proResProfile, crf, composition, imageFormat
105
164
  const { waitForRightTimeOfFrameToBeInserted, setFrameToStitch, waitForFinish } = (0, ensure_frames_in_order_1.ensureFramesInOrder)(realFrameRange);
106
165
  const fps = composition.fps / (everyNthFrame !== null && everyNthFrame !== void 0 ? everyNthFrame : 1);
107
166
  remotion_1.Internals.validateFps(fps, 'in "renderMedia()"', codec === 'gif');
108
- const createPrestitcherIfNecessary = async () => {
109
- var _a;
167
+ const createPrestitcherIfNecessary = () => {
168
+ var _a, _b, _c;
110
169
  if (preEncodedFileLocation) {
111
- preStitcher = await (0, prespawn_ffmpeg_1.prespawnFfmpeg)({
170
+ preStitcher = (0, prespawn_ffmpeg_1.prespawnFfmpeg)({
112
171
  width: composition.width * (scale !== null && scale !== void 0 ? scale : 1),
113
172
  height: composition.height * (scale !== null && scale !== void 0 ? scale : 1),
114
173
  fps,
@@ -122,9 +181,11 @@ const renderMedia = ({ parallelism, proResProfile, crf, composition, imageFormat
122
181
  callUpdate();
123
182
  },
124
183
  verbose: (_a = options.verbose) !== null && _a !== void 0 ? _a : false,
125
- ffmpegExecutable,
126
- imageFormat: actualImageFormat,
184
+ imageFormat,
127
185
  signal: cancelPrestitcher.cancelSignal,
186
+ ffmpegOverride: ffmpegOverride !== null && ffmpegOverride !== void 0 ? ffmpegOverride : (({ args }) => args),
187
+ videoBitrate: videoBitrate !== null && videoBitrate !== void 0 ? videoBitrate : null,
188
+ indent: (_c = (_b = options.internal) === null || _b === void 0 ? void 0 : _b.indent) !== null && _c !== void 0 ? _c : false,
128
189
  });
129
190
  stitcherFfmpeg = preStitcher.task;
130
191
  }
@@ -142,25 +203,53 @@ const renderMedia = ({ parallelism, proResProfile, crf, composition, imageFormat
142
203
  }
143
204
  }
144
205
  };
145
- const happyPath = createPrestitcherIfNecessary()
206
+ const mediaSupport = (0, codec_supports_media_1.codecSupportsMedia)(codec);
207
+ const disableAudio = !mediaSupport.audio || muted;
208
+ const slowestFrames = [];
209
+ let maxTime = 0;
210
+ let minTime = 0;
211
+ const recordFrameTime = (frameIndex, time) => {
212
+ var _a, _b;
213
+ const frameTime = { frame: frameIndex, time };
214
+ if (time < minTime && slowestFrames.length === SLOWEST_FRAME_COUNT) {
215
+ return;
216
+ }
217
+ if (time > maxTime) {
218
+ // add at starting;
219
+ slowestFrames.unshift(frameTime);
220
+ maxTime = time;
221
+ }
222
+ else {
223
+ // add frame at appropriate position
224
+ const index = slowestFrames.findIndex(({ time: indexTime }) => indexTime < time);
225
+ slowestFrames.splice(index, 0, frameTime);
226
+ }
227
+ if (slowestFrames.length > SLOWEST_FRAME_COUNT) {
228
+ slowestFrames.pop();
229
+ }
230
+ minTime = (_b = (_a = slowestFrames[slowestFrames.length - 1]) === null || _a === void 0 ? void 0 : _a.time) !== null && _b !== void 0 ? _b : minTime;
231
+ };
232
+ const happyPath = Promise.resolve(createPrestitcherIfNecessary())
146
233
  .then(() => {
234
+ var _a, _b, _c;
147
235
  const renderFramesProc = (0, render_frames_1.renderFrames)({
148
- config: composition,
149
- onFrameUpdate: (frame) => {
236
+ composition,
237
+ onFrameUpdate: (frame, frameIndex, timeToRenderInMilliseconds) => {
150
238
  renderedFrames = frame;
151
239
  callUpdate();
240
+ recordFrameTime(frameIndex, timeToRenderInMilliseconds);
152
241
  },
153
- parallelism,
242
+ concurrency: options.concurrency,
154
243
  outputDir,
155
244
  onStart: (data) => {
156
245
  renderedFrames = 0;
157
246
  callUpdate();
158
247
  onStart === null || onStart === void 0 ? void 0 : onStart(data);
159
248
  },
160
- inputProps,
249
+ inputProps: inputProps !== null && inputProps !== void 0 ? inputProps : {},
161
250
  envVariables,
162
- imageFormat: actualImageFormat,
163
- quality,
251
+ imageFormat,
252
+ jpegQuality,
164
253
  frameRange: frameRange !== null && frameRange !== void 0 ? frameRange : null,
165
254
  puppeteerInstance,
166
255
  everyNthFrame,
@@ -177,19 +266,20 @@ const renderMedia = ({ parallelism, proResProfile, crf, composition, imageFormat
177
266
  setFrameToStitch(Math.min(realFrameRange[1] + 1, frame + everyNthFrame));
178
267
  }
179
268
  : undefined,
180
- serveUrl,
269
+ serveUrl: options.serveUrl,
181
270
  dumpBrowserLogs,
182
271
  onBrowserLog,
183
272
  onDownload,
184
273
  timeoutInMilliseconds,
185
274
  chromiumOptions,
186
275
  scale,
187
- ffmpegExecutable,
188
- ffprobeExecutable,
189
276
  browserExecutable,
190
277
  port,
191
278
  cancelSignal: cancelRenderFrames.cancelSignal,
192
279
  downloadMap,
280
+ muted: disableAudio,
281
+ verbose: (_a = options.verbose) !== null && _a !== void 0 ? _a : false,
282
+ indent: (_c = (_b = options.internal) === null || _b === void 0 ? void 0 : _b.indent) !== null && _c !== void 0 ? _c : false,
193
283
  });
194
284
  return renderFramesProc;
195
285
  })
@@ -197,10 +287,11 @@ const renderMedia = ({ parallelism, proResProfile, crf, composition, imageFormat
197
287
  return Promise.all([renderFramesReturn, waitForPrestitcherIfNecessary()]);
198
288
  })
199
289
  .then(([{ assetsInfo }]) => {
290
+ var _a, _b, _c;
200
291
  renderedDoneIn = Date.now() - renderStart;
201
292
  callUpdate();
202
- if (outputLocation) {
203
- (0, ensure_output_directory_1.ensureOutputDirectory)(outputLocation);
293
+ if (absoluteOutputLocation) {
294
+ (0, ensure_output_directory_1.ensureOutputDirectory)(absoluteOutputLocation);
204
295
  }
205
296
  const stitchStart = Date.now();
206
297
  return Promise.all([
@@ -208,10 +299,12 @@ const renderMedia = ({ parallelism, proResProfile, crf, composition, imageFormat
208
299
  width: composition.width * (scale !== null && scale !== void 0 ? scale : 1),
209
300
  height: composition.height * (scale !== null && scale !== void 0 ? scale : 1),
210
301
  fps,
211
- outputLocation,
302
+ outputLocation: absoluteOutputLocation,
212
303
  internalOptions: {
213
304
  preEncodedFileLocation,
214
- imageFormat: actualImageFormat,
305
+ imageFormat,
306
+ preferLossless: (_a = options.preferLossless) !== null && _a !== void 0 ? _a : false,
307
+ indent: (_c = (_b = options.internal) === null || _b === void 0 ? void 0 : _b.indent) !== null && _c !== void 0 ? _c : false,
215
308
  },
216
309
  force: overwrite !== null && overwrite !== void 0 ? overwrite : overwrite_1.DEFAULT_OVERWRITE,
217
310
  pixelFormat,
@@ -219,8 +312,6 @@ const renderMedia = ({ parallelism, proResProfile, crf, composition, imageFormat
219
312
  proResProfile,
220
313
  crf,
221
314
  assetsInfo,
222
- ffmpegExecutable,
223
- ffprobeExecutable,
224
315
  onProgress: (frame) => {
225
316
  stitchStage = 'muxing';
226
317
  encodedFrames = frame;
@@ -231,6 +322,12 @@ const renderMedia = ({ parallelism, proResProfile, crf, composition, imageFormat
231
322
  verbose: options.verbose,
232
323
  dir: outputDir !== null && outputDir !== void 0 ? outputDir : undefined,
233
324
  cancelSignal: cancelStitcher.cancelSignal,
325
+ muted: disableAudio,
326
+ enforceAudioTrack,
327
+ ffmpegOverride,
328
+ audioBitrate,
329
+ videoBitrate,
330
+ audioCodec: audioCodec !== null && audioCodec !== void 0 ? audioCodec : null,
234
331
  }),
235
332
  stitchStart,
236
333
  ]);
@@ -239,7 +336,12 @@ const renderMedia = ({ parallelism, proResProfile, crf, composition, imageFormat
239
336
  encodedFrames = (0, get_duration_from_frame_range_1.getFramesToRender)(realFrameRange, everyNthFrame).length;
240
337
  encodedDoneIn = Date.now() - stitchStart;
241
338
  callUpdate();
242
- return buffer;
339
+ slowestFrames.sort((a, b) => b.time - a.time);
340
+ const result = {
341
+ buffer,
342
+ slowestFrames,
343
+ };
344
+ return result;
243
345
  })
244
346
  .catch((err) => {
245
347
  /**
@@ -265,20 +367,25 @@ const renderMedia = ({ parallelism, proResProfile, crf, composition, imageFormat
265
367
  throw err;
266
368
  })
267
369
  .finally(() => {
370
+ var _a;
268
371
  if (preEncodedFileLocation !== null &&
269
- fs_1.default.existsSync(preEncodedFileLocation)) {
270
- (0, delete_directory_1.deleteDirectory)(path_1.default.dirname(preEncodedFileLocation));
372
+ node_fs_1.default.existsSync(preEncodedFileLocation)) {
373
+ (0, delete_directory_1.deleteDirectory)(node_path_1.default.dirname(preEncodedFileLocation));
271
374
  }
272
375
  // Clean download map if it was not passed in
273
- if (!(options === null || options === void 0 ? void 0 : options.downloadMap)) {
376
+ if (!((_a = options.internal) === null || _a === void 0 ? void 0 : _a.downloadMap)) {
274
377
  (0, download_map_1.cleanDownloadMap)(downloadMap);
275
378
  }
379
+ // Clean temporary image frames when rendering ends or fails
380
+ if (outputDir && node_fs_1.default.existsSync(outputDir)) {
381
+ (0, delete_directory_1.deleteDirectory)(outputDir);
382
+ }
276
383
  });
277
384
  return Promise.race([
278
385
  happyPath,
279
386
  new Promise((_resolve, reject) => {
280
387
  cancelSignal === null || cancelSignal === void 0 ? void 0 : cancelSignal(() => {
281
- reject(new Error('renderMedia() got cancelled'));
388
+ reject(new Error(make_cancel_signal_1.cancelErrorMessages.renderMedia));
282
389
  });
283
390
  }),
284
391
  ]);
@@ -1,44 +1,56 @@
1
- import type { SmallTCompMetadata } from 'remotion';
1
+ /// <reference types="node" />
2
+ import type { AnySmallCompMetadata } from 'remotion';
2
3
  import type { RenderMediaOnDownload } from './assets/download-and-map-assets-to-file';
3
4
  import type { DownloadMap } from './assets/download-map';
4
5
  import type { BrowserExecutable } from './browser-executable';
5
- import type { Browser as PuppeteerBrowser } from './browser/Browser';
6
- import type { FfmpegExecutable } from './ffmpeg-executable';
6
+ import type { BrowserLog } from './browser-log';
7
+ import type { HeadlessBrowser } from './browser/Browser';
7
8
  import type { StillImageFormat } from './image-format';
8
- import type { ServeUrlOrWebpackBundle } from './legacy-webpack-config';
9
9
  import type { CancelSignal } from './make-cancel-signal';
10
10
  import type { ChromiumOptions } from './open-browser';
11
11
  declare type InnerStillOptions = {
12
- composition: SmallTCompMetadata;
13
- output: string;
12
+ composition: AnySmallCompMetadata;
13
+ output?: string | null;
14
14
  frame?: number;
15
- inputProps?: unknown;
15
+ inputProps?: Record<string, unknown>;
16
16
  imageFormat?: StillImageFormat;
17
- quality?: number;
18
- puppeteerInstance?: PuppeteerBrowser;
17
+ /**
18
+ * @deprecated Renamed to `jpegQuality`
19
+ */
20
+ quality?: never;
21
+ jpegQuality?: number;
22
+ puppeteerInstance?: HeadlessBrowser;
19
23
  dumpBrowserLogs?: boolean;
20
24
  envVariables?: Record<string, string>;
21
25
  overwrite?: boolean;
22
26
  browserExecutable?: BrowserExecutable;
27
+ onBrowserLog?: (log: BrowserLog) => void;
23
28
  timeoutInMilliseconds?: number;
24
29
  chromiumOptions?: ChromiumOptions;
25
30
  scale?: number;
26
31
  onDownload?: RenderMediaOnDownload;
27
32
  cancelSignal?: CancelSignal;
28
- ffmpegExecutable?: FfmpegExecutable;
29
- ffprobeExecutable?: FfmpegExecutable;
30
33
  /**
31
34
  * @deprecated Only for Remotion internal usage
32
35
  */
33
36
  downloadMap?: DownloadMap;
37
+ /**
38
+ * @deprecated Only for Remotion internal usage
39
+ */
40
+ indent?: boolean;
41
+ verbose?: boolean;
42
+ };
43
+ declare type RenderStillReturnValue = {
44
+ buffer: Buffer | null;
34
45
  };
35
- declare type RenderStillOptions = InnerStillOptions & ServeUrlOrWebpackBundle & {
46
+ export declare type RenderStillOptions = InnerStillOptions & {
47
+ serveUrl: string;
36
48
  port?: number | null;
37
49
  };
38
50
  /**
39
51
  *
40
52
  * @description Render a still frame from a composition
41
- * @link https://www.remotion.dev/docs/renderer/render-still
53
+ * @see [Documentation](https://www.remotion.dev/docs/renderer/render-still)
42
54
  */
43
- export declare const renderStill: (options: RenderStillOptions) => Promise<void>;
55
+ export declare const renderStill: (options: RenderStillOptions) => Promise<RenderStillReturnValue>;
44
56
  export {};