@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
@@ -3,31 +3,81 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getFfmpegVersion = exports.parseFfmpegVersion = exports.ffmpegHasFeature = exports.getFfmpegBuildInfo = void 0;
6
+ exports.warnAboutFfmpegVersion = exports.getBinaryDownloadUrl = exports.getExecutableBinary = exports.lambdaFfmpegPaths = exports.downloadBinary = exports.getFfmpegVersion = exports.parseFfmpegVersion = exports.ffmpegHasFeature = exports.ffmpegInNodeModules = exports.getFfmpegBuildInfo = void 0;
7
7
  const execa_1 = __importDefault(require("execa"));
8
+ const fs_1 = __importDefault(require("fs"));
9
+ const os_1 = __importDefault(require("os"));
10
+ const path_1 = __importDefault(require("path"));
11
+ const BrowserFetcher_1 = require("./browser/BrowserFetcher");
8
12
  const validate_ffmpeg_1 = require("./validate-ffmpeg");
9
13
  let buildConfig = null;
14
+ const listeners = {};
15
+ const isDownloading = {};
10
16
  const getFfmpegBuildInfo = async (options) => {
11
- var _a;
12
17
  if (buildConfig !== null) {
13
18
  return buildConfig;
14
19
  }
15
- const data = await (0, execa_1.default)((_a = options.ffmpegExecutable) !== null && _a !== void 0 ? _a : 'ffmpeg', ['-buildconf'], {
20
+ const data = await (0, execa_1.default)(await (0, exports.getExecutableBinary)(options.ffmpegExecutable, options.remotionRoot, 'ffmpeg'), ['-buildconf'], {
16
21
  reject: false,
17
22
  });
18
23
  buildConfig = data.stderr;
19
24
  return buildConfig;
20
25
  };
21
26
  exports.getFfmpegBuildInfo = getFfmpegBuildInfo;
22
- const ffmpegHasFeature = async ({ ffmpegExecutable, feature, isLambda, }) => {
23
- if (isLambda) {
24
- // When rendering in the cloud, we don't need a local binary
25
- return true;
27
+ const getFfmpegFolderName = (remotionRoot) => {
28
+ return path_1.default.resolve(remotionRoot, 'node_modules/.ffmpeg');
29
+ };
30
+ const binaryPrefix = { ffmpeg: 'ffmpeg-', ffprobe: 'ffprobe-' };
31
+ const randomFfmpegRuntimeId = String(Math.random()).replace('0.', '');
32
+ const ffmpegInNodeModules = (remotionRoot, binary) => {
33
+ const folderName = getFfmpegFolderName(remotionRoot);
34
+ if (!fs_1.default.existsSync(folderName)) {
35
+ fs_1.default.mkdirSync(folderName, {
36
+ recursive: true,
37
+ });
38
+ }
39
+ // Check if a version of FFMPEG is already installed.
40
+ // To qualify, it must have the expected file size
41
+ // to avoid finding binaries that are still being downloaded
42
+ // A random ID is being assigned to the download to avoid conflicts when multiple Remotion processes are running
43
+ const ffmpegInstalled = fs_1.default.readdirSync(folderName).find((filename) => {
44
+ if (!filename.startsWith(binaryPrefix[binary])) {
45
+ return false;
46
+ }
47
+ const dlUrl = (0, exports.getBinaryDownloadUrl)(binary);
48
+ if (!dlUrl) {
49
+ return false;
50
+ }
51
+ const expectedLength = dlUrl.contentLength;
52
+ if (fs_1.default.statSync(path_1.default.join(folderName, filename)).size === expectedLength) {
53
+ return true;
54
+ }
55
+ return false;
56
+ });
57
+ if (ffmpegInstalled) {
58
+ return path_1.default.join(folderName, ffmpegInstalled);
59
+ }
60
+ return null;
61
+ };
62
+ exports.ffmpegInNodeModules = ffmpegInNodeModules;
63
+ const getFfmpegAbsolutePath = (remotionRoot, binary) => {
64
+ const folderName = getFfmpegFolderName(remotionRoot);
65
+ if (!fs_1.default.existsSync(folderName)) {
66
+ fs_1.default.mkdirSync(folderName);
67
+ }
68
+ if (os_1.default.platform() === 'win32') {
69
+ return path_1.default.resolve(folderName, `${binaryPrefix[binary]}${randomFfmpegRuntimeId}.exe`);
70
+ }
71
+ return path_1.default.resolve(folderName, `${binaryPrefix[binary]}${randomFfmpegRuntimeId}`);
72
+ };
73
+ const ffmpegHasFeature = async ({ ffmpegExecutable, feature, remotionRoot, }) => {
74
+ if (ffmpegExecutable && !(0, validate_ffmpeg_1.customExecutableExists)(ffmpegExecutable)) {
75
+ return false;
26
76
  }
27
- if (!(await (0, validate_ffmpeg_1.binaryExists)('ffmpeg', ffmpegExecutable))) {
77
+ if (!(0, validate_ffmpeg_1.binaryExists)('ffmpeg')) {
28
78
  return false;
29
79
  }
30
- const config = await (0, exports.getFfmpegBuildInfo)({ ffmpegExecutable });
80
+ const config = await (0, exports.getFfmpegBuildInfo)({ ffmpegExecutable, remotionRoot });
31
81
  return config.includes(feature);
32
82
  };
33
83
  exports.ffmpegHasFeature = ffmpegHasFeature;
@@ -43,7 +93,153 @@ exports.parseFfmpegVersion = parseFfmpegVersion;
43
93
  const getFfmpegVersion = async (options) => {
44
94
  const buildInfo = await (0, exports.getFfmpegBuildInfo)({
45
95
  ffmpegExecutable: options.ffmpegExecutable,
96
+ remotionRoot: options.remotionRoot,
46
97
  });
47
98
  return (0, exports.parseFfmpegVersion)(buildInfo);
48
99
  };
49
100
  exports.getFfmpegVersion = getFfmpegVersion;
101
+ const waitForFfmpegToBeDownloaded = (url) => {
102
+ return new Promise((resolve) => {
103
+ if (!listeners[url]) {
104
+ listeners[url] = [];
105
+ }
106
+ listeners[url].push((src) => resolve(src));
107
+ });
108
+ };
109
+ const onProgress = (downloadedBytes, totalBytesToDownload, binary) => {
110
+ console.log('Downloading ', binary, `${toMegabytes(downloadedBytes)}/${toMegabytes(totalBytesToDownload)}`);
111
+ };
112
+ const downloadBinary = async (remotionRoot, url, binary) => {
113
+ const destinationPath = getFfmpegAbsolutePath(remotionRoot, binary);
114
+ const onProgressCallback = (downloadedBytes, _totalBytes) => {
115
+ onProgress(downloadedBytes, _totalBytes, binary);
116
+ };
117
+ isDownloading[url] = true;
118
+ const totalBytes = await (0, BrowserFetcher_1._downloadFile)(url, destinationPath, onProgressCallback);
119
+ onProgress(totalBytes, totalBytes, binary);
120
+ if (os_1.default.platform() !== 'win32') {
121
+ fs_1.default.chmodSync(destinationPath, '777');
122
+ }
123
+ isDownloading[url] = false;
124
+ if (!listeners[url]) {
125
+ listeners[url] = [];
126
+ }
127
+ listeners[url].forEach((listener) => listener(destinationPath));
128
+ listeners[url] = [];
129
+ return destinationPath;
130
+ };
131
+ exports.downloadBinary = downloadBinary;
132
+ exports.lambdaFfmpegPaths = {
133
+ ffmpeg: '/opt/bin/ffmpeg',
134
+ ffprobe: '/opt/bin/ffprobe',
135
+ };
136
+ const getExecutableBinary = (ffmpegExecutable, remotionRoot, binary) => {
137
+ if (fs_1.default.existsSync(exports.lambdaFfmpegPaths[binary])) {
138
+ return exports.lambdaFfmpegPaths[binary];
139
+ }
140
+ if (ffmpegExecutable && (0, validate_ffmpeg_1.customExecutableExists)(ffmpegExecutable)) {
141
+ return ffmpegExecutable;
142
+ }
143
+ if ((0, validate_ffmpeg_1.binaryExists)(binary)) {
144
+ return binary;
145
+ }
146
+ const dlUrl = (0, exports.getBinaryDownloadUrl)(binary);
147
+ if (dlUrl && isDownloading[dlUrl.url]) {
148
+ return waitForFfmpegToBeDownloaded(dlUrl.url);
149
+ }
150
+ const inNodeMod = (0, exports.ffmpegInNodeModules)(remotionRoot, binary);
151
+ if (inNodeMod) {
152
+ return inNodeMod;
153
+ }
154
+ if (!dlUrl) {
155
+ throw new Error(`${binary} could not be installed automatically. Your architecture and OS combination (os = ${os_1.default.platform()}, arch = ${process.arch}) is not supported. Please install ${binary} manually and add "${binary}" to your PATH.`);
156
+ }
157
+ return (0, exports.downloadBinary)(remotionRoot, dlUrl.url, binary);
158
+ };
159
+ exports.getExecutableBinary = getExecutableBinary;
160
+ function toMegabytes(bytes) {
161
+ const mb = bytes / 1024 / 1024;
162
+ return `${Math.round(mb * 10) / 10} Mb`;
163
+ }
164
+ const getBinaryDownloadUrl = (binary) => {
165
+ if (os_1.default.platform() === 'win32' && process.arch === 'x64') {
166
+ return binary === 'ffmpeg'
167
+ ? {
168
+ url: 'https://remotion-ffmpeg-binaries.s3.eu-central-1.amazonaws.com/ffmpeg-win-x86.exe',
169
+ contentLength: 127531008,
170
+ }
171
+ : {
172
+ url: 'https://remotion-ffmpeg-binaries.s3.eu-central-1.amazonaws.com/ffprobe-win-x86.exe',
173
+ contentLength: 127425536,
174
+ };
175
+ }
176
+ if (os_1.default.platform() === 'darwin' && process.arch === 'arm64') {
177
+ return binary === 'ffmpeg'
178
+ ? {
179
+ url: 'https://remotion-ffmpeg-binaries.s3.eu-central-1.amazonaws.com/ffmpeg-macos-arm64',
180
+ contentLength: 42093320,
181
+ }
182
+ : {
183
+ url: 'https://remotion-ffmpeg-binaries.s3.eu-central-1.amazonaws.com/ffprobe-macos-arm64-v2',
184
+ contentLength: 46690008,
185
+ };
186
+ }
187
+ if (os_1.default.platform() === 'darwin' && process.arch === 'x64') {
188
+ return binary === 'ffmpeg'
189
+ ? {
190
+ url: 'https://remotion-ffmpeg-binaries.s3.eu-central-1.amazonaws.com/ffmpeg-macos-x86',
191
+ contentLength: 78380700,
192
+ }
193
+ : {
194
+ url: 'https://remotion-ffmpeg-binaries.s3.eu-central-1.amazonaws.com/ffprobe-macos-x86',
195
+ contentLength: 77364284,
196
+ };
197
+ }
198
+ if (os_1.default.platform() === 'linux' && process.arch === 'x64') {
199
+ return binary === 'ffmpeg'
200
+ ? {
201
+ url: 'https://remotion-ffmpeg-binaries.s3.eu-central-1.amazonaws.com/ffmpeg-linux-amd64',
202
+ contentLength: 78502560,
203
+ }
204
+ : {
205
+ url: 'https://remotion-ffmpeg-binaries.s3.eu-central-1.amazonaws.com/ffprobe-linux-amd64',
206
+ contentLength: 78400704,
207
+ };
208
+ }
209
+ return null;
210
+ };
211
+ exports.getBinaryDownloadUrl = getBinaryDownloadUrl;
212
+ const printMessage = (ffmpegVersion) => {
213
+ console.warn('⚠️Old FFMPEG version detected: ' + ffmpegVersion.join('.'));
214
+ console.warn(' You need at least version 4.1.0.');
215
+ console.warn(' Upgrade FFMPEG to get rid of this warning.');
216
+ };
217
+ const printBuildConfMessage = () => {
218
+ console.error('⚠️ Unsupported FFMPEG version detected.');
219
+ console.error(" Your version doesn't support the -buildconf flag");
220
+ console.error(' Audio will not be supported and you may experience other issues.');
221
+ console.error(' Upgrade FFMPEG to at least v4.1.0 to get rid of this warning.');
222
+ };
223
+ const warnAboutFfmpegVersion = ({ ffmpegVersion, buildConf, }) => {
224
+ if (buildConf === null) {
225
+ printBuildConfMessage();
226
+ return;
227
+ }
228
+ if (ffmpegVersion === null) {
229
+ return null;
230
+ }
231
+ const [major, minor] = ffmpegVersion;
232
+ // 3.x and below definitely is too old
233
+ if (major < 4) {
234
+ printMessage(ffmpegVersion);
235
+ return;
236
+ }
237
+ // 5.x will be all good
238
+ if (major > 4) {
239
+ return;
240
+ }
241
+ if (minor < 1) {
242
+ printMessage(ffmpegVersion);
243
+ }
244
+ };
245
+ exports.warnAboutFfmpegVersion = warnAboutFfmpegVersion;
@@ -0,0 +1,4 @@
1
+ export declare type FfmpegOverrideFn = (info: {
2
+ type: 'pre-stitcher' | 'stitcher';
3
+ args: string[];
4
+ }) => string[];
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ export declare const findClosestPackageJson: () => string | null;
2
+ export declare const findRemotionRoot: () => string;
@@ -0,0 +1,31 @@
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.findRemotionRoot = exports.findClosestPackageJson = void 0;
7
+ const fs_1 = __importDefault(require("fs"));
8
+ const path_1 = __importDefault(require("path"));
9
+ const recursionLimit = 5;
10
+ const findClosestPackageJson = () => {
11
+ let currentDir = process.cwd();
12
+ let possiblePackageJson = '';
13
+ for (let i = 0; i < recursionLimit; i++) {
14
+ possiblePackageJson = path_1.default.join(currentDir, 'package.json');
15
+ const exists = fs_1.default.existsSync(possiblePackageJson);
16
+ if (exists) {
17
+ return possiblePackageJson;
18
+ }
19
+ currentDir = path_1.default.dirname(currentDir);
20
+ }
21
+ return null;
22
+ };
23
+ exports.findClosestPackageJson = findClosestPackageJson;
24
+ const findRemotionRoot = () => {
25
+ const closestPackageJson = (0, exports.findClosestPackageJson)();
26
+ if (closestPackageJson === null) {
27
+ return process.cwd();
28
+ }
29
+ return path_1.default.dirname(closestPackageJson);
30
+ };
31
+ exports.findRemotionRoot = findRemotionRoot;
@@ -0,0 +1,2 @@
1
+ export declare type FrameRange = number | [number, number];
2
+ export declare const validateFrameRange: (frameRange: FrameRange | null) => void;
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateFrameRange = void 0;
4
+ const validateFrameRange = (frameRange) => {
5
+ if (frameRange === null) {
6
+ return;
7
+ }
8
+ if (typeof frameRange === 'number') {
9
+ if (frameRange < 0) {
10
+ throw new TypeError('Frame must be a non-negative number, got ' + frameRange);
11
+ }
12
+ if (!Number.isFinite(frameRange)) {
13
+ throw new TypeError('Frame must be a finite number, got ' + frameRange);
14
+ }
15
+ if (!Number.isInteger(frameRange)) {
16
+ throw new Error(`Frame must be an integer, but got a float (${frameRange})`);
17
+ }
18
+ return;
19
+ }
20
+ if (Array.isArray(frameRange)) {
21
+ if (frameRange.length !== 2) {
22
+ throw new TypeError('Frame range must be a tuple, got an array with length ' +
23
+ frameRange.length);
24
+ }
25
+ for (const value of frameRange) {
26
+ if (typeof value !== 'number') {
27
+ throw new Error(`Each value of frame range must be a number, but got ${typeof value} (${JSON.stringify(value)})`);
28
+ }
29
+ if (!Number.isFinite(value)) {
30
+ throw new TypeError('Each value of frame range must be finite, but got ' + value);
31
+ }
32
+ if (!Number.isInteger(value)) {
33
+ throw new Error(`Each value of frame range must be an integer, but got a float (${value})`);
34
+ }
35
+ if (value < 0) {
36
+ throw new Error(`Each value of frame range must be non-negative, but got ${value}`);
37
+ }
38
+ }
39
+ const [first, second] = frameRange;
40
+ if (second < first) {
41
+ throw new Error('The second value of frame range must be not smaller than the first one, but got ' +
42
+ frameRange.join('-'));
43
+ }
44
+ return;
45
+ }
46
+ throw new TypeError('Frame range must be a number or a tuple of numbers, but got object of type ' +
47
+ typeof frameRange);
48
+ };
49
+ exports.validateFrameRange = validateFrameRange;
File without changes
File without changes
@@ -1,2 +1,2 @@
1
- import { Codec } from 'remotion';
1
+ import type { Codec } from './codec';
2
2
  export declare const getAudioCodecName: (codec: Codec) => string | null;
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getAudioCodecName = void 0;
4
- const remotion_1 = require("remotion");
4
+ const is_audio_codec_1 = require("./is-audio-codec");
5
5
  const getAudioCodecName = (codec) => {
6
- if (!remotion_1.Internals.isAudioCodec(codec)) {
6
+ if (!(0, is_audio_codec_1.isAudioCodec)(codec)) {
7
7
  // The mkv container supports WAV, but MP4 does only support
8
8
  // AAC. Choose MKV codec for better quality because we can put in lossless audio
9
9
  if (codec === 'h264-mkv') {
@@ -1,6 +1,7 @@
1
- import { Browser, Page } from 'puppeteer-core';
2
- import { BrowserExecutable } from 'remotion';
3
- import { ChromiumOptions } from './open-browser';
1
+ import type { BrowserExecutable } from './browser-executable';
2
+ import type { Browser } from './browser/Browser';
3
+ import type { Page } from './browser/BrowserPage';
4
+ import type { ChromiumOptions } from './open-browser';
4
5
  export declare const getPageAndCleanupFn: ({ passedInInstance, browserExecutable, chromiumOptions, }: {
5
6
  passedInInstance: Browser | undefined;
6
7
  browserExecutable: BrowserExecutable | null;
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getPageAndCleanupFn = void 0;
4
- const remotion_1 = require("remotion");
4
+ const browser_1 = require("./browser");
5
5
  const open_browser_1 = require("./open-browser");
6
6
  const getPageAndCleanupFn = async ({ passedInInstance, browserExecutable, chromiumOptions, }) => {
7
7
  if (passedInInstance) {
@@ -17,7 +17,7 @@ const getPageAndCleanupFn = async ({ passedInInstance, browserExecutable, chromi
17
17
  },
18
18
  };
19
19
  }
20
- const browserInstance = await (0, open_browser_1.openBrowser)(remotion_1.Internals.DEFAULT_BROWSER, {
20
+ const browserInstance = await (0, open_browser_1.openBrowser)(browser_1.DEFAULT_BROWSER, {
21
21
  browserExecutable,
22
22
  chromiumOptions,
23
23
  });
@@ -26,7 +26,7 @@ const getPageAndCleanupFn = async ({ passedInInstance, browserExecutable, chromi
26
26
  page: browserPage,
27
27
  cleanup: () => {
28
28
  // Close whole browser that was just created and don't wait for it to finish.
29
- browserInstance.close().catch((err) => {
29
+ browserInstance.close(true).catch((err) => {
30
30
  console.error('Was not able to close puppeteer page', err);
31
31
  });
32
32
  },
@@ -0,0 +1,10 @@
1
+ import type { FfmpegExecutable } from './ffmpeg-executable';
2
+ export declare const ACCEPTABLE_OFFSET_THRESHOLD = 50;
3
+ export declare const getCanExtractFramesFast: ({ src, ffmpegExecutable, ffprobeExecutable, }: {
4
+ src: string;
5
+ ffmpegExecutable?: FfmpegExecutable | undefined;
6
+ ffprobeExecutable?: FfmpegExecutable | undefined;
7
+ }) => Promise<{
8
+ canExtractFramesFast: boolean;
9
+ shouldReencode: boolean;
10
+ }>;
@@ -0,0 +1,67 @@
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.getCanExtractFramesFast = exports.ACCEPTABLE_OFFSET_THRESHOLD = void 0;
7
+ const fs_1 = __importDefault(require("fs"));
8
+ const get_video_stream_duration_1 = require("./assets/get-video-stream-duration");
9
+ const ensure_presentation_timestamp_1 = require("./ensure-presentation-timestamp");
10
+ const find_closest_package_json_1 = require("./find-closest-package-json");
11
+ const get_video_info_1 = require("./get-video-info");
12
+ const try_to_extract_frame_of_video_fast_1 = require("./try-to-extract-frame-of-video-fast");
13
+ exports.ACCEPTABLE_OFFSET_THRESHOLD = 50;
14
+ const getCanExtractFramesFast = async ({ src, ffmpegExecutable, ffprobeExecutable, }) => {
15
+ const remotionRoot = (0, find_closest_package_json_1.findRemotionRoot)();
16
+ const out = await (0, ensure_presentation_timestamp_1.ensurePresentationTimestampWithoutCache)({
17
+ ffmpegExecutable: ffmpegExecutable !== null && ffmpegExecutable !== void 0 ? ffmpegExecutable : null,
18
+ ffprobeExecutable: ffprobeExecutable !== null && ffprobeExecutable !== void 0 ? ffprobeExecutable : null,
19
+ remotionRoot,
20
+ src,
21
+ });
22
+ const { specialVcodecForTransparency: specialVcodec } = await (0, get_video_info_1.getVideoInfoUncached)({
23
+ src: out,
24
+ ffprobeExecutable: ffprobeExecutable !== null && ffprobeExecutable !== void 0 ? ffprobeExecutable : null,
25
+ remotionRoot,
26
+ });
27
+ if (specialVcodec === 'vp8') {
28
+ fs_1.default.unlinkSync(out);
29
+ return {
30
+ canExtractFramesFast: false,
31
+ shouldReencode: false,
32
+ };
33
+ }
34
+ const { duration } = await (0, get_video_stream_duration_1.getVideoStreamDurationwithoutCache)({
35
+ ffprobeExecutable: ffprobeExecutable !== null && ffprobeExecutable !== void 0 ? ffprobeExecutable : null,
36
+ remotionRoot,
37
+ src: out,
38
+ });
39
+ if (duration === null) {
40
+ fs_1.default.unlinkSync(out);
41
+ throw new Error(`Could not determine the duration of ${src} using FFMPEG. The file is not supported.`);
42
+ }
43
+ const actualOffset = `${duration * 1000 - exports.ACCEPTABLE_OFFSET_THRESHOLD}ms`;
44
+ const [stdErr] = await (0, try_to_extract_frame_of_video_fast_1.tryToExtractFrameOfVideoFast)({
45
+ actualOffset,
46
+ ffmpegExecutable: ffmpegExecutable !== null && ffmpegExecutable !== void 0 ? ffmpegExecutable : null,
47
+ imageFormat: 'jpeg',
48
+ // Intentionally leaving needsResize as null, because we don't need to resize
49
+ needsResize: null,
50
+ remotionRoot,
51
+ specialVCodecForTransparency: specialVcodec,
52
+ src: out,
53
+ });
54
+ fs_1.default.unlinkSync(out);
55
+ const isEmpty = stdErr.includes('Output file is empty');
56
+ if (isEmpty) {
57
+ return {
58
+ canExtractFramesFast: false,
59
+ shouldReencode: true,
60
+ };
61
+ }
62
+ return {
63
+ canExtractFramesFast: true,
64
+ shouldReencode: false,
65
+ };
66
+ };
67
+ exports.getCanExtractFramesFast = getCanExtractFramesFast;
@@ -1,2 +1,2 @@
1
- import { Codec } from 'remotion';
1
+ import type { Codec } from './codec';
2
2
  export declare const getCodecName: (codec: Codec) => string | null;
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getCodecName = void 0;
4
- const remotion_1 = require("remotion");
4
+ const is_audio_codec_1 = require("./is-audio-codec");
5
5
  const getCodecName = (codec) => {
6
- if (remotion_1.Internals.isAudioCodec(codec)) {
6
+ if ((0, is_audio_codec_1.isAudioCodec)(codec)) {
7
7
  return null;
8
8
  }
9
9
  if (codec === 'h264' || codec === 'h264-mkv') {
@@ -21,6 +21,9 @@ const getCodecName = (codec) => {
21
21
  if (codec === 'prores') {
22
22
  return 'prores_ks';
23
23
  }
24
+ if (codec === 'gif') {
25
+ return 'gif';
26
+ }
24
27
  throw new TypeError(`Cannot find FFMPEG codec for ${codec}`);
25
28
  };
26
29
  exports.getCodecName = getCodecName;
@@ -0,0 +1,7 @@
1
+ import type { ComponentType } from 'react';
2
+ import type { TCompMetadata } from 'remotion';
3
+ import type { GetCompositionsConfig } from './get-compositions';
4
+ export declare const getCompositionsFromBundle: (bundle: string, options: GetCompositionsConfig) => {
5
+ compositions: TCompMetadata[];
6
+ root: ComponentType;
7
+ };
@@ -0,0 +1,55 @@
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.getCompositionsFromBundle = void 0;
7
+ const fs_1 = __importDefault(require("fs"));
8
+ const path_1 = __importDefault(require("path"));
9
+ const remotion_1 = require("remotion");
10
+ const vm_1 = __importDefault(require("vm"));
11
+ const is_serve_url_1 = require("./is-serve-url");
12
+ const getCompositionsFromBundle = (bundle, options) => {
13
+ const bundleFile = path_1.default.join(bundle, 'bundle.js');
14
+ if ((0, is_serve_url_1.isServeUrl)(bundle)) {
15
+ throw new Error('Can only use getCompositionFromBundle from a local file');
16
+ }
17
+ const content = fs_1.default.readFileSync(bundleFile, 'utf-8');
18
+ // @ts-éxpect-error
19
+ process.env.REMOTION_SERVER_RENDERING = 'true';
20
+ const context = {
21
+ window: {
22
+ remotion_envVariables: options.envVariables,
23
+ },
24
+ clearTimeout: () => {
25
+ console.trace('clearTimeout() called inside a server-side bundle. This is not supported.');
26
+ },
27
+ setTimeout: () => {
28
+ console.trace('setTimeout() called inside a server-side bundle. This is not supported.');
29
+ },
30
+ process: {
31
+ env: {
32
+ REMOTION_SERVER_RENDERING: true,
33
+ },
34
+ },
35
+ require,
36
+ Buffer,
37
+ console,
38
+ };
39
+ const vmContext = vm_1.default.createContext(context);
40
+ // TODO: Set props and env
41
+ const code = content;
42
+ vm_1.default.runInContext(code, vmContext, {
43
+ filename: bundleFile,
44
+ breakOnSigint: true,
45
+ });
46
+ const theRoot = remotion_1.Internals.getRoot();
47
+ if (!theRoot) {
48
+ throw new Error('Did not call getRoot() in the bundle. Delaying the calling of getRoot() is not supported in server-side-rendering.');
49
+ }
50
+ const Comp = theRoot;
51
+ const comps = (0, remotion_1.getCompositionsFromMarkup)(Comp);
52
+ remotion_1.Internals.clearRoot();
53
+ return { compositions: comps, root: Comp };
54
+ };
55
+ exports.getCompositionsFromBundle = getCompositionsFromBundle;
@@ -1,7 +1,10 @@
1
- import { Browser } from 'puppeteer-core';
2
- import { BrowserExecutable, FfmpegExecutable, TCompMetadata } from 'remotion';
3
- import { BrowserLog } from './browser-log';
4
- import { ChromiumOptions } from './open-browser';
1
+ import type { TCompMetadata } from 'remotion';
2
+ import type { DownloadMap } from './assets/download-map';
3
+ import type { BrowserExecutable } from './browser-executable';
4
+ import type { BrowserLog } from './browser-log';
5
+ import type { Browser } from './browser/Browser';
6
+ import type { FfmpegExecutable } from './ffmpeg-executable';
7
+ import type { ChromiumOptions } from './open-browser';
5
8
  declare type GetCompositionsConfig = {
6
9
  inputProps?: object | null;
7
10
  envVariables?: Record<string, string>;
@@ -13,6 +16,10 @@ declare type GetCompositionsConfig = {
13
16
  ffmpegExecutable?: FfmpegExecutable;
14
17
  ffprobeExecutable?: FfmpegExecutable;
15
18
  port?: number | null;
19
+ /**
20
+ * @deprecated Only for Remotion internal usage
21
+ */
22
+ downloadMap?: DownloadMap;
16
23
  };
17
24
  export declare const getCompositions: (serveUrlOrWebpackUrl: string, config?: GetCompositionsConfig) => Promise<TCompMetadata[]>;
18
25
  export {};