@remotion/renderer 3.0.3 → 3.0.6

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 (351) hide show
  1. package/dist/assets/calculate-asset-positions.d.ts +0 -1
  2. package/dist/assets/calculate-asset-positions.js +2 -6
  3. package/dist/assets/calculate-atempo.d.ts +1 -2
  4. package/dist/assets/calculate-atempo.js +3 -1
  5. package/dist/assets/convert-assets-to-file-urls.d.ts +0 -1
  6. package/dist/assets/convert-assets-to-file-urls.js +0 -1
  7. package/dist/assets/download-and-map-assets-to-file.d.ts +0 -2
  8. package/dist/assets/download-and-map-assets-to-file.js +2 -4
  9. package/dist/assets/download-file.d.ts +0 -1
  10. package/dist/assets/download-file.js +0 -1
  11. package/dist/assets/ffmpeg-volume-expression.d.ts +1 -3
  12. package/dist/assets/ffmpeg-volume-expression.js +3 -6
  13. package/dist/assets/flatten-volume-array.d.ts +0 -1
  14. package/dist/assets/flatten-volume-array.js +0 -1
  15. package/dist/assets/get-audio-channels.d.ts +4 -2
  16. package/dist/assets/get-audio-channels.js +10 -13
  17. package/dist/assets/read-file.d.ts +0 -1
  18. package/dist/assets/read-file.js +0 -1
  19. package/dist/assets/round-volume-to-avoid-stack-overflow.d.ts +0 -2
  20. package/dist/assets/round-volume-to-avoid-stack-overflow.js +4 -5
  21. package/dist/assets/sanitize-filename.d.ts +0 -1
  22. package/dist/assets/sanitize-filename.js +0 -1
  23. package/dist/assets/sanitize-filepath.d.ts +0 -1
  24. package/dist/assets/sanitize-filepath.js +0 -1
  25. package/dist/assets/truncate-utf8-bytes.d.ts +0 -1
  26. package/dist/assets/truncate-utf8-bytes.js +0 -1
  27. package/dist/assets/types.d.ts +0 -4
  28. package/dist/assets/types.js +0 -1
  29. package/dist/browser-log.d.ts +0 -1
  30. package/dist/browser-log.js +0 -1
  31. package/dist/calculate-ffmpeg-filters.d.ts +7 -11
  32. package/dist/calculate-ffmpeg-filters.js +19 -31
  33. package/dist/can-use-parallel-encoding.d.ts +0 -1
  34. package/dist/can-use-parallel-encoding.js +0 -1
  35. package/dist/chunk.d.ts +1 -0
  36. package/dist/chunk.js +11 -0
  37. package/dist/combine-videos.d.ts +0 -1
  38. package/dist/combine-videos.js +0 -1
  39. package/dist/convert-to-pcm.d.ts +6 -0
  40. package/dist/convert-to-pcm.js +20 -0
  41. package/dist/create-ffmpeg-complex-filter.d.ts +2 -7
  42. package/dist/create-ffmpeg-complex-filter.js +8 -34
  43. package/dist/create-ffmpeg-merge-filter.d.ts +1 -2
  44. package/dist/create-ffmpeg-merge-filter.js +0 -6
  45. package/dist/create-silent-audio.d.ts +6 -0
  46. package/dist/create-silent-audio.js +24 -0
  47. package/dist/cycle-browser-tabs.d.ts +0 -1
  48. package/dist/cycle-browser-tabs.js +0 -1
  49. package/dist/delay-render-embedded-stack.d.ts +0 -1
  50. package/dist/delay-render-embedded-stack.js +0 -1
  51. package/dist/delete-directory.d.ts +0 -1
  52. package/dist/delete-directory.js +7 -3
  53. package/dist/ensure-frames-in-order.d.ts +0 -1
  54. package/dist/ensure-frames-in-order.js +0 -1
  55. package/dist/ensure-output-directory.d.ts +0 -1
  56. package/dist/ensure-output-directory.js +0 -1
  57. package/dist/error-handling/handle-javascript-exception.d.ts +0 -2
  58. package/dist/error-handling/handle-javascript-exception.js +3 -5
  59. package/dist/error-handling/symbolicate-error.d.ts +0 -1
  60. package/dist/error-handling/symbolicate-error.js +0 -1
  61. package/dist/error-handling/symbolicateable-error.d.ts +0 -1
  62. package/dist/error-handling/symbolicateable-error.js +0 -1
  63. package/dist/ffmpeg-filter-file.d.ts +4 -0
  64. package/dist/ffmpeg-filter-file.js +24 -0
  65. package/dist/ffmpeg-flags.d.ts +0 -1
  66. package/dist/ffmpeg-flags.js +0 -1
  67. package/dist/get-audio-codec-name.d.ts +0 -1
  68. package/dist/get-audio-codec-name.js +0 -1
  69. package/dist/get-browser-instance.d.ts +0 -1
  70. package/dist/get-browser-instance.js +0 -1
  71. package/dist/get-codec-name.d.ts +0 -1
  72. package/dist/get-codec-name.js +0 -1
  73. package/dist/get-compositions.d.ts +0 -1
  74. package/dist/get-compositions.js +0 -1
  75. package/dist/get-concurrency.d.ts +0 -1
  76. package/dist/get-concurrency.js +0 -1
  77. package/dist/get-duration-from-frame-range.d.ts +0 -1
  78. package/dist/get-duration-from-frame-range.js +0 -1
  79. package/dist/get-extension-from-codec.d.ts +1 -2
  80. package/dist/get-extension-from-codec.js +0 -1
  81. package/dist/get-extension-of-filename.d.ts +1 -0
  82. package/dist/get-extension-of-filename.js +11 -0
  83. package/dist/get-frame-to-render.d.ts +0 -1
  84. package/dist/get-frame-to-render.js +0 -1
  85. package/dist/get-local-browser-executable.d.ts +0 -1
  86. package/dist/get-local-browser-executable.js +0 -1
  87. package/dist/get-port.d.ts +0 -1
  88. package/dist/get-port.js +0 -1
  89. package/dist/get-prores-profile-name.d.ts +0 -1
  90. package/dist/get-prores-profile-name.js +0 -1
  91. package/dist/image-format.d.ts +0 -1
  92. package/dist/image-format.js +0 -1
  93. package/dist/index.d.ts +2 -9
  94. package/dist/index.js +2 -3
  95. package/dist/is-serve-url.d.ts +0 -1
  96. package/dist/is-serve-url.js +0 -1
  97. package/dist/legacy-webpack-config.d.ts +0 -1
  98. package/dist/legacy-webpack-config.js +0 -1
  99. package/dist/make-assets-download-dir.d.ts +0 -1
  100. package/dist/make-assets-download-dir.js +0 -1
  101. package/dist/merge-audio-track.d.ts +2 -3
  102. package/dist/merge-audio-track.js +49 -12
  103. package/dist/normalize-serve-url.d.ts +0 -1
  104. package/dist/normalize-serve-url.js +0 -1
  105. package/dist/open-browser.d.ts +0 -1
  106. package/dist/open-browser.js +0 -1
  107. package/dist/p-limit.d.ts +1 -0
  108. package/dist/p-limit.js +57 -0
  109. package/dist/parse-browser-error-stack.d.ts +0 -1
  110. package/dist/parse-browser-error-stack.js +0 -1
  111. package/dist/parse-ffmpeg-progress.d.ts +0 -1
  112. package/dist/parse-ffmpeg-progress.js +0 -1
  113. package/dist/pool.d.ts +0 -1
  114. package/dist/pool.js +0 -1
  115. package/dist/prepare-server.d.ts +0 -1
  116. package/dist/prepare-server.js +0 -1
  117. package/dist/preprocess-audio-track.d.ts +5 -5
  118. package/dist/preprocess-audio-track.js +28 -18
  119. package/dist/prespawn-ffmpeg.d.ts +2 -2
  120. package/dist/prespawn-ffmpeg.js +0 -16
  121. package/dist/provide-screenshot.d.ts +0 -1
  122. package/dist/provide-screenshot.js +0 -1
  123. package/dist/puppeteer-evaluate.d.ts +0 -2
  124. package/dist/puppeteer-evaluate.js +3 -4
  125. package/dist/puppeteer-screenshot.d.ts +0 -1
  126. package/dist/puppeteer-screenshot.js +0 -1
  127. package/dist/render-frames.d.ts +1 -9
  128. package/dist/render-frames.js +2 -4
  129. package/dist/render-media.d.ts +0 -1
  130. package/dist/render-media.js +3 -1
  131. package/dist/render-still.d.ts +1 -2
  132. package/dist/render-still.js +0 -1
  133. package/dist/resolve-asset-src.d.ts +0 -1
  134. package/dist/resolve-asset-src.js +0 -1
  135. package/dist/sample-rate.d.ts +0 -1
  136. package/dist/sample-rate.js +0 -1
  137. package/dist/screenshot-dom-element.d.ts +0 -1
  138. package/dist/screenshot-dom-element.js +0 -1
  139. package/dist/screenshot-task.d.ts +0 -1
  140. package/dist/screenshot-task.js +0 -1
  141. package/dist/seek-to-frame.d.ts +0 -1
  142. package/dist/seek-to-frame.js +0 -1
  143. package/dist/serve-static.d.ts +0 -1
  144. package/dist/serve-static.js +0 -1
  145. package/dist/set-props-and-env.d.ts +0 -1
  146. package/dist/set-props-and-env.js +0 -1
  147. package/dist/stitch-frames-to-video.d.ts +5 -6
  148. package/dist/stitch-frames-to-video.js +104 -78
  149. package/dist/stringify-ffmpeg-filter.d.ts +5 -6
  150. package/dist/stringify-ffmpeg-filter.js +29 -11
  151. package/dist/symbolicate-stacktrace.d.ts +2 -4
  152. package/dist/symbolicate-stacktrace.js +1 -3
  153. package/dist/tmp-dir.d.ts +0 -1
  154. package/dist/tmp-dir.js +21 -4
  155. package/dist/types.d.ts +0 -1
  156. package/dist/types.js +0 -1
  157. package/dist/validate-even-dimensions-with-codec.d.ts +0 -1
  158. package/dist/validate-even-dimensions-with-codec.js +0 -1
  159. package/dist/validate-ffmpeg.d.ts +0 -2
  160. package/dist/validate-ffmpeg.js +2 -4
  161. package/dist/validate-output-filename.d.ts +2 -0
  162. package/dist/validate-output-filename.js +52 -0
  163. package/dist/validate-puppeteer-timeout.d.ts +0 -1
  164. package/dist/validate-puppeteer-timeout.js +0 -1
  165. package/dist/validate-scale.d.ts +0 -1
  166. package/dist/validate-scale.js +0 -1
  167. package/package.json +4 -5
  168. package/dist/add-silent-audio-if-necessary.d.ts +0 -8
  169. package/dist/add-silent-audio-if-necessary.d.ts.map +0 -1
  170. package/dist/add-silent-audio-if-necessary.js +0 -51
  171. package/dist/add-silent-audio-if-necessary.js.map +0 -1
  172. package/dist/assets/asset-is-used-at-time.d.ts +0 -3
  173. package/dist/assets/asset-is-used-at-time.d.ts.map +0 -1
  174. package/dist/assets/asset-is-used-at-time.js +0 -8
  175. package/dist/assets/asset-is-used-at-time.js.map +0 -1
  176. package/dist/assets/calculate-asset-positions.d.ts.map +0 -1
  177. package/dist/assets/calculate-asset-positions.js.map +0 -1
  178. package/dist/assets/calculate-atempo.d.ts.map +0 -1
  179. package/dist/assets/calculate-atempo.js.map +0 -1
  180. package/dist/assets/convert-assets-to-file-urls.d.ts.map +0 -1
  181. package/dist/assets/convert-assets-to-file-urls.js.map +0 -1
  182. package/dist/assets/download-and-map-assets-to-file.d.ts.map +0 -1
  183. package/dist/assets/download-and-map-assets-to-file.js.map +0 -1
  184. package/dist/assets/download-file.d.ts.map +0 -1
  185. package/dist/assets/download-file.js.map +0 -1
  186. package/dist/assets/ffmpeg-volume-expression.d.ts.map +0 -1
  187. package/dist/assets/ffmpeg-volume-expression.js.map +0 -1
  188. package/dist/assets/flatten-volume-array.d.ts.map +0 -1
  189. package/dist/assets/flatten-volume-array.js.map +0 -1
  190. package/dist/assets/get-asset-audio-details.d.ts +0 -5
  191. package/dist/assets/get-asset-audio-details.d.ts.map +0 -1
  192. package/dist/assets/get-asset-audio-details.js +0 -21
  193. package/dist/assets/get-asset-audio-details.js.map +0 -1
  194. package/dist/assets/get-audio-channels.d.ts.map +0 -1
  195. package/dist/assets/get-audio-channels.js.map +0 -1
  196. package/dist/assets/get-simulatenous-assets.d.ts +0 -3
  197. package/dist/assets/get-simulatenous-assets.d.ts.map +0 -1
  198. package/dist/assets/get-simulatenous-assets.js +0 -14
  199. package/dist/assets/get-simulatenous-assets.js.map +0 -1
  200. package/dist/assets/read-file.d.ts.map +0 -1
  201. package/dist/assets/read-file.js.map +0 -1
  202. package/dist/assets/round-volume-to-avoid-stack-overflow.d.ts.map +0 -1
  203. package/dist/assets/round-volume-to-avoid-stack-overflow.js.map +0 -1
  204. package/dist/assets/sanitize-filename.d.ts.map +0 -1
  205. package/dist/assets/sanitize-filename.js.map +0 -1
  206. package/dist/assets/sanitize-filepath.d.ts.map +0 -1
  207. package/dist/assets/sanitize-filepath.js.map +0 -1
  208. package/dist/assets/split-assets-into-segments.d.ts +0 -6
  209. package/dist/assets/split-assets-into-segments.d.ts.map +0 -1
  210. package/dist/assets/split-assets-into-segments.js +0 -89
  211. package/dist/assets/split-assets-into-segments.js.map +0 -1
  212. package/dist/assets/truncate-utf8-bytes.d.ts.map +0 -1
  213. package/dist/assets/truncate-utf8-bytes.js.map +0 -1
  214. package/dist/assets/types.d.ts.map +0 -1
  215. package/dist/assets/types.js.map +0 -1
  216. package/dist/assets-to-ffmpeg-inputs.d.ts +0 -10
  217. package/dist/assets-to-ffmpeg-inputs.d.ts.map +0 -1
  218. package/dist/assets-to-ffmpeg-inputs.js +0 -15
  219. package/dist/assets-to-ffmpeg-inputs.js.map +0 -1
  220. package/dist/browser-log.d.ts.map +0 -1
  221. package/dist/browser-log.js.map +0 -1
  222. package/dist/calculate-ffmpeg-filters.d.ts.map +0 -1
  223. package/dist/calculate-ffmpeg-filters.js.map +0 -1
  224. package/dist/can-use-parallel-encoding.d.ts.map +0 -1
  225. package/dist/can-use-parallel-encoding.js.map +0 -1
  226. package/dist/combine-videos.d.ts.map +0 -1
  227. package/dist/combine-videos.js.map +0 -1
  228. package/dist/create-ffmpeg-complex-filter.d.ts.map +0 -1
  229. package/dist/create-ffmpeg-complex-filter.js.map +0 -1
  230. package/dist/create-ffmpeg-merge-filter.d.ts.map +0 -1
  231. package/dist/create-ffmpeg-merge-filter.js.map +0 -1
  232. package/dist/cycle-browser-tabs.d.ts.map +0 -1
  233. package/dist/cycle-browser-tabs.js.map +0 -1
  234. package/dist/delay-render-embedded-stack.d.ts.map +0 -1
  235. package/dist/delay-render-embedded-stack.js.map +0 -1
  236. package/dist/delete-directory.d.ts.map +0 -1
  237. package/dist/delete-directory.js.map +0 -1
  238. package/dist/ensure-frames-in-order.d.ts.map +0 -1
  239. package/dist/ensure-frames-in-order.js.map +0 -1
  240. package/dist/ensure-output-directory.d.ts.map +0 -1
  241. package/dist/ensure-output-directory.js.map +0 -1
  242. package/dist/error-handling/handle-javascript-exception.d.ts.map +0 -1
  243. package/dist/error-handling/handle-javascript-exception.js.map +0 -1
  244. package/dist/error-handling/symbolicate-error.d.ts.map +0 -1
  245. package/dist/error-handling/symbolicate-error.js.map +0 -1
  246. package/dist/error-handling/symbolicateable-error.d.ts.map +0 -1
  247. package/dist/error-handling/symbolicateable-error.js.map +0 -1
  248. package/dist/ffmpeg-flags.d.ts.map +0 -1
  249. package/dist/ffmpeg-flags.js.map +0 -1
  250. package/dist/get-audio-codec-name.d.ts.map +0 -1
  251. package/dist/get-audio-codec-name.js.map +0 -1
  252. package/dist/get-browser-instance.d.ts.map +0 -1
  253. package/dist/get-browser-instance.js.map +0 -1
  254. package/dist/get-codec-name.d.ts.map +0 -1
  255. package/dist/get-codec-name.js.map +0 -1
  256. package/dist/get-compositions.d.ts.map +0 -1
  257. package/dist/get-compositions.js.map +0 -1
  258. package/dist/get-concurrency.d.ts.map +0 -1
  259. package/dist/get-concurrency.js.map +0 -1
  260. package/dist/get-duration-from-frame-range.d.ts.map +0 -1
  261. package/dist/get-duration-from-frame-range.js.map +0 -1
  262. package/dist/get-extension-from-codec.d.ts.map +0 -1
  263. package/dist/get-extension-from-codec.js.map +0 -1
  264. package/dist/get-frame-to-render.d.ts.map +0 -1
  265. package/dist/get-frame-to-render.js.map +0 -1
  266. package/dist/get-local-browser-executable.d.ts.map +0 -1
  267. package/dist/get-local-browser-executable.js.map +0 -1
  268. package/dist/get-port.d.ts.map +0 -1
  269. package/dist/get-port.js.map +0 -1
  270. package/dist/get-prores-profile-name.d.ts.map +0 -1
  271. package/dist/get-prores-profile-name.js.map +0 -1
  272. package/dist/image-format.d.ts.map +0 -1
  273. package/dist/image-format.js.map +0 -1
  274. package/dist/index.d.ts.map +0 -1
  275. package/dist/index.js.map +0 -1
  276. package/dist/is-serve-url.d.ts.map +0 -1
  277. package/dist/is-serve-url.js.map +0 -1
  278. package/dist/legacy-webpack-config.d.ts.map +0 -1
  279. package/dist/legacy-webpack-config.js.map +0 -1
  280. package/dist/make-assets-download-dir.d.ts.map +0 -1
  281. package/dist/make-assets-download-dir.js.map +0 -1
  282. package/dist/merge-audio-track.d.ts.map +0 -1
  283. package/dist/merge-audio-track.js.map +0 -1
  284. package/dist/normalize-serve-url.d.ts.map +0 -1
  285. package/dist/normalize-serve-url.js.map +0 -1
  286. package/dist/open-browser.d.ts.map +0 -1
  287. package/dist/open-browser.js.map +0 -1
  288. package/dist/parse-browser-error-stack.d.ts.map +0 -1
  289. package/dist/parse-browser-error-stack.js.map +0 -1
  290. package/dist/parse-ffmpeg-progress.d.ts.map +0 -1
  291. package/dist/parse-ffmpeg-progress.js.map +0 -1
  292. package/dist/pool.d.ts.map +0 -1
  293. package/dist/pool.js.map +0 -1
  294. package/dist/prepare-server.d.ts.map +0 -1
  295. package/dist/prepare-server.js.map +0 -1
  296. package/dist/preprocess-audio-track.d.ts.map +0 -1
  297. package/dist/preprocess-audio-track.js.map +0 -1
  298. package/dist/prespawn-ffmpeg.d.ts.map +0 -1
  299. package/dist/prespawn-ffmpeg.js.map +0 -1
  300. package/dist/provide-screenshot.d.ts.map +0 -1
  301. package/dist/provide-screenshot.js.map +0 -1
  302. package/dist/puppeteer-evaluate.d.ts.map +0 -1
  303. package/dist/puppeteer-evaluate.js.map +0 -1
  304. package/dist/puppeteer-screenshot.d.ts.map +0 -1
  305. package/dist/puppeteer-screenshot.js.map +0 -1
  306. package/dist/render-frames.d.ts.map +0 -1
  307. package/dist/render-frames.js.map +0 -1
  308. package/dist/render-media.d.ts.map +0 -1
  309. package/dist/render-media.js.map +0 -1
  310. package/dist/render-still.d.ts.map +0 -1
  311. package/dist/render-still.js.map +0 -1
  312. package/dist/render.d.ts +0 -45
  313. package/dist/render.d.ts.map +0 -1
  314. package/dist/render.js +0 -245
  315. package/dist/render.js.map +0 -1
  316. package/dist/resolve-asset-src.d.ts.map +0 -1
  317. package/dist/resolve-asset-src.js.map +0 -1
  318. package/dist/sample-rate.d.ts.map +0 -1
  319. package/dist/sample-rate.js.map +0 -1
  320. package/dist/screenshot-dom-element.d.ts.map +0 -1
  321. package/dist/screenshot-dom-element.js.map +0 -1
  322. package/dist/screenshot-task.d.ts.map +0 -1
  323. package/dist/screenshot-task.js.map +0 -1
  324. package/dist/seek-to-frame.d.ts.map +0 -1
  325. package/dist/seek-to-frame.js.map +0 -1
  326. package/dist/serve-static.d.ts.map +0 -1
  327. package/dist/serve-static.js.map +0 -1
  328. package/dist/set-props-and-env.d.ts.map +0 -1
  329. package/dist/set-props-and-env.js.map +0 -1
  330. package/dist/stitch-frames-to-video.d.ts.map +0 -1
  331. package/dist/stitch-frames-to-video.js.map +0 -1
  332. package/dist/stitcher.d.ts +0 -32
  333. package/dist/stitcher.d.ts.map +0 -1
  334. package/dist/stitcher.js +0 -204
  335. package/dist/stitcher.js.map +0 -1
  336. package/dist/stringify-ffmpeg-filter.d.ts.map +0 -1
  337. package/dist/stringify-ffmpeg-filter.js.map +0 -1
  338. package/dist/symbolicate-stacktrace.d.ts.map +0 -1
  339. package/dist/symbolicate-stacktrace.js.map +0 -1
  340. package/dist/tmp-dir.d.ts.map +0 -1
  341. package/dist/tmp-dir.js.map +0 -1
  342. package/dist/types.d.ts.map +0 -1
  343. package/dist/types.js.map +0 -1
  344. package/dist/validate-even-dimensions-with-codec.d.ts.map +0 -1
  345. package/dist/validate-even-dimensions-with-codec.js.map +0 -1
  346. package/dist/validate-ffmpeg.d.ts.map +0 -1
  347. package/dist/validate-ffmpeg.js.map +0 -1
  348. package/dist/validate-puppeteer-timeout.d.ts.map +0 -1
  349. package/dist/validate-puppeteer-timeout.js.map +0 -1
  350. package/dist/validate-scale.d.ts.map +0 -1
  351. package/dist/validate-scale.js.map +0 -1
@@ -5,58 +5,70 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.stitchFramesToVideo = exports.spawnFfmpeg = void 0;
7
7
  const execa_1 = __importDefault(require("execa"));
8
+ const fs_1 = __importDefault(require("fs"));
9
+ const path_1 = __importDefault(require("path"));
8
10
  const remotion_1 = require("remotion");
9
- const assets_to_ffmpeg_inputs_1 = require("./assets-to-ffmpeg-inputs");
10
11
  const calculate_asset_positions_1 = require("./assets/calculate-asset-positions");
11
12
  const convert_assets_to_file_urls_1 = require("./assets/convert-assets-to-file-urls");
12
13
  const download_and_map_assets_to_file_1 = require("./assets/download-and-map-assets-to-file");
13
- const get_asset_audio_details_1 = require("./assets/get-asset-audio-details");
14
- const calculate_ffmpeg_filters_1 = require("./calculate-ffmpeg-filters");
15
- const create_ffmpeg_complex_filter_1 = require("./create-ffmpeg-complex-filter");
14
+ const delete_directory_1 = require("./delete-directory");
16
15
  const get_audio_codec_name_1 = require("./get-audio-codec-name");
17
16
  const get_codec_name_1 = require("./get-codec-name");
18
17
  const get_prores_profile_name_1 = require("./get-prores-profile-name");
18
+ const merge_audio_track_1 = require("./merge-audio-track");
19
19
  const parse_ffmpeg_progress_1 = require("./parse-ffmpeg-progress");
20
- const sample_rate_1 = require("./sample-rate");
20
+ const preprocess_audio_track_1 = require("./preprocess-audio-track");
21
+ const tmp_dir_1 = require("./tmp-dir");
21
22
  const validate_even_dimensions_with_codec_1 = require("./validate-even-dimensions-with-codec");
22
23
  const validate_ffmpeg_1 = require("./validate-ffmpeg");
23
- const getAssetsData = async (options) => {
24
- var _a, _b;
25
- const codec = (_a = options.codec) !== null && _a !== void 0 ? _a : remotion_1.Internals.DEFAULT_CODEC;
26
- const encoderName = (0, get_codec_name_1.getCodecName)(codec);
27
- const isAudioOnly = encoderName === null;
24
+ const packageJsonPath = path_1.default.join(__dirname, '..', 'package.json');
25
+ const packageJson = fs_1.default.existsSync(packageJsonPath)
26
+ ? JSON.parse(fs_1.default.readFileSync(packageJsonPath, 'utf-8'))
27
+ : null;
28
+ const getAssetsData = async ({ assets, downloadDir, onDownload, fps, expectedFrames, verbose, ffmpegExecutable, onProgress, }) => {
28
29
  const fileUrlAssets = await (0, convert_assets_to_file_urls_1.convertAssetsToFileUrls)({
29
- assets: options.assetsInfo.assets,
30
- downloadDir: options.assetsInfo.downloadDir,
31
- onDownload: (_b = options.onDownload) !== null && _b !== void 0 ? _b : (() => () => undefined),
30
+ assets,
31
+ downloadDir,
32
+ onDownload: onDownload !== null && onDownload !== void 0 ? onDownload : (() => () => undefined),
32
33
  });
33
34
  (0, download_and_map_assets_to_file_1.markAllAssetsAsDownloaded)();
34
35
  const assetPositions = (0, calculate_asset_positions_1.calculateAssetPositions)(fileUrlAssets);
35
- (0, download_and_map_assets_to_file_1.markAllAssetsAsDownloaded)();
36
- const assetAudioDetails = await (0, get_asset_audio_details_1.getAssetAudioDetails)({
37
- assetPaths: assetPositions.map((a) => a.src),
38
- });
39
- const filters = (0, calculate_ffmpeg_filters_1.calculateFfmpegFilters)({
40
- assetAudioDetails,
41
- assetPositions,
42
- fps: options.fps,
43
- videoTrackCount: isAudioOnly ? 0 : 1,
44
- });
45
- if (options.verbose) {
36
+ if (verbose) {
46
37
  console.log('asset positions', assetPositions);
47
38
  }
48
- if (options.verbose) {
49
- console.log('filters', filters);
50
- }
51
- const { complexFilterFlag, cleanup } = await (0, create_ffmpeg_complex_filter_1.createFfmpegComplexFilter)(filters);
52
- return {
53
- complexFilterFlag,
54
- cleanup,
55
- assetPositions,
39
+ const tempPath = (0, tmp_dir_1.tmpDir)('remotion-audio-mixing');
40
+ const preprocessProgress = new Array(assetPositions.length).fill(0);
41
+ const updateProgress = () => {
42
+ onProgress(preprocessProgress.reduce((a, b) => a + b, 0) / assetPositions.length);
56
43
  };
44
+ const preprocessed = (await Promise.all(assetPositions.map(async (asset, index) => {
45
+ const filterFile = path_1.default.join(tempPath, `${index}.wav`);
46
+ const result = await (0, preprocess_audio_track_1.preprocessAudioTrack)({
47
+ ffmpegExecutable: ffmpegExecutable !== null && ffmpegExecutable !== void 0 ? ffmpegExecutable : null,
48
+ outName: filterFile,
49
+ asset,
50
+ expectedFrames,
51
+ fps,
52
+ });
53
+ preprocessProgress[index] = 1;
54
+ updateProgress();
55
+ return result;
56
+ }))).filter(remotion_1.Internals.truthy);
57
+ const outName = path_1.default.join(tempPath, `audio.wav`);
58
+ await (0, merge_audio_track_1.mergeAudioTrack)({
59
+ ffmpegExecutable: ffmpegExecutable !== null && ffmpegExecutable !== void 0 ? ffmpegExecutable : null,
60
+ files: preprocessed,
61
+ outName,
62
+ numberOfSeconds: Number((expectedFrames / fps).toFixed(3)),
63
+ });
64
+ onProgress(1);
65
+ preprocessed.forEach((p) => {
66
+ (0, delete_directory_1.deleteDirectory)(p);
67
+ });
68
+ return outName;
57
69
  };
58
70
  const spawnFfmpeg = async (options) => {
59
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
71
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
60
72
  remotion_1.Internals.validateDimension(options.height, 'height', 'passed to `stitchFramesToVideo()`');
61
73
  remotion_1.Internals.validateDimension(options.width, 'width', 'passed to `stitchFramesToVideo()`');
62
74
  remotion_1.Internals.validateFps(options.fps, 'passed to `stitchFramesToVideo()`');
@@ -89,55 +101,73 @@ const spawnFfmpeg = async (options) => {
89
101
  }
90
102
  remotion_1.Internals.validateSelectedCrfAndCodecCombination(crf, codec);
91
103
  remotion_1.Internals.validateSelectedPixelFormatAndCodecCombination(pixelFormat, codec);
92
- const { complexFilterFlag, cleanup, assetPositions } = await getAssetsData(options);
93
104
  const expectedFrames = options.assetsInfo.assets.length;
105
+ const updateProgress = (preStitchProgress, muxProgress) => {
106
+ var _a;
107
+ const totalFrameProgress = 0.5 * preStitchProgress * expectedFrames + muxProgress * 0.5;
108
+ (_a = options.onProgress) === null || _a === void 0 ? void 0 : _a.call(options, Math.round(totalFrameProgress));
109
+ };
110
+ const audio = await getAssetsData({
111
+ assets: options.assetsInfo.assets,
112
+ downloadDir: options.assetsInfo.downloadDir,
113
+ onDownload: options.onDownload,
114
+ fps: options.fps,
115
+ expectedFrames,
116
+ verbose: (_f = options.verbose) !== null && _f !== void 0 ? _f : false,
117
+ ffmpegExecutable: (_g = options.ffmpegExecutable) !== null && _g !== void 0 ? _g : null,
118
+ onProgress: (prog) => updateProgress(prog, 0),
119
+ });
120
+ if (isAudioOnly) {
121
+ if (!audioCodecName) {
122
+ throw new TypeError('exporting audio but has no audio codec name. Report this in the Remotion repo.');
123
+ }
124
+ await (0, execa_1.default)('ffmpeg', [
125
+ '-i',
126
+ audio,
127
+ '-c:a',
128
+ audioCodecName,
129
+ options.force ? '-y' : null,
130
+ options.outputLocation,
131
+ ].filter(remotion_1.Internals.truthy));
132
+ (_h = options.onProgress) === null || _h === void 0 ? void 0 : _h.call(options, expectedFrames);
133
+ return {
134
+ getLogs: () => '',
135
+ task: Promise.resolve(),
136
+ };
137
+ }
94
138
  const ffmpegArgs = [
95
139
  ['-r', String(options.fps)],
96
- ...(((_f = options.internalOptions) === null || _f === void 0 ? void 0 : _f.preEncodedFileLocation)
97
- ? [['-i', (_g = options.internalOptions) === null || _g === void 0 ? void 0 : _g.preEncodedFileLocation]]
98
- : isAudioOnly
99
- ? []
100
- : [
101
- ['-f', 'image2'],
102
- ['-s', `${options.width}x${options.height}`],
103
- ['-start_number', String(options.assetsInfo.firstFrameIndex)],
104
- ['-i', options.assetsInfo.imageSequenceName],
105
- ]),
106
- ...(0, assets_to_ffmpeg_inputs_1.assetsToFfmpegInputs)({
107
- assets: assetPositions.map((a) => a.src),
108
- isAudioOnly,
109
- fps: options.fps,
110
- frameCount: options.assetsInfo.assets.length,
111
- }),
112
- encoderName
113
- ? // -c:v is the same as -vcodec as -codec:video
114
- // and specified the video codec.
115
- ['-c:v', encoderName]
116
- : // If only exporting audio, we drop the video explicitly
117
- ['-vn'],
118
- ...(((_h = options.internalOptions) === null || _h === void 0 ? void 0 : _h.preEncodedFileLocation)
140
+ ...(((_j = options.internalOptions) === null || _j === void 0 ? void 0 : _j.preEncodedFileLocation)
141
+ ? [['-i', (_k = options.internalOptions) === null || _k === void 0 ? void 0 : _k.preEncodedFileLocation]]
142
+ : [
143
+ ['-f', 'image2'],
144
+ ['-s', `${options.width}x${options.height}`],
145
+ ['-start_number', String(options.assetsInfo.firstFrameIndex)],
146
+ ['-i', options.assetsInfo.imageSequenceName],
147
+ ]),
148
+ ['-i', audio],
149
+ // -c:v is the same as -vcodec as -codec:video
150
+ // and specified the video codec.
151
+ ['-c:v', encoderName],
152
+ ...(((_l = options.internalOptions) === null || _l === void 0 ? void 0 : _l.preEncodedFileLocation)
119
153
  ? []
120
154
  : [
121
155
  proResProfileName ? ['-profile:v', proResProfileName] : null,
122
156
  supportsCrf ? ['-crf', String(crf)] : null,
123
- isAudioOnly ? null : ['-pix_fmt', pixelFormat],
157
+ ['-pix_fmt', pixelFormat],
124
158
  // Without explicitly disabling auto-alt-ref,
125
159
  // transparent WebM generation doesn't work
126
160
  pixelFormat === 'yuva420p' ? ['-auto-alt-ref', '0'] : null,
127
- isAudioOnly ? null : ['-b:v', '1M'],
161
+ ['-b:v', '1M'],
128
162
  ]),
129
- '-ar',
130
- String(sample_rate_1.DEFAULT_SAMPLE_RATE),
131
- // Stereo sound, even force mono to be stereo
132
- // Otherwise mixing mono + stereo ends up speeding up the audio
133
- '-ac',
134
- '2',
135
163
  audioCodecName ? ['-c:a', audioCodecName] : null,
136
- complexFilterFlag,
137
- // Ignore audio from image sequence
138
- isAudioOnly ? null : ['-map', '0:v'],
139
164
  // Ignore metadata that may come from remote media
140
- isAudioOnly ? null : ['-map_metadata', '-1'],
165
+ ['-map_metadata', '-1'],
166
+ [
167
+ '-metadata',
168
+ `comment=` +
169
+ [`Made with Remotion`, packageJson ? packageJson.version : null].join(' '),
170
+ ],
141
171
  options.force ? '-y' : null,
142
172
  options.outputLocation,
143
173
  ];
@@ -146,12 +176,12 @@ const spawnFfmpeg = async (options) => {
146
176
  console.log(ffmpegArgs);
147
177
  }
148
178
  const ffmpegString = ffmpegArgs.flat(2).filter(Boolean);
149
- const task = (0, execa_1.default)((_j = options.ffmpegExecutable) !== null && _j !== void 0 ? _j : 'ffmpeg', ffmpegString, {
179
+ const task = (0, execa_1.default)((_m = options.ffmpegExecutable) !== null && _m !== void 0 ? _m : 'ffmpeg', ffmpegString, {
150
180
  cwd: options.dir,
151
181
  });
152
182
  let ffmpegOutput = '';
153
183
  let isFinished = false;
154
- (_k = task.stderr) === null || _k === void 0 ? void 0 : _k.on('data', (data) => {
184
+ (_o = task.stderr) === null || _o === void 0 ? void 0 : _o.on('data', (data) => {
155
185
  var _a;
156
186
  const str = data.toString();
157
187
  ffmpegOutput += str;
@@ -169,24 +199,20 @@ const spawnFfmpeg = async (options) => {
169
199
  isFinished = true;
170
200
  }
171
201
  }
172
- options.onProgress(parsed);
202
+ updateProgress(1, parsed);
173
203
  }
174
204
  }
175
205
  });
176
- return { task, cleanup, getLogs: () => ffmpegOutput };
206
+ return { task, getLogs: () => ffmpegOutput };
177
207
  };
178
208
  exports.spawnFfmpeg = spawnFfmpeg;
179
209
  const stitchFramesToVideo = async (options) => {
180
- const { task, cleanup, getLogs } = await (0, exports.spawnFfmpeg)(options);
210
+ const { task, getLogs } = await (0, exports.spawnFfmpeg)(options);
181
211
  try {
182
212
  await task;
183
213
  }
184
214
  catch (err) {
185
215
  throw new Error(getLogs());
186
216
  }
187
- finally {
188
- cleanup === null || cleanup === void 0 ? void 0 : cleanup();
189
- }
190
217
  };
191
218
  exports.stitchFramesToVideo = stitchFramesToVideo;
192
- //# sourceMappingURL=stitch-frames-to-video.js.map
@@ -1,13 +1,12 @@
1
1
  import { AssetVolume } from './assets/types';
2
- export declare const stringifyFfmpegFilter: ({ streamIndex, trimLeft, trimRight, channels, startInVideo, simulatenousAssets, volume, fps, playbackRate, }: {
3
- streamIndex: number;
4
- trimLeft: string;
5
- trimRight: string;
2
+ export declare const stringifyFfmpegFilter: ({ trimLeft, trimRight, channels, startInVideo, volume, fps, playbackRate, durationInFrames, assetDuration, }: {
3
+ trimLeft: number;
4
+ trimRight: number;
6
5
  channels: number;
7
6
  startInVideo: number;
8
- simulatenousAssets: number;
9
7
  volume: AssetVolume;
10
8
  fps: number;
9
+ durationInFrames: number;
11
10
  playbackRate: number;
11
+ assetDuration: number | null;
12
12
  }) => string;
13
- //# sourceMappingURL=stringify-ffmpeg-filter.d.ts.map
@@ -4,31 +4,49 @@ exports.stringifyFfmpegFilter = void 0;
4
4
  const remotion_1 = require("remotion");
5
5
  const calculate_atempo_1 = require("./assets/calculate-atempo");
6
6
  const ffmpeg_volume_expression_1 = require("./assets/ffmpeg-volume-expression");
7
- const stringifyFfmpegFilter = ({ streamIndex, trimLeft, trimRight, channels, startInVideo, simulatenousAssets, volume, fps, playbackRate, }) => {
8
- const startInVideoSeconds = ((startInVideo / fps) * 1000).toFixed(); // in milliseconds
7
+ const sample_rate_1 = require("./sample-rate");
8
+ const stringifyFfmpegFilter = ({ trimLeft, trimRight, channels, startInVideo, volume, fps, playbackRate, durationInFrames, assetDuration, }) => {
9
+ const startInVideoSeconds = startInVideo / fps;
9
10
  const volumeFilter = (0, ffmpeg_volume_expression_1.ffmpegVolumeExpression)({
10
11
  volume,
11
- multiplier: simulatenousAssets,
12
12
  startInVideo,
13
13
  fps,
14
14
  });
15
- return (`[${streamIndex}:a]` +
15
+ // Avoid setting filters if possible, as combining them can create noise
16
+ const chunkLength = durationInFrames / fps;
17
+ const actualTrimRight = assetDuration
18
+ ? Math.min(trimRight, assetDuration)
19
+ : trimRight;
20
+ const padAtEnd = chunkLength - (actualTrimRight - trimLeft) - startInVideoSeconds;
21
+ return (`[0:a]` +
16
22
  [
17
- 'apad',
18
- `atrim=${trimLeft}:${trimRight}`,
23
+ `aformat=sample_fmts=s32:sample_rates=${sample_rate_1.DEFAULT_SAMPLE_RATE}`,
24
+ // Order matters! First trim the audio
25
+ `atrim=${trimLeft.toFixed(6)}:${actualTrimRight.toFixed(6)}`,
26
+ // then set the tempo
27
+ (0, calculate_atempo_1.calculateATempo)(playbackRate),
19
28
  // For n channels, we delay n + 1 channels.
20
29
  // This is because `ffprobe` for some audio files reports the wrong amount
21
30
  // of channels.
22
31
  // This should be fine because FFMPEG documentation states:
23
32
  // "Unused delays will be silently ignored."
24
33
  // https://ffmpeg.org/ffmpeg-filters.html#adelay
25
- `adelay=${new Array(channels + 1).fill(startInVideoSeconds).join('|')}`,
26
- (0, calculate_atempo_1.calculateATempo)(playbackRate),
27
- `volume=${volumeFilter.value}:eval=${volumeFilter.eval}`,
34
+ startInVideoSeconds === 0
35
+ ? null
36
+ : `adelay=${new Array(channels + 1)
37
+ .fill((startInVideoSeconds * 1000).toFixed(0))
38
+ .join('|')}`,
39
+ // set the volume if needed
40
+ volumeFilter.value === '1'
41
+ ? null
42
+ : `volume=${volumeFilter.value}:eval=${volumeFilter.eval}`,
43
+ // Only in the end, we pad to the full length.
44
+ padAtEnd > 0.0000001
45
+ ? 'apad=pad_len=' + Math.round(padAtEnd * sample_rate_1.DEFAULT_SAMPLE_RATE)
46
+ : null,
28
47
  ]
29
48
  .filter(remotion_1.Internals.truthy)
30
49
  .join(',') +
31
- `[a${streamIndex}]`);
50
+ `[a0]`);
32
51
  };
33
52
  exports.stringifyFfmpegFilter = stringifyFfmpegFilter;
34
- //# sourceMappingURL=stringify-ffmpeg-filter.js.map
@@ -1,7 +1,5 @@
1
- import { SourceMapConsumer } from 'source-map';
2
1
  import { UnsymbolicatedStackFrame } from './parse-browser-error-stack';
3
- export declare function getSourceMap(fileUri: string, fileContents: string): Promise<SourceMapConsumer | null>;
4
- export declare type ScriptLine = {
2
+ declare type ScriptLine = {
5
3
  lineNumber: number;
6
4
  content: string;
7
5
  highlight: boolean;
@@ -14,4 +12,4 @@ export declare type SymbolicatedStackFrame = {
14
12
  originalScriptCode: ScriptLine[] | null;
15
13
  };
16
14
  export declare const symbolicateStackTrace: (frames: UnsymbolicatedStackFrame[]) => Promise<SymbolicatedStackFrame[]>;
17
- //# sourceMappingURL=symbolicate-stacktrace.d.ts.map
15
+ export {};
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.symbolicateStackTrace = exports.getSourceMap = void 0;
3
+ exports.symbolicateStackTrace = void 0;
4
4
  const remotion_1 = require("remotion");
5
5
  const source_map_1 = require("source-map");
6
6
  const read_file_1 = require("./assets/read-file");
@@ -38,7 +38,6 @@ async function getSourceMap(fileUri, fileContents) {
38
38
  const obj = await fetchUrl(url);
39
39
  return new source_map_1.SourceMapConsumer(obj);
40
40
  }
41
- exports.getSourceMap = getSourceMap;
42
41
  const fetchUrl = async (url) => {
43
42
  const res = await (0, read_file_1.readFile)(url);
44
43
  return new Promise((resolve, reject) => {
@@ -109,4 +108,3 @@ const symbolicateStackTrace = async (frames) => {
109
108
  .filter(remotion_1.Internals.truthy);
110
109
  };
111
110
  exports.symbolicateStackTrace = symbolicateStackTrace;
112
- //# sourceMappingURL=symbolicate-stacktrace.js.map
package/dist/tmp-dir.d.ts CHANGED
@@ -1,2 +1 @@
1
1
  export declare const tmpDir: (str: string) => string;
2
- //# sourceMappingURL=tmp-dir.d.ts.map
package/dist/tmp-dir.js CHANGED
@@ -1,11 +1,29 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
2
21
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
22
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
23
  };
5
24
  Object.defineProperty(exports, "__esModule", { value: true });
6
25
  exports.tmpDir = void 0;
7
- const fs_1 = __importDefault(require("fs"));
8
- const fs_2 = require("fs");
26
+ const fs_1 = __importStar(require("fs"));
9
27
  const os_1 = __importDefault(require("os"));
10
28
  const path_1 = __importDefault(require("path"));
11
29
  const alphabet = 'abcdefghijklmnopqrstuvwxyz0123456789';
@@ -26,8 +44,7 @@ const tmpDir = (str) => {
26
44
  force: true,
27
45
  });
28
46
  }
29
- (0, fs_2.mkdirSync)(newDir);
47
+ (0, fs_1.mkdirSync)(newDir);
30
48
  return newDir;
31
49
  };
32
50
  exports.tmpDir = tmpDir;
33
- //# sourceMappingURL=tmp-dir.js.map
package/dist/types.d.ts CHANGED
@@ -6,4 +6,3 @@ export declare type RenderFramesOutput = {
6
6
  export declare type OnStartData = {
7
7
  frameCount: number;
8
8
  };
9
- //# sourceMappingURL=types.d.ts.map
package/dist/types.js CHANGED
@@ -1,3 +1,2 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=types.js.map
@@ -5,4 +5,3 @@ export declare const validateEvenDimensionsWithCodec: ({ width, height, codec, s
5
5
  scale: number;
6
6
  codec: Codec;
7
7
  }) => void;
8
- //# sourceMappingURL=validate-even-dimensions-with-codec.d.ts.map
@@ -33,4 +33,3 @@ const validateEvenDimensionsWithCodec = ({ width, height, codec, scale, }) => {
33
33
  }
34
34
  };
35
35
  exports.validateEvenDimensionsWithCodec = validateEvenDimensionsWithCodec;
36
- //# sourceMappingURL=validate-even-dimensions-with-codec.js.map
@@ -1,4 +1,2 @@
1
1
  export declare const binaryExists: (name: 'ffmpeg' | 'brew', localFFmpeg: string | null) => Promise<boolean>;
2
- export declare const isHomebrewInstalled: () => Promise<boolean>;
3
2
  export declare const validateFfmpeg: (customFfmpegBinary: string | null) => Promise<void>;
4
- //# sourceMappingURL=validate-ffmpeg.d.ts.map
@@ -3,7 +3,7 @@ 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.validateFfmpeg = exports.isHomebrewInstalled = exports.binaryExists = void 0;
6
+ exports.validateFfmpeg = exports.binaryExists = void 0;
7
7
  const execa_1 = __importDefault(require("execa"));
8
8
  const fs_1 = require("fs");
9
9
  const os_1 = __importDefault(require("os"));
@@ -39,7 +39,6 @@ exports.binaryExists = binaryExists;
39
39
  const isHomebrewInstalled = () => {
40
40
  return (0, exports.binaryExists)('brew', null);
41
41
  };
42
- exports.isHomebrewInstalled = isHomebrewInstalled;
43
42
  const validateFfmpeg = async (customFfmpegBinary) => {
44
43
  const ffmpegExists = await (0, exports.binaryExists)('ffmpeg', customFfmpegBinary);
45
44
  if (!ffmpegExists) {
@@ -49,7 +48,7 @@ const validateFfmpeg = async (customFfmpegBinary) => {
49
48
  process.exit(1);
50
49
  }
51
50
  console.error('It looks like FFMPEG is not installed');
52
- if (os_1.default.platform() === 'darwin' && (await (0, exports.isHomebrewInstalled)())) {
51
+ if (os_1.default.platform() === 'darwin' && (await isHomebrewInstalled())) {
53
52
  console.error('Run `brew install ffmpeg` to install ffmpeg');
54
53
  }
55
54
  else if (os_1.default.platform() === 'win32') {
@@ -72,4 +71,3 @@ const validateFfmpeg = async (customFfmpegBinary) => {
72
71
  }
73
72
  };
74
73
  exports.validateFfmpeg = validateFfmpeg;
75
- //# sourceMappingURL=validate-ffmpeg.js.map
@@ -0,0 +1,2 @@
1
+ import { Codec } from 'remotion';
2
+ export declare const validateOutputFilename: (codec: Codec, extension: string | null) => void;
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateOutputFilename = void 0;
4
+ const validateOutputFilename = (codec, extension) => {
5
+ if (codec === 'h264') {
6
+ if (extension !== 'mp4' && extension !== 'mkv') {
7
+ throw new TypeError('When using the H264 codec, the output filename must end in .mp4 or .mkv.');
8
+ }
9
+ }
10
+ if (codec === 'h264-mkv') {
11
+ if (extension !== 'mkv') {
12
+ throw new TypeError('When using the "h264-mkv" codec, the output filename must end in ".mkv".');
13
+ }
14
+ }
15
+ if (codec === 'h265') {
16
+ if (extension !== 'mp4' && extension !== 'hevc') {
17
+ throw new TypeError('When using H265 codec, the output filename must end in .mp4 or .hevc.');
18
+ }
19
+ }
20
+ if (codec === 'vp8' || codec === 'vp9') {
21
+ if (extension !== 'webm') {
22
+ throw new TypeError(`When using the ${codec.toUpperCase()} codec, the output filename must end in .webm.`);
23
+ }
24
+ }
25
+ if (codec === 'prores') {
26
+ const allowedProResExtensions = ['mov', 'mkv', 'mxf'];
27
+ if (!extension || !allowedProResExtensions.includes(extension)) {
28
+ throw new TypeError(`When using the 'prores' codec, the output must end in one of those extensions: ${allowedProResExtensions
29
+ .map((a) => `.${a}`)
30
+ .join(', ')}`);
31
+ }
32
+ }
33
+ if (codec === 'mp3') {
34
+ if (extension !== 'mp3') {
35
+ throw new TypeError("When using the 'mp3' codec, the output must end in .mp3");
36
+ }
37
+ }
38
+ if (codec === 'aac') {
39
+ const allowedAacExtensions = ['aac', '3gp', 'm4a', 'm4b', 'mpg', 'mpeg'];
40
+ if (!extension || !allowedAacExtensions.includes(extension)) {
41
+ throw new TypeError(`When using the 'aac' codec, the output must end in one of those extensions: ${allowedAacExtensions
42
+ .map((a) => `.${a}`)
43
+ .join(', ')}`);
44
+ }
45
+ }
46
+ if (codec === 'wav') {
47
+ if (extension !== 'wav') {
48
+ throw new TypeError("When using the 'wav' codec, the output location must end in .wav.");
49
+ }
50
+ }
51
+ };
52
+ exports.validateOutputFilename = validateOutputFilename;
@@ -1,2 +1 @@
1
1
  export declare const validatePuppeteerTimeout: (timeoutInMilliseconds: unknown) => void;
2
- //# sourceMappingURL=validate-puppeteer-timeout.d.ts.map
@@ -22,4 +22,3 @@ const validatePuppeteerTimeout = (timeoutInMilliseconds) => {
22
22
  }
23
23
  };
24
24
  exports.validatePuppeteerTimeout = validatePuppeteerTimeout;
25
- //# sourceMappingURL=validate-puppeteer-timeout.js.map
@@ -1,2 +1 @@
1
1
  export declare const validateScale: (scale: unknown) => void;
2
- //# sourceMappingURL=validate-scale.d.ts.map
@@ -24,4 +24,3 @@ const validateScale = (scale) => {
24
24
  }
25
25
  };
26
26
  exports.validateScale = validateScale;
27
- //# sourceMappingURL=validate-scale.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@remotion/renderer",
3
- "version": "3.0.3",
3
+ "version": "3.0.6",
4
4
  "description": "Renderer for Remotion",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -20,11 +20,10 @@
20
20
  "url": "https://github.com/remotion-dev/remotion/issues"
21
21
  },
22
22
  "dependencies": {
23
- "@remotion/bundler": "3.0.3",
23
+ "@remotion/bundler": "3.0.6",
24
24
  "execa": "5.1.1",
25
- "p-limit": "3.1.0",
26
25
  "puppeteer-core": "13.5.1",
27
- "remotion": "3.0.3",
26
+ "remotion": "3.0.6",
28
27
  "serve-handler": "6.1.3",
29
28
  "source-map": "^0.8.0-beta.0"
30
29
  },
@@ -61,5 +60,5 @@
61
60
  "publishConfig": {
62
61
  "access": "public"
63
62
  },
64
- "gitHead": "dfff8f066b552a84c3583931ed6f04536b8dc485"
63
+ "gitHead": "507118b6edd67a8e749a81ae19237a55682cd378"
65
64
  }
@@ -1,8 +0,0 @@
1
- import { Codec } from 'remotion';
2
- export declare const addSilentAudioIfNecessary: ({ durationInFrames, fps, outputLocation, chunkCodec, }: {
3
- outputLocation: string;
4
- durationInFrames: number;
5
- fps: number;
6
- chunkCodec: Codec;
7
- }) => Promise<void>;
8
- //# sourceMappingURL=add-silent-audio-if-necessary.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"add-silent-audio-if-necessary.d.ts","sourceRoot":"","sources":["../src/add-silent-audio-if-necessary.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,KAAK,EAAC,MAAM,UAAU,CAAC;AAK/B,eAAO,MAAM,yBAAyB;oBAMrB,MAAM;sBACJ,MAAM;SACnB,MAAM;gBACC,KAAK;MACd,QAAQ,IAAI,CA0Cf,CAAC"}