@remotion/renderer 4.0.0-offthread.9 → 4.0.0-prefetch.10

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 (429) hide show
  1. package/dist/assets/calculate-asset-positions.d.ts +2 -2
  2. package/dist/assets/convert-assets-to-file-urls.d.ts +5 -4
  3. package/dist/assets/convert-assets-to-file-urls.js +2 -2
  4. package/dist/assets/download-and-map-assets-to-file.d.ts +16 -12
  5. package/dist/assets/download-and-map-assets-to-file.js +145 -65
  6. package/dist/assets/download-file.d.ts +10 -5
  7. package/dist/assets/download-file.js +20 -5
  8. package/dist/assets/download-map.d.ts +64 -0
  9. package/dist/assets/download-map.js +73 -0
  10. package/dist/assets/ffmpeg-volume-expression.d.ts +2 -3
  11. package/dist/assets/ffmpeg-volume-expression.js +2 -3
  12. package/dist/assets/flatten-volume-array.d.ts +1 -1
  13. package/dist/assets/get-audio-channels.d.ts +3 -4
  14. package/dist/assets/get-audio-channels.js +14 -4
  15. package/dist/assets/get-video-stream-duration.d.ts +4 -0
  16. package/dist/assets/get-video-stream-duration.js +59 -0
  17. package/dist/assets/read-file.js +4 -1
  18. package/dist/assets/types.d.ts +1 -1
  19. package/dist/browser/Browser.d.ts +60 -0
  20. package/dist/browser/Browser.js +218 -0
  21. package/dist/browser/BrowserConnector.d.ts +19 -0
  22. package/dist/browser/BrowserConnector.js +17 -0
  23. package/dist/browser/BrowserFetcher.d.ts +89 -0
  24. package/dist/browser/BrowserFetcher.js +510 -0
  25. package/dist/browser/BrowserPage.d.ts +74 -0
  26. package/dist/browser/BrowserPage.js +283 -0
  27. package/dist/browser/BrowserRunner.d.ts +39 -0
  28. package/dist/browser/BrowserRunner.js +308 -0
  29. package/dist/browser/Connection.d.ts +42 -0
  30. package/dist/browser/Connection.js +242 -0
  31. package/dist/browser/ConsoleMessage.d.ts +31 -0
  32. package/dist/browser/ConsoleMessage.js +48 -0
  33. package/dist/browser/DOMWorld.d.ts +52 -0
  34. package/dist/browser/DOMWorld.js +272 -0
  35. package/dist/browser/Errors.d.ts +25 -0
  36. package/dist/browser/Errors.js +35 -0
  37. package/dist/browser/EvalTypes.d.ts +27 -0
  38. package/dist/browser/EvalTypes.js +17 -0
  39. package/dist/browser/EventEmitter.d.ts +23 -0
  40. package/dist/browser/EventEmitter.js +53 -0
  41. package/dist/browser/ExecutionContext.d.ts +34 -0
  42. package/dist/browser/ExecutionContext.js +174 -0
  43. package/dist/browser/FrameManager.d.ts +93 -0
  44. package/dist/browser/FrameManager.js +496 -0
  45. package/dist/browser/HTTPRequest.d.ts +28 -0
  46. package/dist/browser/HTTPRequest.js +37 -0
  47. package/dist/browser/HTTPResponse.d.ts +21 -0
  48. package/dist/browser/HTTPResponse.js +41 -0
  49. package/dist/browser/JSHandle.d.ts +35 -0
  50. package/dist/browser/JSHandle.js +90 -0
  51. package/dist/browser/LaunchOptions.d.ts +37 -0
  52. package/dist/browser/LaunchOptions.js +17 -0
  53. package/dist/browser/Launcher.d.ts +9 -0
  54. package/dist/browser/Launcher.js +504 -0
  55. package/dist/browser/LifecycleWatcher.d.ts +29 -0
  56. package/dist/browser/LifecycleWatcher.js +180 -0
  57. package/dist/browser/NetworkEventManager.d.ts +33 -0
  58. package/dist/browser/NetworkEventManager.js +81 -0
  59. package/dist/browser/NetworkManager.d.ts +34 -0
  60. package/dist/browser/NetworkManager.js +231 -0
  61. package/dist/browser/NodeWebSocketTransport.d.ts +17 -0
  62. package/dist/browser/NodeWebSocketTransport.js +87 -0
  63. package/dist/browser/Product.d.ts +16 -0
  64. package/dist/browser/Product.js +17 -0
  65. package/dist/browser/PuppeteerNode.d.ts +40 -0
  66. package/dist/browser/PuppeteerNode.js +81 -0
  67. package/dist/browser/PuppeteerViewport.d.ts +5 -0
  68. package/dist/browser/PuppeteerViewport.js +2 -0
  69. package/dist/browser/ScreenshotOptions.d.ts +14 -0
  70. package/dist/browser/ScreenshotOptions.js +2 -0
  71. package/dist/browser/Target.d.ts +61 -0
  72. package/dist/browser/Target.js +146 -0
  73. package/dist/browser/TaskQueue.d.ts +20 -0
  74. package/dist/browser/TaskQueue.js +47 -0
  75. package/dist/browser/TimeoutSettings.d.ts +24 -0
  76. package/dist/browser/TimeoutSettings.js +62 -0
  77. package/dist/browser/assert.d.ts +1 -0
  78. package/dist/browser/assert.js +9 -0
  79. package/dist/browser/create-browser-fetcher.d.ts +17 -0
  80. package/dist/browser/create-browser-fetcher.js +119 -0
  81. package/dist/browser/devtools-commands.d.ts +270 -0
  82. package/dist/browser/devtools-commands.js +2 -0
  83. package/dist/browser/devtools-types.d.ts +1122 -0
  84. package/dist/browser/devtools-types.js +2 -0
  85. package/dist/browser/get-download-destination.d.ts +1 -0
  86. package/dist/browser/get-download-destination.js +38 -0
  87. package/dist/browser/mitt/index.d.ts +22 -0
  88. package/dist/browser/mitt/index.js +49 -0
  89. package/dist/browser/node.d.ts +2 -0
  90. package/dist/browser/node.js +9 -0
  91. package/dist/browser/revisions.d.ts +21 -0
  92. package/dist/browser/revisions.js +22 -0
  93. package/dist/browser/util.d.ts +47 -0
  94. package/dist/browser/util.js +169 -0
  95. package/dist/browser-executable.d.ts +1 -0
  96. package/dist/browser-executable.js +2 -0
  97. package/dist/browser-log.d.ts +1 -1
  98. package/dist/browser.d.ts +2 -0
  99. package/dist/browser.js +4 -0
  100. package/dist/calculate-ffmpeg-filters.d.ts +1 -1
  101. package/dist/calculate-ffmpeg-filters.js +2 -2
  102. package/dist/calculate-sar-dar-pixels.d.ts +9 -0
  103. package/dist/calculate-sar-dar-pixels.js +19 -0
  104. package/dist/can-use-parallel-encoding.d.ts +1 -1
  105. package/dist/can-use-parallel-encoding.js +2 -2
  106. package/dist/codec-supports-media.d.ts +8 -0
  107. package/dist/codec-supports-media.js +56 -0
  108. package/dist/codec.d.ts +4 -0
  109. package/dist/codec.js +16 -0
  110. package/dist/combine-videos.d.ts +3 -2
  111. package/dist/combine-videos.js +17 -7
  112. package/dist/compress-assets.d.ts +7 -0
  113. package/dist/compress-assets.js +25 -0
  114. package/dist/convert-number-of-gif-loops-to-ffmpeg.d.ts +1 -0
  115. package/dist/convert-number-of-gif-loops-to-ffmpeg.js +17 -0
  116. package/dist/convert-to-pcm.d.ts +1 -1
  117. package/dist/create-ffmpeg-complex-filter.d.ts +2 -1
  118. package/dist/create-ffmpeg-complex-filter.js +2 -11
  119. package/dist/create-ffmpeg-merge-filter.js +3 -3
  120. package/dist/create-silent-audio.d.ts +1 -1
  121. package/dist/crf.d.ts +5 -0
  122. package/dist/crf.js +64 -0
  123. package/dist/cycle-browser-tabs.d.ts +1 -1
  124. package/dist/delay-render-embedded-stack.d.ts +1 -1
  125. package/dist/ensure-frames-in-order.d.ts +1 -1
  126. package/dist/ensure-frames-in-order.js +3 -2
  127. package/dist/ensure-presentation-timestamp.d.ts +2 -0
  128. package/dist/ensure-presentation-timestamp.js +69 -0
  129. package/dist/error-handling/handle-javascript-exception.d.ts +2 -2
  130. package/dist/error-handling/handle-javascript-exception.js +3 -4
  131. package/dist/error-handling/symbolicate-error.d.ts +1 -1
  132. package/dist/error-handling/symbolicateable-error.d.ts +1 -1
  133. package/dist/extract-frame-from-video.d.ts +8 -4
  134. package/dist/extract-frame-from-video.js +173 -55
  135. package/dist/ffmpeg-executable.d.ts +1 -0
  136. package/dist/ffmpeg-executable.js +2 -0
  137. package/dist/ffmpeg-filter-file.d.ts +2 -1
  138. package/dist/ffmpeg-filter-file.js +4 -6
  139. package/dist/frame-range.d.ts +2 -0
  140. package/dist/frame-range.js +49 -0
  141. package/dist/get-audio-codec-name.d.ts +1 -1
  142. package/dist/get-audio-codec-name.js +2 -2
  143. package/dist/get-browser-instance.d.ts +4 -3
  144. package/dist/get-browser-instance.js +2 -2
  145. package/dist/get-codec-name.d.ts +1 -1
  146. package/dist/get-codec-name.js +5 -2
  147. package/dist/get-compositions.d.ts +12 -4
  148. package/dist/get-compositions.js +18 -11
  149. package/dist/get-duration-from-frame-range.d.ts +1 -2
  150. package/dist/get-duration-from-frame-range.js +13 -9
  151. package/dist/get-extension-from-codec.d.ts +2 -2
  152. package/dist/get-extension-from-codec.js +5 -0
  153. package/dist/get-extension-of-filename.d.ts +1 -1
  154. package/dist/get-extension-of-filename.js +3 -0
  155. package/dist/get-frame-padded-index.d.ts +14 -0
  156. package/dist/get-frame-padded-index.js +33 -0
  157. package/dist/get-frame-to-render.d.ts +1 -1
  158. package/dist/get-local-browser-executable.d.ts +2 -1
  159. package/dist/get-local-browser-executable.js +7 -5
  160. package/dist/get-port.js +30 -37
  161. package/dist/get-prores-profile-name.d.ts +2 -1
  162. package/dist/get-video-info.d.ts +3 -0
  163. package/dist/get-video-info.js +49 -0
  164. package/dist/get-video-threads-flag.d.ts +1 -0
  165. package/dist/get-video-threads-flag.js +18 -0
  166. package/dist/guess-extension-for-media.d.ts +1 -0
  167. package/dist/guess-extension-for-media.js +27 -0
  168. package/dist/image-format.d.ts +6 -1
  169. package/dist/image-format.js +25 -1
  170. package/dist/index.d.ts +89 -14
  171. package/dist/index.js +91 -2
  172. package/dist/is-audio-codec.d.ts +2 -0
  173. package/dist/is-audio-codec.js +7 -0
  174. package/dist/is-beyond-last-frame.d.ts +3 -2
  175. package/dist/is-beyond-last-frame.js +5 -5
  176. package/dist/last-frame-from-video-cache.d.ts +9 -4
  177. package/dist/last-frame-from-video-cache.js +24 -21
  178. package/dist/log-level.d.ts +4 -0
  179. package/dist/log-level.js +15 -0
  180. package/dist/merge-audio-track.d.ts +3 -1
  181. package/dist/merge-audio-track.js +12 -6
  182. package/dist/mime-db.d.ts +6 -0
  183. package/dist/mime-db.js +8636 -0
  184. package/dist/mime-types.d.ts +3 -0
  185. package/dist/mime-types.js +94 -0
  186. package/dist/offthread-video-server.d.ts +9 -5
  187. package/dist/offthread-video-server.js +31 -10
  188. package/dist/open-browser.d.ts +5 -3
  189. package/dist/open-browser.js +15 -15
  190. package/dist/overwrite.d.ts +1 -0
  191. package/dist/overwrite.js +4 -0
  192. package/dist/perf.d.ts +5 -0
  193. package/dist/perf.js +35 -0
  194. package/dist/pixel-format.d.ts +5 -0
  195. package/dist/pixel-format.js +26 -0
  196. package/dist/prepare-server.d.ts +6 -4
  197. package/dist/prepare-server.js +21 -5
  198. package/dist/preprocess-audio-track.d.ts +5 -2
  199. package/dist/preprocess-audio-track.js +3 -3
  200. package/dist/prespawn-ffmpeg.d.ts +6 -2
  201. package/dist/prespawn-ffmpeg.js +10 -7
  202. package/dist/prestitcher-memory-usage.d.ts +12 -0
  203. package/dist/prestitcher-memory-usage.js +30 -0
  204. package/dist/prores-profile.d.ts +5 -0
  205. package/dist/prores-profile.js +23 -0
  206. package/dist/provide-screenshot.d.ts +5 -4
  207. package/dist/provide-screenshot.js +0 -1
  208. package/dist/puppeteer-evaluate.d.ts +1 -1
  209. package/dist/puppeteer-evaluate.js +3 -4
  210. package/dist/puppeteer-screenshot.d.ts +3 -2
  211. package/dist/puppeteer-screenshot.js +2 -4
  212. package/dist/quality.d.ts +1 -0
  213. package/dist/quality.js +21 -0
  214. package/dist/render-frames.d.ts +21 -9
  215. package/dist/render-frames.js +111 -82
  216. package/dist/render-media.d.ts +33 -10
  217. package/dist/render-media.js +83 -25
  218. package/dist/render-still.d.ts +18 -7
  219. package/dist/render-still.js +44 -16
  220. package/dist/screenshot-dom-element.d.ts +6 -7
  221. package/dist/screenshot-dom-element.js +3 -6
  222. package/dist/screenshot-task.d.ts +3 -2
  223. package/dist/screenshot-task.js +36 -23
  224. package/dist/seek-to-frame.d.ts +2 -2
  225. package/dist/seek-to-frame.js +2 -2
  226. package/dist/serve-handler/index.d.ts +4 -0
  227. package/dist/serve-handler/index.js +204 -0
  228. package/dist/serve-handler/is-path-inside.d.ts +1 -0
  229. package/dist/serve-handler/is-path-inside.js +27 -0
  230. package/dist/serve-handler/range-parser.d.ts +13 -0
  231. package/dist/serve-handler/range-parser.js +57 -0
  232. package/dist/serve-static.d.ts +5 -3
  233. package/dist/serve-static.js +19 -8
  234. package/dist/set-props-and-env.d.ts +4 -2
  235. package/dist/set-props-and-env.js +42 -11
  236. package/dist/stitch-frames-to-video.d.ts +16 -6
  237. package/dist/stitch-frames-to-video.js +112 -42
  238. package/dist/stringify-ffmpeg-filter.d.ts +2 -2
  239. package/dist/stringify-ffmpeg-filter.js +11 -9
  240. package/dist/symbolicate-stacktrace.d.ts +1 -1
  241. package/dist/symbolicate-stacktrace.js +3 -3
  242. package/dist/truthy.d.ts +3 -0
  243. package/dist/truthy.js +7 -0
  244. package/dist/types.d.ts +1 -1
  245. package/dist/validate-concurrency.d.ts +1 -0
  246. package/dist/validate-concurrency.js +24 -0
  247. package/dist/validate-even-dimensions-with-codec.d.ts +1 -1
  248. package/dist/validate-even-dimensions-with-codec.js +2 -2
  249. package/dist/validate-every-nth-frame.d.ts +1 -0
  250. package/dist/validate-every-nth-frame.js +21 -0
  251. package/dist/validate-ffmpeg.js +2 -3
  252. package/dist/validate-frame.d.ts +1 -0
  253. package/dist/validate-frame.js +24 -0
  254. package/dist/validate-opengl-renderer.d.ts +5 -0
  255. package/dist/validate-opengl-renderer.js +15 -0
  256. package/dist/validate-output-filename.d.ts +1 -1
  257. package/dist/validate-output-filename.js +5 -0
  258. package/dist/wait-for-symbolication-error-to-be-done.d.ts +3 -0
  259. package/dist/wait-for-symbolication-error-to-be-done.js +34 -0
  260. package/dist/ws/ws-types.d.ts +14 -0
  261. package/dist/ws/ws-types.js +10 -0
  262. package/package.json +13 -15
  263. package/tsconfig.json +2 -2
  264. package/types/ws/index.d.ts +509 -0
  265. package/vitest.config.ts +8 -0
  266. package/dist/assets/calculate-asset-positions.d.ts.map +0 -1
  267. package/dist/assets/calculate-asset-positions.js.map +0 -1
  268. package/dist/assets/calculate-atempo.d.ts.map +0 -1
  269. package/dist/assets/calculate-atempo.js.map +0 -1
  270. package/dist/assets/convert-assets-to-file-urls.d.ts.map +0 -1
  271. package/dist/assets/convert-assets-to-file-urls.js.map +0 -1
  272. package/dist/assets/download-and-map-assets-to-file.d.ts.map +0 -1
  273. package/dist/assets/download-and-map-assets-to-file.js.map +0 -1
  274. package/dist/assets/download-file.d.ts.map +0 -1
  275. package/dist/assets/download-file.js.map +0 -1
  276. package/dist/assets/ffmpeg-volume-expression.d.ts.map +0 -1
  277. package/dist/assets/ffmpeg-volume-expression.js.map +0 -1
  278. package/dist/assets/flatten-volume-array.d.ts.map +0 -1
  279. package/dist/assets/flatten-volume-array.js.map +0 -1
  280. package/dist/assets/get-audio-channels.d.ts.map +0 -1
  281. package/dist/assets/get-audio-channels.js.map +0 -1
  282. package/dist/assets/read-file.d.ts.map +0 -1
  283. package/dist/assets/read-file.js.map +0 -1
  284. package/dist/assets/round-volume-to-avoid-stack-overflow.d.ts.map +0 -1
  285. package/dist/assets/round-volume-to-avoid-stack-overflow.js.map +0 -1
  286. package/dist/assets/sanitize-filename.d.ts.map +0 -1
  287. package/dist/assets/sanitize-filename.js.map +0 -1
  288. package/dist/assets/sanitize-filepath.d.ts.map +0 -1
  289. package/dist/assets/sanitize-filepath.js.map +0 -1
  290. package/dist/assets/truncate-utf8-bytes.d.ts.map +0 -1
  291. package/dist/assets/truncate-utf8-bytes.js.map +0 -1
  292. package/dist/assets/types.d.ts.map +0 -1
  293. package/dist/assets/types.js.map +0 -1
  294. package/dist/browser-log.d.ts.map +0 -1
  295. package/dist/browser-log.js.map +0 -1
  296. package/dist/calculate-ffmpeg-filters.d.ts.map +0 -1
  297. package/dist/calculate-ffmpeg-filters.js.map +0 -1
  298. package/dist/can-use-parallel-encoding.d.ts.map +0 -1
  299. package/dist/can-use-parallel-encoding.js.map +0 -1
  300. package/dist/chunk.d.ts.map +0 -1
  301. package/dist/chunk.js.map +0 -1
  302. package/dist/combine-videos.d.ts.map +0 -1
  303. package/dist/combine-videos.js.map +0 -1
  304. package/dist/convert-to-pcm.d.ts.map +0 -1
  305. package/dist/convert-to-pcm.js.map +0 -1
  306. package/dist/create-ffmpeg-complex-filter.d.ts.map +0 -1
  307. package/dist/create-ffmpeg-complex-filter.js.map +0 -1
  308. package/dist/create-ffmpeg-merge-filter.d.ts.map +0 -1
  309. package/dist/create-ffmpeg-merge-filter.js.map +0 -1
  310. package/dist/create-silent-audio.d.ts.map +0 -1
  311. package/dist/create-silent-audio.js.map +0 -1
  312. package/dist/cycle-browser-tabs.d.ts.map +0 -1
  313. package/dist/cycle-browser-tabs.js.map +0 -1
  314. package/dist/delay-render-embedded-stack.d.ts.map +0 -1
  315. package/dist/delay-render-embedded-stack.js.map +0 -1
  316. package/dist/delete-directory.d.ts.map +0 -1
  317. package/dist/delete-directory.js.map +0 -1
  318. package/dist/ensure-frames-in-order.d.ts.map +0 -1
  319. package/dist/ensure-frames-in-order.js.map +0 -1
  320. package/dist/ensure-output-directory.d.ts.map +0 -1
  321. package/dist/ensure-output-directory.js.map +0 -1
  322. package/dist/error-handling/handle-javascript-exception.d.ts.map +0 -1
  323. package/dist/error-handling/handle-javascript-exception.js.map +0 -1
  324. package/dist/error-handling/symbolicate-error.d.ts.map +0 -1
  325. package/dist/error-handling/symbolicate-error.js.map +0 -1
  326. package/dist/error-handling/symbolicateable-error.d.ts.map +0 -1
  327. package/dist/error-handling/symbolicateable-error.js.map +0 -1
  328. package/dist/ffmpeg-filter-file.d.ts.map +0 -1
  329. package/dist/ffmpeg-filter-file.js.map +0 -1
  330. package/dist/ffmpeg-flags.d.ts.map +0 -1
  331. package/dist/ffmpeg-flags.js.map +0 -1
  332. package/dist/get-audio-codec-name.d.ts.map +0 -1
  333. package/dist/get-audio-codec-name.js.map +0 -1
  334. package/dist/get-browser-instance.d.ts.map +0 -1
  335. package/dist/get-browser-instance.js.map +0 -1
  336. package/dist/get-codec-name.d.ts.map +0 -1
  337. package/dist/get-codec-name.js.map +0 -1
  338. package/dist/get-compositions.d.ts.map +0 -1
  339. package/dist/get-compositions.js.map +0 -1
  340. package/dist/get-concurrency.d.ts.map +0 -1
  341. package/dist/get-concurrency.js.map +0 -1
  342. package/dist/get-duration-from-frame-range.d.ts.map +0 -1
  343. package/dist/get-duration-from-frame-range.js.map +0 -1
  344. package/dist/get-extension-from-codec.d.ts.map +0 -1
  345. package/dist/get-extension-from-codec.js.map +0 -1
  346. package/dist/get-frame-to-render.d.ts.map +0 -1
  347. package/dist/get-frame-to-render.js.map +0 -1
  348. package/dist/get-local-browser-executable.d.ts.map +0 -1
  349. package/dist/get-local-browser-executable.js.map +0 -1
  350. package/dist/get-port.d.ts.map +0 -1
  351. package/dist/get-port.js.map +0 -1
  352. package/dist/get-prores-profile-name.d.ts.map +0 -1
  353. package/dist/get-prores-profile-name.js.map +0 -1
  354. package/dist/image-format.d.ts.map +0 -1
  355. package/dist/image-format.js.map +0 -1
  356. package/dist/index.d.ts.map +0 -1
  357. package/dist/index.js.map +0 -1
  358. package/dist/is-serve-url.d.ts.map +0 -1
  359. package/dist/is-serve-url.js.map +0 -1
  360. package/dist/legacy-webpack-config.d.ts.map +0 -1
  361. package/dist/legacy-webpack-config.js.map +0 -1
  362. package/dist/make-assets-download-dir.d.ts +0 -1
  363. package/dist/make-assets-download-dir.d.ts.map +0 -1
  364. package/dist/make-assets-download-dir.js +0 -8
  365. package/dist/make-assets-download-dir.js.map +0 -1
  366. package/dist/merge-audio-track.d.ts.map +0 -1
  367. package/dist/merge-audio-track.js.map +0 -1
  368. package/dist/normalize-serve-url.d.ts.map +0 -1
  369. package/dist/normalize-serve-url.js.map +0 -1
  370. package/dist/open-browser.d.ts.map +0 -1
  371. package/dist/open-browser.js.map +0 -1
  372. package/dist/p-limit.d.ts.map +0 -1
  373. package/dist/p-limit.js.map +0 -1
  374. package/dist/parse-browser-error-stack.d.ts.map +0 -1
  375. package/dist/parse-browser-error-stack.js.map +0 -1
  376. package/dist/parse-ffmpeg-progress.d.ts.map +0 -1
  377. package/dist/parse-ffmpeg-progress.js.map +0 -1
  378. package/dist/pool.d.ts.map +0 -1
  379. package/dist/pool.js.map +0 -1
  380. package/dist/prepare-server.d.ts.map +0 -1
  381. package/dist/prepare-server.js.map +0 -1
  382. package/dist/preprocess-audio-track.d.ts.map +0 -1
  383. package/dist/preprocess-audio-track.js.map +0 -1
  384. package/dist/prespawn-ffmpeg.d.ts.map +0 -1
  385. package/dist/prespawn-ffmpeg.js.map +0 -1
  386. package/dist/provide-screenshot.d.ts.map +0 -1
  387. package/dist/provide-screenshot.js.map +0 -1
  388. package/dist/puppeteer-evaluate.d.ts.map +0 -1
  389. package/dist/puppeteer-evaluate.js.map +0 -1
  390. package/dist/puppeteer-screenshot.d.ts.map +0 -1
  391. package/dist/puppeteer-screenshot.js.map +0 -1
  392. package/dist/render-frames.d.ts.map +0 -1
  393. package/dist/render-frames.js.map +0 -1
  394. package/dist/render-media.d.ts.map +0 -1
  395. package/dist/render-media.js.map +0 -1
  396. package/dist/render-still.d.ts.map +0 -1
  397. package/dist/render-still.js.map +0 -1
  398. package/dist/resolve-asset-src.d.ts.map +0 -1
  399. package/dist/resolve-asset-src.js.map +0 -1
  400. package/dist/sample-rate.d.ts.map +0 -1
  401. package/dist/sample-rate.js.map +0 -1
  402. package/dist/screenshot-dom-element.d.ts.map +0 -1
  403. package/dist/screenshot-dom-element.js.map +0 -1
  404. package/dist/screenshot-task.d.ts.map +0 -1
  405. package/dist/screenshot-task.js.map +0 -1
  406. package/dist/seek-to-frame.d.ts.map +0 -1
  407. package/dist/seek-to-frame.js.map +0 -1
  408. package/dist/serve-static.d.ts.map +0 -1
  409. package/dist/serve-static.js.map +0 -1
  410. package/dist/set-props-and-env.d.ts.map +0 -1
  411. package/dist/set-props-and-env.js.map +0 -1
  412. package/dist/stitch-frames-to-video.d.ts.map +0 -1
  413. package/dist/stitch-frames-to-video.js.map +0 -1
  414. package/dist/stringify-ffmpeg-filter.d.ts.map +0 -1
  415. package/dist/stringify-ffmpeg-filter.js.map +0 -1
  416. package/dist/symbolicate-stacktrace.d.ts.map +0 -1
  417. package/dist/symbolicate-stacktrace.js.map +0 -1
  418. package/dist/tmp-dir.d.ts.map +0 -1
  419. package/dist/tmp-dir.js.map +0 -1
  420. package/dist/types.d.ts.map +0 -1
  421. package/dist/types.js.map +0 -1
  422. package/dist/validate-even-dimensions-with-codec.d.ts.map +0 -1
  423. package/dist/validate-even-dimensions-with-codec.js.map +0 -1
  424. package/dist/validate-ffmpeg.d.ts.map +0 -1
  425. package/dist/validate-ffmpeg.js.map +0 -1
  426. package/dist/validate-puppeteer-timeout.d.ts.map +0 -1
  427. package/dist/validate-puppeteer-timeout.js.map +0 -1
  428. package/dist/validate-scale.d.ts.map +0 -1
  429. package/dist/validate-scale.js.map +0 -1
@@ -3,42 +3,131 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.extractFrameFromVideo = exports.extractFrameFromVideoFn = exports.streamToString = void 0;
6
+ exports.extractFrameFromVideo = exports.getLastFrameOfVideo = void 0;
7
7
  const execa_1 = __importDefault(require("execa"));
8
- const remotion_1 = require("remotion");
8
+ const get_video_stream_duration_1 = require("./assets/get-video-stream-duration");
9
+ const ensure_presentation_timestamp_1 = require("./ensure-presentation-timestamp");
9
10
  const frame_to_ffmpeg_timestamp_1 = require("./frame-to-ffmpeg-timestamp");
11
+ const get_video_info_1 = require("./get-video-info");
10
12
  const is_beyond_last_frame_1 = require("./is-beyond-last-frame");
11
13
  const last_frame_from_video_cache_1 = require("./last-frame-from-video-cache");
12
14
  const p_limit_1 = require("./p-limit");
13
- function streamToString(stream) {
14
- const chunks = [];
15
- return new Promise((resolve, reject) => {
16
- stream.on('data', (chunk) => chunks.push(Buffer.from(chunk)));
17
- stream.on('error', (err) => reject(err));
18
- stream.on('end', () => resolve(Buffer.concat(chunks).toString('utf8')));
19
- });
20
- }
21
- exports.streamToString = streamToString;
22
- const lastFrameLimit = (0, p_limit_1.pLimit)(5);
15
+ const perf_1 = require("./perf");
16
+ const truthy_1 = require("./truthy");
17
+ const lastFrameLimit = (0, p_limit_1.pLimit)(1);
23
18
  const mainLimit = (0, p_limit_1.pLimit)(5);
24
- const getLastFrameOfVideoUnlimited = async ({ ffmpegExecutable, offset, src, }) => {
25
- if (offset > 100) {
26
- throw new Error('could not get last frame of ' +
27
- src +
28
- '. Tried to seek 100ms before the end of the video and no frame was found. The video container has a duration that is longer than it contains video.');
19
+ const determineVcodecFfmepgFlags = (vcodecFlag) => {
20
+ return [
21
+ vcodecFlag === 'vp9' ? '-vcodec' : null,
22
+ vcodecFlag === 'vp9' ? 'libvpx-vp9' : null,
23
+ vcodecFlag === 'vp8' ? '-vcodec' : null,
24
+ vcodecFlag === 'vp8' ? 'libvpx' : null,
25
+ ].filter(truthy_1.truthy);
26
+ };
27
+ const determineResizeParams = (needsResize) => {
28
+ if (needsResize === null) {
29
+ return [];
30
+ }
31
+ return ['-s', `${needsResize[0]}x${needsResize[1]}`];
32
+ };
33
+ // Uses no seeking, therefore the whole video has to be decoded. This is a last resort and should only happen
34
+ // if the video is corrupted
35
+ const getFrameOfVideoSlow = async ({ src, duration, ffmpegExecutable, imageFormat, specialVCodecForTransparency, needsResize, offset, fps, }) => {
36
+ console.warn(`\nUsing a slow method to extract the frame at ${duration}ms of ${src}. See https://remotion.dev/docs/slow-method-to-extract-frame for advice`);
37
+ const actualOffset = `-${duration * 1000 - offset}ms`;
38
+ const command = [
39
+ '-itsoffset',
40
+ actualOffset,
41
+ ...determineVcodecFfmepgFlags(specialVCodecForTransparency),
42
+ '-i',
43
+ src,
44
+ '-frames:v',
45
+ '1',
46
+ '-c:v',
47
+ imageFormat === 'jpeg' ? 'mjpeg' : 'png',
48
+ '-f',
49
+ 'image2pipe',
50
+ ...determineResizeParams(needsResize),
51
+ '-',
52
+ ].filter(truthy_1.truthy);
53
+ const { stdout, stderr } = (0, execa_1.default)(ffmpegExecutable !== null && ffmpegExecutable !== void 0 ? ffmpegExecutable : 'ffmpeg', command);
54
+ if (!stderr) {
55
+ throw new Error('unexpectedly did not get stderr');
29
56
  }
30
- const actualOffset = `-${offset + 10}ms`;
57
+ if (!stdout) {
58
+ throw new Error('unexpectedly did not get stdout');
59
+ }
60
+ const stderrChunks = [];
61
+ const stdoutChunks = [];
62
+ const stdErrString = new Promise((resolve, reject) => {
63
+ stderr.on('data', (d) => stderrChunks.push(d));
64
+ stderr.on('error', (err) => reject(err));
65
+ stderr.on('end', () => resolve(Buffer.concat(stderrChunks).toString('utf-8')));
66
+ });
67
+ const stdoutChunk = new Promise((resolve, reject) => {
68
+ stdout.on('data', (d) => stdoutChunks.push(d));
69
+ stdout.on('error', (err) => reject(err));
70
+ stdout.on('end', () => resolve(Buffer.concat(stdoutChunks)));
71
+ });
72
+ const [stdErr, stdoutBuffer] = await Promise.all([stdErrString, stdoutChunk]);
73
+ const isEmpty = stdErr.includes('Output file is empty');
74
+ if (isEmpty) {
75
+ if (offset > 70) {
76
+ throw new Error(`Could not get last frame of ${src}. Tried to seek to the end using the command "ffmpeg ${command.join(' ')}" but got no frame. Most likely this video is corrupted.`);
77
+ }
78
+ return getFrameOfVideoSlow({
79
+ ffmpegExecutable,
80
+ duration,
81
+ // Decrement in 10ms increments, or 1 frame (e.g. fps = 25 --> 40ms)
82
+ offset: offset + (fps === null ? 10 : 1000 / fps),
83
+ src,
84
+ imageFormat,
85
+ specialVCodecForTransparency,
86
+ needsResize,
87
+ fps,
88
+ });
89
+ }
90
+ return stdoutBuffer;
91
+ };
92
+ const getLastFrameOfVideoFastUnlimited = async (options) => {
93
+ const { ffmpegExecutable, ffprobeExecutable, offset, src, downloadMap } = options;
94
+ const fromCache = (0, last_frame_from_video_cache_1.getLastFrameFromCache)({ ...options, offset: 0 });
95
+ if (fromCache) {
96
+ return fromCache;
97
+ }
98
+ const { duration, fps } = await (0, get_video_stream_duration_1.getVideoStreamDuration)(downloadMap, src, ffprobeExecutable);
99
+ if (duration === null) {
100
+ throw new Error(`Could not determine the duration of ${src} using FFMPEG. The file is not supported.`);
101
+ }
102
+ if (options.specialVCodecForTransparency === 'vp8' || offset > 40) {
103
+ const last = await getFrameOfVideoSlow({
104
+ duration,
105
+ ffmpegExecutable,
106
+ src,
107
+ imageFormat: options.imageFormat,
108
+ specialVCodecForTransparency: options.specialVCodecForTransparency,
109
+ needsResize: options.needsResize,
110
+ offset: offset - 1000 / (fps === null ? 10 : fps),
111
+ fps,
112
+ });
113
+ return last;
114
+ }
115
+ const actualOffset = `${duration * 1000 - offset}ms`;
31
116
  const { stdout, stderr } = (0, execa_1.default)(ffmpegExecutable !== null && ffmpegExecutable !== void 0 ? ffmpegExecutable : 'ffmpeg', [
32
- '-sseof',
117
+ '-ss',
33
118
  actualOffset,
119
+ ...determineVcodecFfmepgFlags(options.specialVCodecForTransparency),
34
120
  '-i',
35
121
  src,
36
122
  '-frames:v',
37
123
  '1',
124
+ '-c:v',
125
+ options.imageFormat === 'jpeg' ? 'mjpeg' : 'png',
38
126
  '-f',
39
127
  'image2pipe',
128
+ ...determineResizeParams(options.needsResize),
40
129
  '-',
41
- ]);
130
+ ].filter(truthy_1.truthy));
42
131
  if (!stderr) {
43
132
  throw new Error('unexpectedly did not get stderr');
44
133
  }
@@ -66,43 +155,74 @@ const getLastFrameOfVideoUnlimited = async ({ ffmpegExecutable, offset, src, })
66
155
  const [stdErr, stdoutBuffer] = await Promise.all([stdErrString, stdoutChunk]);
67
156
  const isEmpty = stdErr.includes('Output file is empty');
68
157
  if (isEmpty) {
69
- return getLastFrameOfVideoUnlimited({
158
+ const unlimited = await getLastFrameOfVideoFastUnlimited({
70
159
  ffmpegExecutable,
71
- offset: offset + 10,
160
+ // Decrement in 10ms increments, or 1 frame (e.g. fps = 25 --> 40ms)
161
+ offset: offset + (fps === null ? 10 : 1000 / fps),
72
162
  src,
163
+ ffprobeExecutable,
164
+ imageFormat: options.imageFormat,
165
+ specialVCodecForTransparency: options.specialVCodecForTransparency,
166
+ needsResize: options.needsResize,
167
+ downloadMap: options.downloadMap,
73
168
  });
169
+ return unlimited;
74
170
  }
75
171
  return stdoutBuffer;
76
172
  };
77
173
  const getLastFrameOfVideo = async (options) => {
78
- const fromCache = (0, last_frame_from_video_cache_1.getLastFrameFromCache)(options);
79
- if (fromCache) {
80
- return fromCache;
81
- }
82
- const result = await lastFrameLimit(getLastFrameOfVideoUnlimited, options);
174
+ const result = await lastFrameLimit(getLastFrameOfVideoFastUnlimited, options);
83
175
  (0, last_frame_from_video_cache_1.setLastFrameInCache)(options, result);
84
176
  return result;
85
177
  };
86
- const extractFrameFromVideoFn = async ({ time, src, ffmpegExecutable, }) => {
87
- if ((0, is_beyond_last_frame_1.isBeyondLastFrame)(src, time)) {
88
- return getLastFrameOfVideo({
178
+ exports.getLastFrameOfVideo = getLastFrameOfVideo;
179
+ const extractFrameFromVideoFn = async ({ time, ffmpegExecutable, ffprobeExecutable, imageFormat, downloadMap, ...options }) => {
180
+ // We make a new copy of the video only for video because the conversion may affect
181
+ // audio rendering, so we work with 2 different files
182
+ const src = await (0, ensure_presentation_timestamp_1.ensurePresentationTimestamps)(downloadMap, options.src);
183
+ const { specialVcodec, needsResize } = await (0, get_video_info_1.getVideoInfo)(downloadMap, src, ffprobeExecutable);
184
+ if (specialVcodec === 'vp8') {
185
+ const { fps } = await (0, get_video_stream_duration_1.getVideoStreamDuration)(downloadMap, src, ffprobeExecutable);
186
+ return getFrameOfVideoSlow({
187
+ ffmpegExecutable,
188
+ imageFormat,
189
+ specialVCodecForTransparency: specialVcodec,
190
+ src,
191
+ duration: time,
192
+ needsResize,
193
+ offset: 0,
194
+ fps,
195
+ });
196
+ }
197
+ if ((0, is_beyond_last_frame_1.isBeyondLastFrame)(downloadMap, src, time)) {
198
+ const lastFrame = await (0, exports.getLastFrameOfVideo)({
89
199
  ffmpegExecutable,
200
+ ffprobeExecutable,
90
201
  offset: 0,
91
202
  src,
203
+ imageFormat,
204
+ specialVCodecForTransparency: specialVcodec,
205
+ needsResize,
206
+ downloadMap,
92
207
  });
208
+ return lastFrame;
93
209
  }
94
210
  const ffmpegTimestamp = (0, frame_to_ffmpeg_timestamp_1.frameToFfmpegTimestamp)(time);
95
211
  const { stdout, stderr } = (0, execa_1.default)(ffmpegExecutable !== null && ffmpegExecutable !== void 0 ? ffmpegExecutable : 'ffmpeg', [
96
212
  '-ss',
97
213
  ffmpegTimestamp,
214
+ ...determineVcodecFfmepgFlags(specialVcodec),
98
215
  '-i',
99
216
  src,
100
217
  '-frames:v',
101
218
  '1',
102
219
  '-f',
103
220
  'image2pipe',
221
+ '-vcodec',
222
+ imageFormat === 'jpeg' ? 'mjpeg' : 'png',
223
+ ...determineResizeParams(needsResize),
104
224
  '-',
105
- ], {
225
+ ].filter(truthy_1.truthy), {
106
226
  buffer: false,
107
227
  });
108
228
  if (!stderr) {
@@ -114,46 +234,44 @@ const extractFrameFromVideoFn = async ({ time, src, ffmpegExecutable, }) => {
114
234
  const stdoutChunks = [];
115
235
  const stderrChunks = [];
116
236
  const stderrStringProm = new Promise((resolve, reject) => {
117
- stderr.on('data', (d) => {
118
- stderrChunks.push(d);
119
- });
120
- stderr.on('error', (err) => {
121
- reject(err);
122
- });
123
- stderr.on('end', () => {
124
- resolve(Buffer.concat(stderrChunks).toString('utf8'));
125
- });
237
+ stderr.on('data', (d) => stderrChunks.push(d));
238
+ stderr.on('error', (err) => reject(err));
239
+ stderr.on('end', () => resolve(Buffer.concat(stderrChunks).toString('utf8')));
126
240
  });
127
241
  const stdoutBuffer = new Promise((resolve, reject) => {
128
- stdout.on('data', (d) => {
129
- stdoutChunks.push(d);
130
- });
131
- stdout.on('error', (err) => {
132
- reject(err);
133
- });
134
- stdout.on('end', () => {
135
- resolve(Buffer.concat(stdoutChunks));
136
- });
242
+ stdout.on('data', (d) => stdoutChunks.push(d));
243
+ stdout.on('error', (err) => reject(err));
244
+ stdout.on('end', () => resolve(Buffer.concat(stdoutChunks)));
137
245
  });
138
246
  const [stderrStr, stdOut] = await Promise.all([
139
247
  stderrStringProm,
140
248
  stdoutBuffer,
141
249
  ]);
142
250
  if (stderrStr.includes('Output file is empty')) {
143
- (0, is_beyond_last_frame_1.markAsBeyondLastFrame)(src, time);
144
- return getLastFrameOfVideo({
251
+ (0, is_beyond_last_frame_1.markAsBeyondLastFrame)(downloadMap, src, time);
252
+ const last = await (0, exports.getLastFrameOfVideo)({
145
253
  ffmpegExecutable,
254
+ ffprobeExecutable,
146
255
  offset: 0,
147
256
  src,
257
+ imageFormat,
258
+ specialVCodecForTransparency: specialVcodec,
259
+ needsResize,
260
+ downloadMap,
148
261
  });
262
+ return last;
263
+ }
264
+ if (stdOut.length === 0) {
265
+ console.log('FFMPEG Logs:');
266
+ console.log(stderrStr);
267
+ throw new Error("Couldn't extract frame from video - FFMPEG did not return any data. Check logs to see more information");
149
268
  }
150
269
  return stdOut;
151
270
  };
152
- exports.extractFrameFromVideoFn = extractFrameFromVideoFn;
153
271
  const extractFrameFromVideo = async (options) => {
154
- const perf = remotion_1.Internals.perf.startPerfMeasure('extract-frame');
155
- const res = await mainLimit(exports.extractFrameFromVideoFn, options);
156
- remotion_1.Internals.perf.stopPerfMeasure(perf);
272
+ const perf = (0, perf_1.startPerfMeasure)('extract-frame');
273
+ const res = await mainLimit(extractFrameFromVideoFn, options);
274
+ (0, perf_1.stopPerfMeasure)(perf);
157
275
  return res;
158
276
  };
159
277
  exports.extractFrameFromVideo = extractFrameFromVideo;
@@ -0,0 +1 @@
1
+ export declare type FfmpegExecutable = string | null;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,4 +1,5 @@
1
- export declare const makeFfmpegFilterFile: (complexFilter: string) => Promise<{
1
+ import type { DownloadMap } from './assets/download-map';
2
+ export declare const makeFfmpegFilterFile: (complexFilter: string, downloadMap: DownloadMap) => Promise<{
2
3
  file: string;
3
4
  cleanup: () => void;
4
5
  }>;
@@ -8,16 +8,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
8
8
  exports.makeFfmpegFilterFile = void 0;
9
9
  const fs_1 = __importDefault(require("fs"));
10
10
  const path_1 = __importDefault(require("path"));
11
- const delete_directory_1 = require("./delete-directory");
12
- const tmp_dir_1 = require("./tmp-dir");
13
- const makeFfmpegFilterFile = async (complexFilter) => {
14
- const tempPath = (0, tmp_dir_1.tmpDir)('remotion-complex-filter');
15
- const filterFile = path_1.default.join(tempPath, 'complex-filter.txt');
11
+ const makeFfmpegFilterFile = async (complexFilter, downloadMap) => {
12
+ const random = Math.random().toString().replace('.', '');
13
+ const filterFile = path_1.default.join(downloadMap.complexFilter, 'complex-filter-' + random + '.txt');
16
14
  await fs_1.default.promises.writeFile(filterFile, complexFilter);
17
15
  return {
18
16
  file: filterFile,
19
17
  cleanup: () => {
20
- (0, delete_directory_1.deleteDirectory)(filterFile);
18
+ fs_1.default.unlinkSync(filterFile);
21
19
  },
22
20
  };
23
21
  };
@@ -0,0 +1,2 @@
1
+ export declare type FrameRange = number | [number, number];
2
+ export declare const validateFrameRange: (frameRange: FrameRange | null) => void;
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateFrameRange = void 0;
4
+ const validateFrameRange = (frameRange) => {
5
+ if (frameRange === null) {
6
+ return;
7
+ }
8
+ if (typeof frameRange === 'number') {
9
+ if (frameRange < 0) {
10
+ throw new TypeError('Frame must be a non-negative number, got ' + frameRange);
11
+ }
12
+ if (!Number.isFinite(frameRange)) {
13
+ throw new TypeError('Frame must be a finite number, got ' + frameRange);
14
+ }
15
+ if (!Number.isInteger(frameRange)) {
16
+ throw new Error(`Frame must be an integer, but got a float (${frameRange})`);
17
+ }
18
+ return;
19
+ }
20
+ if (Array.isArray(frameRange)) {
21
+ if (frameRange.length !== 2) {
22
+ throw new TypeError('Frame range must be a tuple, got an array with length ' +
23
+ frameRange.length);
24
+ }
25
+ for (const value of frameRange) {
26
+ if (typeof value !== 'number') {
27
+ throw new Error(`Each value of frame range must be a number, but got ${typeof value} (${JSON.stringify(value)})`);
28
+ }
29
+ if (!Number.isFinite(value)) {
30
+ throw new TypeError('Each value of frame range must be finite, but got ' + value);
31
+ }
32
+ if (!Number.isInteger(value)) {
33
+ throw new Error(`Each value of frame range must be an integer, but got a float (${value})`);
34
+ }
35
+ if (value < 0) {
36
+ throw new Error(`Each value of frame range must be non-negative, but got ${value}`);
37
+ }
38
+ }
39
+ const [first, second] = frameRange;
40
+ if (second < first) {
41
+ throw new Error('The second value of frame range must be not smaller than the first one, but got ' +
42
+ frameRange.join('-'));
43
+ }
44
+ return;
45
+ }
46
+ throw new TypeError('Frame range must be a number or a tuple of numbers, but got object of type ' +
47
+ typeof frameRange);
48
+ };
49
+ exports.validateFrameRange = validateFrameRange;
@@ -1,2 +1,2 @@
1
- import { Codec } from 'remotion';
1
+ import type { Codec } from './codec';
2
2
  export declare const getAudioCodecName: (codec: Codec) => string | null;
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getAudioCodecName = void 0;
4
- const remotion_1 = require("remotion");
4
+ const is_audio_codec_1 = require("./is-audio-codec");
5
5
  const getAudioCodecName = (codec) => {
6
- if (!remotion_1.Internals.isAudioCodec(codec)) {
6
+ if (!(0, is_audio_codec_1.isAudioCodec)(codec)) {
7
7
  // The mkv container supports WAV, but MP4 does only support
8
8
  // AAC. Choose MKV codec for better quality because we can put in lossless audio
9
9
  if (codec === 'h264-mkv') {
@@ -1,6 +1,7 @@
1
- import { Browser, Page } from 'puppeteer-core';
2
- import { BrowserExecutable } from 'remotion';
3
- import { ChromiumOptions } from './open-browser';
1
+ import type { BrowserExecutable } from './browser-executable';
2
+ import type { Browser } from './browser/Browser';
3
+ import type { Page } from './browser/BrowserPage';
4
+ import type { ChromiumOptions } from './open-browser';
4
5
  export declare const getPageAndCleanupFn: ({ passedInInstance, browserExecutable, chromiumOptions, }: {
5
6
  passedInInstance: Browser | undefined;
6
7
  browserExecutable: BrowserExecutable | null;
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getPageAndCleanupFn = void 0;
4
- const remotion_1 = require("remotion");
4
+ const browser_1 = require("./browser");
5
5
  const open_browser_1 = require("./open-browser");
6
6
  const getPageAndCleanupFn = async ({ passedInInstance, browserExecutable, chromiumOptions, }) => {
7
7
  if (passedInInstance) {
@@ -17,7 +17,7 @@ const getPageAndCleanupFn = async ({ passedInInstance, browserExecutable, chromi
17
17
  },
18
18
  };
19
19
  }
20
- const browserInstance = await (0, open_browser_1.openBrowser)(remotion_1.Internals.DEFAULT_BROWSER, {
20
+ const browserInstance = await (0, open_browser_1.openBrowser)(browser_1.DEFAULT_BROWSER, {
21
21
  browserExecutable,
22
22
  chromiumOptions,
23
23
  });
@@ -1,2 +1,2 @@
1
- import { Codec } from 'remotion';
1
+ import type { Codec } from './codec';
2
2
  export declare const getCodecName: (codec: Codec) => string | null;
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getCodecName = void 0;
4
- const remotion_1 = require("remotion");
4
+ const is_audio_codec_1 = require("./is-audio-codec");
5
5
  const getCodecName = (codec) => {
6
- if (remotion_1.Internals.isAudioCodec(codec)) {
6
+ if ((0, is_audio_codec_1.isAudioCodec)(codec)) {
7
7
  return null;
8
8
  }
9
9
  if (codec === 'h264' || codec === 'h264-mkv') {
@@ -21,6 +21,9 @@ const getCodecName = (codec) => {
21
21
  if (codec === 'prores') {
22
22
  return 'prores_ks';
23
23
  }
24
+ if (codec === 'gif') {
25
+ return 'gif';
26
+ }
24
27
  throw new TypeError(`Cannot find FFMPEG codec for ${codec}`);
25
28
  };
26
29
  exports.getCodecName = getCodecName;
@@ -1,7 +1,10 @@
1
- import { Browser } from 'puppeteer-core';
2
- import { BrowserExecutable, FfmpegExecutable, TCompMetadata } from 'remotion';
3
- import { BrowserLog } from './browser-log';
4
- import { ChromiumOptions } from './open-browser';
1
+ import type { TCompMetadata } from 'remotion';
2
+ import type { DownloadMap } from './assets/download-map';
3
+ import type { BrowserExecutable } from './browser-executable';
4
+ import type { BrowserLog } from './browser-log';
5
+ import type { Browser } from './browser/Browser';
6
+ import type { FfmpegExecutable } from './ffmpeg-executable';
7
+ import type { ChromiumOptions } from './open-browser';
5
8
  declare type GetCompositionsConfig = {
6
9
  inputProps?: object | null;
7
10
  envVariables?: Record<string, string>;
@@ -11,7 +14,12 @@ declare type GetCompositionsConfig = {
11
14
  timeoutInMilliseconds?: number;
12
15
  chromiumOptions?: ChromiumOptions;
13
16
  ffmpegExecutable?: FfmpegExecutable;
17
+ ffprobeExecutable?: FfmpegExecutable;
14
18
  port?: number | null;
19
+ /**
20
+ * @deprecated Only for Remotion internal usage
21
+ */
22
+ downloadMap?: DownloadMap;
15
23
  };
16
24
  export declare const getCompositions: (serveUrlOrWebpackUrl: string, config?: GetCompositionsConfig) => Promise<TCompMetadata[]>;
17
25
  export {};
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getCompositions = void 0;
4
+ const download_map_1 = require("./assets/download-map");
4
5
  const handle_javascript_exception_1 = require("./error-handling/handle-javascript-exception");
5
6
  const get_browser_instance_1 = require("./get-browser-instance");
6
- const make_assets_download_dir_1 = require("./make-assets-download-dir");
7
7
  const prepare_server_1 = require("./prepare-server");
8
8
  const puppeteer_evaluate_1 = require("./puppeteer-evaluate");
9
9
  const set_props_and_env_1 = require("./set-props-and-env");
@@ -14,8 +14,8 @@ const innerGetCompositions = async (serveUrl, page, config, proxyPort) => {
14
14
  var _a;
15
15
  (_a = config.onBrowserLog) === null || _a === void 0 ? void 0 : _a.call(config, {
16
16
  stackTrace: log.stackTrace(),
17
- text: log.text(),
18
- type: log.type(),
17
+ text: log.text,
18
+ type: log.type,
19
19
  });
20
20
  });
21
21
  }
@@ -29,6 +29,8 @@ const innerGetCompositions = async (serveUrl, page, config, proxyPort) => {
29
29
  timeoutInMilliseconds: config === null || config === void 0 ? void 0 : config.timeoutInMilliseconds,
30
30
  proxyPort,
31
31
  retriesRemaining: 2,
32
+ audioEnabled: false,
33
+ videoEnabled: false,
32
34
  });
33
35
  await (0, puppeteer_evaluate_1.puppeteerEvaluateWithCatch)({
34
36
  page,
@@ -40,7 +42,7 @@ const innerGetCompositions = async (serveUrl, page, config, proxyPort) => {
40
42
  frame: null,
41
43
  args: [],
42
44
  });
43
- await page.waitForFunction('window.ready === true');
45
+ await page.waitForFunction(page.browser, 'window.ready === true');
44
46
  const result = await (0, puppeteer_evaluate_1.puppeteerEvaluateWithCatch)({
45
47
  pageFunction: () => {
46
48
  return window.getStaticCompositions();
@@ -52,15 +54,15 @@ const innerGetCompositions = async (serveUrl, page, config, proxyPort) => {
52
54
  return result;
53
55
  };
54
56
  const getCompositions = async (serveUrlOrWebpackUrl, config) => {
55
- var _a, _b;
56
- const downloadDir = (0, make_assets_download_dir_1.makeAssetsDownloadTmpDir)();
57
+ var _a, _b, _c;
58
+ const downloadMap = (_a = config === null || config === void 0 ? void 0 : config.downloadMap) !== null && _a !== void 0 ? _a : (0, download_map_1.makeDownloadMap)();
57
59
  const { page, cleanup } = await (0, get_browser_instance_1.getPageAndCleanupFn)({
58
60
  passedInInstance: config === null || config === void 0 ? void 0 : config.puppeteerInstance,
59
- browserExecutable: (_a = config === null || config === void 0 ? void 0 : config.browserExecutable) !== null && _a !== void 0 ? _a : null,
60
- chromiumOptions: (_b = config === null || config === void 0 ? void 0 : config.chromiumOptions) !== null && _b !== void 0 ? _b : {},
61
+ browserExecutable: (_b = config === null || config === void 0 ? void 0 : config.browserExecutable) !== null && _b !== void 0 ? _b : null,
62
+ chromiumOptions: (_c = config === null || config === void 0 ? void 0 : config.chromiumOptions) !== null && _c !== void 0 ? _c : {},
61
63
  });
62
64
  return new Promise((resolve, reject) => {
63
- var _a, _b;
65
+ var _a, _b, _c;
64
66
  const onError = (err) => reject(err);
65
67
  const cleanupPageError = (0, handle_javascript_exception_1.handleJavascriptException)({
66
68
  page,
@@ -70,11 +72,12 @@ const getCompositions = async (serveUrlOrWebpackUrl, config) => {
70
72
  let close = null;
71
73
  (0, prepare_server_1.prepareServer)({
72
74
  webpackConfigOrServeUrl: serveUrlOrWebpackUrl,
73
- downloadDir,
74
75
  onDownload: () => undefined,
75
76
  onError,
76
77
  ffmpegExecutable: (_a = config === null || config === void 0 ? void 0 : config.ffmpegExecutable) !== null && _a !== void 0 ? _a : null,
77
- port: (_b = config === null || config === void 0 ? void 0 : config.port) !== null && _b !== void 0 ? _b : null,
78
+ ffprobeExecutable: (_b = config === null || config === void 0 ? void 0 : config.ffprobeExecutable) !== null && _b !== void 0 ? _b : null,
79
+ port: (_c = config === null || config === void 0 ? void 0 : config.port) !== null && _c !== void 0 ? _c : null,
80
+ downloadMap,
78
81
  })
79
82
  .then(({ serveUrl, closeServer, offthreadPort }) => {
80
83
  close = closeServer;
@@ -88,6 +91,10 @@ const getCompositions = async (serveUrlOrWebpackUrl, config) => {
88
91
  cleanup();
89
92
  close === null || close === void 0 ? void 0 : close();
90
93
  cleanupPageError();
94
+ // Clean download map if it was not passed in
95
+ if (!(config === null || config === void 0 ? void 0 : config.downloadMap)) {
96
+ (0, download_map_1.cleanDownloadMap)(downloadMap);
97
+ }
91
98
  });
92
99
  });
93
100
  };
@@ -1,2 +1 @@
1
- import { FrameRange } from 'remotion';
2
- export declare const getDurationFromFrameRange: (frameRange: FrameRange | null, durationInFrames: number) => number;
1
+ export declare const getFramesToRender: (frameRange: [number, number], everyNthFrame: number) => number[];
@@ -1,13 +1,17 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getDurationFromFrameRange = void 0;
4
- const getDurationFromFrameRange = (frameRange, durationInFrames) => {
5
- if (frameRange === null) {
6
- return durationInFrames;
3
+ exports.getFramesToRender = void 0;
4
+ const getFramesToRender = (frameRange, everyNthFrame) => {
5
+ if (everyNthFrame === 0) {
6
+ throw new Error('everyNthFrame cannot be 0');
7
7
  }
8
- if (typeof frameRange === 'number') {
9
- return 1;
10
- }
11
- return frameRange[1] - frameRange[0] + 1;
8
+ return new Array(frameRange[1] - frameRange[0] + 1)
9
+ .fill(true)
10
+ .map((_, index) => {
11
+ return index + frameRange[0];
12
+ })
13
+ .filter((index) => {
14
+ return index % everyNthFrame === 0;
15
+ });
12
16
  };
13
- exports.getDurationFromFrameRange = getDurationFromFrameRange;
17
+ exports.getFramesToRender = getFramesToRender;
@@ -1,2 +1,2 @@
1
- import { Codec } from 'remotion';
2
- export declare const getFileExtensionFromCodec: (codec: Codec, type: 'chunk' | 'final') => "mp3" | "aac" | "wav" | "mp4" | "mkv" | "mov" | "webm";
1
+ import type { Codec } from './codec';
2
+ export declare const getFileExtensionFromCodec: (codec: Codec, type: 'chunk' | 'final') => "mp3" | "aac" | "wav" | "gif" | "webm" | "mp4" | "mov" | "mkv";
@@ -23,6 +23,11 @@ const getFileExtensionFromCodec = (codec, type) => {
23
23
  return 'webm';
24
24
  case 'vp9':
25
25
  return 'webm';
26
+ case 'gif':
27
+ if (type === 'chunk') {
28
+ return 'mkv';
29
+ }
30
+ return 'gif';
26
31
  case 'wav':
27
32
  return 'wav';
28
33
  default:
@@ -1 +1 @@
1
- export declare const getExtensionOfFilename: (filename: string) => string | null;
1
+ export declare const getExtensionOfFilename: (filename: string | null) => string | null;