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

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 (556) hide show
  1. package/LICENSE.md +8 -8
  2. package/README.md +47 -0
  3. package/client.d.ts +1 -0
  4. package/client.js +1 -0
  5. package/dist/assets/calculate-asset-positions.d.ts +0 -0
  6. package/dist/assets/calculate-asset-positions.js +1 -0
  7. package/dist/assets/calculate-atempo.d.ts +0 -0
  8. package/dist/assets/calculate-atempo.js +0 -0
  9. package/dist/assets/convert-assets-to-file-urls.d.ts +0 -0
  10. package/dist/assets/convert-assets-to-file-urls.js +0 -0
  11. package/dist/assets/download-and-map-assets-to-file.d.ts +2 -1
  12. package/dist/assets/download-and-map-assets-to-file.js +60 -11
  13. package/dist/assets/download-file.d.ts +7 -5
  14. package/dist/assets/download-file.js +49 -6
  15. package/dist/assets/download-map.d.ts +8 -3
  16. package/dist/assets/download-map.js +8 -4
  17. package/dist/assets/ffmpeg-volume-expression.d.ts +2 -1
  18. package/dist/assets/ffmpeg-volume-expression.js +5 -3
  19. package/dist/assets/flatten-volume-array.d.ts +0 -0
  20. package/dist/assets/flatten-volume-array.js +0 -0
  21. package/dist/assets/get-audio-channels.d.ts +1 -1
  22. package/dist/assets/get-audio-channels.js +5 -4
  23. package/dist/assets/get-video-stream-duration.d.ts +7 -1
  24. package/dist/assets/get-video-stream-duration.js +50 -14
  25. package/dist/assets/read-file.d.ts +0 -0
  26. package/dist/assets/read-file.js +2 -4
  27. package/dist/assets/round-volume-to-avoid-stack-overflow.d.ts +0 -0
  28. package/dist/assets/round-volume-to-avoid-stack-overflow.js +0 -0
  29. package/dist/assets/sanitize-filename.d.ts +0 -0
  30. package/dist/assets/sanitize-filename.js +0 -0
  31. package/dist/assets/sanitize-filepath.d.ts +0 -0
  32. package/dist/assets/sanitize-filepath.js +0 -0
  33. package/dist/assets/truncate-utf8-bytes.d.ts +0 -0
  34. package/dist/assets/truncate-utf8-bytes.js +0 -0
  35. package/dist/assets/types.d.ts +1 -0
  36. package/dist/assets/types.js +0 -0
  37. package/dist/audio-codec.d.ts +27 -0
  38. package/dist/audio-codec.js +89 -0
  39. package/dist/browser/Browser.d.ts +4 -2
  40. package/dist/browser/Browser.js +15 -12
  41. package/dist/browser/BrowserConnector.d.ts +0 -0
  42. package/dist/browser/BrowserConnector.js +0 -0
  43. package/dist/browser/BrowserFetcher.d.ts +16 -63
  44. package/dist/browser/BrowserFetcher.js +146 -231
  45. package/dist/browser/BrowserPage.d.ts +8 -2
  46. package/dist/browser/BrowserPage.js +8 -11
  47. package/dist/browser/BrowserRunner.d.ts +1 -4
  48. package/dist/browser/BrowserRunner.js +30 -73
  49. package/dist/browser/Connection.d.ts +0 -0
  50. package/dist/browser/Connection.js +1 -1
  51. package/dist/browser/ConsoleMessage.d.ts +0 -0
  52. package/dist/browser/ConsoleMessage.js +0 -0
  53. package/dist/browser/DOMWorld.d.ts +2 -1
  54. package/dist/browser/DOMWorld.js +8 -1
  55. package/dist/browser/Errors.d.ts +0 -0
  56. package/dist/browser/Errors.js +0 -0
  57. package/dist/browser/EvalTypes.d.ts +0 -0
  58. package/dist/browser/EvalTypes.js +0 -0
  59. package/dist/browser/EventEmitter.d.ts +0 -0
  60. package/dist/browser/EventEmitter.js +0 -0
  61. package/dist/browser/ExecutionContext.d.ts +0 -0
  62. package/dist/browser/ExecutionContext.js +0 -0
  63. package/dist/browser/FrameManager.d.ts +0 -2
  64. package/dist/browser/FrameManager.js +0 -3
  65. package/dist/browser/HTTPRequest.d.ts +0 -0
  66. package/dist/browser/HTTPRequest.js +0 -0
  67. package/dist/browser/HTTPResponse.d.ts +0 -0
  68. package/dist/browser/HTTPResponse.js +0 -0
  69. package/dist/browser/JSHandle.d.ts +0 -0
  70. package/dist/browser/JSHandle.js +0 -0
  71. package/dist/browser/LaunchOptions.d.ts +0 -4
  72. package/dist/browser/LaunchOptions.js +0 -0
  73. package/dist/browser/Launcher.d.ts +7 -1
  74. package/dist/browser/Launcher.js +12 -375
  75. package/dist/browser/LifecycleWatcher.d.ts +0 -0
  76. package/dist/browser/LifecycleWatcher.js +0 -0
  77. package/dist/browser/NetworkEventManager.d.ts +0 -0
  78. package/dist/browser/NetworkEventManager.js +0 -0
  79. package/dist/browser/NetworkManager.d.ts +0 -0
  80. package/dist/browser/NetworkManager.js +0 -0
  81. package/dist/browser/NodeWebSocketTransport.d.ts +0 -0
  82. package/dist/browser/NodeWebSocketTransport.js +1 -1
  83. package/dist/browser/Product.d.ts +0 -0
  84. package/dist/browser/Product.js +0 -0
  85. package/dist/browser/PuppeteerNode.d.ts +0 -3
  86. package/dist/browser/PuppeteerNode.js +2 -14
  87. package/dist/browser/PuppeteerViewport.d.ts +0 -0
  88. package/dist/browser/PuppeteerViewport.js +0 -0
  89. package/dist/browser/ScreenshotOptions.d.ts +0 -14
  90. package/dist/browser/ScreenshotOptions.js +0 -1
  91. package/dist/browser/Target.d.ts +0 -0
  92. package/dist/browser/Target.js +0 -0
  93. package/dist/browser/TaskQueue.d.ts +0 -0
  94. package/dist/browser/TaskQueue.js +0 -0
  95. package/dist/browser/TimeoutSettings.d.ts +0 -0
  96. package/dist/browser/TimeoutSettings.js +0 -0
  97. package/dist/browser/assert.d.ts +0 -0
  98. package/dist/browser/assert.js +0 -0
  99. package/dist/browser/create-browser-fetcher.d.ts +0 -0
  100. package/dist/browser/create-browser-fetcher.js +34 -90
  101. package/dist/browser/devtools-commands.d.ts +0 -0
  102. package/dist/browser/devtools-commands.js +0 -0
  103. package/dist/browser/devtools-types.d.ts +4 -0
  104. package/dist/browser/devtools-types.js +0 -0
  105. package/dist/browser/get-download-destination.d.ts +0 -0
  106. package/dist/browser/get-download-destination.js +0 -0
  107. package/dist/browser/mitt/index.d.ts +0 -0
  108. package/dist/browser/mitt/index.js +0 -0
  109. package/dist/browser/node.d.ts +0 -0
  110. package/dist/browser/node.js +0 -0
  111. package/dist/browser/revisions.d.ts +0 -1
  112. package/dist/browser/revisions.js +0 -1
  113. package/dist/browser/util.d.ts +0 -0
  114. package/dist/browser/util.js +0 -0
  115. package/dist/browser-executable.d.ts +0 -0
  116. package/dist/browser-executable.js +0 -0
  117. package/dist/browser-log.d.ts +0 -0
  118. package/dist/browser-log.js +0 -0
  119. package/dist/browser.d.ts +0 -0
  120. package/dist/browser.js +0 -0
  121. package/dist/calculate-ffmpeg-filters.d.ts +2 -1
  122. package/dist/calculate-ffmpeg-filters.js +1 -0
  123. package/dist/calculate-sar-dar-pixels.d.ts +0 -0
  124. package/dist/calculate-sar-dar-pixels.js +0 -0
  125. package/dist/can-use-parallel-encoding.d.ts +0 -0
  126. package/dist/can-use-parallel-encoding.js +0 -0
  127. package/dist/check-apple-silicon.d.ts +1 -0
  128. package/dist/check-apple-silicon.js +55 -0
  129. package/dist/chunk.d.ts +0 -0
  130. package/dist/chunk.js +0 -0
  131. package/dist/client.d.ts +179 -0
  132. package/dist/client.js +23 -0
  133. package/dist/codec-supports-media.d.ts +1 -0
  134. package/dist/codec-supports-media.js +8 -1
  135. package/dist/codec.d.ts +0 -0
  136. package/dist/codec.js +0 -0
  137. package/dist/combine-videos.d.ts +9 -2
  138. package/dist/combine-videos.js +12 -8
  139. package/dist/compositor/compose.d.ts +13 -0
  140. package/dist/compositor/compose.js +47 -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 +0 -0
  146. package/dist/compress-assets.js +0 -0
  147. package/dist/convert-number-of-gif-loops-to-ffmpeg.d.ts +0 -0
  148. package/dist/convert-number-of-gif-loops-to-ffmpeg.js +0 -0
  149. package/dist/convert-to-positive-frame-index.d.ts +4 -0
  150. package/dist/convert-to-positive-frame-index.js +8 -0
  151. package/dist/create-ffmpeg-complex-filter.d.ts +9 -5
  152. package/dist/create-ffmpeg-complex-filter.js +8 -4
  153. package/dist/create-ffmpeg-merge-filter.d.ts +8 -1
  154. package/dist/create-ffmpeg-merge-filter.js +29 -13
  155. package/dist/create-silent-audio.d.ts +2 -1
  156. package/dist/create-silent-audio.js +3 -2
  157. package/dist/crf.d.ts +5 -1
  158. package/dist/crf.js +33 -6
  159. package/dist/cycle-browser-tabs.d.ts +2 -5
  160. package/dist/cycle-browser-tabs.js +5 -5
  161. package/dist/delay-render-embedded-stack.d.ts +0 -0
  162. package/dist/delay-render-embedded-stack.js +0 -0
  163. package/dist/delete-directory.d.ts +1 -1
  164. package/dist/delete-directory.js +31 -5
  165. package/dist/determine-resize-params.d.ts +1 -0
  166. package/dist/determine-resize-params.js +10 -0
  167. package/dist/determine-vcodec-ffmpeg-flags.d.ts +2 -0
  168. package/dist/determine-vcodec-ffmpeg-flags.js +13 -0
  169. package/dist/does-have-m2-bug.d.ts +3 -0
  170. package/dist/does-have-m2-bug.js +12 -0
  171. package/dist/ensure-ffmpeg.d.ts +18 -0
  172. package/dist/ensure-ffmpeg.js +58 -0
  173. package/dist/ensure-frames-in-order.d.ts +0 -0
  174. package/dist/ensure-frames-in-order.js +0 -0
  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 +14 -1
  178. package/dist/ensure-presentation-timestamp.js +36 -17
  179. package/dist/error-handling/handle-javascript-exception.d.ts +0 -0
  180. package/dist/error-handling/handle-javascript-exception.js +10 -0
  181. package/dist/error-handling/symbolicate-error.d.ts +0 -0
  182. package/dist/error-handling/symbolicate-error.js +2 -1
  183. package/dist/error-handling/symbolicateable-error.d.ts +0 -0
  184. package/dist/error-handling/symbolicateable-error.js +0 -0
  185. package/dist/extract-frame-from-video.d.ts +2 -0
  186. package/dist/extract-frame-from-video.js +47 -110
  187. package/dist/ffmpeg-executable.d.ts +0 -0
  188. package/dist/ffmpeg-executable.js +0 -0
  189. package/dist/ffmpeg-filter-file.d.ts +6 -1
  190. package/dist/ffmpeg-filter-file.js +36 -4
  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/file-extensions.d.ts +25 -0
  196. package/dist/file-extensions.js +88 -0
  197. package/dist/find-closest-package-json.d.ts +2 -0
  198. package/dist/find-closest-package-json.js +31 -0
  199. package/dist/frame-range.d.ts +0 -0
  200. package/dist/frame-range.js +0 -0
  201. package/dist/frame-to-ffmpeg-timestamp.d.ts +0 -0
  202. package/dist/frame-to-ffmpeg-timestamp.js +0 -0
  203. package/dist/get-browser-instance.d.ts +0 -0
  204. package/dist/get-browser-instance.js +1 -1
  205. package/dist/get-can-extract-frames-fast.d.ts +14 -0
  206. package/dist/get-can-extract-frames-fast.js +71 -0
  207. package/dist/get-codec-name.d.ts +0 -0
  208. package/dist/get-codec-name.js +0 -0
  209. package/dist/get-compositions.d.ts +4 -0
  210. package/dist/get-compositions.js +26 -7
  211. package/dist/get-concurrency.d.ts +1 -1
  212. package/dist/get-concurrency.js +8 -1
  213. package/dist/get-duration-from-frame-range.d.ts +0 -0
  214. package/dist/get-duration-from-frame-range.js +0 -0
  215. package/dist/get-extension-from-codec.d.ts +5 -1
  216. package/dist/get-extension-from-codec.js +56 -32
  217. package/dist/get-extension-of-filename.d.ts +0 -0
  218. package/dist/get-extension-of-filename.js +5 -1
  219. package/dist/get-frame-of-video-slow.d.ts +15 -0
  220. package/dist/get-frame-of-video-slow.js +72 -0
  221. package/dist/get-frame-padded-index.d.ts +1 -1
  222. package/dist/get-frame-padded-index.js +3 -2
  223. package/dist/get-frame-to-render.d.ts +0 -0
  224. package/dist/get-frame-to-render.js +1 -1
  225. package/dist/get-local-browser-executable.d.ts +0 -0
  226. package/dist/get-local-browser-executable.js +4 -14
  227. package/dist/get-port.d.ts +4 -1
  228. package/dist/get-port.js +8 -8
  229. package/dist/get-prores-profile-name.d.ts +0 -0
  230. package/dist/get-prores-profile-name.js +0 -0
  231. package/dist/get-video-info.d.ts +6 -1
  232. package/dist/get-video-info.js +19 -9
  233. package/dist/get-video-threads-flag.d.ts +0 -0
  234. package/dist/get-video-threads-flag.js +0 -0
  235. package/dist/guess-extension-for-media.d.ts +5 -1
  236. package/dist/guess-extension-for-media.js +4 -3
  237. package/dist/image-format.d.ts +1 -1
  238. package/dist/image-format.js +3 -0
  239. package/dist/index.d.ts +187 -41
  240. package/dist/index.js +31 -28
  241. package/dist/is-audio-codec.d.ts +0 -0
  242. package/dist/is-audio-codec.js +0 -0
  243. package/dist/is-beyond-last-frame.d.ts +0 -0
  244. package/dist/is-beyond-last-frame.js +0 -0
  245. package/dist/is-serve-url.d.ts +0 -0
  246. package/dist/is-serve-url.js +0 -0
  247. package/dist/last-frame-from-video-cache.d.ts +2 -0
  248. package/dist/last-frame-from-video-cache.js +0 -0
  249. package/dist/legacy-webpack-config.d.ts +0 -0
  250. package/dist/legacy-webpack-config.js +0 -0
  251. package/dist/locks.d.ts +7 -0
  252. package/dist/locks.js +44 -0
  253. package/dist/log-level.d.ts +0 -0
  254. package/dist/log-level.js +0 -0
  255. package/dist/make-cancel-signal.d.ts +11 -0
  256. package/dist/make-cancel-signal.js +24 -1
  257. package/dist/merge-audio-track.d.ts +3 -1
  258. package/dist/merge-audio-track.js +43 -30
  259. package/dist/mime-db.d.ts +0 -0
  260. package/dist/mime-db.js +0 -0
  261. package/dist/mime-types.d.ts +1 -0
  262. package/dist/mime-types.js +6 -1
  263. package/dist/normalize-serve-url.d.ts +0 -0
  264. package/dist/normalize-serve-url.js +0 -0
  265. package/dist/offthread-video-server.d.ts +2 -1
  266. package/dist/offthread-video-server.js +13 -1
  267. package/dist/open-browser.d.ts +5 -0
  268. package/dist/open-browser.js +12 -15
  269. package/dist/overwrite.d.ts +0 -0
  270. package/dist/overwrite.js +0 -0
  271. package/dist/p-limit.d.ts +0 -0
  272. package/dist/p-limit.js +0 -0
  273. package/dist/parse-browser-error-stack.d.ts +0 -0
  274. package/dist/parse-browser-error-stack.js +0 -0
  275. package/dist/parse-ffmpeg-progress.d.ts +0 -0
  276. package/dist/parse-ffmpeg-progress.js +0 -0
  277. package/dist/perf.d.ts +0 -0
  278. package/dist/perf.js +0 -0
  279. package/dist/pixel-format.d.ts +1 -1
  280. package/dist/pixel-format.js +3 -0
  281. package/dist/pool.d.ts +0 -0
  282. package/dist/pool.js +0 -0
  283. package/dist/prepare-server.d.ts +3 -2
  284. package/dist/prepare-server.js +8 -3
  285. package/dist/preprocess-audio-track.d.ts +7 -1
  286. package/dist/preprocess-audio-track.js +7 -4
  287. package/dist/prespawn-ffmpeg.d.ts +4 -1
  288. package/dist/prespawn-ffmpeg.js +17 -12
  289. package/dist/prestitcher-memory-usage.d.ts +0 -0
  290. package/dist/prestitcher-memory-usage.js +0 -0
  291. package/dist/prores-profile.d.ts +4 -1
  292. package/dist/prores-profile.js +6 -6
  293. package/dist/provide-screenshot.d.ts +5 -1
  294. package/dist/provide-screenshot.js +4 -1
  295. package/dist/puppeteer-evaluate.d.ts +0 -0
  296. package/dist/puppeteer-evaluate.js +19 -11
  297. package/dist/puppeteer-screenshot.d.ts +11 -2
  298. package/dist/puppeteer-screenshot.js +11 -14
  299. package/dist/quality.d.ts +0 -0
  300. package/dist/quality.js +0 -0
  301. package/dist/redirect-status-codes.d.ts +1 -0
  302. package/dist/redirect-status-codes.js +6 -0
  303. package/dist/render-frames.d.ts +15 -3
  304. package/dist/render-frames.js +176 -84
  305. package/dist/render-media.d.ts +38 -6
  306. package/dist/render-media.js +123 -27
  307. package/dist/render-still.d.ts +8 -4
  308. package/dist/render-still.js +66 -31
  309. package/dist/replace-browser.d.ts +6 -0
  310. package/dist/replace-browser.js +47 -0
  311. package/dist/resolve-asset-src.d.ts +0 -0
  312. package/dist/resolve-asset-src.js +0 -0
  313. package/dist/sample-rate.d.ts +0 -0
  314. package/dist/sample-rate.js +0 -0
  315. package/dist/screenshot-dom-element.d.ts +5 -1
  316. package/dist/screenshot-dom-element.js +10 -2
  317. package/dist/screenshot-task.d.ts +12 -2
  318. package/dist/screenshot-task.js +24 -9
  319. package/dist/seek-to-frame.d.ts +1 -0
  320. package/dist/seek-to-frame.js +49 -3
  321. package/dist/serve-handler/index.d.ts +0 -0
  322. package/dist/serve-handler/index.js +0 -0
  323. package/dist/serve-handler/is-path-inside.d.ts +0 -0
  324. package/dist/serve-handler/is-path-inside.js +0 -0
  325. package/dist/serve-handler/range-parser.d.ts +0 -0
  326. package/dist/serve-handler/range-parser.js +0 -0
  327. package/dist/serve-static.d.ts +1 -0
  328. package/dist/serve-static.js +77 -41
  329. package/dist/set-props-and-env.d.ts +3 -1
  330. package/dist/set-props-and-env.js +39 -15
  331. package/dist/stitch-frames-to-video.d.ts +14 -1
  332. package/dist/stitch-frames-to-video.js +122 -50
  333. package/dist/stringify-ffmpeg-filter.d.ts +10 -2
  334. package/dist/stringify-ffmpeg-filter.js +37 -34
  335. package/dist/symbolicate-stacktrace.d.ts +0 -0
  336. package/dist/symbolicate-stacktrace.js +0 -0
  337. package/dist/take-frame-and-compose.d.ts +20 -0
  338. package/dist/take-frame-and-compose.js +96 -0
  339. package/dist/tmp-dir.d.ts +0 -0
  340. package/dist/tmp-dir.js +0 -0
  341. package/dist/truthy.d.ts +0 -0
  342. package/dist/truthy.js +0 -0
  343. package/dist/try-to-extract-frame-of-video-fast.d.ts +13 -0
  344. package/dist/try-to-extract-frame-of-video-fast.js +55 -0
  345. package/dist/types.d.ts +0 -0
  346. package/dist/types.js +0 -0
  347. package/dist/validate-concurrency.d.ts +0 -0
  348. package/dist/validate-concurrency.js +14 -9
  349. package/dist/validate-even-dimensions-with-codec.d.ts +0 -0
  350. package/dist/validate-even-dimensions-with-codec.js +0 -0
  351. package/dist/validate-every-nth-frame.d.ts +2 -1
  352. package/dist/validate-every-nth-frame.js +8 -1
  353. package/dist/validate-ffmpeg-override.d.ts +2 -0
  354. package/dist/validate-ffmpeg-override.js +12 -0
  355. package/dist/validate-ffmpeg.d.ts +7 -2
  356. package/dist/validate-ffmpeg.js +48 -43
  357. package/dist/validate-number-of-gif-loops.d.ts +2 -0
  358. package/dist/validate-number-of-gif-loops.js +24 -0
  359. package/dist/validate-opengl-renderer.d.ts +0 -0
  360. package/dist/validate-opengl-renderer.js +0 -0
  361. package/dist/validate-output-filename.d.ts +7 -2
  362. package/dist/validate-output-filename.js +20 -51
  363. package/dist/validate-puppeteer-timeout.d.ts +0 -0
  364. package/dist/validate-puppeteer-timeout.js +1 -1
  365. package/dist/validate-scale.d.ts +0 -0
  366. package/dist/validate-scale.js +0 -0
  367. package/dist/validate-videobitrate.d.ts +1 -0
  368. package/dist/validate-videobitrate.js +20 -0
  369. package/dist/wait-for-symbolication-error-to-be-done.d.ts +0 -0
  370. package/dist/wait-for-symbolication-error-to-be-done.js +5 -31
  371. package/dist/warn-about-ffmpeg-version.d.ts +5 -0
  372. package/dist/warn-about-ffmpeg-version.js +37 -0
  373. package/dist/ws/ws-types.d.ts +0 -0
  374. package/dist/ws/ws-types.js +2 -1
  375. package/package.json +68 -60
  376. package/.prettierrc.js +0 -14
  377. package/dist/add-silent-audio-if-necessary.d.ts +0 -8
  378. package/dist/add-silent-audio-if-necessary.d.ts.map +0 -1
  379. package/dist/add-silent-audio-if-necessary.js +0 -51
  380. package/dist/add-silent-audio-if-necessary.js.map +0 -1
  381. package/dist/assets/asset-is-used-at-time.d.ts +0 -3
  382. package/dist/assets/asset-is-used-at-time.d.ts.map +0 -1
  383. package/dist/assets/asset-is-used-at-time.js +0 -8
  384. package/dist/assets/asset-is-used-at-time.js.map +0 -1
  385. package/dist/assets/calculate-asset-positions.d.ts.map +0 -1
  386. package/dist/assets/calculate-asset-positions.js.map +0 -1
  387. package/dist/assets/calculate-atempo.d.ts.map +0 -1
  388. package/dist/assets/calculate-atempo.js.map +0 -1
  389. package/dist/assets/convert-assets-to-file-urls.d.ts.map +0 -1
  390. package/dist/assets/convert-assets-to-file-urls.js.map +0 -1
  391. package/dist/assets/download-and-map-assets-to-file.d.ts.map +0 -1
  392. package/dist/assets/download-and-map-assets-to-file.js.map +0 -1
  393. package/dist/assets/download-file.d.ts.map +0 -1
  394. package/dist/assets/download-file.js.map +0 -1
  395. package/dist/assets/ffmpeg-volume-expression.d.ts.map +0 -1
  396. package/dist/assets/ffmpeg-volume-expression.js.map +0 -1
  397. package/dist/assets/flatten-volume-array.d.ts.map +0 -1
  398. package/dist/assets/flatten-volume-array.js.map +0 -1
  399. package/dist/assets/get-asset-audio-details.d.ts +0 -5
  400. package/dist/assets/get-asset-audio-details.d.ts.map +0 -1
  401. package/dist/assets/get-asset-audio-details.js +0 -21
  402. package/dist/assets/get-asset-audio-details.js.map +0 -1
  403. package/dist/assets/get-audio-channels.d.ts.map +0 -1
  404. package/dist/assets/get-audio-channels.js.map +0 -1
  405. package/dist/assets/get-simulatenous-assets.d.ts +0 -3
  406. package/dist/assets/get-simulatenous-assets.d.ts.map +0 -1
  407. package/dist/assets/get-simulatenous-assets.js +0 -14
  408. package/dist/assets/get-simulatenous-assets.js.map +0 -1
  409. package/dist/assets/read-file.d.ts.map +0 -1
  410. package/dist/assets/read-file.js.map +0 -1
  411. package/dist/assets/round-volume-to-avoid-stack-overflow.d.ts.map +0 -1
  412. package/dist/assets/round-volume-to-avoid-stack-overflow.js.map +0 -1
  413. package/dist/assets/sanitize-filename.d.ts.map +0 -1
  414. package/dist/assets/sanitize-filename.js.map +0 -1
  415. package/dist/assets/sanitize-filepath.d.ts.map +0 -1
  416. package/dist/assets/sanitize-filepath.js.map +0 -1
  417. package/dist/assets/split-assets-into-segments.d.ts +0 -6
  418. package/dist/assets/split-assets-into-segments.d.ts.map +0 -1
  419. package/dist/assets/split-assets-into-segments.js +0 -89
  420. package/dist/assets/split-assets-into-segments.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/assets-to-ffmpeg-inputs.d.ts +0 -7
  426. package/dist/assets-to-ffmpeg-inputs.d.ts.map +0 -1
  427. package/dist/assets-to-ffmpeg-inputs.js +0 -15
  428. package/dist/assets-to-ffmpeg-inputs.js.map +0 -1
  429. package/dist/browser-log.d.ts.map +0 -1
  430. package/dist/browser-log.js.map +0 -1
  431. package/dist/calculate-ffmpeg-filters.d.ts.map +0 -1
  432. package/dist/calculate-ffmpeg-filters.js.map +0 -1
  433. package/dist/can-use-parallel-encoding.d.ts.map +0 -1
  434. package/dist/can-use-parallel-encoding.js.map +0 -1
  435. package/dist/combine-videos.d.ts.map +0 -1
  436. package/dist/combine-videos.js.map +0 -1
  437. package/dist/convert-to-pcm.d.ts +0 -6
  438. package/dist/convert-to-pcm.js +0 -20
  439. package/dist/create-ffmpeg-complex-filter.d.ts.map +0 -1
  440. package/dist/create-ffmpeg-complex-filter.js.map +0 -1
  441. package/dist/cycle-browser-tabs.d.ts.map +0 -1
  442. package/dist/cycle-browser-tabs.js.map +0 -1
  443. package/dist/delay-render-embedded-stack.d.ts.map +0 -1
  444. package/dist/delay-render-embedded-stack.js.map +0 -1
  445. package/dist/delete-directory.d.ts.map +0 -1
  446. package/dist/delete-directory.js.map +0 -1
  447. package/dist/ensure-frames-in-order.d.ts.map +0 -1
  448. package/dist/ensure-frames-in-order.js.map +0 -1
  449. package/dist/ensure-output-directory.d.ts.map +0 -1
  450. package/dist/ensure-output-directory.js.map +0 -1
  451. package/dist/error-handling/handle-javascript-exception.d.ts.map +0 -1
  452. package/dist/error-handling/handle-javascript-exception.js.map +0 -1
  453. package/dist/error-handling/symbolicate-error.d.ts.map +0 -1
  454. package/dist/error-handling/symbolicate-error.js.map +0 -1
  455. package/dist/error-handling/symbolicateable-error.d.ts.map +0 -1
  456. package/dist/error-handling/symbolicateable-error.js.map +0 -1
  457. package/dist/ffmpeg-flags.d.ts.map +0 -1
  458. package/dist/ffmpeg-flags.js.map +0 -1
  459. package/dist/get-audio-codec-name.d.ts +0 -2
  460. package/dist/get-audio-codec-name.d.ts.map +0 -1
  461. package/dist/get-audio-codec-name.js +0 -28
  462. package/dist/get-audio-codec-name.js.map +0 -1
  463. package/dist/get-browser-instance.d.ts.map +0 -1
  464. package/dist/get-browser-instance.js.map +0 -1
  465. package/dist/get-codec-name.d.ts.map +0 -1
  466. package/dist/get-codec-name.js.map +0 -1
  467. package/dist/get-compositions.d.ts.map +0 -1
  468. package/dist/get-compositions.js.map +0 -1
  469. package/dist/get-concurrency.d.ts.map +0 -1
  470. package/dist/get-concurrency.js.map +0 -1
  471. package/dist/get-extension-from-codec.d.ts.map +0 -1
  472. package/dist/get-extension-from-codec.js.map +0 -1
  473. package/dist/get-frame-to-render.d.ts.map +0 -1
  474. package/dist/get-frame-to-render.js.map +0 -1
  475. package/dist/get-local-browser-executable.d.ts.map +0 -1
  476. package/dist/get-local-browser-executable.js.map +0 -1
  477. package/dist/get-port.d.ts.map +0 -1
  478. package/dist/get-port.js.map +0 -1
  479. package/dist/get-prores-profile-name.d.ts.map +0 -1
  480. package/dist/get-prores-profile-name.js.map +0 -1
  481. package/dist/image-format.d.ts.map +0 -1
  482. package/dist/image-format.js.map +0 -1
  483. package/dist/index.d.ts.map +0 -1
  484. package/dist/index.js.map +0 -1
  485. package/dist/is-serve-url.d.ts.map +0 -1
  486. package/dist/is-serve-url.js.map +0 -1
  487. package/dist/legacy-webpack-config.d.ts.map +0 -1
  488. package/dist/legacy-webpack-config.js.map +0 -1
  489. package/dist/make-assets-download-dir.d.ts +0 -1
  490. package/dist/make-assets-download-dir.d.ts.map +0 -1
  491. package/dist/make-assets-download-dir.js +0 -13
  492. package/dist/make-assets-download-dir.js.map +0 -1
  493. package/dist/normalize-serve-url.d.ts.map +0 -1
  494. package/dist/normalize-serve-url.js.map +0 -1
  495. package/dist/open-browser.d.ts.map +0 -1
  496. package/dist/open-browser.js.map +0 -1
  497. package/dist/parse-browser-error-stack.d.ts.map +0 -1
  498. package/dist/parse-browser-error-stack.js.map +0 -1
  499. package/dist/parse-ffmpeg-progress.d.ts.map +0 -1
  500. package/dist/parse-ffmpeg-progress.js.map +0 -1
  501. package/dist/pool.d.ts.map +0 -1
  502. package/dist/pool.js.map +0 -1
  503. package/dist/prepare-server.d.ts.map +0 -1
  504. package/dist/prepare-server.js.map +0 -1
  505. package/dist/provide-screenshot.d.ts.map +0 -1
  506. package/dist/provide-screenshot.js.map +0 -1
  507. package/dist/puppeteer-evaluate.d.ts.map +0 -1
  508. package/dist/puppeteer-evaluate.js.map +0 -1
  509. package/dist/puppeteer-screenshot.d.ts.map +0 -1
  510. package/dist/puppeteer-screenshot.js.map +0 -1
  511. package/dist/render-media.d.ts.map +0 -1
  512. package/dist/render-media.js.map +0 -1
  513. package/dist/render-still.d.ts.map +0 -1
  514. package/dist/render-still.js.map +0 -1
  515. package/dist/render.d.ts +0 -45
  516. package/dist/render.d.ts.map +0 -1
  517. package/dist/render.js +0 -245
  518. package/dist/render.js.map +0 -1
  519. package/dist/resolve-asset-src.d.ts.map +0 -1
  520. package/dist/resolve-asset-src.js.map +0 -1
  521. package/dist/sample-rate.d.ts.map +0 -1
  522. package/dist/sample-rate.js.map +0 -1
  523. package/dist/screenshot-dom-element.d.ts.map +0 -1
  524. package/dist/screenshot-dom-element.js.map +0 -1
  525. package/dist/screenshot-task.d.ts.map +0 -1
  526. package/dist/screenshot-task.js.map +0 -1
  527. package/dist/seek-to-frame.d.ts.map +0 -1
  528. package/dist/seek-to-frame.js.map +0 -1
  529. package/dist/serve-static.d.ts.map +0 -1
  530. package/dist/serve-static.js.map +0 -1
  531. package/dist/set-props-and-env.d.ts.map +0 -1
  532. package/dist/set-props-and-env.js.map +0 -1
  533. package/dist/stitcher.d.ts +0 -32
  534. package/dist/stitcher.d.ts.map +0 -1
  535. package/dist/stitcher.js +0 -204
  536. package/dist/stitcher.js.map +0 -1
  537. package/dist/stringify-ffmpeg-filter.d.ts.map +0 -1
  538. package/dist/stringify-ffmpeg-filter.js.map +0 -1
  539. package/dist/symbolicate-stacktrace.d.ts.map +0 -1
  540. package/dist/symbolicate-stacktrace.js.map +0 -1
  541. package/dist/tmp-dir.d.ts.map +0 -1
  542. package/dist/tmp-dir.js.map +0 -1
  543. package/dist/types.d.ts.map +0 -1
  544. package/dist/types.js.map +0 -1
  545. package/dist/validate-even-dimensions-with-codec.d.ts.map +0 -1
  546. package/dist/validate-even-dimensions-with-codec.js.map +0 -1
  547. package/dist/validate-ffmpeg.d.ts.map +0 -1
  548. package/dist/validate-ffmpeg.js.map +0 -1
  549. package/dist/validate-frame.d.ts +0 -1
  550. package/dist/validate-frame.js +0 -24
  551. package/dist/validate-puppeteer-timeout.d.ts.map +0 -1
  552. package/dist/validate-puppeteer-timeout.js.map +0 -1
  553. package/dist/validate-scale.d.ts.map +0 -1
  554. package/dist/validate-scale.js.map +0 -1
  555. package/tsconfig.json +0 -10
  556. package/vitest.config.ts +0 -8
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.compose = void 0;
4
+ const child_process_1 = require("child_process");
5
+ const crypto_1 = require("crypto");
6
+ const promises_1 = require("fs/promises");
7
+ const get_executable_path_1 = require("./get-executable-path");
8
+ const getCompositorHash = ({ ...input }) => {
9
+ return (0, crypto_1.createHash)('sha256').update(JSON.stringify(input)).digest('base64');
10
+ };
11
+ const compose = async ({ height, width, layers, output, downloadMap, imageFormat, }) => {
12
+ const bin = (0, get_executable_path_1.getExecutablePath)();
13
+ const hash = getCompositorHash({ height, width, layers, imageFormat });
14
+ if (downloadMap.compositorCache[hash]) {
15
+ await (0, promises_1.copyFile)(downloadMap.compositorCache[hash], output);
16
+ return;
17
+ }
18
+ const payload = {
19
+ v: 1,
20
+ height,
21
+ width,
22
+ layers,
23
+ output,
24
+ output_format: imageFormat,
25
+ };
26
+ await new Promise((resolve, reject) => {
27
+ const child = (0, child_process_1.spawn)(bin);
28
+ child.stdin.write(JSON.stringify(payload));
29
+ child.stdin.end();
30
+ const stderrChunks = [];
31
+ child.stderr.on('data', (d) => stderrChunks.push(d));
32
+ child.on('close', (code) => {
33
+ if (code === 0) {
34
+ resolve();
35
+ }
36
+ else {
37
+ const message = Buffer.concat(stderrChunks).toString('utf-8');
38
+ const parsed = JSON.parse(message);
39
+ const err = new Error(parsed.error);
40
+ err.stack = parsed.error + '\n' + parsed.backtrace;
41
+ reject(err);
42
+ }
43
+ });
44
+ });
45
+ downloadMap.compositorCache[hash] = output;
46
+ };
47
+ exports.compose = compose;
@@ -0,0 +1 @@
1
+ export declare const getExecutablePath: () => any;
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ // Adapted from @swc/core package
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.getExecutablePath = void 0;
5
+ function isMusl() {
6
+ // @ts-expect-error no types
7
+ const { glibcVersionRuntime } = process.report.getReport().header;
8
+ return !glibcVersionRuntime;
9
+ }
10
+ const getExecutablePath = () => {
11
+ switch (process.platform) {
12
+ case 'win32':
13
+ switch (process.arch) {
14
+ case 'x64':
15
+ return require('@remotion/compositor-win32-x64-msvc').binaryPath;
16
+ default:
17
+ throw new Error(`Unsupported architecture on Windows: ${process.arch}`);
18
+ }
19
+ case 'darwin':
20
+ switch (process.arch) {
21
+ case 'x64':
22
+ return require('@remotion/compositor-darwin-x64').binaryPath;
23
+ case 'arm64':
24
+ return require('@remotion/compositor-darwin-arm64').binaryPath;
25
+ default:
26
+ throw new Error(`Unsupported architecture on macOS: ${process.arch}`);
27
+ }
28
+ case 'linux':
29
+ switch (process.arch) {
30
+ case 'x64':
31
+ if (isMusl()) {
32
+ return require('@remotion/compositor-linux-x64-musl').binaryPath;
33
+ }
34
+ return require('@remotion/compositor-linux-x64-gnu').binaryPath;
35
+ case 'arm64':
36
+ if (isMusl()) {
37
+ return require('@remotion/compositor-linux-arm64-musl').binaryPath;
38
+ }
39
+ return require('@remotion/compositor-linux-arm64-gnu').binaryPath;
40
+ default:
41
+ throw new Error(`Unsupported architecture on Linux: ${process.arch}`);
42
+ }
43
+ default:
44
+ throw new Error(`Unsupported OS: ${process.platform}, architecture: ${process.arch}`);
45
+ }
46
+ };
47
+ exports.getExecutablePath = getExecutablePath;
@@ -0,0 +1,41 @@
1
+ export declare type Layer = {
2
+ type: 'PngImage';
3
+ params: {
4
+ src: string;
5
+ x: number;
6
+ y: number;
7
+ width: number;
8
+ height: number;
9
+ };
10
+ } | {
11
+ type: 'JpgImage';
12
+ params: {
13
+ src: string;
14
+ x: number;
15
+ y: number;
16
+ width: number;
17
+ height: number;
18
+ };
19
+ } | {
20
+ type: 'Solid';
21
+ params: {
22
+ fill: [number, number, number, number];
23
+ x: number;
24
+ y: number;
25
+ width: number;
26
+ height: number;
27
+ };
28
+ };
29
+ export declare type CompositorImageFormat = 'Png' | 'Jpeg';
30
+ export declare type CliInput = {
31
+ v: number;
32
+ output: string;
33
+ width: number;
34
+ height: number;
35
+ layers: Layer[];
36
+ output_format: CompositorImageFormat;
37
+ };
38
+ export declare type ErrorPayload = {
39
+ error: string;
40
+ backtrace: string;
41
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1,4 @@
1
+ export declare const convertToPositiveFrameIndex: ({ frame, durationInFrames, }: {
2
+ frame: number;
3
+ durationInFrames: number;
4
+ }) => number;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.convertToPositiveFrameIndex = void 0;
4
+ // Handle negative indices (e.g. -1 being the last frame)
5
+ const convertToPositiveFrameIndex = ({ frame, durationInFrames, }) => {
6
+ return frame < 0 ? durationInFrames - frame : frame;
7
+ };
8
+ exports.convertToPositiveFrameIndex = convertToPositiveFrameIndex;
@@ -1,8 +1,12 @@
1
1
  import type { DownloadMap } from './assets/download-map';
2
- export declare const createFfmpegComplexFilter: (filters: number, downloadMap: DownloadMap) => Promise<{
3
- complexFilterFlag: [
4
- string,
5
- string
6
- ] | null;
2
+ import type { FfmpegExecutable } from './ffmpeg-executable';
3
+ import type { PreprocessedAudioTrack } from './preprocess-audio-track';
4
+ export declare const createFfmpegComplexFilter: ({ filters, downloadMap, ffmpegExecutable, remotionRoot, }: {
5
+ filters: PreprocessedAudioTrack[];
6
+ downloadMap: DownloadMap;
7
+ ffmpegExecutable: FfmpegExecutable;
8
+ remotionRoot: string;
9
+ }) => Promise<{
10
+ complexFilterFlag: [string, string] | null;
7
11
  cleanup: () => void;
8
12
  }>;
@@ -3,12 +3,16 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createFfmpegComplexFilter = void 0;
4
4
  const create_ffmpeg_merge_filter_1 = require("./create-ffmpeg-merge-filter");
5
5
  const ffmpeg_filter_file_1 = require("./ffmpeg-filter-file");
6
- const createFfmpegComplexFilter = async (filters, downloadMap) => {
7
- if (filters === 0) {
6
+ const createFfmpegComplexFilter = async ({ filters, downloadMap, ffmpegExecutable, remotionRoot, }) => {
7
+ if (filters.length === 0) {
8
8
  return { complexFilterFlag: null, cleanup: () => undefined };
9
9
  }
10
- const complexFilter = (0, create_ffmpeg_merge_filter_1.createFfmpegMergeFilter)(filters);
11
- const { file, cleanup } = await (0, ffmpeg_filter_file_1.makeFfmpegFilterFile)(complexFilter, downloadMap);
10
+ const complexFilter = await (0, create_ffmpeg_merge_filter_1.createFfmpegMergeFilter)({
11
+ inputs: filters,
12
+ ffmpegExecutable,
13
+ remotionRoot,
14
+ });
15
+ const { file, cleanup } = await (0, ffmpeg_filter_file_1.makeFfmpegFilterFileStr)(complexFilter, downloadMap);
12
16
  return {
13
17
  complexFilterFlag: ['-filter_complex_script', file],
14
18
  cleanup,
@@ -1 +1,8 @@
1
- export declare const createFfmpegMergeFilter: (inputs: number) => string;
1
+ import type { FfmpegExecutable } from './ffmpeg-executable';
2
+ import type { PreprocessedAudioTrack } from './preprocess-audio-track';
3
+ export declare const OUTPUT_FILTER_NAME = "outputaudio";
4
+ export declare const createFfmpegMergeFilter: ({ inputs, ffmpegExecutable, remotionRoot, }: {
5
+ inputs: PreprocessedAudioTrack[];
6
+ ffmpegExecutable: FfmpegExecutable;
7
+ remotionRoot: string;
8
+ }) => Promise<string>;
@@ -1,18 +1,34 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createFfmpegMergeFilter = void 0;
3
+ exports.createFfmpegMergeFilter = exports.OUTPUT_FILTER_NAME = void 0;
4
+ const ffmpeg_flags_1 = require("./ffmpeg-flags");
4
5
  const truthy_1 = require("./truthy");
5
- const createFfmpegMergeFilter = (inputs) => {
6
- const leftChannel = new Array(inputs * 2)
7
- .fill(true)
8
- .map((_, i) => (i % 2 === 0 ? `c${i}` : null))
9
- .filter(truthy_1.truthy)
10
- .join('+');
11
- const rightChannel = new Array(inputs * 2)
12
- .fill(true)
13
- .map((_, i) => (i % 2 === 1 ? `c${i}` : null))
14
- .filter(truthy_1.truthy)
15
- .join('+');
16
- return `[0:a][1:a]amerge=inputs=${inputs},pan=stereo|c0=${leftChannel}|c1=${rightChannel}[a]`;
6
+ exports.OUTPUT_FILTER_NAME = 'outputaudio';
7
+ const createFfmpegMergeFilter = async ({ inputs, ffmpegExecutable, remotionRoot, }) => {
8
+ const ffmpegVersion = await (0, ffmpeg_flags_1.getFfmpegVersion)({
9
+ ffmpegExecutable,
10
+ remotionRoot,
11
+ });
12
+ const supportsNormalize = ffmpegVersion === null ||
13
+ (ffmpegVersion[0] === 4 && ffmpegVersion[1] >= 4) ||
14
+ ffmpegVersion[0] >= 5;
15
+ const pads = inputs.map((input, index) => {
16
+ const filters = [
17
+ input.filter.pad_start ? input.filter.pad_start : null,
18
+ input.filter.pad_end ? input.filter.pad_end : null,
19
+ 'acopy',
20
+ ];
21
+ return `[${index}:a]${filters.filter(truthy_1.truthy).join(',')}[padded${index}]`;
22
+ });
23
+ const normalize = supportsNormalize ? ':normalize=0' : '';
24
+ return [
25
+ ...pads,
26
+ `${new Array(inputs.length)
27
+ .fill(true)
28
+ .map((_, i) => {
29
+ return `[padded${i}]`;
30
+ })
31
+ .join('')}amix=inputs=${inputs.length}:dropout_transition=0${normalize}[${exports.OUTPUT_FILTER_NAME}]`,
32
+ ].join(';');
17
33
  };
18
34
  exports.createFfmpegMergeFilter = createFfmpegMergeFilter;
@@ -1,6 +1,7 @@
1
1
  import type { FfmpegExecutable } from './ffmpeg-executable';
2
- export declare const createSilentAudio: ({ ffmpegExecutable, numberOfSeconds, outName, }: {
2
+ export declare const createSilentAudio: ({ ffmpegExecutable, numberOfSeconds, outName, remotionRoot, }: {
3
3
  ffmpegExecutable: FfmpegExecutable;
4
4
  numberOfSeconds: number;
5
5
  outName: string;
6
+ remotionRoot: string;
6
7
  }) => Promise<void>;
@@ -5,9 +5,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.createSilentAudio = void 0;
7
7
  const execa_1 = __importDefault(require("execa"));
8
+ const ffmpeg_flags_1 = require("./ffmpeg-flags");
8
9
  const sample_rate_1 = require("./sample-rate");
9
- const createSilentAudio = async ({ ffmpegExecutable, numberOfSeconds, outName, }) => {
10
- await (0, execa_1.default)(ffmpegExecutable !== null && ffmpegExecutable !== void 0 ? ffmpegExecutable : 'ffmpeg', [
10
+ const createSilentAudio = async ({ ffmpegExecutable, numberOfSeconds, outName, remotionRoot, }) => {
11
+ await (0, execa_1.default)(await (0, ffmpeg_flags_1.getExecutableBinary)(ffmpegExecutable, remotionRoot, 'ffmpeg'), [
11
12
  '-f',
12
13
  'lavfi',
13
14
  '-i',
package/dist/crf.d.ts CHANGED
@@ -2,4 +2,8 @@ import type { Codec } from './codec';
2
2
  export declare type Crf = number | undefined;
3
3
  export declare const getDefaultCrfForCodec: (codec: Codec) => number;
4
4
  export declare const getValidCrfRanges: (codec: Codec) => [number, number];
5
- export declare const validateSelectedCrfAndCodecCombination: (crf: unknown, codec: Codec) => void;
5
+ export declare const validateQualitySettings: ({ codec, crf, videoBitrate, }: {
6
+ crf: unknown;
7
+ codec: Codec;
8
+ videoBitrate: string | null | undefined;
9
+ }) => string[];
package/dist/crf.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.validateSelectedCrfAndCodecCombination = exports.getValidCrfRanges = exports.getDefaultCrfForCodec = void 0;
3
+ exports.validateQualitySettings = exports.getValidCrfRanges = exports.getDefaultCrfForCodec = void 0;
4
4
  const is_audio_codec_1 = require("./is-audio-codec");
5
5
  const getDefaultCrfForCodec = (codec) => {
6
6
  if ((0, is_audio_codec_1.isAudioCodec)(codec)) {
@@ -46,19 +46,46 @@ const getValidCrfRanges = (codec) => {
46
46
  throw new TypeError(`Got unexpected codec "${codec}"`);
47
47
  };
48
48
  exports.getValidCrfRanges = getValidCrfRanges;
49
- const validateSelectedCrfAndCodecCombination = (crf, codec) => {
50
- if (crf === null) {
51
- return;
49
+ const validateQualitySettings = ({ codec, crf, videoBitrate, }) => {
50
+ if (crf && videoBitrate) {
51
+ throw new Error('"crf" and "videoBitrate" can not both be set. Choose one of either.');
52
+ }
53
+ if (videoBitrate) {
54
+ if (codec === 'prores') {
55
+ console.warn('ProRes does not support videoBitrate. Ignoring.');
56
+ return [];
57
+ }
58
+ if ((0, is_audio_codec_1.isAudioCodec)(codec)) {
59
+ console.warn(`${codec} does not support videoBitrate. Ignoring.`);
60
+ return [];
61
+ }
62
+ return ['-b:v', videoBitrate];
63
+ }
64
+ if (crf === null || typeof crf === 'undefined') {
65
+ const actualCrf = (0, exports.getDefaultCrfForCodec)(codec);
66
+ return ['-crf', String(actualCrf)];
52
67
  }
53
68
  if (typeof crf !== 'number') {
54
69
  throw new TypeError('Expected CRF to be a number, but is ' + JSON.stringify(crf));
55
70
  }
56
71
  const range = (0, exports.getValidCrfRanges)(codec);
57
72
  if (crf === 0 && (codec === 'h264' || codec === 'h264-mkv')) {
58
- throw new TypeError("Setting the CRF to 0 with a H264 codec is not supported anymore because of it's inconsistencies between platforms. Videos with CRF 0 cannot be played on iOS/macOS. 0 is a extreme value with inefficient settings which you probably want. Set CRF to a higher value to fix this error.");
73
+ throw new TypeError("Setting the CRF to 0 with a H264 codec is not supported anymore because of it's inconsistencies between platforms. Videos with CRF 0 cannot be played on iOS/macOS. 0 is a extreme value with inefficient settings which you probably do not want. Set CRF to a higher value to fix this error.");
59
74
  }
60
75
  if (crf < range[0] || crf > range[1]) {
76
+ if (range[0] === 0 && range[1] === 0) {
77
+ throw new TypeError(`The "${codec}" codec does not support the --crf option.`);
78
+ }
61
79
  throw new TypeError(`CRF must be between ${range[0]} and ${range[1]} for codec ${codec}. Passed: ${crf}`);
62
80
  }
81
+ if (codec === 'prores') {
82
+ console.warn('ProRes does not support the "crf" option. Ignoring.');
83
+ return [];
84
+ }
85
+ if ((0, is_audio_codec_1.isAudioCodec)(codec)) {
86
+ console.warn(`${codec} does not support the "crf" option. Ignoring.`);
87
+ return [];
88
+ }
89
+ return ['-crf', String(crf)];
63
90
  };
64
- exports.validateSelectedCrfAndCodecCombination = validateSelectedCrfAndCodecCombination;
91
+ exports.validateQualitySettings = validateQualitySettings;
@@ -1,7 +1,4 @@
1
- import type { openBrowser } from './open-browser';
2
- declare type Await<T> = T extends PromiseLike<infer U> ? U : T;
3
- declare type Browser = Await<ReturnType<typeof openBrowser>>;
4
- export declare const cycleBrowserTabs: (puppeteerInstance: Browser, concurrency: number) => {
1
+ import type { BrowserReplacer } from './replace-browser';
2
+ export declare const cycleBrowserTabs: (puppeteerInstance: BrowserReplacer, concurrency: number) => {
5
3
  stopCycling: () => void;
6
4
  };
7
- export {};
@@ -13,24 +13,24 @@ const cycleBrowserTabs = (puppeteerInstance, concurrency) => {
13
13
  const set = () => {
14
14
  interval = setTimeout(() => {
15
15
  puppeteerInstance
16
+ .getBrowser()
16
17
  .pages()
17
18
  .then((pages) => {
18
- var _a;
19
19
  if (pages.length === 0) {
20
20
  return;
21
21
  }
22
22
  const currentPage = pages[i % pages.length];
23
23
  i++;
24
- if (!((_a = currentPage === null || currentPage === void 0 ? void 0 : currentPage.isClosed) === null || _a === void 0 ? void 0 : _a.call(currentPage)) &&
24
+ if (!(currentPage === null || currentPage === void 0 ? void 0 : currentPage.closed) &&
25
25
  !stopped &&
26
26
  (currentPage === null || currentPage === void 0 ? void 0 : currentPage.url()) !== 'about:blank') {
27
27
  return currentPage.bringToFront();
28
28
  }
29
29
  })
30
- .then(() => {
30
+ .catch((err) => console.log(err))
31
+ .finally(() => {
31
32
  set();
32
- })
33
- .catch((err) => console.log(err));
33
+ });
34
34
  }, 200);
35
35
  };
36
36
  set();
File without changes
File without changes
@@ -1 +1 @@
1
- export declare const deleteDirectory: (directory: string) => Promise<void>;
1
+ export declare const deleteDirectory: (directory: string) => void;
@@ -1,30 +1,56 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
2
25
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
27
  };
5
28
  Object.defineProperty(exports, "__esModule", { value: true });
6
29
  exports.deleteDirectory = void 0;
7
30
  const execa_1 = __importDefault(require("execa"));
8
- const fs_1 = __importDefault(require("fs"));
31
+ const fs_1 = __importStar(require("fs"));
9
32
  const is_serve_url_1 = require("./is-serve-url");
10
- const deleteDirectory = async (directory) => {
33
+ const deleteDirectory = (directory) => {
11
34
  var _a;
12
35
  if ((0, is_serve_url_1.isServeUrl)(directory)) {
13
36
  return;
14
37
  }
38
+ if (!(0, fs_1.existsSync)(directory)) {
39
+ return;
40
+ }
15
41
  if (process.platform === 'win32') {
16
42
  // We use del before to remove all files inside the directories otherwise
17
43
  // rmdir will throw an error.
18
- await (0, execa_1.default)('cmd', ['/c', 'del', '/f', '/s', '/q', directory]);
44
+ execa_1.default.sync('cmd', ['/c', 'del', '/f', '/s', '/q', directory]);
19
45
  try {
20
- await (0, execa_1.default)('cmd', ['/c', 'rmdir', '/s', '/q', directory]);
46
+ execa_1.default.sync('cmd', ['/c', 'rmdir', '/s', '/q', directory]);
21
47
  }
22
48
  catch (err) {
23
49
  // Is not a directory
24
50
  }
25
51
  }
26
52
  else {
27
- await ((_a = fs_1.default.promises.rm) !== null && _a !== void 0 ? _a : fs_1.default.promises.rmdir)(directory, {
53
+ ((_a = fs_1.default.rmSync) !== null && _a !== void 0 ? _a : fs_1.default.rmdirSync)(directory, {
28
54
  recursive: true,
29
55
  });
30
56
  }
@@ -0,0 +1 @@
1
+ export declare const determineResizeParams: (needsResize: [number, number] | null) => string[];
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.determineResizeParams = void 0;
4
+ const determineResizeParams = (needsResize) => {
5
+ if (needsResize === null) {
6
+ return [];
7
+ }
8
+ return ['-s', `${needsResize[0]}x${needsResize[1]}`];
9
+ };
10
+ exports.determineResizeParams = determineResizeParams;
@@ -0,0 +1,2 @@
1
+ import type { SpecialVCodecForTransparency } from './assets/download-map';
2
+ export declare const determineVcodecFfmpegFlags: (vcodecFlag: SpecialVCodecForTransparency) => string[];
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.determineVcodecFfmpegFlags = void 0;
4
+ const truthy_1 = require("./truthy");
5
+ const determineVcodecFfmpegFlags = (vcodecFlag) => {
6
+ return [
7
+ vcodecFlag === 'vp9' ? '-vcodec' : null,
8
+ vcodecFlag === 'vp9' ? 'libvpx-vp9' : null,
9
+ vcodecFlag === 'vp8' ? '-vcodec' : null,
10
+ vcodecFlag === 'vp8' ? 'libvpx' : null,
11
+ ].filter(truthy_1.truthy);
12
+ };
13
+ exports.determineVcodecFfmpegFlags = determineVcodecFfmpegFlags;
@@ -0,0 +1,3 @@
1
+ import type { Codec } from './codec';
2
+ import type { PixelFormat } from './pixel-format';
3
+ export declare const warnAboutM2Bug: (codec: Codec | null, pixelFormat: PixelFormat | null) => void;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.warnAboutM2Bug = void 0;
4
+ const os_1 = require("os");
5
+ const warnAboutM2Bug = (codec, pixelFormat) => {
6
+ const isM2 = (0, os_1.cpus)().find((c) => c.model.includes('Apple M2'));
7
+ if (codec === 'prores' && pixelFormat === 'yuv422p10le' && isM2) {
8
+ console.warn();
9
+ console.warn('⚠️ Known issue: Apple M2 CPUs currently suffer from a bug where transparent ProRes videos have flickering. https://github.com/remotion-dev/remotion/issues/1929');
10
+ }
11
+ };
12
+ exports.warnAboutM2Bug = warnAboutM2Bug;
@@ -0,0 +1,18 @@
1
+ export declare type EnsureFfmpegOptions = {
2
+ remotionRoot?: string;
3
+ };
4
+ declare type Result = {
5
+ result: 'found-in-path' | 'found-in-node-modules' | 'installed';
6
+ wasAlreadyInstalled: boolean;
7
+ };
8
+ /**
9
+ * @description Checks if the ffmpeg binary is installed and if it is not, downloads it and puts it into your node_modules folder.
10
+ * @see [Documentation](https://www.remotion.dev/docs/renderer/ensure-ffmpeg)
11
+ */
12
+ export declare const ensureFfmpeg: (options?: EnsureFfmpegOptions) => Promise<Result>;
13
+ /**
14
+ * @description Checks if the ffprobe binary is installed and if it is not, downloads it and puts it into your node_modules folder.
15
+ * @see [Documentation](https://www.remotion.dev/docs/renderer/ensure-ffprobe)
16
+ */
17
+ export declare const ensureFfprobe: (options?: EnsureFfmpegOptions) => Promise<Result>;
18
+ export {};
@@ -0,0 +1,58 @@
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.ensureFfprobe = exports.ensureFfmpeg = void 0;
7
+ const fs_1 = require("fs");
8
+ const os_1 = __importDefault(require("os"));
9
+ const ffmpeg_flags_1 = require("./ffmpeg-flags");
10
+ const validate_ffmpeg_1 = require("./validate-ffmpeg");
11
+ const ensureFfmpegOrFfprobe = async (binary, options) => {
12
+ var _a;
13
+ const exists = (0, validate_ffmpeg_1.binaryExists)(binary);
14
+ const remotionRoot = (_a = options === null || options === void 0 ? void 0 : options.remotionRoot) !== null && _a !== void 0 ? _a : process.cwd();
15
+ if (exists) {
16
+ return {
17
+ wasAlreadyInstalled: true,
18
+ result: 'found-in-path',
19
+ };
20
+ }
21
+ if (process.platform === 'linux' && (0, fs_1.existsSync)(ffmpeg_flags_1.lambdaFfmpegPaths[binary])) {
22
+ return {
23
+ wasAlreadyInstalled: true,
24
+ result: 'found-in-path',
25
+ };
26
+ }
27
+ if ((0, ffmpeg_flags_1.ffmpegInNodeModules)(remotionRoot, binary)) {
28
+ return {
29
+ result: 'found-in-node-modules',
30
+ wasAlreadyInstalled: true,
31
+ };
32
+ }
33
+ const binaryUrl = (0, ffmpeg_flags_1.getBinaryDownloadUrl)(binary);
34
+ if (binaryUrl) {
35
+ await (0, ffmpeg_flags_1.downloadBinary)(remotionRoot, binaryUrl.url, binary);
36
+ return {
37
+ result: 'installed',
38
+ wasAlreadyInstalled: false,
39
+ };
40
+ }
41
+ 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.`);
42
+ };
43
+ /**
44
+ * @description Checks if the ffmpeg binary is installed and if it is not, downloads it and puts it into your node_modules folder.
45
+ * @see [Documentation](https://www.remotion.dev/docs/renderer/ensure-ffmpeg)
46
+ */
47
+ const ensureFfmpeg = (options) => {
48
+ return ensureFfmpegOrFfprobe('ffmpeg', options);
49
+ };
50
+ exports.ensureFfmpeg = ensureFfmpeg;
51
+ /**
52
+ * @description Checks if the ffprobe binary is installed and if it is not, downloads it and puts it into your node_modules folder.
53
+ * @see [Documentation](https://www.remotion.dev/docs/renderer/ensure-ffprobe)
54
+ */
55
+ const ensureFfprobe = (options) => {
56
+ return ensureFfmpegOrFfprobe('ffprobe', options);
57
+ };
58
+ exports.ensureFfprobe = ensureFfprobe;
File without changes
File without changes
File without changes
File without changes
@@ -1,2 +1,15 @@
1
1
  import type { DownloadMap } from './assets/download-map';
2
- export declare const ensurePresentationTimestamps: (downloadMap: DownloadMap, src: string) => Promise<string>;
2
+ import type { FfmpegExecutable } from './ffmpeg-executable';
3
+ export declare const ensurePresentationTimestampWithoutCache: ({ src, remotionRoot, ffmpegExecutable, ffprobeExecutable, }: {
4
+ src: string;
5
+ remotionRoot: string;
6
+ ffmpegExecutable: FfmpegExecutable;
7
+ ffprobeExecutable: FfmpegExecutable;
8
+ }) => Promise<string>;
9
+ export declare const ensurePresentationTimestamps: ({ downloadMap, src, remotionRoot, ffmpegExecutable, ffprobeExecutable, }: {
10
+ downloadMap: DownloadMap;
11
+ src: string;
12
+ remotionRoot: string;
13
+ ffmpegExecutable: FfmpegExecutable;
14
+ ffprobeExecutable: FfmpegExecutable;
15
+ }) => Promise<string>;