@remotion/renderer 4.0.0-reorg.8 → 4.0.0-retry.8

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 (345) hide show
  1. package/LICENSE.md +8 -8
  2. package/dist/assets/calculate-asset-positions.d.ts +0 -0
  3. package/dist/assets/calculate-asset-positions.js +0 -0
  4. package/dist/assets/calculate-atempo.d.ts +0 -0
  5. package/dist/assets/calculate-atempo.js +0 -0
  6. package/dist/assets/convert-assets-to-file-urls.d.ts +3 -2
  7. package/dist/assets/convert-assets-to-file-urls.js +2 -2
  8. package/dist/assets/download-and-map-assets-to-file.d.ts +8 -6
  9. package/dist/assets/download-and-map-assets-to-file.js +91 -50
  10. package/dist/assets/download-file.d.ts +1 -1
  11. package/dist/assets/download-file.js +4 -2
  12. package/dist/assets/download-map.d.ts +64 -0
  13. package/dist/assets/download-map.js +73 -0
  14. package/dist/assets/ffmpeg-volume-expression.d.ts +0 -0
  15. package/dist/assets/ffmpeg-volume-expression.js +0 -0
  16. package/dist/assets/flatten-volume-array.d.ts +0 -0
  17. package/dist/assets/flatten-volume-array.js +0 -0
  18. package/dist/assets/get-audio-channels.d.ts +2 -6
  19. package/dist/assets/get-audio-channels.js +6 -7
  20. package/dist/assets/get-video-stream-duration.d.ts +3 -5
  21. package/dist/assets/get-video-stream-duration.js +39 -14
  22. package/dist/assets/read-file.d.ts +0 -0
  23. package/dist/assets/read-file.js +0 -0
  24. package/dist/assets/round-volume-to-avoid-stack-overflow.d.ts +0 -0
  25. package/dist/assets/round-volume-to-avoid-stack-overflow.js +0 -0
  26. package/dist/assets/sanitize-filename.d.ts +0 -0
  27. package/dist/assets/sanitize-filename.js +0 -0
  28. package/dist/assets/sanitize-filepath.d.ts +0 -0
  29. package/dist/assets/sanitize-filepath.js +0 -0
  30. package/dist/assets/truncate-utf8-bytes.d.ts +0 -0
  31. package/dist/assets/truncate-utf8-bytes.js +0 -0
  32. package/dist/assets/types.d.ts +0 -0
  33. package/dist/assets/types.js +0 -0
  34. package/dist/browser/Browser.d.ts +1 -0
  35. package/dist/browser/Browser.js +9 -10
  36. package/dist/browser/BrowserConnector.d.ts +0 -0
  37. package/dist/browser/BrowserConnector.js +0 -0
  38. package/dist/browser/BrowserFetcher.d.ts +0 -0
  39. package/dist/browser/BrowserFetcher.js +12 -10
  40. package/dist/browser/BrowserPage.d.ts +0 -0
  41. package/dist/browser/BrowserPage.js +0 -0
  42. package/dist/browser/BrowserRunner.d.ts +1 -4
  43. package/dist/browser/BrowserRunner.js +28 -71
  44. package/dist/browser/Connection.d.ts +0 -0
  45. package/dist/browser/Connection.js +1 -1
  46. package/dist/browser/ConsoleMessage.d.ts +0 -0
  47. package/dist/browser/ConsoleMessage.js +0 -0
  48. package/dist/browser/DOMWorld.d.ts +0 -0
  49. package/dist/browser/DOMWorld.js +0 -0
  50. package/dist/browser/Errors.d.ts +0 -0
  51. package/dist/browser/Errors.js +0 -0
  52. package/dist/browser/EvalTypes.d.ts +0 -0
  53. package/dist/browser/EvalTypes.js +0 -0
  54. package/dist/browser/EventEmitter.d.ts +0 -0
  55. package/dist/browser/EventEmitter.js +0 -0
  56. package/dist/browser/ExecutionContext.d.ts +0 -0
  57. package/dist/browser/ExecutionContext.js +0 -0
  58. package/dist/browser/FrameManager.d.ts +0 -0
  59. package/dist/browser/FrameManager.js +0 -0
  60. package/dist/browser/HTTPRequest.d.ts +0 -0
  61. package/dist/browser/HTTPRequest.js +0 -0
  62. package/dist/browser/HTTPResponse.d.ts +0 -0
  63. package/dist/browser/HTTPResponse.js +0 -0
  64. package/dist/browser/JSHandle.d.ts +0 -0
  65. package/dist/browser/JSHandle.js +0 -0
  66. package/dist/browser/LaunchOptions.d.ts +0 -4
  67. package/dist/browser/LaunchOptions.js +0 -0
  68. package/dist/browser/Launcher.d.ts +1 -1
  69. package/dist/browser/Launcher.js +5 -363
  70. package/dist/browser/LifecycleWatcher.d.ts +0 -0
  71. package/dist/browser/LifecycleWatcher.js +0 -0
  72. package/dist/browser/NetworkEventManager.d.ts +0 -0
  73. package/dist/browser/NetworkEventManager.js +0 -0
  74. package/dist/browser/NetworkManager.d.ts +0 -0
  75. package/dist/browser/NetworkManager.js +0 -0
  76. package/dist/browser/NodeWebSocketTransport.d.ts +0 -0
  77. package/dist/browser/NodeWebSocketTransport.js +1 -1
  78. package/dist/browser/Product.d.ts +0 -0
  79. package/dist/browser/Product.js +0 -0
  80. package/dist/browser/PuppeteerNode.d.ts +0 -0
  81. package/dist/browser/PuppeteerNode.js +1 -4
  82. package/dist/browser/PuppeteerViewport.d.ts +0 -0
  83. package/dist/browser/PuppeteerViewport.js +0 -0
  84. package/dist/browser/ScreenshotOptions.d.ts +0 -0
  85. package/dist/browser/ScreenshotOptions.js +0 -0
  86. package/dist/browser/Target.d.ts +0 -0
  87. package/dist/browser/Target.js +0 -0
  88. package/dist/browser/TaskQueue.d.ts +0 -0
  89. package/dist/browser/TaskQueue.js +0 -0
  90. package/dist/browser/TimeoutSettings.d.ts +0 -0
  91. package/dist/browser/TimeoutSettings.js +0 -0
  92. package/dist/browser/assert.d.ts +0 -0
  93. package/dist/browser/assert.js +0 -0
  94. package/dist/browser/create-browser-fetcher.d.ts +0 -0
  95. package/dist/browser/create-browser-fetcher.js +2 -44
  96. package/dist/browser/devtools-commands.d.ts +0 -0
  97. package/dist/browser/devtools-commands.js +0 -0
  98. package/dist/browser/devtools-types.d.ts +0 -0
  99. package/dist/browser/devtools-types.js +0 -0
  100. package/dist/browser/get-download-destination.d.ts +0 -0
  101. package/dist/browser/get-download-destination.js +0 -0
  102. package/dist/browser/mitt/index.d.ts +0 -0
  103. package/dist/browser/mitt/index.js +0 -0
  104. package/dist/browser/node.d.ts +0 -0
  105. package/dist/browser/node.js +0 -0
  106. package/dist/browser/revisions.d.ts +0 -1
  107. package/dist/browser/revisions.js +0 -1
  108. package/dist/browser/util.d.ts +0 -0
  109. package/dist/browser/util.js +0 -0
  110. package/dist/browser-executable.d.ts +0 -0
  111. package/dist/browser-executable.js +0 -0
  112. package/dist/browser-log.d.ts +0 -0
  113. package/dist/browser-log.js +0 -0
  114. package/dist/browser.d.ts +0 -0
  115. package/dist/browser.js +0 -0
  116. package/dist/calculate-ffmpeg-filters.d.ts +0 -0
  117. package/dist/calculate-ffmpeg-filters.js +0 -0
  118. package/dist/calculate-sar-dar-pixels.d.ts +0 -0
  119. package/dist/calculate-sar-dar-pixels.js +0 -0
  120. package/dist/can-use-parallel-encoding.d.ts +0 -0
  121. package/dist/can-use-parallel-encoding.js +0 -0
  122. package/dist/check-apple-silicon.d.ts +1 -0
  123. package/dist/check-apple-silicon.js +55 -0
  124. package/dist/chunk.d.ts +0 -0
  125. package/dist/chunk.js +0 -0
  126. package/dist/codec-supports-media.d.ts +1 -0
  127. package/dist/codec-supports-media.js +8 -1
  128. package/dist/codec.d.ts +0 -0
  129. package/dist/codec.js +0 -0
  130. package/dist/combine-videos.d.ts +0 -0
  131. package/dist/combine-videos.js +1 -1
  132. package/dist/compress-assets.d.ts +0 -0
  133. package/dist/compress-assets.js +0 -0
  134. package/dist/convert-number-of-gif-loops-to-ffmpeg.d.ts +0 -0
  135. package/dist/convert-number-of-gif-loops-to-ffmpeg.js +0 -0
  136. package/dist/convert-to-pcm.d.ts +0 -0
  137. package/dist/convert-to-pcm.js +0 -0
  138. package/dist/convert-to-positive-frame-index.d.ts +4 -0
  139. package/dist/convert-to-positive-frame-index.js +8 -0
  140. package/dist/create-ffmpeg-complex-filter.d.ts +2 -1
  141. package/dist/create-ffmpeg-complex-filter.js +2 -11
  142. package/dist/create-ffmpeg-merge-filter.d.ts +0 -0
  143. package/dist/create-ffmpeg-merge-filter.js +0 -0
  144. package/dist/create-silent-audio.d.ts +0 -0
  145. package/dist/create-silent-audio.js +0 -0
  146. package/dist/crf.d.ts +5 -1
  147. package/dist/crf.js +33 -6
  148. package/dist/cycle-browser-tabs.d.ts +0 -0
  149. package/dist/cycle-browser-tabs.js +0 -0
  150. package/dist/delay-render-embedded-stack.d.ts +0 -0
  151. package/dist/delay-render-embedded-stack.js +0 -0
  152. package/dist/delete-directory.d.ts +0 -0
  153. package/dist/delete-directory.js +0 -0
  154. package/dist/ensure-frames-in-order.d.ts +0 -0
  155. package/dist/ensure-frames-in-order.js +0 -0
  156. package/dist/ensure-output-directory.d.ts +0 -0
  157. package/dist/ensure-output-directory.js +0 -0
  158. package/dist/ensure-presentation-timestamp.d.ts +2 -1
  159. package/dist/ensure-presentation-timestamp.js +7 -5
  160. package/dist/error-handling/handle-javascript-exception.d.ts +0 -0
  161. package/dist/error-handling/handle-javascript-exception.js +0 -0
  162. package/dist/error-handling/symbolicate-error.d.ts +0 -0
  163. package/dist/error-handling/symbolicate-error.js +0 -0
  164. package/dist/error-handling/symbolicateable-error.d.ts +0 -0
  165. package/dist/error-handling/symbolicateable-error.js +0 -0
  166. package/dist/extract-frame-from-video.d.ts +2 -0
  167. package/dist/extract-frame-from-video.js +42 -15
  168. package/dist/ffmpeg-executable.d.ts +0 -0
  169. package/dist/ffmpeg-executable.js +0 -0
  170. package/dist/ffmpeg-filter-file.d.ts +2 -1
  171. package/dist/ffmpeg-filter-file.js +4 -6
  172. package/dist/ffmpeg-flags.d.ts +5 -2
  173. package/dist/ffmpeg-flags.js +37 -7
  174. package/dist/ffmpeg-override.d.ts +4 -0
  175. package/dist/ffmpeg-override.js +2 -0
  176. package/dist/frame-range.d.ts +0 -0
  177. package/dist/frame-range.js +0 -0
  178. package/dist/frame-to-ffmpeg-timestamp.d.ts +0 -0
  179. package/dist/frame-to-ffmpeg-timestamp.js +0 -0
  180. package/dist/get-audio-codec-name.d.ts +0 -0
  181. package/dist/get-audio-codec-name.js +0 -0
  182. package/dist/get-browser-instance.d.ts +0 -0
  183. package/dist/get-browser-instance.js +0 -0
  184. package/dist/get-codec-name.d.ts +0 -0
  185. package/dist/get-codec-name.js +0 -0
  186. package/dist/get-compositions.d.ts +5 -0
  187. package/dist/get-compositions.js +14 -6
  188. package/dist/get-concurrency.d.ts +0 -0
  189. package/dist/get-concurrency.js +0 -0
  190. package/dist/get-duration-from-frame-range.d.ts +0 -0
  191. package/dist/get-duration-from-frame-range.js +0 -0
  192. package/dist/get-extension-from-codec.d.ts +1 -1
  193. package/dist/get-extension-from-codec.js +0 -0
  194. package/dist/get-extension-of-filename.d.ts +0 -0
  195. package/dist/get-extension-of-filename.js +0 -0
  196. package/dist/get-frame-padded-index.d.ts +0 -0
  197. package/dist/get-frame-padded-index.js +0 -0
  198. package/dist/get-frame-to-render.d.ts +0 -0
  199. package/dist/get-frame-to-render.js +0 -0
  200. package/dist/get-local-browser-executable.d.ts +0 -0
  201. package/dist/get-local-browser-executable.js +1 -3
  202. package/dist/get-port.d.ts +0 -0
  203. package/dist/get-port.js +0 -0
  204. package/dist/get-prores-profile-name.d.ts +0 -0
  205. package/dist/get-prores-profile-name.js +0 -0
  206. package/dist/get-video-info.d.ts +2 -7
  207. package/dist/get-video-info.js +7 -8
  208. package/dist/get-video-threads-flag.d.ts +1 -0
  209. package/dist/get-video-threads-flag.js +18 -0
  210. package/dist/guess-extension-for-media.d.ts +1 -1
  211. package/dist/guess-extension-for-media.js +1 -1
  212. package/dist/image-format.d.ts +1 -1
  213. package/dist/image-format.js +3 -0
  214. package/dist/index.d.ts +19 -28
  215. package/dist/index.js +16 -24
  216. package/dist/is-audio-codec.d.ts +0 -0
  217. package/dist/is-audio-codec.js +0 -0
  218. package/dist/is-beyond-last-frame.d.ts +3 -2
  219. package/dist/is-beyond-last-frame.js +5 -5
  220. package/dist/is-serve-url.d.ts +0 -0
  221. package/dist/is-serve-url.js +0 -0
  222. package/dist/last-frame-from-video-cache.d.ts +3 -2
  223. package/dist/last-frame-from-video-cache.js +17 -17
  224. package/dist/legacy-webpack-config.d.ts +0 -0
  225. package/dist/legacy-webpack-config.js +0 -0
  226. package/dist/log-level.d.ts +0 -0
  227. package/dist/log-level.js +0 -0
  228. package/dist/make-cancel-signal.d.ts +0 -0
  229. package/dist/make-cancel-signal.js +0 -0
  230. package/dist/merge-audio-track.d.ts +2 -0
  231. package/dist/merge-audio-track.js +6 -3
  232. package/dist/mime-db.d.ts +0 -0
  233. package/dist/mime-db.js +0 -0
  234. package/dist/mime-types.d.ts +1 -0
  235. package/dist/mime-types.js +6 -1
  236. package/dist/normalize-serve-url.d.ts +0 -0
  237. package/dist/normalize-serve-url.js +0 -0
  238. package/dist/offthread-video-server.d.ts +3 -2
  239. package/dist/offthread-video-server.js +14 -2
  240. package/dist/open-browser.d.ts +0 -0
  241. package/dist/open-browser.js +3 -12
  242. package/dist/overwrite.d.ts +0 -0
  243. package/dist/overwrite.js +0 -0
  244. package/dist/p-limit.d.ts +0 -0
  245. package/dist/p-limit.js +0 -0
  246. package/dist/parse-browser-error-stack.d.ts +0 -0
  247. package/dist/parse-browser-error-stack.js +0 -0
  248. package/dist/parse-ffmpeg-progress.d.ts +0 -0
  249. package/dist/parse-ffmpeg-progress.js +0 -0
  250. package/dist/perf.d.ts +0 -0
  251. package/dist/perf.js +0 -0
  252. package/dist/pixel-format.d.ts +1 -1
  253. package/dist/pixel-format.js +3 -0
  254. package/dist/pool.d.ts +0 -0
  255. package/dist/pool.js +0 -0
  256. package/dist/prepare-server.d.ts +3 -2
  257. package/dist/prepare-server.js +3 -3
  258. package/dist/preprocess-audio-track.d.ts +2 -0
  259. package/dist/preprocess-audio-track.js +3 -3
  260. package/dist/prespawn-ffmpeg.d.ts +3 -0
  261. package/dist/prespawn-ffmpeg.js +15 -11
  262. package/dist/prestitcher-memory-usage.d.ts +12 -0
  263. package/dist/prestitcher-memory-usage.js +30 -0
  264. package/dist/prores-profile.d.ts +4 -1
  265. package/dist/prores-profile.js +6 -6
  266. package/dist/provide-screenshot.d.ts +0 -0
  267. package/dist/provide-screenshot.js +0 -0
  268. package/dist/puppeteer-evaluate.d.ts +0 -0
  269. package/dist/puppeteer-evaluate.js +0 -0
  270. package/dist/puppeteer-screenshot.d.ts +0 -0
  271. package/dist/puppeteer-screenshot.js +0 -0
  272. package/dist/quality.d.ts +0 -0
  273. package/dist/quality.js +0 -0
  274. package/dist/render-frames.d.ts +16 -3
  275. package/dist/render-frames.js +98 -30
  276. package/dist/render-media.d.ts +30 -4
  277. package/dist/render-media.js +123 -20
  278. package/dist/render-still.d.ts +6 -1
  279. package/dist/render-still.js +37 -11
  280. package/dist/resolve-asset-src.d.ts +0 -0
  281. package/dist/resolve-asset-src.js +0 -0
  282. package/dist/sample-rate.d.ts +0 -0
  283. package/dist/sample-rate.js +0 -0
  284. package/dist/screenshot-dom-element.d.ts +0 -0
  285. package/dist/screenshot-dom-element.js +0 -0
  286. package/dist/screenshot-task.d.ts +0 -0
  287. package/dist/screenshot-task.js +30 -15
  288. package/dist/seek-to-frame.d.ts +0 -0
  289. package/dist/seek-to-frame.js +0 -0
  290. package/dist/serve-handler/index.d.ts +0 -0
  291. package/dist/serve-handler/index.js +0 -0
  292. package/dist/serve-handler/is-path-inside.d.ts +0 -0
  293. package/dist/serve-handler/is-path-inside.js +0 -0
  294. package/dist/serve-handler/range-parser.d.ts +0 -0
  295. package/dist/serve-handler/range-parser.js +0 -0
  296. package/dist/serve-static.d.ts +2 -1
  297. package/dist/serve-static.js +14 -1
  298. package/dist/set-props-and-env.d.ts +3 -1
  299. package/dist/set-props-and-env.js +34 -8
  300. package/dist/stitch-frames-to-video.d.ts +7 -7
  301. package/dist/stitch-frames-to-video.js +68 -57
  302. package/dist/stringify-ffmpeg-filter.d.ts +0 -0
  303. package/dist/stringify-ffmpeg-filter.js +0 -0
  304. package/dist/symbolicate-stacktrace.d.ts +0 -0
  305. package/dist/symbolicate-stacktrace.js +0 -0
  306. package/dist/tmp-dir.d.ts +0 -0
  307. package/dist/tmp-dir.js +0 -0
  308. package/dist/truthy.d.ts +0 -0
  309. package/dist/truthy.js +0 -0
  310. package/dist/types.d.ts +1 -1
  311. package/dist/types.js +0 -0
  312. package/dist/validate-concurrency.d.ts +0 -0
  313. package/dist/validate-concurrency.js +0 -0
  314. package/dist/validate-even-dimensions-with-codec.d.ts +0 -0
  315. package/dist/validate-even-dimensions-with-codec.js +0 -0
  316. package/dist/validate-every-nth-frame.d.ts +2 -1
  317. package/dist/validate-every-nth-frame.js +8 -1
  318. package/dist/validate-ffmpeg-override.d.ts +2 -0
  319. package/dist/validate-ffmpeg-override.js +12 -0
  320. package/dist/validate-ffmpeg.d.ts +4 -1
  321. package/dist/validate-ffmpeg.js +23 -7
  322. package/dist/validate-frame.d.ts +0 -0
  323. package/dist/validate-frame.js +3 -3
  324. package/dist/validate-number-of-gif-loops.d.ts +2 -0
  325. package/dist/validate-number-of-gif-loops.js +24 -0
  326. package/dist/validate-opengl-renderer.d.ts +0 -0
  327. package/dist/validate-opengl-renderer.js +0 -0
  328. package/dist/validate-output-filename.d.ts +0 -0
  329. package/dist/validate-output-filename.js +0 -0
  330. package/dist/validate-puppeteer-timeout.d.ts +0 -0
  331. package/dist/validate-puppeteer-timeout.js +1 -1
  332. package/dist/validate-scale.d.ts +0 -0
  333. package/dist/validate-scale.js +0 -0
  334. package/dist/validate-videobitrate.d.ts +1 -0
  335. package/dist/validate-videobitrate.js +20 -0
  336. package/dist/wait-for-symbolication-error-to-be-done.d.ts +0 -0
  337. package/dist/wait-for-symbolication-error-to-be-done.js +0 -0
  338. package/dist/warn-about-ffmpeg-version.d.ts +5 -0
  339. package/dist/warn-about-ffmpeg-version.js +37 -0
  340. package/dist/ws/ws-types.d.ts +0 -0
  341. package/dist/ws/ws-types.js +0 -0
  342. package/package.json +7 -7
  343. package/dist/make-assets-download-dir.d.ts +0 -1
  344. package/dist/make-assets-download-dir.js +0 -13
  345. package/vitest.config.ts +0 -8
@@ -30,12 +30,13 @@ exports.renderStill = void 0;
30
30
  const fs_1 = __importStar(require("fs"));
31
31
  const path_1 = __importDefault(require("path"));
32
32
  const remotion_1 = require("remotion");
33
+ const download_map_1 = require("./assets/download-map");
33
34
  const browser_1 = require("./browser");
35
+ const convert_to_positive_frame_index_1 = require("./convert-to-positive-frame-index");
34
36
  const ensure_output_directory_1 = require("./ensure-output-directory");
35
37
  const handle_javascript_exception_1 = require("./error-handling/handle-javascript-exception");
36
38
  const image_format_1 = require("./image-format");
37
39
  const legacy_webpack_config_1 = require("./legacy-webpack-config");
38
- const make_assets_download_dir_1 = require("./make-assets-download-dir");
39
40
  const open_browser_1 = require("./open-browser");
40
41
  const prepare_server_1 = require("./prepare-server");
41
42
  const provide_screenshot_1 = require("./provide-screenshot");
@@ -53,6 +54,10 @@ const innerRenderStill = async ({ composition, quality, imageFormat = 'png', ser
53
54
  remotion_1.Internals.validateDurationInFrames(composition.durationInFrames, 'in the `config` object passed to `renderStill()`');
54
55
  (0, image_format_1.validateNonNullImageFormat)(imageFormat);
55
56
  (0, validate_frame_1.validateFrame)(frame, composition.durationInFrames);
57
+ const stillFrame = (0, convert_to_positive_frame_index_1.convertToPositiveFrameIndex)({
58
+ durationInFrames: composition.durationInFrames,
59
+ frame,
60
+ });
56
61
  (0, validate_puppeteer_timeout_1.validatePuppeteerTimeout)(timeoutInMilliseconds);
57
62
  (0, validate_scale_1.validateScale)(scale);
58
63
  if (typeof output !== 'string') {
@@ -113,29 +118,44 @@ const innerRenderStill = async ({ composition, quality, imageFormat = 'png', ser
113
118
  envVariables,
114
119
  page,
115
120
  serveUrl,
116
- initialFrame: frame,
121
+ initialFrame: stillFrame,
117
122
  timeoutInMilliseconds,
118
123
  proxyPort,
119
124
  retriesRemaining: 2,
125
+ audioEnabled: false,
126
+ videoEnabled: true,
120
127
  });
121
128
  await (0, puppeteer_evaluate_1.puppeteerEvaluateWithCatch)({
122
- pageFunction: (id) => {
129
+ // eslint-disable-next-line max-params
130
+ pageFunction: (id, defaultProps, durationInFrames, fps, height, width) => {
123
131
  window.setBundleMode({
124
132
  type: 'composition',
125
133
  compositionName: id,
134
+ compositionDefaultProps: defaultProps,
135
+ compositionDurationInFrames: durationInFrames,
136
+ compositionFps: fps,
137
+ compositionHeight: height,
138
+ compositionWidth: width,
126
139
  });
127
140
  },
128
- args: [composition.id],
141
+ args: [
142
+ composition.id,
143
+ composition.defaultProps,
144
+ composition.durationInFrames,
145
+ composition.fps,
146
+ composition.height,
147
+ composition.width,
148
+ ],
129
149
  frame: null,
130
150
  page,
131
151
  });
132
- await (0, seek_to_frame_1.seekToFrame)({ frame, page });
152
+ await (0, seek_to_frame_1.seekToFrame)({ frame: stillFrame, page });
133
153
  await (0, provide_screenshot_1.provideScreenshot)({
134
154
  page,
135
155
  imageFormat,
136
156
  quality,
137
157
  options: {
138
- frame,
158
+ frame: stillFrame,
139
159
  output,
140
160
  },
141
161
  });
@@ -147,22 +167,22 @@ const innerRenderStill = async ({ composition, quality, imageFormat = 'png', ser
147
167
  * @link https://www.remotion.dev/docs/renderer/render-still
148
168
  */
149
169
  const renderStill = (options) => {
150
- var _a;
170
+ var _a, _b;
151
171
  const selectedServeUrl = (0, legacy_webpack_config_1.getServeUrlWithFallback)(options);
152
- const downloadDir = (0, make_assets_download_dir_1.makeAssetsDownloadTmpDir)();
153
- const onDownload = (_a = options.onDownload) !== null && _a !== void 0 ? _a : (() => () => undefined);
172
+ const downloadMap = (_a = options.downloadMap) !== null && _a !== void 0 ? _a : (0, download_map_1.makeDownloadMap)();
173
+ const onDownload = (_b = options.onDownload) !== null && _b !== void 0 ? _b : (() => () => undefined);
154
174
  const happyPath = new Promise((resolve, reject) => {
155
175
  var _a, _b, _c;
156
176
  const onError = (err) => reject(err);
157
177
  let close = null;
158
178
  (0, prepare_server_1.prepareServer)({
159
179
  webpackConfigOrServeUrl: selectedServeUrl,
160
- downloadDir,
161
180
  onDownload,
162
181
  onError,
163
182
  ffmpegExecutable: (_a = options.ffmpegExecutable) !== null && _a !== void 0 ? _a : null,
164
183
  ffprobeExecutable: (_b = options.ffprobeExecutable) !== null && _b !== void 0 ? _b : null,
165
184
  port: (_c = options.port) !== null && _c !== void 0 ? _c : null,
185
+ downloadMap,
166
186
  })
167
187
  .then(({ serveUrl, closeServer, offthreadPort }) => {
168
188
  close = closeServer;
@@ -175,7 +195,13 @@ const renderStill = (options) => {
175
195
  })
176
196
  .then((res) => resolve(res))
177
197
  .catch((err) => reject(err))
178
- .finally(() => close === null || close === void 0 ? void 0 : close());
198
+ .finally(() => {
199
+ // Clean download map if it was not passed in
200
+ if (!(options === null || options === void 0 ? void 0 : options.downloadMap)) {
201
+ (0, download_map_1.cleanDownloadMap)(downloadMap);
202
+ }
203
+ return close === null || close === void 0 ? void 0 : close();
204
+ });
179
205
  });
180
206
  return Promise.race([
181
207
  happyPath,
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -7,6 +7,7 @@ exports._screenshotTask = void 0;
7
7
  const fs_1 = __importDefault(require("fs"));
8
8
  const perf_1 = require("./perf");
9
9
  const _screenshotTask = async (page, format, options) => {
10
+ var _a;
10
11
  const client = page._client();
11
12
  const target = page.target();
12
13
  const perfTarget = (0, perf_1.startPerfMeasure)('activate-target');
@@ -20,20 +21,34 @@ const _screenshotTask = async (page, format, options) => {
20
21
  color: { r: 0, g: 0, b: 0, a: 0 },
21
22
  });
22
23
  const cap = (0, perf_1.startPerfMeasure)('capture');
23
- const result = await client.send('Page.captureScreenshot', {
24
- format,
25
- quality: options.quality,
26
- clip: undefined,
27
- captureBeyondViewport: true,
28
- });
29
- (0, perf_1.stopPerfMeasure)(cap);
30
- if (shouldSetDefaultBackground)
31
- await client.send('Emulation.setDefaultBackgroundColorOverride');
32
- const saveMarker = (0, perf_1.startPerfMeasure)('save');
33
- const buffer = Buffer.from(result.data, 'base64');
34
- if (options.path)
35
- await fs_1.default.promises.writeFile(options.path, buffer);
36
- (0, perf_1.stopPerfMeasure)(saveMarker);
37
- return buffer;
24
+ try {
25
+ const result = await client.send('Page.captureScreenshot', {
26
+ format,
27
+ quality: options.quality,
28
+ clip: undefined,
29
+ captureBeyondViewport: true,
30
+ });
31
+ (0, perf_1.stopPerfMeasure)(cap);
32
+ if (shouldSetDefaultBackground)
33
+ await client.send('Emulation.setDefaultBackgroundColorOverride');
34
+ const saveMarker = (0, perf_1.startPerfMeasure)('save');
35
+ const buffer = Buffer.from(result.data, 'base64');
36
+ if (options.path)
37
+ await fs_1.default.promises.writeFile(options.path, buffer);
38
+ (0, perf_1.stopPerfMeasure)(saveMarker);
39
+ return buffer;
40
+ }
41
+ catch (err) {
42
+ if (err.message.includes('Unable to capture screenshot')) {
43
+ const errMessage = [
44
+ 'Could not take a screenshot because Google Chrome ran out of memory or disk space.',
45
+ ((_a = process === null || process === void 0 ? void 0 : process.env) === null || _a === void 0 ? void 0 : _a.__RESERVED_IS_INSIDE_REMOTION_LAMBDA)
46
+ ? 'Deploy a new Lambda function with more memory or disk space.'
47
+ : 'Decrease the concurrency to use less RAM.',
48
+ ].join(' ');
49
+ throw new Error(errMessage);
50
+ }
51
+ throw err;
52
+ }
38
53
  };
39
54
  exports._screenshotTask = _screenshotTask;
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -1,12 +1,13 @@
1
1
  import type { RenderMediaOnDownload } from './assets/download-and-map-assets-to-file';
2
+ import type { DownloadMap } from './assets/download-map';
2
3
  import type { FfmpegExecutable } from './ffmpeg-executable';
3
4
  export declare const serveStatic: (path: string | null, options: {
4
5
  port: number | null;
5
6
  ffmpegExecutable: FfmpegExecutable;
6
7
  ffprobeExecutable: FfmpegExecutable;
7
- downloadDir: string;
8
8
  onDownload: RenderMediaOnDownload;
9
9
  onError: (err: Error) => void;
10
+ downloadMap: DownloadMap;
10
11
  }) => Promise<{
11
12
  port: number;
12
13
  close: () => Promise<void>;
@@ -14,11 +14,12 @@ const serveStatic = async (path, options) => {
14
14
  const offthreadRequest = (0, offthread_video_server_1.startOffthreadVideoServer)({
15
15
  ffmpegExecutable: options.ffmpegExecutable,
16
16
  ffprobeExecutable: options.ffprobeExecutable,
17
- downloadDir: options.downloadDir,
18
17
  onDownload: options.onDownload,
19
18
  onError: options.onError,
19
+ downloadMap: options.downloadMap,
20
20
  });
21
21
  try {
22
+ const connections = {};
22
23
  const server = http_1.default
23
24
  .createServer((request, response) => {
24
25
  var _a;
@@ -38,8 +39,20 @@ const serveStatic = async (path, options) => {
38
39
  });
39
40
  })
40
41
  .listen(port);
42
+ server.on('connection', (conn) => {
43
+ const key = conn.remoteAddress + ':' + conn.remotePort;
44
+ connections[key] = conn;
45
+ conn.on('close', () => {
46
+ delete connections[key];
47
+ });
48
+ });
49
+ const destroyConnections = function () {
50
+ for (const key in connections)
51
+ connections[key].destroy();
52
+ };
41
53
  const close = () => {
42
54
  return new Promise((resolve, reject) => {
55
+ destroyConnections();
43
56
  server.close((err) => {
44
57
  if (err) {
45
58
  if (err.code === 'ERR_SERVER_NOT_RUNNING') {
@@ -1,5 +1,5 @@
1
1
  import type { Page } from './browser/BrowserPage';
2
- export declare const setPropsAndEnv: ({ inputProps, envVariables, page, serveUrl, initialFrame, timeoutInMilliseconds, proxyPort, retriesRemaining, }: {
2
+ export declare const setPropsAndEnv: ({ inputProps, envVariables, page, serveUrl, initialFrame, timeoutInMilliseconds, proxyPort, retriesRemaining, audioEnabled, videoEnabled, }: {
3
3
  inputProps: unknown;
4
4
  envVariables: Record<string, string> | undefined;
5
5
  page: Page;
@@ -8,4 +8,6 @@ export declare const setPropsAndEnv: ({ inputProps, envVariables, page, serveUrl
8
8
  timeoutInMilliseconds: number | undefined;
9
9
  proxyPort: number;
10
10
  retriesRemaining: number;
11
+ audioEnabled: boolean;
12
+ videoEnabled: boolean;
11
13
  }) => Promise<void>;
@@ -1,11 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.setPropsAndEnv = void 0;
4
+ const version_1 = require("remotion/version");
4
5
  const TimeoutSettings_1 = require("./browser/TimeoutSettings");
5
6
  const normalize_serve_url_1 = require("./normalize-serve-url");
6
7
  const puppeteer_evaluate_1 = require("./puppeteer-evaluate");
7
8
  const validate_puppeteer_timeout_1 = require("./validate-puppeteer-timeout");
8
- const setPropsAndEnv = async ({ inputProps, envVariables, page, serveUrl, initialFrame, timeoutInMilliseconds, proxyPort, retriesRemaining, }) => {
9
+ const setPropsAndEnv = async ({ inputProps, envVariables, page, serveUrl, initialFrame, timeoutInMilliseconds, proxyPort, retriesRemaining, audioEnabled, videoEnabled, }) => {
9
10
  (0, validate_puppeteer_timeout_1.validatePuppeteerTimeout)(timeoutInMilliseconds);
10
11
  const actualTimeout = timeoutInMilliseconds !== null && timeoutInMilliseconds !== void 0 ? timeoutInMilliseconds : TimeoutSettings_1.DEFAULT_TIMEOUT;
11
12
  page.setDefaultTimeout(actualTimeout);
@@ -13,23 +14,29 @@ const setPropsAndEnv = async ({ inputProps, envVariables, page, serveUrl, initia
13
14
  const urlToVisit = (0, normalize_serve_url_1.normalizeServeUrl)(serveUrl);
14
15
  await page.evaluateOnNewDocument((timeout) => {
15
16
  window.remotion_puppeteerTimeout = timeout;
16
- }, [actualTimeout]);
17
+ }, actualTimeout);
17
18
  if (inputProps) {
18
19
  await page.evaluateOnNewDocument((input) => {
19
20
  window.remotion_inputProps = input;
20
- }, [JSON.stringify(inputProps)]);
21
+ }, JSON.stringify(inputProps));
21
22
  }
22
23
  if (envVariables) {
23
24
  await page.evaluateOnNewDocument((input) => {
24
25
  window.remotion_envVariables = input;
25
- }, [JSON.stringify(envVariables)]);
26
+ }, JSON.stringify(envVariables));
26
27
  }
27
28
  await page.evaluateOnNewDocument((key) => {
28
29
  window.remotion_initialFrame = key;
29
- }, [initialFrame]);
30
+ }, initialFrame);
30
31
  await page.evaluateOnNewDocument((port) => {
31
32
  window.remotion_proxyPort = port;
32
- }, [proxyPort]);
33
+ }, proxyPort);
34
+ await page.evaluateOnNewDocument((enabled) => {
35
+ window.remotion_audioEnabled = enabled;
36
+ }, audioEnabled);
37
+ await page.evaluateOnNewDocument((enabled) => {
38
+ window.remotion_videoEnabled = enabled;
39
+ }, videoEnabled);
33
40
  const pageRes = await page.goto(urlToVisit);
34
41
  if (pageRes === null) {
35
42
  throw new Error(`Visited "${urlToVisit}" but got no response.`);
@@ -52,6 +59,8 @@ const setPropsAndEnv = async ({ inputProps, envVariables, page, serveUrl, initia
52
59
  retriesRemaining: retriesRemaining - 1,
53
60
  serveUrl,
54
61
  timeoutInMilliseconds,
62
+ audioEnabled,
63
+ videoEnabled,
55
64
  });
56
65
  }
57
66
  if (status !== 200 &&
@@ -82,8 +91,25 @@ const setPropsAndEnv = async ({ inputProps, envVariables, page, serveUrl, initia
82
91
  frame: null,
83
92
  page,
84
93
  });
85
- if (siteVersion !== '3') {
86
- throw new Error(`Incompatible site: When visiting ${urlToVisit}, a bundle was found, but one that is not compatible with this version of Remotion. The bundle format changed in version 3.0.11. To resolve this error, please bundle and deploy again.`);
94
+ const remotionVersion = await (0, puppeteer_evaluate_1.puppeteerEvaluateWithCatch)({
95
+ pageFunction: () => {
96
+ return window.remotion_version;
97
+ },
98
+ args: [],
99
+ frame: null,
100
+ page,
101
+ });
102
+ const requiredVersion = '4';
103
+ if (siteVersion !== requiredVersion) {
104
+ throw new Error(`Incompatible site: When visiting ${urlToVisit}, a bundle was found, but one that is not compatible with this version of Remotion. Found version: ${siteVersion} - Required version: ${requiredVersion}. To resolve this error, please bundle and deploy again.`);
105
+ }
106
+ if (remotionVersion !== version_1.VERSION && process.env.NODE_ENV !== 'test') {
107
+ if (remotionVersion) {
108
+ console.warn(`The site was bundled with version ${remotionVersion} of @remotion/bundler, while @remotion/renderer is on version ${version_1.VERSION}. You may not have the newest bugfixes and features. Re-bundle the site to fix this issue.`);
109
+ }
110
+ else {
111
+ console.warn(`The site was bundled with an old version of Remotion, while @remotion/renderer is on version ${version_1.VERSION}. You may not have the newest bugfixes and features. Re-bundle the site to fix this issue.`);
112
+ }
87
113
  }
88
114
  };
89
115
  exports.setPropsAndEnv = setPropsAndEnv;
@@ -1,13 +1,16 @@
1
1
  /// <reference types="node" />
2
- import type { RenderAssetInfo } from 'remotion';
3
2
  import type { RenderMediaOnDownload } from './assets/download-and-map-assets-to-file';
3
+ import type { RenderAssetInfo } from './assets/download-map';
4
4
  import type { Codec } from './codec';
5
5
  import type { FfmpegExecutable } from './ffmpeg-executable';
6
+ import type { FfmpegOverrideFn } from './ffmpeg-override';
6
7
  import type { ImageFormat } from './image-format';
7
8
  import type { CancelSignal } from './make-cancel-signal';
8
9
  import type { PixelFormat } from './pixel-format';
9
10
  import type { ProResProfile } from './prores-profile';
10
11
  export declare type StitcherOptions = {
12
+ audioBitrate?: string | null;
13
+ videoBitrate?: string | null;
11
14
  fps: number;
12
15
  width: number;
13
16
  height: number;
@@ -30,11 +33,8 @@ export declare type StitcherOptions = {
30
33
  preEncodedFileLocation: string | null;
31
34
  imageFormat: ImageFormat;
32
35
  };
36
+ muted?: boolean;
37
+ enforceAudioTrack?: boolean;
38
+ ffmpegOverride?: FfmpegOverrideFn;
33
39
  };
34
- declare type ReturnType = {
35
- task: Promise<Buffer | null>;
36
- getLogs: () => string;
37
- };
38
- export declare const spawnFfmpeg: (options: StitcherOptions) => Promise<ReturnType>;
39
40
  export declare const stitchFramesToVideo: (options: StitcherOptions) => Promise<Buffer | null>;
40
- export {};