@remotion/renderer 3.1.6 → 3.1.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 (295) hide show
  1. package/dist/add-silent-audio-if-necessary.d.ts +8 -0
  2. package/dist/add-silent-audio-if-necessary.d.ts.map +1 -0
  3. package/dist/add-silent-audio-if-necessary.js +51 -0
  4. package/dist/add-silent-audio-if-necessary.js.map +1 -0
  5. package/dist/assets/asset-is-used-at-time.d.ts +3 -0
  6. package/dist/assets/asset-is-used-at-time.d.ts.map +1 -0
  7. package/dist/assets/asset-is-used-at-time.js +8 -0
  8. package/dist/assets/asset-is-used-at-time.js.map +1 -0
  9. package/dist/assets/calculate-asset-positions.d.ts.map +1 -0
  10. package/dist/assets/calculate-asset-positions.js.map +1 -0
  11. package/dist/assets/calculate-atempo.d.ts.map +1 -0
  12. package/dist/assets/calculate-atempo.js.map +1 -0
  13. package/dist/assets/convert-assets-to-file-urls.d.ts +3 -2
  14. package/dist/assets/convert-assets-to-file-urls.d.ts.map +1 -0
  15. package/dist/assets/convert-assets-to-file-urls.js +2 -2
  16. package/dist/assets/convert-assets-to-file-urls.js.map +1 -0
  17. package/dist/assets/download-and-map-assets-to-file.d.ts +6 -5
  18. package/dist/assets/download-and-map-assets-to-file.d.ts.map +1 -0
  19. package/dist/assets/download-and-map-assets-to-file.js +46 -47
  20. package/dist/assets/download-and-map-assets-to-file.js.map +1 -0
  21. package/dist/assets/download-file.d.ts.map +1 -0
  22. package/dist/assets/download-file.js.map +1 -0
  23. package/dist/assets/download-map.d.ts +64 -0
  24. package/dist/assets/download-map.js +73 -0
  25. package/dist/assets/ffmpeg-volume-expression.d.ts.map +1 -0
  26. package/dist/assets/ffmpeg-volume-expression.js.map +1 -0
  27. package/dist/assets/flatten-volume-array.d.ts.map +1 -0
  28. package/dist/assets/flatten-volume-array.js.map +1 -0
  29. package/dist/assets/get-asset-audio-details.d.ts +5 -0
  30. package/dist/assets/get-asset-audio-details.d.ts.map +1 -0
  31. package/dist/assets/get-asset-audio-details.js +21 -0
  32. package/dist/assets/get-asset-audio-details.js.map +1 -0
  33. package/dist/assets/get-audio-channels.d.ts +3 -7
  34. package/dist/assets/get-audio-channels.d.ts.map +1 -0
  35. package/dist/assets/get-audio-channels.js +6 -7
  36. package/dist/assets/get-audio-channels.js.map +1 -0
  37. package/dist/assets/get-simulatenous-assets.d.ts +3 -0
  38. package/dist/assets/get-simulatenous-assets.d.ts.map +1 -0
  39. package/dist/assets/get-simulatenous-assets.js +14 -0
  40. package/dist/assets/get-simulatenous-assets.js.map +1 -0
  41. package/dist/assets/get-video-stream-duration.d.ts +3 -6
  42. package/dist/assets/get-video-stream-duration.js +9 -8
  43. package/dist/assets/read-file.d.ts.map +1 -0
  44. package/dist/assets/read-file.js.map +1 -0
  45. package/dist/assets/round-volume-to-avoid-stack-overflow.d.ts.map +1 -0
  46. package/dist/assets/round-volume-to-avoid-stack-overflow.js.map +1 -0
  47. package/dist/assets/sanitize-filename.d.ts.map +1 -0
  48. package/dist/assets/sanitize-filename.js.map +1 -0
  49. package/dist/assets/sanitize-filepath.d.ts.map +1 -0
  50. package/dist/assets/sanitize-filepath.js.map +1 -0
  51. package/dist/assets/split-assets-into-segments.d.ts +6 -0
  52. package/dist/assets/split-assets-into-segments.d.ts.map +1 -0
  53. package/dist/assets/split-assets-into-segments.js +89 -0
  54. package/dist/assets/split-assets-into-segments.js.map +1 -0
  55. package/dist/assets/truncate-utf8-bytes.d.ts.map +1 -0
  56. package/dist/assets/truncate-utf8-bytes.js.map +1 -0
  57. package/dist/assets/types.d.ts.map +1 -0
  58. package/dist/assets/types.js.map +1 -0
  59. package/dist/assets-to-ffmpeg-inputs.d.ts +7 -0
  60. package/dist/assets-to-ffmpeg-inputs.d.ts.map +1 -0
  61. package/dist/assets-to-ffmpeg-inputs.js +15 -0
  62. package/dist/assets-to-ffmpeg-inputs.js.map +1 -0
  63. package/dist/browser/TimeoutSettings.d.ts +1 -0
  64. package/dist/browser/TimeoutSettings.js +4 -4
  65. package/dist/browser-executable.d.ts +1 -0
  66. package/dist/browser-executable.js +2 -0
  67. package/dist/browser-log.d.ts.map +1 -0
  68. package/dist/browser-log.js.map +1 -0
  69. package/dist/browser.d.ts +2 -0
  70. package/dist/browser.js +4 -0
  71. package/dist/calculate-ffmpeg-filters.d.ts.map +1 -0
  72. package/dist/calculate-ffmpeg-filters.js.map +1 -0
  73. package/dist/can-use-parallel-encoding.d.ts +1 -1
  74. package/dist/can-use-parallel-encoding.d.ts.map +1 -0
  75. package/dist/can-use-parallel-encoding.js +2 -2
  76. package/dist/can-use-parallel-encoding.js.map +1 -0
  77. package/dist/codec-supports-media.d.ts +1 -1
  78. package/dist/codec.d.ts +4 -0
  79. package/dist/codec.js +16 -0
  80. package/dist/combine-videos.d.ts +1 -1
  81. package/dist/combine-videos.d.ts.map +1 -0
  82. package/dist/combine-videos.js +7 -6
  83. package/dist/combine-videos.js.map +1 -0
  84. package/dist/compress-assets.d.ts +7 -0
  85. package/dist/compress-assets.js +25 -0
  86. package/dist/convert-to-pcm.d.ts +1 -1
  87. package/dist/create-ffmpeg-complex-filter.d.ts +6 -2
  88. package/dist/create-ffmpeg-complex-filter.d.ts.map +1 -0
  89. package/dist/create-ffmpeg-complex-filter.js +2 -11
  90. package/dist/create-ffmpeg-complex-filter.js.map +1 -0
  91. package/dist/create-ffmpeg-merge-filter.js +3 -3
  92. package/dist/create-silent-audio.d.ts +1 -1
  93. package/dist/crf.d.ts +5 -0
  94. package/dist/crf.js +64 -0
  95. package/dist/cycle-browser-tabs.d.ts.map +1 -0
  96. package/dist/cycle-browser-tabs.js.map +1 -0
  97. package/dist/delay-render-embedded-stack.d.ts.map +1 -0
  98. package/dist/delay-render-embedded-stack.js.map +1 -0
  99. package/dist/delete-directory.d.ts.map +1 -0
  100. package/dist/delete-directory.js.map +1 -0
  101. package/dist/ensure-frames-in-order.d.ts.map +1 -0
  102. package/dist/ensure-frames-in-order.js.map +1 -0
  103. package/dist/ensure-output-directory.d.ts.map +1 -0
  104. package/dist/ensure-output-directory.js.map +1 -0
  105. package/dist/ensure-presentation-timestamp.d.ts +2 -1
  106. package/dist/ensure-presentation-timestamp.js +9 -7
  107. package/dist/error-handling/handle-javascript-exception.d.ts.map +1 -0
  108. package/dist/error-handling/handle-javascript-exception.js.map +1 -0
  109. package/dist/error-handling/symbolicate-error.d.ts.map +1 -0
  110. package/dist/error-handling/symbolicate-error.js.map +1 -0
  111. package/dist/error-handling/symbolicateable-error.d.ts.map +1 -0
  112. package/dist/error-handling/symbolicateable-error.js.map +1 -0
  113. package/dist/extract-frame-from-video.d.ts +4 -1
  114. package/dist/extract-frame-from-video.js +21 -16
  115. package/dist/ffmpeg-executable.d.ts +1 -0
  116. package/dist/ffmpeg-executable.js +2 -0
  117. package/dist/ffmpeg-filter-file.d.ts +2 -1
  118. package/dist/ffmpeg-filter-file.js +4 -6
  119. package/dist/ffmpeg-flags.d.ts.map +1 -0
  120. package/dist/ffmpeg-flags.js.map +1 -0
  121. package/dist/frame-range.d.ts +2 -0
  122. package/dist/frame-range.js +49 -0
  123. package/dist/get-audio-codec-name.d.ts +1 -1
  124. package/dist/get-audio-codec-name.d.ts.map +1 -0
  125. package/dist/get-audio-codec-name.js +2 -2
  126. package/dist/get-audio-codec-name.js.map +1 -0
  127. package/dist/get-browser-instance.d.ts +1 -1
  128. package/dist/get-browser-instance.d.ts.map +1 -0
  129. package/dist/get-browser-instance.js +2 -2
  130. package/dist/get-browser-instance.js.map +1 -0
  131. package/dist/get-codec-name.d.ts +1 -1
  132. package/dist/get-codec-name.d.ts.map +1 -0
  133. package/dist/get-codec-name.js +2 -2
  134. package/dist/get-codec-name.js.map +1 -0
  135. package/dist/get-compositions.d.ts +8 -1
  136. package/dist/get-compositions.d.ts.map +1 -0
  137. package/dist/get-compositions.js +10 -6
  138. package/dist/get-compositions.js.map +1 -0
  139. package/dist/get-concurrency.d.ts.map +1 -0
  140. package/dist/get-concurrency.js.map +1 -0
  141. package/dist/get-extension-from-codec.d.ts +1 -1
  142. package/dist/get-extension-from-codec.d.ts.map +1 -0
  143. package/dist/get-extension-from-codec.js.map +1 -0
  144. package/dist/get-frame-to-render.d.ts +1 -1
  145. package/dist/get-frame-to-render.d.ts.map +1 -0
  146. package/dist/get-frame-to-render.js.map +1 -0
  147. package/dist/get-local-browser-executable.d.ts +2 -1
  148. package/dist/get-local-browser-executable.d.ts.map +1 -0
  149. package/dist/get-local-browser-executable.js.map +1 -0
  150. package/dist/get-port.d.ts.map +1 -0
  151. package/dist/get-port.js.map +1 -0
  152. package/dist/get-prores-profile-name.d.ts +2 -1
  153. package/dist/get-prores-profile-name.d.ts.map +1 -0
  154. package/dist/get-prores-profile-name.js.map +1 -0
  155. package/dist/get-video-info.d.ts +3 -8
  156. package/dist/get-video-info.js +7 -8
  157. package/dist/get-video-threads-flag.d.ts +1 -0
  158. package/dist/get-video-threads-flag.js +18 -0
  159. package/dist/image-format.d.ts +6 -1
  160. package/dist/image-format.d.ts.map +1 -0
  161. package/dist/image-format.js +25 -1
  162. package/dist/image-format.js.map +1 -0
  163. package/dist/index.d.ts +48 -9
  164. package/dist/index.d.ts.map +1 -0
  165. package/dist/index.js +71 -1
  166. package/dist/index.js.map +1 -0
  167. package/dist/is-audio-codec.d.ts +2 -0
  168. package/dist/is-audio-codec.js +7 -0
  169. package/dist/is-beyond-last-frame.d.ts +3 -2
  170. package/dist/is-beyond-last-frame.js +5 -5
  171. package/dist/is-serve-url.d.ts.map +1 -0
  172. package/dist/is-serve-url.js.map +1 -0
  173. package/dist/last-frame-from-video-cache.d.ts +5 -4
  174. package/dist/last-frame-from-video-cache.js +17 -17
  175. package/dist/legacy-webpack-config.d.ts.map +1 -0
  176. package/dist/legacy-webpack-config.js.map +1 -0
  177. package/dist/log-level.d.ts +4 -0
  178. package/dist/log-level.js +15 -0
  179. package/dist/make-assets-download-dir.d.ts.map +1 -0
  180. package/dist/make-assets-download-dir.js.map +1 -0
  181. package/dist/merge-audio-track.d.ts +3 -1
  182. package/dist/merge-audio-track.js +6 -4
  183. package/dist/normalize-serve-url.d.ts.map +1 -0
  184. package/dist/normalize-serve-url.js.map +1 -0
  185. package/dist/offthread-video-server.d.ts +5 -3
  186. package/dist/offthread-video-server.js +3 -2
  187. package/dist/open-browser.d.ts +1 -1
  188. package/dist/open-browser.d.ts.map +1 -0
  189. package/dist/open-browser.js +6 -5
  190. package/dist/open-browser.js.map +1 -0
  191. package/dist/overwrite.d.ts +1 -0
  192. package/dist/overwrite.js +4 -0
  193. package/dist/parse-browser-error-stack.d.ts.map +1 -0
  194. package/dist/parse-browser-error-stack.js.map +1 -0
  195. package/dist/parse-ffmpeg-progress.d.ts.map +1 -0
  196. package/dist/parse-ffmpeg-progress.js.map +1 -0
  197. package/dist/perf.d.ts +5 -0
  198. package/dist/perf.js +35 -0
  199. package/dist/pixel-format.d.ts +5 -0
  200. package/dist/pixel-format.js +26 -0
  201. package/dist/pool.d.ts.map +1 -0
  202. package/dist/pool.js.map +1 -0
  203. package/dist/prepare-server.d.ts +4 -3
  204. package/dist/prepare-server.d.ts.map +1 -0
  205. package/dist/prepare-server.js +3 -3
  206. package/dist/prepare-server.js.map +1 -0
  207. package/dist/preprocess-audio-track.d.ts +3 -1
  208. package/dist/preprocess-audio-track.js +3 -3
  209. package/dist/prespawn-ffmpeg.d.ts +5 -1
  210. package/dist/prespawn-ffmpeg.js +9 -6
  211. package/dist/prestitcher-memory-usage.d.ts +12 -0
  212. package/dist/prestitcher-memory-usage.js +30 -0
  213. package/dist/prores-profile.d.ts +5 -0
  214. package/dist/prores-profile.js +23 -0
  215. package/dist/provide-screenshot.d.ts +1 -1
  216. package/dist/provide-screenshot.d.ts.map +1 -0
  217. package/dist/provide-screenshot.js.map +1 -0
  218. package/dist/puppeteer-evaluate.d.ts.map +1 -0
  219. package/dist/puppeteer-evaluate.js.map +1 -0
  220. package/dist/puppeteer-screenshot.d.ts.map +1 -0
  221. package/dist/puppeteer-screenshot.js.map +1 -0
  222. package/dist/quality.d.ts +1 -0
  223. package/dist/quality.js +21 -0
  224. package/dist/render-frames.d.ts +10 -1
  225. package/dist/render-frames.js +22 -16
  226. package/dist/render-media.d.ts +13 -2
  227. package/dist/render-media.d.ts.map +1 -0
  228. package/dist/render-media.js +40 -14
  229. package/dist/render-media.js.map +1 -0
  230. package/dist/render-still.d.ts +9 -1
  231. package/dist/render-still.d.ts.map +1 -0
  232. package/dist/render-still.js +21 -11
  233. package/dist/render-still.js.map +1 -0
  234. package/dist/render.d.ts +45 -0
  235. package/dist/render.d.ts.map +1 -0
  236. package/dist/render.js +245 -0
  237. package/dist/render.js.map +1 -0
  238. package/dist/resolve-asset-src.d.ts.map +1 -0
  239. package/dist/resolve-asset-src.js.map +1 -0
  240. package/dist/sample-rate.d.ts.map +1 -0
  241. package/dist/sample-rate.js.map +1 -0
  242. package/dist/screenshot-dom-element.d.ts +1 -1
  243. package/dist/screenshot-dom-element.d.ts.map +1 -0
  244. package/dist/screenshot-dom-element.js.map +1 -0
  245. package/dist/screenshot-task.d.ts +1 -2
  246. package/dist/screenshot-task.d.ts.map +1 -0
  247. package/dist/screenshot-task.js +34 -19
  248. package/dist/screenshot-task.js.map +1 -0
  249. package/dist/seek-to-frame.d.ts.map +1 -0
  250. package/dist/seek-to-frame.js.map +1 -0
  251. package/dist/serve-static.d.ts +3 -2
  252. package/dist/serve-static.d.ts.map +1 -0
  253. package/dist/serve-static.js +3 -4
  254. package/dist/serve-static.js.map +1 -0
  255. package/dist/set-props-and-env.d.ts.map +1 -0
  256. package/dist/set-props-and-env.js +2 -2
  257. package/dist/set-props-and-env.js.map +1 -0
  258. package/dist/stitch-frames-to-video.d.ts +6 -1
  259. package/dist/stitch-frames-to-video.js +30 -43
  260. package/dist/stitcher.d.ts +32 -0
  261. package/dist/stitcher.d.ts.map +1 -0
  262. package/dist/stitcher.js +204 -0
  263. package/dist/stitcher.js.map +1 -0
  264. package/dist/stringify-ffmpeg-filter.d.ts.map +1 -0
  265. package/dist/stringify-ffmpeg-filter.js +2 -2
  266. package/dist/stringify-ffmpeg-filter.js.map +1 -0
  267. package/dist/symbolicate-stacktrace.d.ts.map +1 -0
  268. package/dist/symbolicate-stacktrace.js +3 -3
  269. package/dist/symbolicate-stacktrace.js.map +1 -0
  270. package/dist/tmp-dir.d.ts.map +1 -0
  271. package/dist/tmp-dir.js.map +1 -0
  272. package/dist/truthy.d.ts +3 -0
  273. package/dist/truthy.js +7 -0
  274. package/dist/types.d.ts +1 -1
  275. package/dist/types.d.ts.map +1 -0
  276. package/dist/types.js.map +1 -0
  277. package/dist/validate-even-dimensions-with-codec.d.ts +1 -1
  278. package/dist/validate-even-dimensions-with-codec.d.ts.map +1 -0
  279. package/dist/validate-even-dimensions-with-codec.js +2 -2
  280. package/dist/validate-even-dimensions-with-codec.js.map +1 -0
  281. package/dist/validate-every-nth-frame.d.ts +1 -0
  282. package/dist/validate-every-nth-frame.js +21 -0
  283. package/dist/validate-ffmpeg.d.ts.map +1 -0
  284. package/dist/validate-ffmpeg.js +2 -3
  285. package/dist/validate-ffmpeg.js.map +1 -0
  286. package/dist/validate-frame.d.ts +1 -0
  287. package/dist/validate-frame.js +24 -0
  288. package/dist/validate-opengl-renderer.d.ts +5 -0
  289. package/dist/validate-opengl-renderer.js +15 -0
  290. package/dist/validate-output-filename.d.ts +1 -1
  291. package/dist/validate-puppeteer-timeout.d.ts.map +1 -0
  292. package/dist/validate-puppeteer-timeout.js.map +1 -0
  293. package/dist/validate-scale.d.ts.map +1 -0
  294. package/dist/validate-scale.js.map +1 -0
  295. package/package.json +3 -3
@@ -2,7 +2,6 @@
2
2
  // OffthreadVideo requires sometimes that the last frame of a video gets extracted, however, this can be slow. We allocate a cache for it but that can be garbage collected
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.clearLastFileCache = exports.getLastFrameFromCache = exports.setLastFrameInCache = void 0;
5
- let map = {};
6
5
  const MAX_CACHE_SIZE = 50 * 1024 * 1024; // 50MB
7
6
  let bufferSize = 0;
8
7
  const makeLastFrameCacheKey = (options) => {
@@ -11,45 +10,46 @@ const makeLastFrameCacheKey = (options) => {
11
10
  options.offset,
12
11
  options.src,
13
12
  options.imageFormat,
13
+ options.downloadMap.id,
14
14
  ].join('-');
15
15
  };
16
16
  const setLastFrameInCache = (options, data) => {
17
17
  const key = makeLastFrameCacheKey(options);
18
- if (map[key]) {
19
- bufferSize -= map[key].data.byteLength;
18
+ if (options.downloadMap.lastFrameMap[key]) {
19
+ bufferSize -= options.downloadMap.lastFrameMap[key].data.byteLength;
20
20
  }
21
- map[key] = { data, lastAccessed: Date.now() };
21
+ options.downloadMap.lastFrameMap[key] = { data, lastAccessed: Date.now() };
22
22
  bufferSize += data.byteLength;
23
- ensureMaxSize();
23
+ ensureMaxSize(options.downloadMap);
24
24
  };
25
25
  exports.setLastFrameInCache = setLastFrameInCache;
26
26
  const getLastFrameFromCache = (options) => {
27
27
  var _a;
28
28
  const key = makeLastFrameCacheKey(options);
29
- if (!map[key]) {
29
+ if (!options.downloadMap.lastFrameMap[key]) {
30
30
  return null;
31
31
  }
32
- map[key].lastAccessed = Date.now();
33
- return (_a = map[key].data) !== null && _a !== void 0 ? _a : null;
32
+ options.downloadMap.lastFrameMap[key].lastAccessed = Date.now();
33
+ return (_a = options.downloadMap.lastFrameMap[key].data) !== null && _a !== void 0 ? _a : null;
34
34
  };
35
35
  exports.getLastFrameFromCache = getLastFrameFromCache;
36
- const removedLastFrameFromCache = (key) => {
37
- if (!map[key]) {
36
+ const removedLastFrameFromCache = (key, downloadMap) => {
37
+ if (!downloadMap.lastFrameMap[key]) {
38
38
  return;
39
39
  }
40
- bufferSize -= map[key].data.byteLength;
41
- delete map[key];
40
+ bufferSize -= downloadMap.lastFrameMap[key].data.byteLength;
41
+ delete downloadMap.lastFrameMap[key];
42
42
  };
43
- const ensureMaxSize = () => {
43
+ const ensureMaxSize = (downloadMap) => {
44
44
  // eslint-disable-next-line no-unmodified-loop-condition
45
45
  while (bufferSize > MAX_CACHE_SIZE) {
46
- const earliest = Object.entries(map).sort((a, b) => {
46
+ const earliest = Object.entries(downloadMap.lastFrameMap).sort((a, b) => {
47
47
  return a[1].lastAccessed - b[1].lastAccessed;
48
48
  })[0];
49
- removedLastFrameFromCache(earliest[0]);
49
+ removedLastFrameFromCache(earliest[0], downloadMap);
50
50
  }
51
51
  };
52
- const clearLastFileCache = () => {
53
- map = {};
52
+ const clearLastFileCache = (downloadMap) => {
53
+ downloadMap.lastFrameMap = {};
54
54
  };
55
55
  exports.clearLastFileCache = clearLastFileCache;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legacy-webpack-config.d.ts","sourceRoot":"","sources":["../src/legacy-webpack-config.ts"],"names":[],"mappings":"AAAA,oBAAY,uBAAuB,GAChC;IACA,QAAQ,EAAE,MAAM,CAAC;CAChB,GACD;IACA;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;CACrB,CAAC;AAEL,eAAO,MAAM,uBAAuB,UAAW,uBAAuB,WAUrE,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legacy-webpack-config.js","sourceRoot":"","sources":["../src/legacy-webpack-config.ts"],"names":[],"mappings":";;;AAWO,MAAM,uBAAuB,GAAG,CAAC,KAA8B,EAAE,EAAE;IACzE,IAAI,eAAe,IAAI,KAAK,EAAE;QAC7B,OAAO,KAAK,CAAC,aAAa,CAAC;KAC3B;IAED,IAAI,UAAU,IAAI,KAAK,EAAE;QACxB,OAAO,KAAK,CAAC,QAAQ,CAAC;KACtB;IAED,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;AAC3D,CAAC,CAAC;AAVW,QAAA,uBAAuB,2BAUlC"}
@@ -0,0 +1,4 @@
1
+ export declare const logLevels: readonly ["verbose", "info", "warn", "error"];
2
+ export declare type LogLevel = typeof logLevels[number];
3
+ export declare const isValidLogLevel: (level: string) => boolean;
4
+ export declare const isEqualOrBelowLogLevel: (currentLevel: LogLevel, level: LogLevel) => boolean;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isEqualOrBelowLogLevel = exports.isValidLogLevel = exports.logLevels = void 0;
4
+ exports.logLevels = ['verbose', 'info', 'warn', 'error'];
5
+ const getNumberForLogLevel = (level) => {
6
+ return exports.logLevels.indexOf(level);
7
+ };
8
+ const isValidLogLevel = (level) => {
9
+ return getNumberForLogLevel(level) > -1;
10
+ };
11
+ exports.isValidLogLevel = isValidLogLevel;
12
+ const isEqualOrBelowLogLevel = (currentLevel, level) => {
13
+ return getNumberForLogLevel(currentLevel) <= getNumberForLogLevel(level);
14
+ };
15
+ exports.isEqualOrBelowLogLevel = isEqualOrBelowLogLevel;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"make-assets-download-dir.d.ts","sourceRoot":"","sources":["../src/make-assets-download-dir.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,wBAAwB,QAAO,MAE3C,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"make-assets-download-dir.js","sourceRoot":"","sources":["../src/make-assets-download-dir.ts"],"names":[],"mappings":";;;AAAA,uCAAiC;AAE1B,MAAM,wBAAwB,GAAG,GAAW,EAAE;IACpD,OAAO,IAAA,gBAAM,EAAC,qBAAqB,CAAC,CAAC;AACtC,CAAC,CAAC;AAFW,QAAA,wBAAwB,4BAEnC"}
@@ -1,9 +1,11 @@
1
- import type { FfmpegExecutable } from 'remotion';
1
+ import type { DownloadMap } from './assets/download-map';
2
+ import type { FfmpegExecutable } from './ffmpeg-executable';
2
3
  declare type Options = {
3
4
  ffmpegExecutable: FfmpegExecutable;
4
5
  files: string[];
5
6
  outName: string;
6
7
  numberOfSeconds: number;
8
+ downloadMap: DownloadMap;
7
9
  };
8
10
  export declare const mergeAudioTrack: (options: Options) => Promise<void>;
9
11
  export {};
@@ -6,7 +6,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.mergeAudioTrack = void 0;
7
7
  const execa_1 = __importDefault(require("execa"));
8
8
  const path_1 = __importDefault(require("path"));
9
- const remotion_1 = require("remotion");
10
9
  const chunk_1 = require("./chunk");
11
10
  const convert_to_pcm_1 = require("./convert-to-pcm");
12
11
  const create_ffmpeg_complex_filter_1 = require("./create-ffmpeg-complex-filter");
@@ -14,7 +13,8 @@ const create_silent_audio_1 = require("./create-silent-audio");
14
13
  const delete_directory_1 = require("./delete-directory");
15
14
  const p_limit_1 = require("./p-limit");
16
15
  const tmp_dir_1 = require("./tmp-dir");
17
- const mergeAudioTrackUnlimited = async ({ ffmpegExecutable, outName, files, numberOfSeconds, }) => {
16
+ const truthy_1 = require("./truthy");
17
+ const mergeAudioTrackUnlimited = async ({ ffmpegExecutable, outName, files, numberOfSeconds, downloadMap, }) => {
18
18
  if (files.length === 0) {
19
19
  await (0, create_silent_audio_1.createSilentAudio)({
20
20
  outName,
@@ -42,6 +42,7 @@ const mergeAudioTrackUnlimited = async ({ ffmpegExecutable, outName, files, numb
42
42
  files: chunkFiles,
43
43
  numberOfSeconds,
44
44
  outName: chunkOutname,
45
+ downloadMap,
45
46
  });
46
47
  return chunkOutname;
47
48
  }));
@@ -50,11 +51,12 @@ const mergeAudioTrackUnlimited = async ({ ffmpegExecutable, outName, files, numb
50
51
  files: chunkNames,
51
52
  numberOfSeconds,
52
53
  outName,
54
+ downloadMap,
53
55
  });
54
56
  await (0, delete_directory_1.deleteDirectory)(tempPath);
55
57
  return;
56
58
  }
57
- const { complexFilterFlag: mergeFilter, cleanup } = await (0, create_ffmpeg_complex_filter_1.createFfmpegComplexFilter)(files.length);
59
+ const { complexFilterFlag: mergeFilter, cleanup } = await (0, create_ffmpeg_complex_filter_1.createFfmpegComplexFilter)(files.length, downloadMap);
58
60
  const args = [
59
61
  ...files.map((f) => ['-i', f]),
60
62
  mergeFilter,
@@ -62,7 +64,7 @@ const mergeAudioTrackUnlimited = async ({ ffmpegExecutable, outName, files, numb
62
64
  ['-map', '[a]'],
63
65
  ['-y', outName],
64
66
  ]
65
- .filter(remotion_1.Internals.truthy)
67
+ .filter(truthy_1.truthy)
66
68
  .flat(2);
67
69
  const task = (0, execa_1.default)(ffmpegExecutable !== null && ffmpegExecutable !== void 0 ? ffmpegExecutable : 'ffmpeg', args);
68
70
  await task;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize-serve-url.d.ts","sourceRoot":"","sources":["../src/normalize-serve-url.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,iBAAkB,MAAM,KAAG,MAmBxD,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize-serve-url.js","sourceRoot":"","sources":["../src/normalize-serve-url.ts"],"names":[],"mappings":";;;AAAO,MAAM,iBAAiB,GAAG,CAAC,YAAoB,EAAU,EAAE;IACjE,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAE5C,IAAI,QAAQ,EAAE;QACb,OAAO,IAAA,yBAAiB,EAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;KAC5E;IAED,MAAM,eAAe,GAAG,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAC5D,IAAI,eAAe,EAAE;QACpB,OAAO,YAAY,CAAC;KACpB;IAED,kBAAkB;IAElB,IAAI,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;QAC/B,OAAO,GAAG,YAAY,YAAY,CAAC;KACnC;IAED,OAAO,GAAG,YAAY,aAAa,CAAC;AACrC,CAAC,CAAC;AAnBW,QAAA,iBAAiB,qBAmB5B"}
@@ -1,15 +1,17 @@
1
1
  import type { RequestListener } from 'http';
2
- import type { FfmpegExecutable, OffthreadVideoImageFormat } from 'remotion';
2
+ import type { OffthreadVideoImageFormat } from 'remotion';
3
3
  import type { RenderMediaOnDownload } from './assets/download-and-map-assets-to-file';
4
+ import type { DownloadMap } from './assets/download-map';
5
+ import type { FfmpegExecutable } from './ffmpeg-executable';
4
6
  export declare const extractUrlAndSourceFromUrl: (url: string) => {
5
7
  src: string;
6
8
  time: number;
7
9
  imageFormat: OffthreadVideoImageFormat;
8
10
  };
9
- export declare const startOffthreadVideoServer: ({ ffmpegExecutable, ffprobeExecutable, downloadDir, onDownload, onError, }: {
11
+ export declare const startOffthreadVideoServer: ({ ffmpegExecutable, ffprobeExecutable, onDownload, onError, downloadMap, }: {
10
12
  ffmpegExecutable: FfmpegExecutable;
11
13
  ffprobeExecutable: FfmpegExecutable;
12
- downloadDir: string;
13
14
  onDownload: RenderMediaOnDownload;
14
15
  onError: (err: Error) => void;
16
+ downloadMap: DownloadMap;
15
17
  }) => RequestListener;
@@ -32,7 +32,7 @@ const extractUrlAndSourceFromUrl = (url) => {
32
32
  };
33
33
  };
34
34
  exports.extractUrlAndSourceFromUrl = extractUrlAndSourceFromUrl;
35
- const startOffthreadVideoServer = ({ ffmpegExecutable, ffprobeExecutable, downloadDir, onDownload, onError, }) => {
35
+ const startOffthreadVideoServer = ({ ffmpegExecutable, ffprobeExecutable, onDownload, onError, downloadMap, }) => {
36
36
  return (req, res) => {
37
37
  if (!req.url) {
38
38
  throw new Error('Request came in without URL');
@@ -45,7 +45,7 @@ const startOffthreadVideoServer = ({ ffmpegExecutable, ffprobeExecutable, downlo
45
45
  const { src, time, imageFormat } = (0, exports.extractUrlAndSourceFromUrl)(req.url);
46
46
  res.setHeader('access-control-allow-origin', '*');
47
47
  res.setHeader('content-type', `image/${imageFormat === 'jpeg' ? 'jpg' : 'png'}`);
48
- (0, download_and_map_assets_to_file_1.downloadAsset)({ src, downloadDir, onDownload })
48
+ (0, download_and_map_assets_to_file_1.downloadAsset)({ src, onDownload, downloadMap })
49
49
  .then((to) => {
50
50
  return (0, extract_frame_from_video_1.extractFrameFromVideo)({
51
51
  time,
@@ -53,6 +53,7 @@ const startOffthreadVideoServer = ({ ffmpegExecutable, ffprobeExecutable, downlo
53
53
  ffmpegExecutable,
54
54
  ffprobeExecutable,
55
55
  imageFormat,
56
+ downloadMap,
56
57
  });
57
58
  })
58
59
  .then((readable) => {
@@ -1,4 +1,4 @@
1
- import type { Browser } from 'remotion';
1
+ import type { Browser } from './browser';
2
2
  import type { Browser as PuppeteerBrowser } from './browser/Browser';
3
3
  import type { Viewport } from './browser/PuppeteerViewport';
4
4
  declare const validRenderers: readonly ["swangle", "angle", "egl", "swiftshader"];
@@ -0,0 +1 @@
1
+ {"version":3,"file":"open-browser.d.ts","sourceRoot":"","sources":["../src/open-browser.ts"],"names":[],"mappings":"AAGA,OAAO,SAAS,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAC,OAAO,EAAY,MAAM,UAAU,CAAC;AAM5C,QAAA,MAAM,cAAc,0CAA2C,CAAC;AAEhE,aAAK,cAAc,GAAG,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC;AAEpD,oBAAY,eAAe,GAAG;IAC7B,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,EAAE,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAYF,eAAO,MAAM,eAAe,qBAM3B,CAAC;AAEF,eAAO,MAAM,WAAW,YACd,OAAO;;;;kBAMd,QAAQ,iBAAiB,CA4D3B,CAAC"}
@@ -7,13 +7,14 @@ exports.openBrowser = exports.killAllBrowsers = void 0;
7
7
  const fs_1 = __importDefault(require("fs"));
8
8
  const os_1 = __importDefault(require("os"));
9
9
  const path_1 = __importDefault(require("path"));
10
- const remotion_1 = require("remotion");
11
10
  const node_1 = require("./browser/node");
12
11
  const get_local_browser_executable_1 = require("./get-local-browser-executable");
12
+ const get_video_threads_flag_1 = require("./get-video-threads-flag");
13
+ const validate_opengl_renderer_1 = require("./validate-opengl-renderer");
13
14
  const validRenderers = ['swangle', 'angle', 'egl', 'swiftshader'];
14
15
  const getOpenGlRenderer = (option) => {
15
- const renderer = option !== null && option !== void 0 ? option : remotion_1.Internals.DEFAULT_OPENGL_RENDERER;
16
- remotion_1.Internals.validateOpenGlRenderer(renderer);
16
+ const renderer = option !== null && option !== void 0 ? option : validate_opengl_renderer_1.DEFAULT_OPENGL_RENDERER;
17
+ (0, validate_opengl_renderer_1.validateOpenGlRenderer)(renderer);
17
18
  if (renderer === 'swangle') {
18
19
  return [`--use-gl=angle`, `--use-angle=swiftshader`];
19
20
  }
@@ -34,7 +35,7 @@ const killAllBrowsers = async () => {
34
35
  exports.killAllBrowsers = killAllBrowsers;
35
36
  const openBrowser = async (browser, options) => {
36
37
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
37
- if (browser === 'firefox' && !remotion_1.Internals.FEATURE_FLAG_FIREFOX_SUPPORT) {
38
+ if (browser === 'firefox') {
38
39
  throw new TypeError('Firefox supported is not yet turned on. Stay tuned for the future.');
39
40
  }
40
41
  await (0, get_local_browser_executable_1.ensureLocalBrowser)(browser, (_a = options === null || options === void 0 ? void 0 : options.browserExecutable) !== null && _a !== void 0 ? _a : null);
@@ -69,7 +70,7 @@ const openBrowser = async (browser, options) => {
69
70
  '--force-color-profile=srgb',
70
71
  '--metrics-recording-only',
71
72
  '--no-first-run',
72
- '--video-threads=16',
73
+ '--video-threads=' + (0, get_video_threads_flag_1.getIdealVideoThreadsFlag)(),
73
74
  '--enable-automation',
74
75
  '--password-store=basic',
75
76
  '--use-mock-keychain',
@@ -0,0 +1 @@
1
+ {"version":3,"file":"open-browser.js","sourceRoot":"","sources":["../src/open-browser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare const DEFAULT_OVERWRITE = true;
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEFAULT_OVERWRITE = void 0;
4
+ exports.DEFAULT_OVERWRITE = true;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-browser-error-stack.d.ts","sourceRoot":"","sources":["../src/parse-browser-error-stack.ts"],"names":[],"mappings":"AAIA,oBAAY,wBAAwB,GAAG;IACtC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACrB,CAAC;AAuDF,eAAO,MAAM,UAAU,UAAW,MAAM,EAAE,KAAG,wBAAwB,EAwDpE,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-browser-error-stack.js","sourceRoot":"","sources":["../src/parse-browser-error-stack.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-ffmpeg-progress.d.ts","sourceRoot":"","sources":["../src/parse-ffmpeg-progress.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,UAAW,MAAM,KAAG,MAAM,GAAG,SAO5D,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-ffmpeg-progress.js","sourceRoot":"","sources":["../src/parse-ffmpeg-progress.ts"],"names":[],"mappings":";;;AAAO,MAAM,mBAAmB,GAAG,CAAC,KAAa,EAAsB,EAAE;IACxE,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;IACpD,IAAI,CAAC,KAAK,EAAE;QACX,OAAO,SAAS,CAAC;KACjB;IAED,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACzB,CAAC,CAAC;AAPW,QAAA,mBAAmB,uBAO9B"}
package/dist/perf.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ declare type PerfId = 'activate-target' | 'capture' | 'save' | 'extract-frame' | 'piping';
2
+ export declare const startPerfMeasure: (marker: PerfId) => number;
3
+ export declare const stopPerfMeasure: (id: number) => void;
4
+ export declare const logPerf: () => void;
5
+ export {};
package/dist/perf.js ADDED
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.logPerf = exports.stopPerfMeasure = exports.startPerfMeasure = void 0;
4
+ const perf = {
5
+ 'activate-target': [],
6
+ capture: [],
7
+ save: [],
8
+ 'extract-frame': [],
9
+ piping: [],
10
+ };
11
+ const map = {};
12
+ const startPerfMeasure = (marker) => {
13
+ const id = Math.random();
14
+ map[id] = {
15
+ id,
16
+ marker,
17
+ start: Date.now(),
18
+ };
19
+ return id;
20
+ };
21
+ exports.startPerfMeasure = startPerfMeasure;
22
+ const stopPerfMeasure = (id) => {
23
+ const now = Date.now();
24
+ const diff = now - map[id].start;
25
+ perf[map[id].marker].push(diff);
26
+ delete map[id];
27
+ };
28
+ exports.stopPerfMeasure = stopPerfMeasure;
29
+ const logPerf = () => {
30
+ console.log('Render performance:');
31
+ Object.keys(perf).forEach((p) => {
32
+ console.log(` ${p} => ${perf[p].reduce((a, b) => a + b, 0) / perf[p].length} (n = ${perf[p].length})`);
33
+ });
34
+ };
35
+ exports.logPerf = logPerf;
@@ -0,0 +1,5 @@
1
+ import type { Codec } from './codec';
2
+ export declare const validPixelFormats: readonly ["yuv420p", "yuva420p", "yuv422p", "yuv444p", "yuv420p10le", "yuv422p10le", "yuv444p10le", "yuva444p10le"];
3
+ export declare type PixelFormat = typeof validPixelFormats[number];
4
+ export declare const DEFAULT_PIXEL_FORMAT: PixelFormat;
5
+ export declare const validateSelectedPixelFormatAndCodecCombination: (pixelFormat: PixelFormat, codec: Codec) => void;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateSelectedPixelFormatAndCodecCombination = exports.DEFAULT_PIXEL_FORMAT = exports.validPixelFormats = void 0;
4
+ exports.validPixelFormats = [
5
+ 'yuv420p',
6
+ 'yuva420p',
7
+ 'yuv422p',
8
+ 'yuv444p',
9
+ 'yuv420p10le',
10
+ 'yuv422p10le',
11
+ 'yuv444p10le',
12
+ 'yuva444p10le',
13
+ ];
14
+ exports.DEFAULT_PIXEL_FORMAT = 'yuv420p';
15
+ const validateSelectedPixelFormatAndCodecCombination = (pixelFormat, codec) => {
16
+ if (!exports.validPixelFormats.includes(pixelFormat)) {
17
+ throw new TypeError(`Value ${pixelFormat} is not valid as a pixel format.`);
18
+ }
19
+ if (pixelFormat !== 'yuva420p') {
20
+ return;
21
+ }
22
+ if (codec !== 'vp8' && codec !== 'vp9') {
23
+ throw new TypeError("Pixel format was set to 'yuva420p' but codec is not 'vp8' or 'vp9'. To render videos with alpha channel, you must choose a codec that supports it.");
24
+ }
25
+ };
26
+ exports.validateSelectedPixelFormatAndCodecCombination = validateSelectedPixelFormatAndCodecCombination;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pool.d.ts","sourceRoot":"","sources":["../src/pool.ts"],"names":[],"mappings":"AAAA,qBAAa,IAAI,CAAC,CAAC;IAClB,SAAS,EAAE,CAAC,EAAE,CAAC;IACf,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC;gBAEhB,SAAS,EAAE,CAAC,EAAE;IAK1B,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC;IAarB,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAG,IAAI;CAQ1B"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pool.js","sourceRoot":"","sources":["../src/pool.ts"],"names":[],"mappings":";;;AAAA,MAAa,IAAI;IAIhB,YAAY,SAAc;QACzB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;IACnB,CAAC;IAED,OAAO;QACN,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACxC,IAAI,QAAQ,KAAK,SAAS,EAAE;YAC3B,OAAO,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;SACjC;QAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC9B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,YAAe,EAAE,EAAE;gBACrC,OAAO,CAAC,YAAY,CAAC,CAAC;YACvB,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,QAAW;QAClB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACpC,IAAI,MAAM,KAAK,SAAS,EAAE;YACzB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SAC9B;aAAM;YACN,MAAM,CAAC,QAAQ,CAAC,CAAC;SACjB;IACF,CAAC;CACD;AA9BD,oBA8BC"}
@@ -1,13 +1,14 @@
1
- import type { FfmpegExecutable } from 'remotion';
2
1
  import type { RenderMediaOnDownload } from './assets/download-and-map-assets-to-file';
3
- export declare const prepareServer: ({ downloadDir, ffmpegExecutable, ffprobeExecutable, onDownload, onError, webpackConfigOrServeUrl, port, }: {
2
+ import type { DownloadMap } from './assets/download-map';
3
+ import type { FfmpegExecutable } from './ffmpeg-executable';
4
+ export declare const prepareServer: ({ ffmpegExecutable, ffprobeExecutable, onDownload, onError, webpackConfigOrServeUrl, port, downloadMap, }: {
4
5
  webpackConfigOrServeUrl: string;
5
- downloadDir: string;
6
6
  onDownload: RenderMediaOnDownload;
7
7
  onError: (err: Error) => void;
8
8
  ffmpegExecutable: FfmpegExecutable;
9
9
  ffprobeExecutable: FfmpegExecutable;
10
10
  port: number | null;
11
+ downloadMap: DownloadMap;
11
12
  }) => Promise<{
12
13
  serveUrl: string;
13
14
  closeServer: () => Promise<unknown>;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prepare-server.d.ts","sourceRoot":"","sources":["../src/prepare-server.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,aAAa,4BACA,MAAM,KAC7B,QAAQ;IACV,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,QAAQ,IAAI,CAAC,CAAC;CACjC,CAaA,CAAC"}
@@ -9,15 +9,15 @@ const path_1 = __importDefault(require("path"));
9
9
  const is_serve_url_1 = require("./is-serve-url");
10
10
  const serve_static_1 = require("./serve-static");
11
11
  const wait_for_symbolication_error_to_be_done_1 = require("./wait-for-symbolication-error-to-be-done");
12
- const prepareServer = async ({ downloadDir, ffmpegExecutable, ffprobeExecutable, onDownload, onError, webpackConfigOrServeUrl, port, }) => {
12
+ const prepareServer = async ({ ffmpegExecutable, ffprobeExecutable, onDownload, onError, webpackConfigOrServeUrl, port, downloadMap, }) => {
13
13
  if ((0, is_serve_url_1.isServeUrl)(webpackConfigOrServeUrl)) {
14
14
  const { port: offthreadPort, close: closeProxy } = await (0, serve_static_1.serveStatic)(null, {
15
- downloadDir,
16
15
  onDownload,
17
16
  onError,
18
17
  ffmpegExecutable,
19
18
  ffprobeExecutable,
20
19
  port,
20
+ downloadMap,
21
21
  });
22
22
  return Promise.resolve({
23
23
  serveUrl: webpackConfigOrServeUrl,
@@ -34,12 +34,12 @@ const prepareServer = async ({ downloadDir, ffmpegExecutable, ffprobeExecutable,
34
34
  throw new Error(`Tried to serve the Webpack bundle on a HTTP server, but the file ${indexFile} does not exist. Is this a valid path to a Webpack bundle?`);
35
35
  }
36
36
  const { port: serverPort, close } = await (0, serve_static_1.serveStatic)(webpackConfigOrServeUrl, {
37
- downloadDir,
38
37
  onDownload,
39
38
  onError,
40
39
  ffmpegExecutable,
41
40
  ffprobeExecutable,
42
41
  port,
42
+ downloadMap,
43
43
  });
44
44
  return Promise.resolve({
45
45
  closeServer: () => {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prepare-server.js","sourceRoot":"","sources":["../src/prepare-server.ts"],"names":[],"mappings":";;;AAAA,iDAA0C;AAC1C,iDAA2C;AAEpC,MAAM,aAAa,GAAG,KAAK,EACjC,uBAA+B,EAI7B,EAAE;IACJ,IAAI,IAAA,yBAAU,EAAC,uBAAuB,CAAC,EAAE;QACxC,OAAO,OAAO,CAAC,OAAO,CAAC;YACtB,QAAQ,EAAE,uBAAuB;YACjC,WAAW,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC;SAC7C,CAAC,CAAC;KACH;IAED,MAAM,EAAC,IAAI,EAAE,KAAK,EAAC,GAAG,MAAM,IAAA,0BAAW,EAAC,uBAAuB,CAAC,CAAC;IACjE,OAAO,OAAO,CAAC,OAAO,CAAC;QACtB,WAAW,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE;QAC1B,QAAQ,EAAE,oBAAoB,IAAI,EAAE;KACpC,CAAC,CAAC;AACJ,CAAC,CAAC;AAlBW,QAAA,aAAa,iBAkBxB"}
@@ -1,5 +1,6 @@
1
- import type { FfmpegExecutable } from 'remotion';
1
+ import type { DownloadMap } from './assets/download-map';
2
2
  import type { MediaAsset } from './assets/types';
3
+ import type { FfmpegExecutable } from './ffmpeg-executable';
3
4
  declare type Options = {
4
5
  ffmpegExecutable: FfmpegExecutable;
5
6
  ffprobeExecutable: FfmpegExecutable;
@@ -7,6 +8,7 @@ declare type Options = {
7
8
  asset: MediaAsset;
8
9
  expectedFrames: number;
9
10
  fps: number;
11
+ downloadMap: DownloadMap;
10
12
  };
11
13
  export declare const preprocessAudioTrack: (options: Options) => Promise<string | null>;
12
14
  export {};
@@ -10,8 +10,8 @@ const calculate_ffmpeg_filters_1 = require("./calculate-ffmpeg-filters");
10
10
  const ffmpeg_filter_file_1 = require("./ffmpeg-filter-file");
11
11
  const p_limit_1 = require("./p-limit");
12
12
  const resolve_asset_src_1 = require("./resolve-asset-src");
13
- const preprocessAudioTrackUnlimited = async ({ ffmpegExecutable, ffprobeExecutable, outName, asset, expectedFrames, fps, }) => {
14
- const { channels, duration } = await (0, get_audio_channels_1.getAudioChannelsAndDuration)((0, resolve_asset_src_1.resolveAssetSrc)(asset.src), ffprobeExecutable);
13
+ const preprocessAudioTrackUnlimited = async ({ ffmpegExecutable, ffprobeExecutable, outName, asset, expectedFrames, fps, downloadMap, }) => {
14
+ const { channels, duration } = await (0, get_audio_channels_1.getAudioChannelsAndDuration)(downloadMap, (0, resolve_asset_src_1.resolveAssetSrc)(asset.src), ffprobeExecutable);
15
15
  const filter = (0, calculate_ffmpeg_filters_1.calculateFfmpegFilter)({
16
16
  asset,
17
17
  durationInFrames: expectedFrames,
@@ -22,7 +22,7 @@ const preprocessAudioTrackUnlimited = async ({ ffmpegExecutable, ffprobeExecutab
22
22
  if (filter === null) {
23
23
  return null;
24
24
  }
25
- const { cleanup, file } = await (0, ffmpeg_filter_file_1.makeFfmpegFilterFile)(filter);
25
+ const { cleanup, file } = await (0, ffmpeg_filter_file_1.makeFfmpegFilterFile)(filter, downloadMap);
26
26
  const args = [
27
27
  ['-i', (0, resolve_asset_src_1.resolveAssetSrc)(asset.src)],
28
28
  ['-ac', '2'],
@@ -1,6 +1,10 @@
1
1
  import execa from 'execa';
2
- import type { Codec, FfmpegExecutable, ImageFormat, PixelFormat, ProResProfile } from 'remotion';
2
+ import type { Codec } from './codec';
3
+ import type { FfmpegExecutable } from './ffmpeg-executable';
4
+ import type { ImageFormat } from './image-format';
3
5
  import type { CancelSignal } from './make-cancel-signal';
6
+ import type { PixelFormat } from './pixel-format';
7
+ import type { ProResProfile } from './prores-profile';
4
8
  declare type PreSticherOptions = {
5
9
  fps: number;
6
10
  width: number;
@@ -6,25 +6,28 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.prespawnFfmpeg = void 0;
7
7
  const execa_1 = __importDefault(require("execa"));
8
8
  const remotion_1 = require("remotion");
9
+ const codec_1 = require("./codec");
10
+ const crf_1 = require("./crf");
9
11
  const get_codec_name_1 = require("./get-codec-name");
10
12
  const get_prores_profile_name_1 = require("./get-prores-profile-name");
11
13
  const parse_ffmpeg_progress_1 = require("./parse-ffmpeg-progress");
14
+ const pixel_format_1 = require("./pixel-format");
12
15
  const validate_even_dimensions_with_codec_1 = require("./validate-even-dimensions-with-codec");
13
16
  const validate_ffmpeg_1 = require("./validate-ffmpeg");
14
17
  const prespawnFfmpeg = async (options) => {
15
18
  var _a, _b, _c, _d, _e, _f, _g;
16
19
  remotion_1.Internals.validateDimension(options.height, 'height', 'passed to `stitchFramesToVideo()`');
17
20
  remotion_1.Internals.validateDimension(options.width, 'width', 'passed to `stitchFramesToVideo()`');
18
- const codec = (_a = options.codec) !== null && _a !== void 0 ? _a : remotion_1.Internals.DEFAULT_CODEC;
19
- remotion_1.Internals.validateFps(options.fps, 'in `stitchFramesToVideo()`', codec);
21
+ const codec = (_a = options.codec) !== null && _a !== void 0 ? _a : codec_1.DEFAULT_CODEC;
22
+ remotion_1.Internals.validateFps(options.fps, 'in `stitchFramesToVideo()`', codec === 'gif');
20
23
  (0, validate_even_dimensions_with_codec_1.validateEvenDimensionsWithCodec)({
21
24
  width: options.width,
22
25
  height: options.height,
23
26
  codec,
24
27
  scale: 1,
25
28
  });
26
- const crf = (_b = options.crf) !== null && _b !== void 0 ? _b : remotion_1.Internals.getDefaultCrfForCodec(codec);
27
- const pixelFormat = (_c = options.pixelFormat) !== null && _c !== void 0 ? _c : remotion_1.Internals.DEFAULT_PIXEL_FORMAT;
29
+ const crf = (_b = options.crf) !== null && _b !== void 0 ? _b : (0, crf_1.getDefaultCrfForCodec)(codec);
30
+ const pixelFormat = (_c = options.pixelFormat) !== null && _c !== void 0 ? _c : pixel_format_1.DEFAULT_PIXEL_FORMAT;
28
31
  await (0, validate_ffmpeg_1.validateFfmpeg)((_d = options.ffmpegExecutable) !== null && _d !== void 0 ? _d : null);
29
32
  const encoderName = (0, get_codec_name_1.getCodecName)(codec);
30
33
  const proResProfileName = (0, get_prores_profile_name_1.getProResProfileName)(codec, options.proResProfile);
@@ -42,8 +45,8 @@ const prespawnFfmpeg = async (options) => {
42
45
  console.log('[verbose] codec', codec);
43
46
  console.log('[verbose] proResProfileName', proResProfileName);
44
47
  }
45
- remotion_1.Internals.validateSelectedCrfAndCodecCombination(crf, codec);
46
- remotion_1.Internals.validateSelectedPixelFormatAndCodecCombination(pixelFormat, codec);
48
+ (0, crf_1.validateSelectedCrfAndCodecCombination)(crf, codec);
49
+ (0, pixel_format_1.validateSelectedPixelFormatAndCodecCombination)(pixelFormat, codec);
47
50
  const ffmpegArgs = [
48
51
  ['-r', options.fps.toFixed(2)],
49
52
  ...[
@@ -0,0 +1,12 @@
1
+ export declare const estimateMemoryUsageForPrestitcher: ({ width, height, }: {
2
+ width: number;
3
+ height: number;
4
+ }) => number;
5
+ export declare const shouldUseParallelEncoding: ({ width, height, }: {
6
+ width: number;
7
+ height: number;
8
+ }) => {
9
+ hasEnoughMemory: boolean;
10
+ freeMemory: number;
11
+ estimatedUsage: number;
12
+ };
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.shouldUseParallelEncoding = exports.estimateMemoryUsageForPrestitcher = void 0;
7
+ const os_1 = __importDefault(require("os"));
8
+ const estimateMemoryUsageForPrestitcher = ({ width, height, }) => {
9
+ // Empirically we detected that per 1 million pixels, FFMPEG uses around 1GB of memory, relatively independent of
10
+ // the duration of the video.
11
+ const memoryUsageFor4K = 1000000000;
12
+ const memoryUsageOfPixel = memoryUsageFor4K / 1000000;
13
+ return memoryUsageOfPixel * width * height;
14
+ };
15
+ exports.estimateMemoryUsageForPrestitcher = estimateMemoryUsageForPrestitcher;
16
+ const shouldUseParallelEncoding = ({ width, height, }) => {
17
+ const freeMemory = os_1.default.freemem();
18
+ const estimatedUsage = (0, exports.estimateMemoryUsageForPrestitcher)({
19
+ height,
20
+ width,
21
+ });
22
+ const hasEnoughMemory = freeMemory - estimatedUsage > 2000000000 &&
23
+ estimatedUsage / freeMemory < 0.5;
24
+ return {
25
+ hasEnoughMemory,
26
+ freeMemory,
27
+ estimatedUsage,
28
+ };
29
+ };
30
+ exports.shouldUseParallelEncoding = shouldUseParallelEncoding;
@@ -0,0 +1,5 @@
1
+ import type { Codec } from './codec';
2
+ declare const proResProfileOptions: readonly ["4444-xq", "4444", "hq", "standard", "light", "proxy"];
3
+ export declare type ProResProfile = typeof proResProfileOptions[number];
4
+ export declare const validateSelectedCodecAndProResCombination: (actualCodec: Codec, actualProResProfile: ProResProfile | undefined) => void;
5
+ export {};