@remotion/renderer 4.0.0-lambda.1 → 4.0.0-newpathfunctions.13

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