@remotion/renderer 4.0.0-webhook.26 → 4.0.0

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 (413) hide show
  1. package/LICENSE.md +8 -8
  2. package/README.md +9 -0
  3. package/client.d.ts +1 -0
  4. package/client.js +1 -0
  5. package/dist/assets/calculate-asset-positions.d.ts +0 -0
  6. package/dist/assets/calculate-asset-positions.js +1 -0
  7. package/dist/assets/calculate-atempo.d.ts +0 -0
  8. package/dist/assets/calculate-atempo.js +0 -0
  9. package/dist/assets/convert-assets-to-file-urls.d.ts +0 -0
  10. package/dist/assets/convert-assets-to-file-urls.js +0 -0
  11. package/dist/assets/download-and-map-assets-to-file.d.ts +6 -4
  12. package/dist/assets/download-and-map-assets-to-file.js +49 -19
  13. package/dist/assets/download-file.d.ts +8 -5
  14. package/dist/assets/download-file.js +71 -8
  15. package/dist/assets/download-map.d.ts +8 -29
  16. package/dist/assets/download-map.js +15 -16
  17. package/dist/assets/ffmpeg-volume-expression.d.ts +4 -3
  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 +2 -2
  22. package/dist/assets/get-audio-channels.js +14 -12
  23. package/dist/assets/read-file.d.ts +1 -1
  24. package/dist/assets/read-file.js +5 -7
  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 +2 -2
  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 +5 -4
  34. package/dist/assets/types.js +0 -0
  35. package/dist/audio-codec.d.ts +28 -0
  36. package/dist/audio-codec.js +83 -0
  37. package/dist/browser/Browser.d.ts +19 -16
  38. package/dist/browser/Browser.js +72 -75
  39. package/dist/browser/BrowserConnector.d.ts +0 -0
  40. package/dist/browser/BrowserConnector.js +0 -0
  41. package/dist/browser/BrowserFetcher.d.ts +16 -64
  42. package/dist/browser/BrowserFetcher.js +147 -235
  43. package/dist/browser/BrowserPage.d.ts +32 -6
  44. package/dist/browser/BrowserPage.js +90 -26
  45. package/dist/browser/BrowserRunner.d.ts +1 -1
  46. package/dist/browser/BrowserRunner.js +32 -22
  47. package/dist/browser/Connection.d.ts +9 -3
  48. package/dist/browser/Connection.js +12 -4
  49. package/dist/browser/ConsoleMessage.d.ts +9 -2
  50. package/dist/browser/ConsoleMessage.js +2 -1
  51. package/dist/browser/DOMWorld.d.ts +5 -4
  52. package/dist/browser/DOMWorld.js +16 -9
  53. package/dist/browser/Errors.d.ts +0 -0
  54. package/dist/browser/Errors.js +0 -0
  55. package/dist/browser/EvalTypes.d.ts +7 -7
  56. package/dist/browser/EvalTypes.js +0 -0
  57. package/dist/browser/EventEmitter.d.ts +0 -0
  58. package/dist/browser/EventEmitter.js +0 -0
  59. package/dist/browser/ExecutionContext.d.ts +0 -0
  60. package/dist/browser/ExecutionContext.js +4 -4
  61. package/dist/browser/FrameManager.d.ts +0 -2
  62. package/dist/browser/FrameManager.js +15 -19
  63. package/dist/browser/HTTPRequest.d.ts +0 -0
  64. package/dist/browser/HTTPRequest.js +0 -0
  65. package/dist/browser/HTTPResponse.d.ts +0 -0
  66. package/dist/browser/HTTPResponse.js +0 -0
  67. package/dist/browser/JSHandle.d.ts +0 -0
  68. package/dist/browser/JSHandle.js +14 -14
  69. package/dist/browser/LaunchOptions.d.ts +4 -2
  70. package/dist/browser/LaunchOptions.js +0 -0
  71. package/dist/browser/Launcher.d.ts +9 -3
  72. package/dist/browser/Launcher.js +17 -29
  73. package/dist/browser/LifecycleWatcher.d.ts +1 -1
  74. package/dist/browser/LifecycleWatcher.js +0 -0
  75. package/dist/browser/NetworkEventManager.d.ts +4 -4
  76. package/dist/browser/NetworkEventManager.js +0 -0
  77. package/dist/browser/NetworkManager.d.ts +4 -1
  78. package/dist/browser/NetworkManager.js +0 -0
  79. package/dist/browser/NodeWebSocketTransport.d.ts +0 -0
  80. package/dist/browser/NodeWebSocketTransport.js +21 -21
  81. package/dist/browser/Product.d.ts +1 -1
  82. package/dist/browser/Product.js +0 -0
  83. package/dist/browser/PuppeteerNode.d.ts +2 -5
  84. package/dist/browser/PuppeteerNode.js +2 -11
  85. package/dist/browser/PuppeteerViewport.d.ts +0 -0
  86. package/dist/browser/PuppeteerViewport.js +0 -0
  87. package/dist/browser/ScreenshotOptions.d.ts +0 -14
  88. package/dist/browser/ScreenshotOptions.js +0 -1
  89. package/dist/browser/Target.d.ts +5 -3
  90. package/dist/browser/Target.js +10 -2
  91. package/dist/browser/TaskQueue.d.ts +0 -0
  92. package/dist/browser/TaskQueue.js +0 -0
  93. package/dist/browser/TimeoutSettings.d.ts +0 -0
  94. package/dist/browser/TimeoutSettings.js +0 -0
  95. package/dist/browser/assert.d.ts +0 -0
  96. package/dist/browser/assert.js +0 -0
  97. package/dist/browser/create-browser-fetcher.d.ts +0 -0
  98. package/dist/browser/create-browser-fetcher.js +34 -48
  99. package/dist/browser/devtools-commands.d.ts +5 -1
  100. package/dist/browser/devtools-commands.js +0 -0
  101. package/dist/browser/devtools-types.d.ts +151 -10
  102. package/dist/browser/devtools-types.js +0 -0
  103. package/dist/browser/get-download-destination.d.ts +0 -0
  104. package/dist/browser/get-download-destination.js +8 -8
  105. package/dist/browser/is-target-closed-err.d.ts +1 -0
  106. package/dist/browser/is-target-closed-err.js +9 -0
  107. package/dist/browser/mitt/index.d.ts +6 -6
  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 +1 -1
  112. package/dist/browser/revisions.js +0 -0
  113. package/dist/browser/should-log-message.d.ts +24 -0
  114. package/dist/browser/should-log-message.js +80 -0
  115. package/dist/browser/util.d.ts +2 -2
  116. package/dist/browser/util.js +0 -0
  117. package/dist/browser-executable.d.ts +1 -1
  118. package/dist/browser-executable.js +0 -0
  119. package/dist/browser-log.d.ts +1 -1
  120. package/dist/browser-log.js +0 -0
  121. package/dist/browser.d.ts +1 -1
  122. package/dist/browser.js +0 -0
  123. package/dist/calculate-ffmpeg-filters.d.ts +2 -1
  124. package/dist/calculate-ffmpeg-filters.js +1 -0
  125. package/dist/call-ffmpeg.d.ts +14 -0
  126. package/dist/call-ffmpeg.js +42 -0
  127. package/dist/can-use-parallel-encoding.d.ts +0 -0
  128. package/dist/can-use-parallel-encoding.js +0 -0
  129. package/dist/chalk/index.d.ts +55 -0
  130. package/dist/chalk/index.js +130 -0
  131. package/dist/chalk/is-color-supported.d.ts +1 -0
  132. package/dist/chalk/is-color-supported.js +45 -0
  133. package/dist/check-apple-silicon.d.ts +1 -1
  134. package/dist/check-apple-silicon.js +8 -47
  135. package/dist/chunk.d.ts +0 -0
  136. package/dist/chunk.js +0 -0
  137. package/dist/client.d.ts +204 -0
  138. package/dist/client.js +49 -0
  139. package/dist/codec-supports-media.d.ts +3 -2
  140. package/dist/codec-supports-media.js +20 -5
  141. package/dist/codec.d.ts +2 -2
  142. package/dist/codec.js +0 -0
  143. package/dist/combine-videos.d.ts +6 -2
  144. package/dist/combine-videos.js +17 -17
  145. package/dist/compositor/compose.d.ts +26 -0
  146. package/dist/compositor/compose.js +87 -0
  147. package/dist/compositor/compositor.d.ts +12 -0
  148. package/dist/compositor/compositor.js +219 -0
  149. package/dist/compositor/get-executable-path.d.ts +1 -0
  150. package/dist/compositor/get-executable-path.js +57 -0
  151. package/dist/compositor/make-nonce.d.ts +1 -0
  152. package/dist/compositor/make-nonce.js +8 -0
  153. package/dist/compositor/payloads.d.ts +68 -0
  154. package/dist/{ffmpeg-executable.js → compositor/payloads.js} +0 -0
  155. package/dist/compress-assets.d.ts +0 -0
  156. package/dist/compress-assets.js +0 -0
  157. package/dist/convert-number-of-gif-loops-to-ffmpeg.d.ts +0 -0
  158. package/dist/convert-number-of-gif-loops-to-ffmpeg.js +0 -0
  159. package/dist/convert-to-positive-frame-index.d.ts +0 -0
  160. package/dist/convert-to-positive-frame-index.js +0 -0
  161. package/dist/create-ffmpeg-complex-filter.d.ts +5 -1
  162. package/dist/create-ffmpeg-complex-filter.js +6 -4
  163. package/dist/create-ffmpeg-merge-filter.d.ts +5 -1
  164. package/dist/create-ffmpeg-merge-filter.js +20 -13
  165. package/dist/create-silent-audio.d.ts +1 -3
  166. package/dist/create-silent-audio.js +3 -6
  167. package/dist/crf.d.ts +6 -2
  168. package/dist/crf.js +41 -8
  169. package/dist/cycle-browser-tabs.d.ts +3 -5
  170. package/dist/cycle-browser-tabs.js +7 -7
  171. package/dist/delay-render-embedded-stack.d.ts +0 -0
  172. package/dist/delay-render-embedded-stack.js +0 -0
  173. package/dist/delete-directory.d.ts +1 -1
  174. package/dist/delete-directory.js +43 -17
  175. package/dist/does-have-m2-bug.d.ts +3 -0
  176. package/dist/does-have-m2-bug.js +12 -0
  177. package/dist/ensure-frames-in-order.d.ts +0 -0
  178. package/dist/ensure-frames-in-order.js +0 -0
  179. package/dist/ensure-output-directory.d.ts +0 -0
  180. package/dist/ensure-output-directory.js +5 -5
  181. package/dist/error-handling/handle-javascript-exception.d.ts +0 -0
  182. package/dist/error-handling/handle-javascript-exception.js +10 -0
  183. package/dist/error-handling/symbolicate-error.d.ts +0 -0
  184. package/dist/error-handling/symbolicate-error.js +6 -3
  185. package/dist/error-handling/symbolicateable-error.d.ts +0 -0
  186. package/dist/error-handling/symbolicateable-error.js +0 -0
  187. package/dist/ffmpeg-filter-file.d.ts +6 -1
  188. package/dist/ffmpeg-filter-file.js +40 -8
  189. package/dist/ffmpeg-override.d.ts +1 -1
  190. package/dist/ffmpeg-override.js +0 -0
  191. package/dist/file-extensions.d.ts +14 -0
  192. package/dist/file-extensions.js +76 -0
  193. package/dist/find-closest-package-json.d.ts +2 -0
  194. package/dist/find-closest-package-json.js +31 -0
  195. package/dist/format-logs.d.ts +3 -0
  196. package/dist/format-logs.js +201 -0
  197. package/dist/frame-range.d.ts +1 -1
  198. package/dist/frame-range.js +0 -0
  199. package/dist/get-browser-instance.d.ts +9 -3
  200. package/dist/get-browser-instance.js +10 -5
  201. package/dist/get-codec-name.d.ts +0 -0
  202. package/dist/get-codec-name.js +0 -0
  203. package/dist/get-compositions.d.ts +28 -14
  204. package/dist/get-compositions.js +74 -40
  205. package/dist/get-concurrency.d.ts +1 -1
  206. package/dist/get-concurrency.js +11 -4
  207. package/dist/get-duration-from-frame-range.d.ts +0 -0
  208. package/dist/get-duration-from-frame-range.js +0 -0
  209. package/dist/get-extension-from-codec.d.ts +5 -1
  210. package/dist/get-extension-from-codec.js +56 -32
  211. package/dist/get-extension-of-filename.d.ts +0 -0
  212. package/dist/get-extension-of-filename.js +5 -1
  213. package/dist/get-frame-padded-index.d.ts +3 -2
  214. package/dist/get-frame-padded-index.js +3 -2
  215. package/dist/get-frame-to-render.d.ts +0 -0
  216. package/dist/get-frame-to-render.js +1 -1
  217. package/dist/get-local-browser-executable.d.ts +0 -0
  218. package/dist/get-local-browser-executable.js +7 -15
  219. package/dist/get-port.d.ts +4 -1
  220. package/dist/get-port.js +8 -8
  221. package/dist/get-prores-profile-name.d.ts +0 -0
  222. package/dist/get-prores-profile-name.js +0 -0
  223. package/dist/get-video-threads-flag.d.ts +0 -0
  224. package/dist/get-video-threads-flag.js +3 -3
  225. package/dist/guess-extension-for-media.d.ts +3 -1
  226. package/dist/guess-extension-for-media.js +4 -7
  227. package/dist/image-format.d.ts +12 -6
  228. package/dist/image-format.js +19 -13
  229. package/dist/index.d.ts +369 -49
  230. package/dist/index.js +67 -46
  231. package/dist/is-audio-codec.d.ts +0 -0
  232. package/dist/is-audio-codec.js +0 -0
  233. package/dist/is-serve-url.d.ts +0 -0
  234. package/dist/is-serve-url.js +0 -0
  235. package/dist/jpeg-quality.d.ts +2 -0
  236. package/dist/jpeg-quality.js +22 -0
  237. package/dist/locks.d.ts +7 -0
  238. package/dist/locks.js +44 -0
  239. package/dist/log-level.d.ts +1 -1
  240. package/dist/log-level.js +0 -0
  241. package/dist/logger.d.ts +23 -0
  242. package/dist/logger.js +63 -0
  243. package/dist/make-cancel-signal.d.ts +13 -2
  244. package/dist/make-cancel-signal.js +24 -1
  245. package/dist/merge-audio-track.d.ts +4 -4
  246. package/dist/merge-audio-track.js +38 -33
  247. package/dist/mime-db.d.ts +0 -0
  248. package/dist/mime-db.js +0 -0
  249. package/dist/mime-types.d.ts +0 -0
  250. package/dist/mime-types.js +3 -3
  251. package/dist/normalize-serve-url.d.ts +0 -0
  252. package/dist/normalize-serve-url.js +0 -0
  253. package/dist/offthread-video-server.d.ts +48 -11
  254. package/dist/offthread-video-server.js +112 -58
  255. package/dist/open-browser.d.ts +22 -6
  256. package/dist/open-browser.js +40 -17
  257. package/dist/options/audio-bitrate.d.ts +2 -0
  258. package/dist/options/audio-bitrate.js +11 -0
  259. package/dist/options/crf.d.ts +2 -0
  260. package/dist/options/crf.js +11 -0
  261. package/dist/options/enforce-audio.d.ts +2 -0
  262. package/dist/options/enforce-audio.js +11 -0
  263. package/dist/options/jpeg-quality.d.ts +2 -0
  264. package/dist/options/jpeg-quality.js +11 -0
  265. package/dist/options/mute.d.ts +2 -0
  266. package/dist/options/mute.js +11 -0
  267. package/dist/options/option.d.ts +8 -0
  268. package/dist/options/option.js +2 -0
  269. package/dist/options/scale.d.ts +2 -0
  270. package/dist/options/scale.js +11 -0
  271. package/dist/options/video-bitrate.d.ts +2 -0
  272. package/dist/options/video-bitrate.js +11 -0
  273. package/dist/options/video-codec.d.ts +2 -0
  274. package/dist/options/video-codec.js +11 -0
  275. package/dist/overwrite.d.ts +0 -0
  276. package/dist/overwrite.js +0 -0
  277. package/dist/p-limit.d.ts +0 -0
  278. package/dist/p-limit.js +0 -0
  279. package/dist/parse-browser-error-stack.d.ts +1 -1
  280. package/dist/parse-browser-error-stack.js +0 -0
  281. package/dist/parse-ffmpeg-progress.d.ts +0 -0
  282. package/dist/parse-ffmpeg-progress.js +0 -0
  283. package/dist/perf.d.ts +2 -2
  284. package/dist/perf.js +11 -7
  285. package/dist/pixel-format.d.ts +2 -2
  286. package/dist/pixel-format.js +3 -0
  287. package/dist/pool.d.ts +0 -0
  288. package/dist/pool.js +0 -0
  289. package/dist/prepare-server.d.ts +26 -10
  290. package/dist/prepare-server.js +71 -18
  291. package/dist/preprocess-audio-track.d.ts +7 -5
  292. package/dist/preprocess-audio-track.js +7 -8
  293. package/dist/prespawn-ffmpeg.d.ts +22 -11
  294. package/dist/prespawn-ffmpeg.js +41 -31
  295. package/dist/prestitcher-memory-usage.d.ts +0 -4
  296. package/dist/prestitcher-memory-usage.js +4 -5
  297. package/dist/prores-profile.d.ts +6 -4
  298. package/dist/prores-profile.js +8 -8
  299. package/dist/provide-screenshot.d.ts +8 -4
  300. package/dist/provide-screenshot.js +5 -2
  301. package/dist/puppeteer-evaluate.d.ts +4 -1
  302. package/dist/puppeteer-evaluate.js +23 -15
  303. package/dist/puppeteer-screenshot.d.ts +12 -2
  304. package/dist/puppeteer-screenshot.js +18 -45
  305. package/dist/redirect-status-codes.d.ts +1 -0
  306. package/dist/redirect-status-codes.js +6 -0
  307. package/dist/render-frames.d.ts +59 -35
  308. package/dist/render-frames.js +256 -147
  309. package/dist/render-media.d.ts +82 -28
  310. package/dist/render-media.js +322 -195
  311. package/dist/render-still.d.ts +52 -19
  312. package/dist/render-still.js +132 -74
  313. package/dist/replace-browser.d.ts +7 -0
  314. package/dist/replace-browser.js +47 -0
  315. package/dist/resolve-asset-src.d.ts +0 -0
  316. package/dist/resolve-asset-src.js +2 -2
  317. package/dist/sample-rate.d.ts +0 -0
  318. package/dist/sample-rate.js +0 -0
  319. package/dist/screenshot-dom-element.d.ts +8 -4
  320. package/dist/screenshot-dom-element.js +15 -4
  321. package/dist/screenshot-task.d.ts +11 -2
  322. package/dist/screenshot-task.js +45 -13
  323. package/dist/seek-to-frame.d.ts +3 -1
  324. package/dist/seek-to-frame.js +53 -7
  325. package/dist/select-composition.d.ts +46 -0
  326. package/dist/select-composition.js +157 -0
  327. package/dist/serve-handler/index.d.ts +1 -1
  328. package/dist/serve-handler/index.js +21 -19
  329. package/dist/serve-handler/is-path-inside.d.ts +0 -0
  330. package/dist/serve-handler/is-path-inside.js +3 -3
  331. package/dist/serve-handler/range-parser.d.ts +0 -0
  332. package/dist/serve-handler/range-parser.js +0 -0
  333. package/dist/serve-static.d.ts +9 -6
  334. package/dist/serve-static.js +85 -59
  335. package/dist/set-props-and-env.d.ts +5 -3
  336. package/dist/set-props-and-env.js +20 -12
  337. package/dist/stitch-frames-to-video.d.ts +40 -16
  338. package/dist/stitch-frames-to-video.js +200 -121
  339. package/dist/stringify-ffmpeg-filter.d.ts +10 -2
  340. package/dist/stringify-ffmpeg-filter.js +37 -34
  341. package/dist/symbolicate-stacktrace.d.ts +16 -3
  342. package/dist/symbolicate-stacktrace.js +49 -24
  343. package/dist/take-frame-and-compose.d.ts +22 -0
  344. package/dist/take-frame-and-compose.js +103 -0
  345. package/dist/tmp-dir.d.ts +0 -0
  346. package/dist/tmp-dir.js +7 -8
  347. package/dist/truthy.d.ts +1 -1
  348. package/dist/truthy.js +0 -0
  349. package/dist/types.d.ts +2 -2
  350. package/dist/types.js +0 -0
  351. package/dist/validate-concurrency.d.ts +2 -0
  352. package/dist/validate-concurrency.js +21 -10
  353. package/dist/validate-even-dimensions-with-codec.d.ts +0 -0
  354. package/dist/validate-even-dimensions-with-codec.js +0 -0
  355. package/dist/validate-every-nth-frame.d.ts +2 -1
  356. package/dist/validate-every-nth-frame.js +8 -1
  357. package/dist/validate-ffmpeg-override.d.ts +0 -0
  358. package/dist/validate-ffmpeg-override.js +0 -0
  359. package/dist/validate-number-of-gif-loops.d.ts +2 -0
  360. package/dist/validate-number-of-gif-loops.js +24 -0
  361. package/dist/validate-opengl-renderer.d.ts +1 -1
  362. package/dist/validate-opengl-renderer.js +0 -0
  363. package/dist/validate-output-filename.d.ts +7 -2
  364. package/dist/validate-output-filename.js +20 -51
  365. package/dist/validate-puppeteer-timeout.d.ts +0 -0
  366. package/dist/validate-puppeteer-timeout.js +1 -0
  367. package/dist/validate-scale.d.ts +0 -0
  368. package/dist/validate-scale.js +0 -0
  369. package/dist/validate-videobitrate.d.ts +1 -0
  370. package/dist/validate-videobitrate.js +20 -0
  371. package/dist/wait-for-symbolication-error-to-be-done.d.ts +0 -0
  372. package/dist/wait-for-symbolication-error-to-be-done.js +5 -31
  373. package/dist/ws/ws-types.d.ts +0 -0
  374. package/dist/ws/ws-types.js +2 -1
  375. package/install-toolchain.mjs +36 -0
  376. package/package.json +70 -60
  377. package/types/ws/index.d.ts +5 -5
  378. package/.prettierrc.js +0 -14
  379. package/dist/assets/dl-browser.d.ts +0 -1
  380. package/dist/assets/dl-browser.js +0 -38
  381. package/dist/assets/get-video-stream-duration.d.ts +0 -4
  382. package/dist/assets/get-video-stream-duration.js +0 -59
  383. package/dist/calculate-sar-dar-pixels.d.ts +0 -9
  384. package/dist/calculate-sar-dar-pixels.js +0 -19
  385. package/dist/convert-to-pcm.d.ts +0 -6
  386. package/dist/convert-to-pcm.js +0 -20
  387. package/dist/ensure-presentation-timestamp.d.ts +0 -2
  388. package/dist/ensure-presentation-timestamp.js +0 -69
  389. package/dist/extract-frame-from-video.d.ts +0 -16
  390. package/dist/extract-frame-from-video.js +0 -277
  391. package/dist/ffmpeg-executable.d.ts +0 -1
  392. package/dist/ffmpeg-flags.d.ts +0 -12
  393. package/dist/ffmpeg-flags.js +0 -45
  394. package/dist/frame-to-ffmpeg-timestamp.d.ts +0 -1
  395. package/dist/frame-to-ffmpeg-timestamp.js +0 -8
  396. package/dist/get-audio-codec-name.d.ts +0 -2
  397. package/dist/get-audio-codec-name.js +0 -28
  398. package/dist/get-video-info.d.ts +0 -3
  399. package/dist/get-video-info.js +0 -49
  400. package/dist/is-beyond-last-frame.d.ts +0 -3
  401. package/dist/is-beyond-last-frame.js +0 -12
  402. package/dist/last-frame-from-video-cache.d.ts +0 -17
  403. package/dist/last-frame-from-video-cache.js +0 -55
  404. package/dist/legacy-webpack-config.d.ts +0 -9
  405. package/dist/legacy-webpack-config.js +0 -13
  406. package/dist/quality.d.ts +0 -1
  407. package/dist/quality.js +0 -21
  408. package/dist/validate-ffmpeg.d.ts +0 -2
  409. package/dist/validate-ffmpeg.js +0 -72
  410. package/dist/validate-frame.d.ts +0 -1
  411. package/dist/validate-frame.js +0 -24
  412. package/tsconfig.json +0 -10
  413. package/vitest.config.ts +0 -8
@@ -1,5 +1,6 @@
1
+ import type { AudioCodec } from './audio-codec';
1
2
  import type { Codec } from './codec';
2
- export declare const combineVideos: ({ files, filelistDir, output, onProgress, numberOfFrames, codec, fps, numberOfGifLoops, }: {
3
+ type Options = {
3
4
  files: string[];
4
5
  filelistDir: string;
5
6
  output: string;
@@ -8,4 +9,7 @@ export declare const combineVideos: ({ files, filelistDir, output, onProgress, n
8
9
  codec: Codec;
9
10
  fps: number;
10
11
  numberOfGifLoops: number | null;
11
- }) => Promise<void>;
12
+ audioCodec: AudioCodec | null;
13
+ };
14
+ export declare const combineVideos: (options: Options) => Promise<void>;
15
+ export {};
@@ -1,24 +1,23 @@
1
1
  "use strict";
2
2
  // Combine multiple video chunks, useful for decentralized rendering
3
- var __importDefault = (this && this.__importDefault) || function (mod) {
4
- return (mod && mod.__esModule) ? mod : { "default": mod };
5
- };
6
3
  Object.defineProperty(exports, "__esModule", { value: true });
7
4
  exports.combineVideos = void 0;
8
- const execa_1 = __importDefault(require("execa"));
9
- const fs_1 = require("fs");
10
- const path_1 = require("path");
11
- const get_audio_codec_name_1 = require("./get-audio-codec-name");
5
+ const node_fs_1 = require("node:fs");
6
+ const node_path_1 = require("node:path");
7
+ const audio_codec_1 = require("./audio-codec");
8
+ const call_ffmpeg_1 = require("./call-ffmpeg");
12
9
  const is_audio_codec_1 = require("./is-audio-codec");
13
10
  const parse_ffmpeg_progress_1 = require("./parse-ffmpeg-progress");
14
11
  const truthy_1 = require("./truthy");
15
- const combineVideos = async ({ files, filelistDir, output, onProgress, numberOfFrames, codec, fps, numberOfGifLoops, }) => {
12
+ const combineVideos = async (options) => {
16
13
  var _a;
14
+ const { files, filelistDir, output, onProgress, numberOfFrames, codec, fps, numberOfGifLoops, audioCodec, } = options;
17
15
  const fileList = files.map((p) => `file '${p}'`).join('\n');
18
- const fileListTxt = (0, path_1.join)(filelistDir, 'files.txt');
19
- (0, fs_1.writeFileSync)(fileListTxt, fileList);
16
+ const fileListTxt = (0, node_path_1.join)(filelistDir, 'files.txt');
17
+ (0, node_fs_1.writeFileSync)(fileListTxt, fileList);
18
+ const resolvedAudioCodec = audioCodec !== null && audioCodec !== void 0 ? audioCodec : (0, audio_codec_1.getDefaultAudioCodec)({ codec, preferLossless: false });
20
19
  try {
21
- const task = (0, execa_1.default)('ffmpeg', [
20
+ const task = (0, call_ffmpeg_1.callFf)('ffmpeg', [
22
21
  (0, is_audio_codec_1.isAudioCodec)(codec) ? null : '-r',
23
22
  (0, is_audio_codec_1.isAudioCodec)(codec) ? null : String(fps),
24
23
  '-f',
@@ -35,20 +34,21 @@ const combineVideos = async ({ files, filelistDir, output, onProgress, numberOfF
35
34
  : '-1',
36
35
  (0, is_audio_codec_1.isAudioCodec)(codec) ? null : '-c:v',
37
36
  (0, is_audio_codec_1.isAudioCodec)(codec) ? null : codec === 'gif' ? 'gif' : 'copy',
38
- '-c:a',
39
- (0, get_audio_codec_name_1.getAudioCodecName)(codec),
37
+ resolvedAudioCodec ? '-c:a' : null,
38
+ resolvedAudioCodec
39
+ ? (0, audio_codec_1.mapAudioCodecToFfmpegAudioCodecName)(resolvedAudioCodec)
40
+ : null,
40
41
  // Set max bitrate up to 512kbps, will choose lower if that's too much
41
42
  '-b:a',
42
43
  '512K',
43
44
  codec === 'h264' ? '-movflags' : null,
44
45
  codec === 'h264' ? 'faststart' : null,
45
- '-shortest',
46
46
  '-y',
47
47
  output,
48
48
  ].filter(truthy_1.truthy));
49
49
  (_a = task.stderr) === null || _a === void 0 ? void 0 : _a.on('data', (data) => {
50
50
  if (onProgress) {
51
- const parsed = (0, parse_ffmpeg_progress_1.parseFfmpegProgress)(data.toString());
51
+ const parsed = (0, parse_ffmpeg_progress_1.parseFfmpegProgress)(data.toString('utf8'));
52
52
  if (parsed !== undefined) {
53
53
  onProgress(parsed);
54
54
  }
@@ -56,10 +56,10 @@ const combineVideos = async ({ files, filelistDir, output, onProgress, numberOfF
56
56
  });
57
57
  await task;
58
58
  onProgress(numberOfFrames);
59
- (fs_1.rmSync !== null && fs_1.rmSync !== void 0 ? fs_1.rmSync : fs_1.rmdirSync)(filelistDir, { recursive: true });
59
+ (0, node_fs_1.rmSync)(filelistDir, { recursive: true });
60
60
  }
61
61
  catch (err) {
62
- (fs_1.rmSync !== null && fs_1.rmSync !== void 0 ? fs_1.rmSync : fs_1.rmdirSync)(filelistDir, { recursive: true });
62
+ (0, node_fs_1.rmSync)(filelistDir, { recursive: true });
63
63
  throw err;
64
64
  }
65
65
  };
@@ -0,0 +1,26 @@
1
+ import type { DownloadMap } from '../assets/download-map';
2
+ import type { Compositor } from './compositor';
3
+ import type { CompositorCommand, CompositorCommandSerialized, CompositorImageFormat, Layer } from './payloads';
4
+ type CompositorInput = {
5
+ height: number;
6
+ width: number;
7
+ layers: Layer[];
8
+ imageFormat: CompositorImageFormat;
9
+ };
10
+ type ComposeInput = CompositorInput & {
11
+ output: string;
12
+ compositor: Compositor;
13
+ };
14
+ export declare const serializeCommand: <Type extends keyof CompositorCommand>(command: Type, params: CompositorCommand[Type]) => CompositorCommandSerialized<Type>;
15
+ export declare const composeWithoutCache: ({ height, width, layers, output, imageFormat, compositor, }: CompositorInput & {
16
+ output: string;
17
+ compositor: Compositor;
18
+ }) => Promise<void>;
19
+ export declare const compose: ({ height, width, layers, output, downloadMap, imageFormat, compositor, }: CompositorInput & {
20
+ output: string;
21
+ compositor: Compositor;
22
+ } & {
23
+ downloadMap: DownloadMap;
24
+ }) => Promise<void>;
25
+ export declare const callCompositor: (payload: string) => Promise<void>;
26
+ export {};
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.callCompositor = exports.compose = exports.composeWithoutCache = exports.serializeCommand = void 0;
4
+ const node_child_process_1 = require("node:child_process");
5
+ const node_crypto_1 = require("node:crypto");
6
+ const node_fs_1 = require("node:fs");
7
+ const promises_1 = require("node:fs/promises");
8
+ const call_ffmpeg_1 = require("../call-ffmpeg");
9
+ const get_executable_path_1 = require("./get-executable-path");
10
+ const make_nonce_1 = require("./make-nonce");
11
+ const getCompositorHash = ({ ...input }) => {
12
+ return (0, node_crypto_1.createHash)('sha256').update(JSON.stringify(input)).digest('base64');
13
+ };
14
+ const serializeCommand = (command, params) => {
15
+ return {
16
+ nonce: (0, make_nonce_1.makeNonce)(),
17
+ payload: {
18
+ type: command,
19
+ params,
20
+ },
21
+ };
22
+ };
23
+ exports.serializeCommand = serializeCommand;
24
+ const composeWithoutCache = async ({ height, width, layers, output, imageFormat, compositor, }) => {
25
+ await compositor.executeCommand('Compose', {
26
+ height,
27
+ width,
28
+ layers,
29
+ output,
30
+ output_format: imageFormat,
31
+ });
32
+ };
33
+ exports.composeWithoutCache = composeWithoutCache;
34
+ const compose = async ({ height, width, layers, output, downloadMap, imageFormat, compositor, }) => {
35
+ const hash = getCompositorHash({ height, width, layers, imageFormat });
36
+ if (downloadMap.compositorCache[hash]) {
37
+ await (0, promises_1.copyFile)(downloadMap.compositorCache[hash], output);
38
+ return;
39
+ }
40
+ await (0, exports.composeWithoutCache)({
41
+ compositor,
42
+ height,
43
+ imageFormat,
44
+ layers,
45
+ output,
46
+ width,
47
+ });
48
+ downloadMap.compositorCache[hash] = output;
49
+ };
50
+ exports.compose = compose;
51
+ const callCompositor = (payload) => {
52
+ return new Promise((resolve, reject) => {
53
+ const execPath = (0, get_executable_path_1.getExecutablePath)('compositor');
54
+ if (!process.env.READ_ONLY_FS) {
55
+ (0, node_fs_1.chmodSync)(execPath, 0o755);
56
+ }
57
+ const child = (0, node_child_process_1.spawn)(execPath, [payload], (0, call_ffmpeg_1.dynamicLibraryPathOptions)());
58
+ const stderrChunks = [];
59
+ child.stderr.on('data', (d) => stderrChunks.push(d));
60
+ child.on('close', (code) => {
61
+ if (code === 0) {
62
+ resolve();
63
+ }
64
+ else {
65
+ const message = Buffer.concat(stderrChunks).toString('utf-8');
66
+ try {
67
+ // Try to see if the error is a JSON
68
+ const parsed = JSON.parse(message);
69
+ const msg = `Compositor error: ${parsed.error}`;
70
+ const err = new Error(`${msg}\n${parsed.backtrace}`);
71
+ reject(err);
72
+ }
73
+ catch (err) {
74
+ reject(new Error(`Compositor panicked: ${message}`));
75
+ }
76
+ }
77
+ });
78
+ if (child.stdin.closed) {
79
+ reject(new Error('Compositor stdin closed unexpectedly,' +
80
+ Buffer.concat(stderrChunks).toString('utf-8')));
81
+ return;
82
+ }
83
+ child.stdin.write(payload);
84
+ child.stdin.end();
85
+ });
86
+ };
87
+ exports.callCompositor = callCompositor;
@@ -0,0 +1,12 @@
1
+ /// <reference types="node" />
2
+ import type { CompositorCommand } from './payloads';
3
+ import type { LogLevel } from '../log-level';
4
+ export type Compositor = {
5
+ finishCommands: () => void;
6
+ executeCommand: <T extends keyof CompositorCommand>(type: T, payload: CompositorCommand[T]) => Promise<Buffer>;
7
+ waitForDone: () => Promise<void>;
8
+ pid: number | null;
9
+ };
10
+ export declare const getIdealMaximumFrameCacheItems: () => number;
11
+ export declare const startLongRunningCompositor: (maximumFrameCacheItems: number, logLevel: LogLevel, indent: boolean) => Compositor;
12
+ export declare const startCompositor: <T extends keyof CompositorCommand>(type: T, payload: CompositorCommand[T], logLevel: LogLevel, indent: boolean) => Compositor;
@@ -0,0 +1,219 @@
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.startCompositor = exports.startLongRunningCompositor = exports.getIdealMaximumFrameCacheItems = void 0;
7
+ const node_child_process_1 = require("node:child_process");
8
+ const node_fs_1 = require("node:fs");
9
+ const node_os_1 = __importDefault(require("node:os"));
10
+ const call_ffmpeg_1 = require("../call-ffmpeg");
11
+ const get_concurrency_1 = require("../get-concurrency");
12
+ const logger_1 = require("../logger");
13
+ const compose_1 = require("./compose");
14
+ const get_executable_path_1 = require("./get-executable-path");
15
+ const make_nonce_1 = require("./make-nonce");
16
+ const log_level_1 = require("../log-level");
17
+ const getIdealMaximumFrameCacheItems = () => {
18
+ const freeMemory = node_os_1.default.freemem();
19
+ // Assuming 1 frame is approximately 6MB
20
+ // Assuming only half the available memory should be used
21
+ const max = Math.floor(freeMemory / (1024 * 1024 * 6));
22
+ // Never store more than 2000 frames
23
+ // But 500 is needed even if it's going to swap
24
+ return Math.max(500, Math.min(max, 2000));
25
+ };
26
+ exports.getIdealMaximumFrameCacheItems = getIdealMaximumFrameCacheItems;
27
+ const startLongRunningCompositor = (maximumFrameCacheItems, logLevel, indent) => {
28
+ return (0, exports.startCompositor)('StartLongRunningProcess', {
29
+ concurrency: (0, get_concurrency_1.getActualConcurrency)(null),
30
+ maximum_frame_cache_items: maximumFrameCacheItems,
31
+ verbose: (0, log_level_1.isEqualOrBelowLogLevel)(logLevel, 'verbose'),
32
+ }, logLevel, indent);
33
+ };
34
+ exports.startLongRunningCompositor = startLongRunningCompositor;
35
+ const startCompositor = (type, payload, logLevel, indent) => {
36
+ var _a;
37
+ const bin = (0, get_executable_path_1.getExecutablePath)('compositor');
38
+ if (!process.env.READ_ONLY_FS) {
39
+ (0, node_fs_1.chmodSync)(bin, 0o755);
40
+ }
41
+ const fullCommand = (0, compose_1.serializeCommand)(type, payload);
42
+ const child = (0, node_child_process_1.spawn)(bin, [JSON.stringify(fullCommand)], (0, call_ffmpeg_1.dynamicLibraryPathOptions)());
43
+ const stderrChunks = [];
44
+ let outputBuffer = Buffer.from('');
45
+ const separator = Buffer.from('remotion_buffer:');
46
+ const waiters = new Map();
47
+ const onMessage = (statusType, nonce, data) => {
48
+ if (nonce === '0') {
49
+ logger_1.Log.verboseAdvanced({ indent, logLevel, tag: 'compositor' }, data.toString('utf8'));
50
+ }
51
+ if (waiters.has(nonce)) {
52
+ if (statusType === 'error') {
53
+ try {
54
+ const parsed = JSON.parse(data.toString('utf8'));
55
+ waiters.get(nonce).reject(new Error(`Compositor error: ${parsed.error}\n${parsed.backtrace}`));
56
+ }
57
+ catch (err) {
58
+ waiters.get(nonce).reject(new Error(data.toString('utf8')));
59
+ }
60
+ }
61
+ else {
62
+ waiters.get(nonce).resolve(data);
63
+ }
64
+ waiters.delete(nonce);
65
+ }
66
+ };
67
+ let runningStatus = { type: 'running' };
68
+ let missingData = null;
69
+ const processInput = () => {
70
+ let separatorIndex = outputBuffer.indexOf(separator);
71
+ if (separatorIndex === -1) {
72
+ return;
73
+ }
74
+ separatorIndex += separator.length;
75
+ let nonceString = '';
76
+ let lengthString = '';
77
+ let statusString = '';
78
+ // Each message from Rust is prefixed with `remotion_buffer;{[nonce]}:{[length]}`
79
+ // Let's read the buffer to extract the nonce, and if the full length is available,
80
+ // we'll extract the data and pass it to the callback.
81
+ // eslint-disable-next-line no-constant-condition
82
+ while (true) {
83
+ const nextDigit = outputBuffer[separatorIndex];
84
+ // 0x3a is the character ":"
85
+ if (nextDigit === 0x3a) {
86
+ separatorIndex++;
87
+ break;
88
+ }
89
+ separatorIndex++;
90
+ nonceString += String.fromCharCode(nextDigit);
91
+ }
92
+ // eslint-disable-next-line no-constant-condition
93
+ while (true) {
94
+ const nextDigit = outputBuffer[separatorIndex];
95
+ if (nextDigit === 0x3a) {
96
+ separatorIndex++;
97
+ break;
98
+ }
99
+ separatorIndex++;
100
+ lengthString += String.fromCharCode(nextDigit);
101
+ }
102
+ // eslint-disable-next-line no-constant-condition
103
+ while (true) {
104
+ const nextDigit = outputBuffer[separatorIndex];
105
+ if (nextDigit === 0x3a) {
106
+ break;
107
+ }
108
+ separatorIndex++;
109
+ statusString += String.fromCharCode(nextDigit);
110
+ }
111
+ const length = Number(lengthString);
112
+ const status = Number(statusString);
113
+ const dataLength = outputBuffer.length - separatorIndex - 1;
114
+ if (dataLength < length) {
115
+ missingData = {
116
+ dataMissing: length - dataLength,
117
+ };
118
+ return;
119
+ }
120
+ const data = outputBuffer.subarray(separatorIndex + 1, separatorIndex + 1 + Number(lengthString));
121
+ onMessage(status === 1 ? 'error' : 'success', nonceString, data);
122
+ missingData = null;
123
+ outputBuffer = outputBuffer.subarray(separatorIndex + Number(lengthString) + 1);
124
+ processInput();
125
+ };
126
+ let unprocessedBuffers = [];
127
+ child.stdout.on('data', (data) => {
128
+ unprocessedBuffers.push(data);
129
+ const separatorIndex = data.indexOf(separator);
130
+ if (separatorIndex === -1) {
131
+ if (missingData) {
132
+ missingData.dataMissing -= data.length;
133
+ }
134
+ if (!missingData || missingData.dataMissing > 0) {
135
+ return;
136
+ }
137
+ }
138
+ unprocessedBuffers.unshift(outputBuffer);
139
+ outputBuffer = Buffer.concat(unprocessedBuffers);
140
+ unprocessedBuffers = [];
141
+ processInput();
142
+ });
143
+ child.stderr.on('data', (data) => {
144
+ stderrChunks.push(data);
145
+ });
146
+ let resolve = null;
147
+ let reject = null;
148
+ child.on('close', (code) => {
149
+ const waitersToKill = Array.from(waiters.values());
150
+ if (code === 0) {
151
+ runningStatus = { type: 'quit-without-error' };
152
+ resolve === null || resolve === void 0 ? void 0 : resolve();
153
+ for (const waiter of waitersToKill) {
154
+ waiter.reject(new Error(`Compositor already quit`));
155
+ }
156
+ waiters.clear();
157
+ }
158
+ else {
159
+ const errorMessage = Buffer.concat(stderrChunks).toString('utf-8');
160
+ runningStatus = { type: 'quit-with-error', error: errorMessage };
161
+ const error = new Error(`Compositor panicked: ${errorMessage}`);
162
+ for (const waiter of waitersToKill) {
163
+ waiter.reject(error);
164
+ }
165
+ waiters.clear();
166
+ reject === null || reject === void 0 ? void 0 : reject(error);
167
+ }
168
+ });
169
+ return {
170
+ waitForDone: () => {
171
+ return new Promise((res, rej) => {
172
+ if (runningStatus.type === 'quit-without-error') {
173
+ rej(new Error('Compositor already quit'));
174
+ return;
175
+ }
176
+ if (runningStatus.type === 'quit-with-error') {
177
+ rej(new Error(`Compositor already quit: ${runningStatus.error}`));
178
+ return;
179
+ }
180
+ resolve = res;
181
+ reject = rej;
182
+ });
183
+ },
184
+ finishCommands: () => {
185
+ if (runningStatus.type === 'quit-with-error') {
186
+ throw new Error(`Compositor already quit: ${runningStatus.error}`);
187
+ }
188
+ if (runningStatus.type === 'quit-without-error') {
189
+ throw new Error('Compositor already quit');
190
+ }
191
+ child.stdin.write('EOF\n');
192
+ },
193
+ executeCommand: (command, params) => {
194
+ if (runningStatus.type === 'quit-without-error') {
195
+ throw new Error('Compositor already quit');
196
+ }
197
+ if (runningStatus.type === 'quit-with-error') {
198
+ throw new Error(`Compositor quit: ${runningStatus.error}`);
199
+ }
200
+ return new Promise((_resolve, _reject) => {
201
+ const nonce = (0, make_nonce_1.makeNonce)();
202
+ const composed = {
203
+ nonce,
204
+ payload: {
205
+ type: command,
206
+ params,
207
+ },
208
+ };
209
+ child.stdin.write(JSON.stringify(composed) + '\n');
210
+ waiters.set(nonce, {
211
+ resolve: _resolve,
212
+ reject: _reject,
213
+ });
214
+ });
215
+ },
216
+ pid: (_a = child.pid) !== null && _a !== void 0 ? _a : null,
217
+ };
218
+ };
219
+ exports.startCompositor = startCompositor;
@@ -0,0 +1 @@
1
+ export declare const getExecutablePath: (type: 'compositor' | 'ffmpeg' | 'ffprobe' | 'ffmpeg-cwd') => string;
@@ -0,0 +1,57 @@
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 = (type) => {
11
+ if (type === 'compositor' && process.env.COMPOSITOR_PATH) {
12
+ return process.env.COMPOSITOR_PATH;
13
+ }
14
+ const key = type === 'compositor'
15
+ ? 'binaryPath'
16
+ : type === 'ffmpeg'
17
+ ? 'ffmpegPath'
18
+ : type === 'ffprobe'
19
+ ? 'ffprobePath'
20
+ : 'ffmpegCwd';
21
+ switch (process.platform) {
22
+ case 'win32':
23
+ switch (process.arch) {
24
+ case 'x64':
25
+ return require('@remotion/compositor-win32-x64-msvc')[key];
26
+ default:
27
+ throw new Error(`Unsupported architecture on Windows: ${process.arch}`);
28
+ }
29
+ case 'darwin':
30
+ switch (process.arch) {
31
+ case 'x64':
32
+ return require('@remotion/compositor-darwin-x64')[key];
33
+ case 'arm64':
34
+ return require('@remotion/compositor-darwin-arm64')[key];
35
+ default:
36
+ throw new Error(`Unsupported architecture on macOS: ${process.arch}`);
37
+ }
38
+ case 'linux':
39
+ switch (process.arch) {
40
+ case 'x64':
41
+ if (isMusl()) {
42
+ return require('@remotion/compositor-linux-x64-musl')[key];
43
+ }
44
+ return require('@remotion/compositor-linux-x64-gnu')[key];
45
+ case 'arm64':
46
+ if (isMusl()) {
47
+ return require('@remotion/compositor-linux-arm64-musl')[key];
48
+ }
49
+ return require('@remotion/compositor-linux-arm64-gnu')[key];
50
+ default:
51
+ throw new Error(`Unsupported architecture on Linux: ${process.arch}`);
52
+ }
53
+ default:
54
+ throw new Error(`Unsupported OS: ${process.platform}, architecture: ${process.arch}`);
55
+ }
56
+ };
57
+ exports.getExecutablePath = getExecutablePath;
@@ -0,0 +1 @@
1
+ export declare const makeNonce: () => string;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.makeNonce = void 0;
4
+ const makeNonce = () => {
5
+ return (Math.random().toString(36).substring(2, 15) +
6
+ Math.random().toString(36).substring(2, 15));
7
+ };
8
+ exports.makeNonce = makeNonce;
@@ -0,0 +1,68 @@
1
+ export 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 type CompositorImageFormat = 'Png' | 'Jpeg';
30
+ export type CompositorCommand = {
31
+ Compose: {
32
+ output: string;
33
+ width: number;
34
+ height: number;
35
+ layers: Layer[];
36
+ output_format: CompositorImageFormat;
37
+ };
38
+ ExtractFrame: {
39
+ input: string;
40
+ time: number;
41
+ transparent: boolean;
42
+ };
43
+ Echo: {
44
+ message: string;
45
+ };
46
+ StartLongRunningProcess: {
47
+ concurrency: number;
48
+ maximum_frame_cache_items: number;
49
+ verbose: boolean;
50
+ };
51
+ GetOpenVideoStats: {};
52
+ DeliberatePanic: {};
53
+ CloseAllVideos: {};
54
+ FreeUpMemory: {
55
+ percent_of_memory: number;
56
+ };
57
+ };
58
+ export type CompositorCommandSerialized<T extends keyof CompositorCommand> = {
59
+ nonce: string;
60
+ payload: {
61
+ type: T;
62
+ params: CompositorCommand[T];
63
+ };
64
+ };
65
+ export type ErrorPayload = {
66
+ error: string;
67
+ backtrace: string;
68
+ };
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -1,5 +1,9 @@
1
1
  import type { DownloadMap } from './assets/download-map';
2
- export declare const createFfmpegComplexFilter: (filters: number, downloadMap: DownloadMap) => Promise<{
2
+ import type { PreprocessedAudioTrack } from './preprocess-audio-track';
3
+ export declare const createFfmpegComplexFilter: ({ filters, downloadMap, }: {
4
+ filters: PreprocessedAudioTrack[];
5
+ downloadMap: DownloadMap;
6
+ }) => Promise<{
3
7
  complexFilterFlag: [string, string] | null;
4
8
  cleanup: () => void;
5
9
  }>;
@@ -3,12 +3,14 @@ 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, }) => {
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 = (0, create_ffmpeg_merge_filter_1.createFfmpegMergeFilter)({
11
+ inputs: filters,
12
+ });
13
+ const { file, cleanup } = await (0, ffmpeg_filter_file_1.makeFfmpegFilterFileStr)(complexFilter, downloadMap);
12
14
  return {
13
15
  complexFilterFlag: ['-filter_complex_script', file],
14
16
  cleanup,
@@ -1 +1,5 @@
1
- export declare const createFfmpegMergeFilter: (inputs: number) => string;
1
+ import type { PreprocessedAudioTrack } from './preprocess-audio-track';
2
+ export declare const OUTPUT_FILTER_NAME = "outputaudio";
3
+ export declare const createFfmpegMergeFilter: ({ inputs, }: {
4
+ inputs: PreprocessedAudioTrack[];
5
+ }) => string;