@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
@@ -7,70 +7,83 @@ exports.mergeAudioTrack = void 0;
7
7
  const execa_1 = __importDefault(require("execa"));
8
8
  const path_1 = __importDefault(require("path"));
9
9
  const chunk_1 = require("./chunk");
10
- const convert_to_pcm_1 = require("./convert-to-pcm");
11
10
  const create_ffmpeg_complex_filter_1 = require("./create-ffmpeg-complex-filter");
11
+ const create_ffmpeg_merge_filter_1 = require("./create-ffmpeg-merge-filter");
12
12
  const create_silent_audio_1 = require("./create-silent-audio");
13
13
  const delete_directory_1 = require("./delete-directory");
14
+ const ffmpeg_flags_1 = require("./ffmpeg-flags");
14
15
  const p_limit_1 = require("./p-limit");
15
16
  const tmp_dir_1 = require("./tmp-dir");
16
17
  const truthy_1 = require("./truthy");
17
- const mergeAudioTrackUnlimited = async ({ ffmpegExecutable, outName, files, numberOfSeconds, downloadMap, }) => {
18
+ const mergeAudioTrackUnlimited = async ({ ffmpegExecutable, outName, files, numberOfSeconds, downloadMap, remotionRoot, }) => {
18
19
  if (files.length === 0) {
19
20
  await (0, create_silent_audio_1.createSilentAudio)({
20
21
  outName,
21
22
  ffmpegExecutable,
22
23
  numberOfSeconds,
24
+ remotionRoot,
23
25
  });
24
26
  return;
25
27
  }
26
- if (files.length === 1) {
27
- await (0, convert_to_pcm_1.convertToPcm)({
28
- outName,
29
- ffmpegExecutable,
30
- input: files[0],
31
- });
32
- return;
33
- }
28
+ // Previously a bug: We cannot optimize for files.length === 1 because we need to pad the audio
34
29
  // In FFMPEG, the total number of left and right tracks that can be merged at one time is limited to 64
35
30
  if (files.length >= 32) {
36
31
  const chunked = (0, chunk_1.chunk)(files, 10);
37
32
  const tempPath = (0, tmp_dir_1.tmpDir)('remotion-large-audio-mixing');
38
- const chunkNames = await Promise.all(chunked.map(async (chunkFiles, i) => {
39
- const chunkOutname = path_1.default.join(tempPath, `chunk-${i}.wav`);
33
+ try {
34
+ const chunkNames = await Promise.all(chunked.map(async (chunkFiles, i) => {
35
+ const chunkOutname = path_1.default.join(tempPath, `chunk-${i}.wav`);
36
+ await (0, exports.mergeAudioTrack)({
37
+ ffmpegExecutable,
38
+ files: chunkFiles,
39
+ numberOfSeconds,
40
+ outName: chunkOutname,
41
+ downloadMap,
42
+ remotionRoot,
43
+ });
44
+ return chunkOutname;
45
+ }));
40
46
  await (0, exports.mergeAudioTrack)({
41
47
  ffmpegExecutable,
42
- files: chunkFiles,
48
+ files: chunkNames.map((c) => ({
49
+ filter: {
50
+ pad_end: null,
51
+ pad_start: null,
52
+ },
53
+ outName: c,
54
+ })),
43
55
  numberOfSeconds,
44
- outName: chunkOutname,
56
+ outName,
45
57
  downloadMap,
58
+ remotionRoot,
46
59
  });
47
- return chunkOutname;
48
- }));
49
- await (0, exports.mergeAudioTrack)({
50
- ffmpegExecutable,
51
- files: chunkNames,
52
- numberOfSeconds,
53
- outName,
54
- downloadMap,
55
- });
56
- await (0, delete_directory_1.deleteDirectory)(tempPath);
57
- return;
60
+ return;
61
+ }
62
+ finally {
63
+ (0, delete_directory_1.deleteDirectory)(tempPath);
64
+ }
58
65
  }
59
- const { complexFilterFlag: mergeFilter, cleanup } = await (0, create_ffmpeg_complex_filter_1.createFfmpegComplexFilter)(files.length, downloadMap);
66
+ const { complexFilterFlag: mergeFilter, cleanup } = await (0, create_ffmpeg_complex_filter_1.createFfmpegComplexFilter)({
67
+ filters: files,
68
+ downloadMap,
69
+ ffmpegExecutable,
70
+ remotionRoot,
71
+ });
60
72
  const args = [
61
- ...files.map((f) => ['-i', f]),
73
+ ...files.map((f) => ['-i', f.outName]),
62
74
  mergeFilter,
63
75
  ['-c:a', 'pcm_s16le'],
64
- ['-map', '[a]'],
76
+ ['-map', `[${create_ffmpeg_merge_filter_1.OUTPUT_FILTER_NAME}]`],
65
77
  ['-y', outName],
66
78
  ]
67
79
  .filter(truthy_1.truthy)
68
80
  .flat(2);
69
- const task = (0, execa_1.default)(ffmpegExecutable !== null && ffmpegExecutable !== void 0 ? ffmpegExecutable : 'ffmpeg', args);
81
+ const task = (0, execa_1.default)(await (0, ffmpeg_flags_1.getExecutableBinary)(ffmpegExecutable, remotionRoot, 'ffmpeg'), args);
70
82
  await task;
71
83
  cleanup();
72
84
  };
73
- const limit = (0, p_limit_1.pLimit)(2);
85
+ // Must be at least 3 because recursively called twice in mergeAudioTrack
86
+ const limit = (0, p_limit_1.pLimit)(3);
74
87
  const mergeAudioTrack = (options) => {
75
88
  return limit(mergeAudioTrackUnlimited, options);
76
89
  };
package/dist/mime-db.d.ts CHANGED
File without changes
package/dist/mime-db.js CHANGED
File without changes
@@ -1,2 +1,3 @@
1
+ export declare const getExt: (contentType: string) => string | null;
1
2
  export declare function mimeLookup(path: string): string | false;
2
3
  export declare function mimeContentType(str: string): false | string;
@@ -1,12 +1,17 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.mimeContentType = exports.mimeLookup = void 0;
3
+ exports.mimeContentType = exports.mimeLookup = exports.getExt = void 0;
4
4
  const path_1 = require("path");
5
5
  const mime_db_1 = require("./mime-db");
6
6
  const extensions = {};
7
7
  const types = {};
8
8
  // Populate the extensions/types maps
9
9
  populateMaps(extensions, {});
10
+ const getExt = (contentType) => {
11
+ var _a, _b, _c;
12
+ return (_c = (_b = (_a = mime_db_1.mimeDb[contentType.toLowerCase()]) === null || _a === void 0 ? void 0 : _a.extensions) === null || _b === void 0 ? void 0 : _b[0]) !== null && _c !== void 0 ? _c : null;
13
+ };
14
+ exports.getExt = getExt;
10
15
  function mimeLookup(path) {
11
16
  if (!path || typeof path !== 'string') {
12
17
  return false;
File without changes
File without changes
@@ -8,10 +8,11 @@ export declare const extractUrlAndSourceFromUrl: (url: string) => {
8
8
  time: number;
9
9
  imageFormat: OffthreadVideoImageFormat;
10
10
  };
11
- export declare const startOffthreadVideoServer: ({ ffmpegExecutable, ffprobeExecutable, onDownload, onError, downloadMap, }: {
11
+ export declare const startOffthreadVideoServer: ({ ffmpegExecutable, ffprobeExecutable, onDownload, onError, downloadMap, remotionRoot, }: {
12
12
  ffmpegExecutable: FfmpegExecutable;
13
13
  ffprobeExecutable: FfmpegExecutable;
14
14
  onDownload: RenderMediaOnDownload;
15
15
  onError: (err: Error) => void;
16
16
  downloadMap: DownloadMap;
17
+ remotionRoot: string;
17
18
  }) => RequestListener;
@@ -32,7 +32,7 @@ const extractUrlAndSourceFromUrl = (url) => {
32
32
  };
33
33
  };
34
34
  exports.extractUrlAndSourceFromUrl = extractUrlAndSourceFromUrl;
35
- const startOffthreadVideoServer = ({ ffmpegExecutable, ffprobeExecutable, onDownload, onError, downloadMap, }) => {
35
+ const startOffthreadVideoServer = ({ ffmpegExecutable, ffprobeExecutable, onDownload, onError, downloadMap, remotionRoot, }) => {
36
36
  return (req, res) => {
37
37
  if (!req.url) {
38
38
  throw new Error('Request came in without URL');
@@ -45,6 +45,17 @@ const startOffthreadVideoServer = ({ ffmpegExecutable, ffprobeExecutable, onDown
45
45
  const { src, time, imageFormat } = (0, exports.extractUrlAndSourceFromUrl)(req.url);
46
46
  res.setHeader('access-control-allow-origin', '*');
47
47
  res.setHeader('content-type', `image/${imageFormat === 'jpeg' ? 'jpg' : 'png'}`);
48
+ // Handling this case on Lambda:
49
+ // https://support.google.com/chrome/a/answer/7679408?hl=en
50
+ // Chrome sends Private Network Access preflights for subresources
51
+ if (req.method === 'OPTIONS') {
52
+ res.statusCode = 200;
53
+ if (req.headers['access-control-request-private-network']) {
54
+ res.setHeader('Access-Control-Allow-Private-Network', 'true');
55
+ }
56
+ res.end();
57
+ return;
58
+ }
48
59
  (0, download_and_map_assets_to_file_1.downloadAsset)({ src, onDownload, downloadMap })
49
60
  .then((to) => {
50
61
  return (0, extract_frame_from_video_1.extractFrameFromVideo)({
@@ -54,6 +65,7 @@ const startOffthreadVideoServer = ({ ffmpegExecutable, ffprobeExecutable, onDown
54
65
  ffprobeExecutable,
55
66
  imageFormat,
56
67
  downloadMap,
68
+ remotionRoot,
57
69
  });
58
70
  })
59
71
  .then((readable) => {
@@ -8,8 +8,13 @@ export declare type ChromiumOptions = {
8
8
  disableWebSecurity?: boolean;
9
9
  gl?: OpenGlRenderer | null;
10
10
  headless?: boolean;
11
+ userAgent?: string | null;
11
12
  };
12
13
  export declare const killAllBrowsers: () => Promise<void>;
14
+ /**
15
+ * @description Opens a Chrome or Chromium browser instance.
16
+ * @see [Documentation](https://www.remotion.dev/docs/renderer/open-browser)
17
+ */
13
18
  export declare const openBrowser: (browser: Browser, options?: {
14
19
  shouldDumpIo?: boolean;
15
20
  browserExecutable?: string | null;
@@ -1,12 +1,6 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.openBrowser = exports.killAllBrowsers = void 0;
7
- const fs_1 = __importDefault(require("fs"));
8
- const os_1 = __importDefault(require("os"));
9
- const path_1 = __importDefault(require("path"));
10
4
  const node_1 = require("./browser/node");
11
5
  const get_local_browser_executable_1 = require("./get-local-browser-executable");
12
6
  const get_video_threads_flag_1 = require("./get-video-threads-flag");
@@ -27,14 +21,18 @@ const browserInstances = [];
27
21
  const killAllBrowsers = async () => {
28
22
  for (const browser of browserInstances) {
29
23
  try {
30
- await browser.close();
24
+ await browser.close(true);
31
25
  }
32
26
  catch (err) { }
33
27
  }
34
28
  };
35
29
  exports.killAllBrowsers = killAllBrowsers;
30
+ /**
31
+ * @description Opens a Chrome or Chromium browser instance.
32
+ * @see [Documentation](https://www.remotion.dev/docs/renderer/open-browser)
33
+ */
36
34
  const openBrowser = async (browser, options) => {
37
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
35
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
38
36
  if (browser === 'firefox') {
39
37
  throw new TypeError('Firefox supported is not yet turned on. Stay tuned for the future.');
40
38
  }
@@ -57,11 +55,11 @@ const openBrowser = async (browser, options) => {
57
55
  '--disable-component-extensions-with-background-pages',
58
56
  '--disable-default-apps',
59
57
  '--disable-dev-shm-usage',
60
- '--disable-extensions',
61
58
  '--no-proxy-server',
62
59
  "--proxy-server='direct://'",
63
60
  '--proxy-bypass-list=*',
64
61
  '--disable-hang-monitor',
62
+ '--disable-extensions',
65
63
  '--disable-ipc-flooding-protection',
66
64
  '--disable-popup-blocking',
67
65
  '--disable-prompt-on-repost',
@@ -102,14 +100,13 @@ const openBrowser = async (browser, options) => {
102
100
  ? '--ignore-certificate-errors'
103
101
  : null,
104
102
  ...(((_j = options === null || options === void 0 ? void 0 : options.chromiumOptions) === null || _j === void 0 ? void 0 : _j.disableWebSecurity)
105
- ? [
106
- '--disable-web-security',
107
- '--user-data-dir=' +
108
- (await fs_1.default.promises.mkdtemp(path_1.default.join(os_1.default.tmpdir(), 'chrome-user-dir'))),
109
- ]
103
+ ? ['--disable-web-security']
110
104
  : []),
105
+ ((_k = options === null || options === void 0 ? void 0 : options.chromiumOptions) === null || _k === void 0 ? void 0 : _k.userAgent)
106
+ ? `--user-agent="${options.chromiumOptions.userAgent}"`
107
+ : null,
111
108
  ].filter(Boolean),
112
- defaultViewport: (_k = options === null || options === void 0 ? void 0 : options.viewport) !== null && _k !== void 0 ? _k : {
109
+ defaultViewport: (_l = options === null || options === void 0 ? void 0 : options.viewport) !== null && _l !== void 0 ? _l : {
113
110
  height: 720,
114
111
  width: 1280,
115
112
  deviceScaleFactor: 1,
File without changes
package/dist/overwrite.js CHANGED
File without changes
package/dist/p-limit.d.ts CHANGED
File without changes
package/dist/p-limit.js CHANGED
File without changes
File without changes
File without changes
File without changes
File without changes
package/dist/perf.d.ts CHANGED
File without changes
package/dist/perf.js CHANGED
File without changes
@@ -2,4 +2,4 @@ import type { Codec } from './codec';
2
2
  export declare const validPixelFormats: readonly ["yuv420p", "yuva420p", "yuv422p", "yuv444p", "yuv420p10le", "yuv422p10le", "yuv444p10le", "yuva444p10le"];
3
3
  export declare type PixelFormat = typeof validPixelFormats[number];
4
4
  export declare const DEFAULT_PIXEL_FORMAT: PixelFormat;
5
- export declare const validateSelectedPixelFormatAndCodecCombination: (pixelFormat: PixelFormat, codec: Codec) => void;
5
+ export declare const validateSelectedPixelFormatAndCodecCombination: (pixelFormat: PixelFormat | undefined, codec: Codec) => undefined;
@@ -13,6 +13,9 @@ exports.validPixelFormats = [
13
13
  ];
14
14
  exports.DEFAULT_PIXEL_FORMAT = 'yuv420p';
15
15
  const validateSelectedPixelFormatAndCodecCombination = (pixelFormat, codec) => {
16
+ if (typeof pixelFormat === 'undefined') {
17
+ return pixelFormat;
18
+ }
16
19
  if (!exports.validPixelFormats.includes(pixelFormat)) {
17
20
  throw new TypeError(`Value ${pixelFormat} is not valid as a pixel format.`);
18
21
  }
package/dist/pool.d.ts CHANGED
File without changes
package/dist/pool.js CHANGED
File without changes
@@ -1,7 +1,7 @@
1
1
  import type { RenderMediaOnDownload } from './assets/download-and-map-assets-to-file';
2
2
  import type { DownloadMap } from './assets/download-map';
3
3
  import type { FfmpegExecutable } from './ffmpeg-executable';
4
- export declare const prepareServer: ({ ffmpegExecutable, ffprobeExecutable, onDownload, onError, webpackConfigOrServeUrl, port, downloadMap, }: {
4
+ export declare const prepareServer: ({ ffmpegExecutable, ffprobeExecutable, onDownload, onError, webpackConfigOrServeUrl, port, downloadMap, remotionRoot, }: {
5
5
  webpackConfigOrServeUrl: string;
6
6
  onDownload: RenderMediaOnDownload;
7
7
  onError: (err: Error) => void;
@@ -9,8 +9,9 @@ export declare const prepareServer: ({ ffmpegExecutable, ffprobeExecutable, onDo
9
9
  ffprobeExecutable: FfmpegExecutable;
10
10
  port: number | null;
11
11
  downloadMap: DownloadMap;
12
+ remotionRoot: string;
12
13
  }) => Promise<{
13
14
  serveUrl: string;
14
- closeServer: () => Promise<unknown>;
15
+ closeServer: (force: boolean) => Promise<unknown>;
15
16
  offthreadPort: number;
16
17
  }>;
@@ -9,7 +9,7 @@ const path_1 = __importDefault(require("path"));
9
9
  const is_serve_url_1 = require("./is-serve-url");
10
10
  const serve_static_1 = require("./serve-static");
11
11
  const wait_for_symbolication_error_to_be_done_1 = require("./wait-for-symbolication-error-to-be-done");
12
- const prepareServer = async ({ ffmpegExecutable, ffprobeExecutable, onDownload, onError, webpackConfigOrServeUrl, port, downloadMap, }) => {
12
+ const prepareServer = async ({ ffmpegExecutable, ffprobeExecutable, onDownload, onError, webpackConfigOrServeUrl, port, downloadMap, remotionRoot, }) => {
13
13
  if ((0, is_serve_url_1.isServeUrl)(webpackConfigOrServeUrl)) {
14
14
  const { port: offthreadPort, close: closeProxy } = await (0, serve_static_1.serveStatic)(null, {
15
15
  onDownload,
@@ -18,6 +18,7 @@ const prepareServer = async ({ ffmpegExecutable, ffprobeExecutable, onDownload,
18
18
  ffprobeExecutable,
19
19
  port,
20
20
  downloadMap,
21
+ remotionRoot,
21
22
  });
22
23
  return Promise.resolve({
23
24
  serveUrl: webpackConfigOrServeUrl,
@@ -40,10 +41,14 @@ const prepareServer = async ({ ffmpegExecutable, ffprobeExecutable, onDownload,
40
41
  ffprobeExecutable,
41
42
  port,
42
43
  downloadMap,
44
+ remotionRoot,
43
45
  });
44
46
  return Promise.resolve({
45
- closeServer: () => {
46
- return (0, wait_for_symbolication_error_to_be_done_1.waitForSymbolicationToBeDone)().then(() => close());
47
+ closeServer: async (force) => {
48
+ if (!force) {
49
+ await (0, wait_for_symbolication_error_to_be_done_1.waitForSymbolicationToBeDone)();
50
+ }
51
+ return close();
47
52
  },
48
53
  serveUrl: `http://localhost:${serverPort}`,
49
54
  offthreadPort: serverPort,
@@ -1,6 +1,7 @@
1
1
  import type { DownloadMap } from './assets/download-map';
2
2
  import type { MediaAsset } from './assets/types';
3
3
  import type { FfmpegExecutable } from './ffmpeg-executable';
4
+ import type { ProcessedTrack } from './stringify-ffmpeg-filter';
4
5
  declare type Options = {
5
6
  ffmpegExecutable: FfmpegExecutable;
6
7
  ffprobeExecutable: FfmpegExecutable;
@@ -9,6 +10,11 @@ declare type Options = {
9
10
  expectedFrames: number;
10
11
  fps: number;
11
12
  downloadMap: DownloadMap;
13
+ remotionRoot: string;
12
14
  };
13
- export declare const preprocessAudioTrack: (options: Options) => Promise<string | null>;
15
+ export declare type PreprocessedAudioTrack = {
16
+ outName: string;
17
+ filter: ProcessedTrack;
18
+ };
19
+ export declare const preprocessAudioTrack: (options: Options) => Promise<PreprocessedAudioTrack | null>;
14
20
  export {};
@@ -8,10 +8,12 @@ const execa_1 = __importDefault(require("execa"));
8
8
  const get_audio_channels_1 = require("./assets/get-audio-channels");
9
9
  const calculate_ffmpeg_filters_1 = require("./calculate-ffmpeg-filters");
10
10
  const ffmpeg_filter_file_1 = require("./ffmpeg-filter-file");
11
+ const ffmpeg_flags_1 = require("./ffmpeg-flags");
11
12
  const p_limit_1 = require("./p-limit");
12
13
  const resolve_asset_src_1 = require("./resolve-asset-src");
13
- const preprocessAudioTrackUnlimited = async ({ ffmpegExecutable, ffprobeExecutable, outName, asset, expectedFrames, fps, downloadMap, }) => {
14
- const { channels, duration } = await (0, get_audio_channels_1.getAudioChannelsAndDuration)(downloadMap, (0, resolve_asset_src_1.resolveAssetSrc)(asset.src), ffprobeExecutable);
14
+ const sample_rate_1 = require("./sample-rate");
15
+ const preprocessAudioTrackUnlimited = async ({ ffmpegExecutable, ffprobeExecutable, outName, asset, expectedFrames, fps, downloadMap, remotionRoot, }) => {
16
+ const { channels, duration } = await (0, get_audio_channels_1.getAudioChannelsAndDuration)(downloadMap, (0, resolve_asset_src_1.resolveAssetSrc)(asset.src), ffprobeExecutable, remotionRoot);
15
17
  const filter = (0, calculate_ffmpeg_filters_1.calculateFfmpegFilter)({
16
18
  asset,
17
19
  durationInFrames: expectedFrames,
@@ -28,11 +30,12 @@ const preprocessAudioTrackUnlimited = async ({ ffmpegExecutable, ffprobeExecutab
28
30
  ['-ac', '2'],
29
31
  ['-filter_script:a', file],
30
32
  ['-c:a', 'pcm_s16le'],
33
+ ['-ar', String(sample_rate_1.DEFAULT_SAMPLE_RATE)],
31
34
  ['-y', outName],
32
35
  ].flat(2);
33
- await (0, execa_1.default)(ffmpegExecutable !== null && ffmpegExecutable !== void 0 ? ffmpegExecutable : 'ffmpeg', args);
36
+ await (0, execa_1.default)(await (0, ffmpeg_flags_1.getExecutableBinary)(ffmpegExecutable, remotionRoot, 'ffmpeg'), args);
34
37
  cleanup();
35
- return outName;
38
+ return { outName, filter };
36
39
  };
37
40
  const limit = (0, p_limit_1.pLimit)(2);
38
41
  const preprocessAudioTrack = (options) => {
@@ -1,6 +1,7 @@
1
1
  import execa from 'execa';
2
2
  import type { Codec } from './codec';
3
3
  import type { FfmpegExecutable } from './ffmpeg-executable';
4
+ import type { FfmpegOverrideFn } from './ffmpeg-override';
4
5
  import type { ImageFormat } from './image-format';
5
6
  import type { CancelSignal } from './make-cancel-signal';
6
7
  import type { PixelFormat } from './pixel-format';
@@ -18,9 +19,11 @@ declare type PreSticherOptions = {
18
19
  verbose: boolean;
19
20
  ffmpegExecutable: FfmpegExecutable | undefined;
20
21
  imageFormat: ImageFormat;
22
+ ffmpegOverride: FfmpegOverrideFn;
21
23
  signal: CancelSignal;
24
+ videoBitrate: string | null;
22
25
  };
23
- export declare const prespawnFfmpeg: (options: PreSticherOptions) => Promise<{
26
+ export declare const prespawnFfmpeg: (options: PreSticherOptions, remotionRoot: string) => Promise<{
24
27
  task: execa.ExecaChildProcess<string>;
25
28
  getLogs: () => string;
26
29
  }>;
@@ -8,14 +8,15 @@ const execa_1 = __importDefault(require("execa"));
8
8
  const remotion_1 = require("remotion");
9
9
  const codec_1 = require("./codec");
10
10
  const crf_1 = require("./crf");
11
+ const ffmpeg_flags_1 = require("./ffmpeg-flags");
11
12
  const get_codec_name_1 = require("./get-codec-name");
12
13
  const get_prores_profile_name_1 = require("./get-prores-profile-name");
13
14
  const parse_ffmpeg_progress_1 = require("./parse-ffmpeg-progress");
14
15
  const pixel_format_1 = require("./pixel-format");
15
16
  const validate_even_dimensions_with_codec_1 = require("./validate-even-dimensions-with-codec");
16
17
  const validate_ffmpeg_1 = require("./validate-ffmpeg");
17
- const prespawnFfmpeg = async (options) => {
18
- var _a, _b, _c, _d, _e, _f, _g;
18
+ const prespawnFfmpeg = async (options, remotionRoot) => {
19
+ var _a, _b, _c, _d, _e, _f;
19
20
  remotion_1.Internals.validateDimension(options.height, 'height', 'passed to `stitchFramesToVideo()`');
20
21
  remotion_1.Internals.validateDimension(options.width, 'width', 'passed to `stitchFramesToVideo()`');
21
22
  const codec = (_a = options.codec) !== null && _a !== void 0 ? _a : codec_1.DEFAULT_CODEC;
@@ -26,9 +27,8 @@ const prespawnFfmpeg = async (options) => {
26
27
  codec,
27
28
  scale: 1,
28
29
  });
29
- const crf = (_b = options.crf) !== null && _b !== void 0 ? _b : (0, crf_1.getDefaultCrfForCodec)(codec);
30
- const pixelFormat = (_c = options.pixelFormat) !== null && _c !== void 0 ? _c : pixel_format_1.DEFAULT_PIXEL_FORMAT;
31
- await (0, validate_ffmpeg_1.validateFfmpeg)((_d = options.ffmpegExecutable) !== null && _d !== void 0 ? _d : null);
30
+ const pixelFormat = (_b = options.pixelFormat) !== null && _b !== void 0 ? _b : pixel_format_1.DEFAULT_PIXEL_FORMAT;
31
+ await (0, validate_ffmpeg_1.validateFfmpeg)((_c = options.ffmpegExecutable) !== null && _c !== void 0 ? _c : null, remotionRoot, 'ffmpeg');
32
32
  const encoderName = (0, get_codec_name_1.getCodecName)(codec);
33
33
  const proResProfileName = (0, get_prores_profile_name_1.getProResProfileName)(codec, options.proResProfile);
34
34
  if (encoderName === null) {
@@ -36,16 +36,15 @@ const prespawnFfmpeg = async (options) => {
36
36
  }
37
37
  const supportsCrf = codec !== 'prores';
38
38
  if (options.verbose) {
39
- console.log('[verbose] ffmpeg', (_e = options.ffmpegExecutable) !== null && _e !== void 0 ? _e : 'ffmpeg in PATH');
39
+ console.log('[verbose] ffmpeg', (_d = options.ffmpegExecutable) !== null && _d !== void 0 ? _d : 'ffmpeg in PATH');
40
40
  console.log('[verbose] encoder', encoderName);
41
41
  console.log('[verbose] pixelFormat', pixelFormat);
42
42
  if (supportsCrf) {
43
- console.log('[verbose] crf', crf);
43
+ console.log('[verbose] crf', options.crf);
44
44
  }
45
45
  console.log('[verbose] codec', codec);
46
46
  console.log('[verbose] proResProfileName', proResProfileName);
47
47
  }
48
- (0, crf_1.validateSelectedCrfAndCodecCombination)(crf, codec);
49
48
  (0, pixel_format_1.validateSelectedPixelFormatAndCodecCombination)(pixelFormat, codec);
50
49
  const ffmpegArgs = [
51
50
  ['-r', options.fps.toFixed(2)],
@@ -61,12 +60,15 @@ const prespawnFfmpeg = async (options) => {
61
60
  // and specified the video codec.
62
61
  ['-c:v', encoderName],
63
62
  proResProfileName ? ['-profile:v', proResProfileName] : null,
64
- supportsCrf ? ['-crf', String(crf)] : null,
65
63
  ['-pix_fmt', pixelFormat],
66
64
  // Without explicitly disabling auto-alt-ref,
67
65
  // transparent WebM generation doesn't work
68
66
  pixelFormat === 'yuva420p' ? ['-auto-alt-ref', '0'] : null,
69
- ['-b:v', '1M'],
67
+ ...(0, crf_1.validateQualitySettings)({
68
+ crf: options.crf,
69
+ videoBitrate: options.videoBitrate,
70
+ codec,
71
+ }),
70
72
  '-y',
71
73
  options.outputLocation,
72
74
  ];
@@ -75,12 +77,15 @@ const prespawnFfmpeg = async (options) => {
75
77
  console.log(ffmpegArgs);
76
78
  }
77
79
  const ffmpegString = ffmpegArgs.flat(2).filter(Boolean);
78
- const task = (0, execa_1.default)((_f = options.ffmpegExecutable) !== null && _f !== void 0 ? _f : 'ffmpeg', ffmpegString);
80
+ const finalFfmpegString = options.ffmpegOverride
81
+ ? options.ffmpegOverride({ type: 'pre-stitcher', args: ffmpegString })
82
+ : ffmpegString;
83
+ const task = (0, execa_1.default)(await (0, ffmpeg_flags_1.getExecutableBinary)((_e = options.ffmpegExecutable) !== null && _e !== void 0 ? _e : null, remotionRoot, 'ffmpeg'), finalFfmpegString);
79
84
  options.signal(() => {
80
85
  task.kill();
81
86
  });
82
87
  let ffmpegOutput = '';
83
- (_g = task.stderr) === null || _g === void 0 ? void 0 : _g.on('data', (data) => {
88
+ (_f = task.stderr) === null || _f === void 0 ? void 0 : _f.on('data', (data) => {
84
89
  const str = data.toString();
85
90
  ffmpegOutput += str;
86
91
  if (options.onProgress) {
File without changes
File without changes
@@ -1,5 +1,8 @@
1
1
  import type { Codec } from './codec';
2
2
  declare const proResProfileOptions: readonly ["4444-xq", "4444", "hq", "standard", "light", "proxy"];
3
3
  export declare type ProResProfile = typeof proResProfileOptions[number];
4
- export declare const validateSelectedCodecAndProResCombination: (actualCodec: Codec, actualProResProfile: ProResProfile | undefined) => void;
4
+ export declare const validateSelectedCodecAndProResCombination: ({ codec, proResProfile, }: {
5
+ codec: Codec;
6
+ proResProfile: ProResProfile | undefined;
7
+ }) => void;
5
8
  export {};
@@ -9,13 +9,13 @@ const proResProfileOptions = [
9
9
  'light',
10
10
  'proxy',
11
11
  ];
12
- const validateSelectedCodecAndProResCombination = (actualCodec, actualProResProfile) => {
13
- if (typeof actualProResProfile !== 'undefined' && actualCodec !== 'prores') {
14
- throw new TypeError('You have set a ProRes profile but the codec is not "prores". Set the codec to "prores" or remove the ProRes profile.');
12
+ const validateSelectedCodecAndProResCombination = ({ codec, proResProfile, }) => {
13
+ if (typeof proResProfile !== 'undefined' && codec !== 'prores') {
14
+ throw new TypeError(`You have set a ProRes profile but the codec is "${codec}". Set the codec to "prores" or remove the ProRes profile.`);
15
15
  }
16
- if (actualProResProfile !== undefined &&
17
- !proResProfileOptions.includes(actualProResProfile)) {
18
- throw new TypeError(`The ProRes profile "${actualProResProfile}" is not valid. Valid options are ${proResProfileOptions
16
+ if (proResProfile !== undefined &&
17
+ !proResProfileOptions.includes(proResProfile)) {
18
+ throw new TypeError(`The ProRes profile "${proResProfile}" is not valid. Valid options are ${proResProfileOptions
19
19
  .map((p) => `"${p}"`)
20
20
  .join(', ')}`);
21
21
  }
@@ -1,7 +1,8 @@
1
1
  /// <reference types="node" />
2
+ import type { ClipRegion } from 'remotion';
2
3
  import type { Page } from './browser/BrowserPage';
3
4
  import type { ImageFormat } from './image-format';
4
- export declare const provideScreenshot: ({ page, imageFormat, options, quality, }: {
5
+ export declare const provideScreenshot: ({ page, imageFormat, options, quality, height, width, clipRegion, }: {
5
6
  page: Page;
6
7
  imageFormat: ImageFormat;
7
8
  quality: number | undefined;
@@ -9,4 +10,7 @@ export declare const provideScreenshot: ({ page, imageFormat, options, quality,
9
10
  frame: number;
10
11
  output: string | null;
11
12
  };
13
+ height: number;
14
+ width: number;
15
+ clipRegion: ClipRegion | null;
12
16
  }) => Promise<Buffer>;
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.provideScreenshot = void 0;
4
4
  const screenshot_dom_element_1 = require("./screenshot-dom-element");
5
- const provideScreenshot = ({ page, imageFormat, options, quality, }) => {
5
+ const provideScreenshot = ({ page, imageFormat, options, quality, height, width, clipRegion, }) => {
6
6
  return (0, screenshot_dom_element_1.screenshotDOMElement)({
7
7
  page,
8
8
  opts: {
@@ -10,6 +10,9 @@ const provideScreenshot = ({ page, imageFormat, options, quality, }) => {
10
10
  },
11
11
  imageFormat,
12
12
  quality,
13
+ height,
14
+ width,
15
+ clipRegion,
13
16
  });
14
17
  };
15
18
  exports.provideScreenshot = provideScreenshot;
File without changes