@remotion/renderer 3.0.14 → 3.0.15

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 (193) hide show
  1. package/dist/abort.d.ts +7 -0
  2. package/dist/abort.js +20 -0
  3. package/dist/cancel.d.ts +7 -0
  4. package/dist/cancel.js +25 -0
  5. package/dist/combine-videos.d.ts +2 -1
  6. package/dist/combine-videos.js +3 -1
  7. package/dist/cycle-browser-tabs.d.ts +2 -1
  8. package/dist/cycle-browser-tabs.js +9 -2
  9. package/dist/get-compositions.js +1 -0
  10. package/dist/index.d.ts +2 -1
  11. package/dist/index.js +3 -1
  12. package/dist/make-cancel-signal.d.ts +7 -0
  13. package/dist/make-cancel-signal.js +25 -0
  14. package/dist/merge-audio-track.js +2 -2
  15. package/dist/offthread/index.d.ts +0 -0
  16. package/dist/offthread/index.js +1 -0
  17. package/dist/open-browser.js +1 -1
  18. package/dist/prespawn-ffmpeg.d.ts +2 -0
  19. package/dist/prespawn-ffmpeg.js +3 -0
  20. package/dist/render-frames.d.ts +2 -0
  21. package/dist/render-frames.js +73 -35
  22. package/dist/render-media.d.ts +3 -1
  23. package/dist/render-media.js +101 -57
  24. package/dist/render-still.d.ts +4 -2
  25. package/dist/render-still.js +22 -9
  26. package/dist/serve-static.js +3 -0
  27. package/dist/set-props-and-env.d.ts +2 -1
  28. package/dist/set-props-and-env.js +20 -1
  29. package/dist/stitch-frames-to-video.d.ts +3 -1
  30. package/dist/stitch-frames-to-video.js +27 -14
  31. package/package.json +3 -3
  32. package/dist/assets/calculate-asset-positions.d.ts.map +0 -1
  33. package/dist/assets/calculate-asset-positions.js.map +0 -1
  34. package/dist/assets/calculate-atempo.d.ts.map +0 -1
  35. package/dist/assets/calculate-atempo.js.map +0 -1
  36. package/dist/assets/convert-assets-to-file-urls.d.ts.map +0 -1
  37. package/dist/assets/convert-assets-to-file-urls.js.map +0 -1
  38. package/dist/assets/download-and-map-assets-to-file.d.ts.map +0 -1
  39. package/dist/assets/download-and-map-assets-to-file.js.map +0 -1
  40. package/dist/assets/download-file.d.ts.map +0 -1
  41. package/dist/assets/download-file.js.map +0 -1
  42. package/dist/assets/ffmpeg-volume-expression.d.ts.map +0 -1
  43. package/dist/assets/ffmpeg-volume-expression.js.map +0 -1
  44. package/dist/assets/flatten-volume-array.d.ts.map +0 -1
  45. package/dist/assets/flatten-volume-array.js.map +0 -1
  46. package/dist/assets/get-audio-channels.d.ts.map +0 -1
  47. package/dist/assets/get-audio-channels.js.map +0 -1
  48. package/dist/assets/read-file.d.ts.map +0 -1
  49. package/dist/assets/read-file.js.map +0 -1
  50. package/dist/assets/round-volume-to-avoid-stack-overflow.d.ts.map +0 -1
  51. package/dist/assets/round-volume-to-avoid-stack-overflow.js.map +0 -1
  52. package/dist/assets/sanitize-filename.d.ts.map +0 -1
  53. package/dist/assets/sanitize-filename.js.map +0 -1
  54. package/dist/assets/sanitize-filepath.d.ts.map +0 -1
  55. package/dist/assets/sanitize-filepath.js.map +0 -1
  56. package/dist/assets/truncate-utf8-bytes.d.ts.map +0 -1
  57. package/dist/assets/truncate-utf8-bytes.js.map +0 -1
  58. package/dist/assets/types.d.ts.map +0 -1
  59. package/dist/assets/types.js.map +0 -1
  60. package/dist/browser-log.d.ts.map +0 -1
  61. package/dist/browser-log.js.map +0 -1
  62. package/dist/calculate-ffmpeg-filters.d.ts.map +0 -1
  63. package/dist/calculate-ffmpeg-filters.js.map +0 -1
  64. package/dist/can-use-parallel-encoding.d.ts.map +0 -1
  65. package/dist/can-use-parallel-encoding.js.map +0 -1
  66. package/dist/chunk.d.ts.map +0 -1
  67. package/dist/chunk.js.map +0 -1
  68. package/dist/combine-videos.d.ts.map +0 -1
  69. package/dist/combine-videos.js.map +0 -1
  70. package/dist/convert-to-pcm.d.ts.map +0 -1
  71. package/dist/convert-to-pcm.js.map +0 -1
  72. package/dist/create-ffmpeg-complex-filter.d.ts.map +0 -1
  73. package/dist/create-ffmpeg-complex-filter.js.map +0 -1
  74. package/dist/create-ffmpeg-merge-filter.d.ts.map +0 -1
  75. package/dist/create-ffmpeg-merge-filter.js.map +0 -1
  76. package/dist/create-silent-audio.d.ts.map +0 -1
  77. package/dist/create-silent-audio.js.map +0 -1
  78. package/dist/cycle-browser-tabs.d.ts.map +0 -1
  79. package/dist/cycle-browser-tabs.js.map +0 -1
  80. package/dist/delay-render-embedded-stack.d.ts.map +0 -1
  81. package/dist/delay-render-embedded-stack.js.map +0 -1
  82. package/dist/delete-directory.d.ts.map +0 -1
  83. package/dist/delete-directory.js.map +0 -1
  84. package/dist/ensure-frames-in-order.d.ts.map +0 -1
  85. package/dist/ensure-frames-in-order.js.map +0 -1
  86. package/dist/ensure-output-directory.d.ts.map +0 -1
  87. package/dist/ensure-output-directory.js.map +0 -1
  88. package/dist/error-handling/handle-javascript-exception.d.ts.map +0 -1
  89. package/dist/error-handling/handle-javascript-exception.js.map +0 -1
  90. package/dist/error-handling/symbolicate-error.d.ts.map +0 -1
  91. package/dist/error-handling/symbolicate-error.js.map +0 -1
  92. package/dist/error-handling/symbolicateable-error.d.ts.map +0 -1
  93. package/dist/error-handling/symbolicateable-error.js.map +0 -1
  94. package/dist/ffmpeg-filter-file.d.ts.map +0 -1
  95. package/dist/ffmpeg-filter-file.js.map +0 -1
  96. package/dist/ffmpeg-flags.d.ts.map +0 -1
  97. package/dist/ffmpeg-flags.js.map +0 -1
  98. package/dist/get-audio-codec-name.d.ts.map +0 -1
  99. package/dist/get-audio-codec-name.js.map +0 -1
  100. package/dist/get-browser-instance.d.ts.map +0 -1
  101. package/dist/get-browser-instance.js.map +0 -1
  102. package/dist/get-codec-name.d.ts.map +0 -1
  103. package/dist/get-codec-name.js.map +0 -1
  104. package/dist/get-compositions.d.ts.map +0 -1
  105. package/dist/get-compositions.js.map +0 -1
  106. package/dist/get-concurrency.d.ts.map +0 -1
  107. package/dist/get-concurrency.js.map +0 -1
  108. package/dist/get-duration-from-frame-range.d.ts.map +0 -1
  109. package/dist/get-duration-from-frame-range.js.map +0 -1
  110. package/dist/get-extension-from-codec.d.ts.map +0 -1
  111. package/dist/get-extension-from-codec.js.map +0 -1
  112. package/dist/get-frame-to-render.d.ts.map +0 -1
  113. package/dist/get-frame-to-render.js.map +0 -1
  114. package/dist/get-local-browser-executable.d.ts.map +0 -1
  115. package/dist/get-local-browser-executable.js.map +0 -1
  116. package/dist/get-port.d.ts.map +0 -1
  117. package/dist/get-port.js.map +0 -1
  118. package/dist/get-prores-profile-name.d.ts.map +0 -1
  119. package/dist/get-prores-profile-name.js.map +0 -1
  120. package/dist/image-format.d.ts.map +0 -1
  121. package/dist/image-format.js.map +0 -1
  122. package/dist/index.d.ts.map +0 -1
  123. package/dist/index.js.map +0 -1
  124. package/dist/is-serve-url.d.ts.map +0 -1
  125. package/dist/is-serve-url.js.map +0 -1
  126. package/dist/legacy-webpack-config.d.ts.map +0 -1
  127. package/dist/legacy-webpack-config.js.map +0 -1
  128. package/dist/make-assets-download-dir.d.ts.map +0 -1
  129. package/dist/make-assets-download-dir.js.map +0 -1
  130. package/dist/merge-audio-track.d.ts.map +0 -1
  131. package/dist/merge-audio-track.js.map +0 -1
  132. package/dist/normalize-serve-url.d.ts.map +0 -1
  133. package/dist/normalize-serve-url.js.map +0 -1
  134. package/dist/open-browser.d.ts.map +0 -1
  135. package/dist/open-browser.js.map +0 -1
  136. package/dist/p-limit.d.ts.map +0 -1
  137. package/dist/p-limit.js.map +0 -1
  138. package/dist/parse-browser-error-stack.d.ts.map +0 -1
  139. package/dist/parse-browser-error-stack.js.map +0 -1
  140. package/dist/parse-ffmpeg-progress.d.ts.map +0 -1
  141. package/dist/parse-ffmpeg-progress.js.map +0 -1
  142. package/dist/pool.d.ts.map +0 -1
  143. package/dist/pool.js.map +0 -1
  144. package/dist/prepare-server.d.ts.map +0 -1
  145. package/dist/prepare-server.js.map +0 -1
  146. package/dist/preprocess-audio-track.d.ts.map +0 -1
  147. package/dist/preprocess-audio-track.js.map +0 -1
  148. package/dist/prespawn-ffmpeg.d.ts.map +0 -1
  149. package/dist/prespawn-ffmpeg.js.map +0 -1
  150. package/dist/provide-screenshot.d.ts.map +0 -1
  151. package/dist/provide-screenshot.js.map +0 -1
  152. package/dist/puppeteer-evaluate.d.ts.map +0 -1
  153. package/dist/puppeteer-evaluate.js.map +0 -1
  154. package/dist/puppeteer-screenshot.d.ts.map +0 -1
  155. package/dist/puppeteer-screenshot.js.map +0 -1
  156. package/dist/render-frames.d.ts.map +0 -1
  157. package/dist/render-frames.js.map +0 -1
  158. package/dist/render-media.d.ts.map +0 -1
  159. package/dist/render-media.js.map +0 -1
  160. package/dist/render-still.d.ts.map +0 -1
  161. package/dist/render-still.js.map +0 -1
  162. package/dist/resolve-asset-src.d.ts.map +0 -1
  163. package/dist/resolve-asset-src.js.map +0 -1
  164. package/dist/sample-rate.d.ts.map +0 -1
  165. package/dist/sample-rate.js.map +0 -1
  166. package/dist/screenshot-dom-element.d.ts.map +0 -1
  167. package/dist/screenshot-dom-element.js.map +0 -1
  168. package/dist/screenshot-task.d.ts.map +0 -1
  169. package/dist/screenshot-task.js.map +0 -1
  170. package/dist/seek-to-frame.d.ts.map +0 -1
  171. package/dist/seek-to-frame.js.map +0 -1
  172. package/dist/serve-static.d.ts.map +0 -1
  173. package/dist/serve-static.js.map +0 -1
  174. package/dist/set-props-and-env.d.ts.map +0 -1
  175. package/dist/set-props-and-env.js.map +0 -1
  176. package/dist/stitch-frames-to-video.d.ts.map +0 -1
  177. package/dist/stitch-frames-to-video.js.map +0 -1
  178. package/dist/stringify-ffmpeg-filter.d.ts.map +0 -1
  179. package/dist/stringify-ffmpeg-filter.js.map +0 -1
  180. package/dist/symbolicate-stacktrace.d.ts.map +0 -1
  181. package/dist/symbolicate-stacktrace.js.map +0 -1
  182. package/dist/tmp-dir.d.ts.map +0 -1
  183. package/dist/tmp-dir.js.map +0 -1
  184. package/dist/types.d.ts.map +0 -1
  185. package/dist/types.js.map +0 -1
  186. package/dist/validate-even-dimensions-with-codec.d.ts.map +0 -1
  187. package/dist/validate-even-dimensions-with-codec.js.map +0 -1
  188. package/dist/validate-ffmpeg.d.ts.map +0 -1
  189. package/dist/validate-ffmpeg.js.map +0 -1
  190. package/dist/validate-puppeteer-timeout.d.ts.map +0 -1
  191. package/dist/validate-puppeteer-timeout.js.map +0 -1
  192. package/dist/validate-scale.d.ts.map +0 -1
  193. package/dist/validate-scale.js.map +0 -1
@@ -16,6 +16,7 @@ const get_extension_from_codec_1 = require("./get-extension-from-codec");
16
16
  const get_extension_of_filename_1 = require("./get-extension-of-filename");
17
17
  const get_frame_to_render_1 = require("./get-frame-to-render");
18
18
  const legacy_webpack_config_1 = require("./legacy-webpack-config");
19
+ const make_cancel_signal_1 = require("./make-cancel-signal");
19
20
  const prespawn_ffmpeg_1 = require("./prespawn-ffmpeg");
20
21
  const render_frames_1 = require("./render-frames");
21
22
  const stitch_frames_to_video_1 = require("./stitch-frames-to-video");
@@ -23,8 +24,7 @@ const tmp_dir_1 = require("./tmp-dir");
23
24
  const validate_even_dimensions_with_codec_1 = require("./validate-even-dimensions-with-codec");
24
25
  const validate_output_filename_1 = require("./validate-output-filename");
25
26
  const validate_scale_1 = require("./validate-scale");
26
- const renderMedia = async ({ parallelism, proResProfile, crf, composition, imageFormat, ffmpegExecutable, inputProps, pixelFormat, codec, envVariables, quality, frameRange, puppeteerInstance, outputLocation, onProgress, overwrite, onDownload, dumpBrowserLogs, onBrowserLog, onStart, timeoutInMilliseconds, chromiumOptions, scale, browserExecutable, port, ...options }) => {
27
- var _a;
27
+ const renderMedia = ({ parallelism, proResProfile, crf, composition, imageFormat, ffmpegExecutable, inputProps, pixelFormat, codec, envVariables, quality, frameRange, puppeteerInstance, outputLocation, onProgress, overwrite, onDownload, dumpBrowserLogs, onBrowserLog, onStart, timeoutInMilliseconds, chromiumOptions, scale, browserExecutable, port, cancelSignal, ...options }) => {
28
28
  remotion_1.Internals.validateQuality(quality);
29
29
  if (typeof crf !== 'undefined' && crf !== null) {
30
30
  remotion_1.Internals.validateSelectedCrfAndCodecCombination(crf, codec);
@@ -39,6 +39,7 @@ const renderMedia = async ({ parallelism, proResProfile, crf, composition, image
39
39
  let renderedFrames = 0;
40
40
  let renderedDoneIn = null;
41
41
  let encodedDoneIn = null;
42
+ let cancelled = false;
42
43
  const renderStart = Date.now();
43
44
  const tmpdir = (0, tmp_dir_1.tmpDir)('pre-encode');
44
45
  const parallelEncoding = (0, can_use_parallel_encoding_1.canUseParallelEncoding)(codec);
@@ -48,23 +49,31 @@ const renderMedia = async ({ parallelism, proResProfile, crf, composition, image
48
49
  : null;
49
50
  const outputDir = parallelEncoding
50
51
  ? null
51
- : await fs_1.default.promises.mkdtemp(path_1.default.join(os_1.default.tmpdir(), 'react-motion-render'));
52
+ : fs_1.default.mkdtempSync(path_1.default.join(os_1.default.tmpdir(), 'react-motion-render'));
52
53
  (0, validate_even_dimensions_with_codec_1.validateEvenDimensionsWithCodec)({
53
54
  codec,
54
55
  height: composition.height,
55
56
  scale: scale !== null && scale !== void 0 ? scale : 1,
56
57
  width: composition.width,
57
58
  });
58
- try {
59
- const callUpdate = () => {
60
- onProgress === null || onProgress === void 0 ? void 0 : onProgress({
61
- encodedDoneIn,
62
- encodedFrames,
63
- renderedDoneIn,
64
- renderedFrames,
65
- stitchStage,
66
- });
67
- };
59
+ const callUpdate = () => {
60
+ onProgress === null || onProgress === void 0 ? void 0 : onProgress({
61
+ encodedDoneIn,
62
+ encodedFrames,
63
+ renderedDoneIn,
64
+ renderedFrames,
65
+ stitchStage,
66
+ });
67
+ };
68
+ const realFrameRange = (0, get_frame_to_render_1.getRealFrameRange)(composition.durationInFrames, frameRange !== null && frameRange !== void 0 ? frameRange : null);
69
+ const cancelRenderFrames = (0, make_cancel_signal_1.makeCancelSignal)();
70
+ const cancelPrestitcher = (0, make_cancel_signal_1.makeCancelSignal)();
71
+ const cancelStitcher = (0, make_cancel_signal_1.makeCancelSignal)();
72
+ cancelSignal === null || cancelSignal === void 0 ? void 0 : cancelSignal(() => {
73
+ cancelRenderFrames.cancel();
74
+ });
75
+ const { waitForRightTimeOfFrameToBeInserted, setFrameToStitch, waitForFinish } = (0, ensure_frames_in_order_1.ensureFramesInOrder)(realFrameRange);
76
+ const createPrestitcherIfNecessary = async () => {
68
77
  if (preEncodedFileLocation) {
69
78
  preStitcher = await (0, prespawn_ffmpeg_1.prespawnFfmpeg)({
70
79
  width: composition.width * (scale !== null && scale !== void 0 ? scale : 1),
@@ -82,12 +91,27 @@ const renderMedia = async ({ parallelism, proResProfile, crf, composition, image
82
91
  verbose: remotion_1.Internals.Logging.isEqualOrBelowLogLevel(remotion_1.Internals.Logging.getLogLevel(), 'verbose'),
83
92
  ffmpegExecutable,
84
93
  imageFormat: actualImageFormat,
94
+ signal: cancelPrestitcher.cancelSignal,
85
95
  });
86
96
  stitcherFfmpeg = preStitcher.task;
87
97
  }
88
- const realFrameRange = (0, get_frame_to_render_1.getRealFrameRange)(composition.durationInFrames, frameRange !== null && frameRange !== void 0 ? frameRange : null);
89
- const { waitForRightTimeOfFrameToBeInserted, setFrameToStitch, waitForFinish, } = (0, ensure_frames_in_order_1.ensureFramesInOrder)(realFrameRange);
90
- const { assetsInfo } = await (0, render_frames_1.renderFrames)({
98
+ };
99
+ const waitForPrestitcherIfNecessary = async () => {
100
+ var _a;
101
+ if (stitcherFfmpeg) {
102
+ await waitForFinish();
103
+ (_a = stitcherFfmpeg === null || stitcherFfmpeg === void 0 ? void 0 : stitcherFfmpeg.stdin) === null || _a === void 0 ? void 0 : _a.end();
104
+ try {
105
+ await stitcherFfmpeg;
106
+ }
107
+ catch (err) {
108
+ throw new Error(preStitcher === null || preStitcher === void 0 ? void 0 : preStitcher.getLogs());
109
+ }
110
+ }
111
+ };
112
+ const happyPath = createPrestitcherIfNecessary()
113
+ .then(() => {
114
+ const renderFramesProc = (0, render_frames_1.renderFrames)({
91
115
  config: composition,
92
116
  onFrameUpdate: (frame) => {
93
117
  renderedFrames = frame;
@@ -110,6 +134,9 @@ const renderMedia = async ({ parallelism, proResProfile, crf, composition, image
110
134
  ? async (buffer, frame) => {
111
135
  var _a;
112
136
  await waitForRightTimeOfFrameToBeInserted(frame);
137
+ if (cancelled) {
138
+ return;
139
+ }
113
140
  (_a = stitcherFfmpeg === null || stitcherFfmpeg === void 0 ? void 0 : stitcherFfmpeg.stdin) === null || _a === void 0 ? void 0 : _a.write(buffer);
114
141
  setFrameToStitch(frame + 1);
115
142
  }
@@ -124,55 +151,62 @@ const renderMedia = async ({ parallelism, proResProfile, crf, composition, image
124
151
  ffmpegExecutable,
125
152
  browserExecutable,
126
153
  port,
154
+ cancelSignal: cancelRenderFrames.cancelSignal,
127
155
  });
128
- if (stitcherFfmpeg) {
129
- await waitForFinish();
130
- (_a = stitcherFfmpeg === null || stitcherFfmpeg === void 0 ? void 0 : stitcherFfmpeg.stdin) === null || _a === void 0 ? void 0 : _a.end();
131
- try {
132
- await stitcherFfmpeg;
133
- }
134
- catch (err) {
135
- throw new Error(preStitcher === null || preStitcher === void 0 ? void 0 : preStitcher.getLogs());
136
- }
137
- }
156
+ return renderFramesProc;
157
+ })
158
+ .then((renderFramesReturn) => {
159
+ return Promise.all([renderFramesReturn, waitForPrestitcherIfNecessary()]);
160
+ })
161
+ .then(([{ assetsInfo }]) => {
138
162
  renderedDoneIn = Date.now() - renderStart;
139
163
  callUpdate();
140
164
  (0, ensure_output_directory_1.ensureOutputDirectory)(outputLocation);
141
165
  const stitchStart = Date.now();
142
- await (0, stitch_frames_to_video_1.stitchFramesToVideo)({
143
- width: composition.width * (scale !== null && scale !== void 0 ? scale : 1),
144
- height: composition.height * (scale !== null && scale !== void 0 ? scale : 1),
145
- fps: composition.fps,
146
- outputLocation,
147
- internalOptions: {
148
- preEncodedFileLocation,
149
- imageFormat: actualImageFormat,
150
- },
151
- force: overwrite !== null && overwrite !== void 0 ? overwrite : remotion_1.Internals.DEFAULT_OVERWRITE,
152
- pixelFormat,
153
- codec,
154
- proResProfile,
155
- crf,
156
- assetsInfo,
157
- ffmpegExecutable,
158
- onProgress: (frame) => {
159
- stitchStage = 'muxing';
160
- encodedFrames = frame;
161
- callUpdate();
162
- },
163
- onDownload,
164
- verbose: remotion_1.Internals.Logging.isEqualOrBelowLogLevel(remotion_1.Internals.Logging.getLogLevel(), 'verbose'),
165
- dir: outputDir !== null && outputDir !== void 0 ? outputDir : undefined,
166
- });
166
+ return Promise.all([
167
+ (0, stitch_frames_to_video_1.stitchFramesToVideo)({
168
+ width: composition.width * (scale !== null && scale !== void 0 ? scale : 1),
169
+ height: composition.height * (scale !== null && scale !== void 0 ? scale : 1),
170
+ fps: composition.fps,
171
+ outputLocation,
172
+ internalOptions: {
173
+ preEncodedFileLocation,
174
+ imageFormat: actualImageFormat,
175
+ },
176
+ force: overwrite !== null && overwrite !== void 0 ? overwrite : remotion_1.Internals.DEFAULT_OVERWRITE,
177
+ pixelFormat,
178
+ codec,
179
+ proResProfile,
180
+ crf,
181
+ assetsInfo,
182
+ ffmpegExecutable,
183
+ onProgress: (frame) => {
184
+ stitchStage = 'muxing';
185
+ encodedFrames = frame;
186
+ callUpdate();
187
+ },
188
+ onDownload,
189
+ verbose: remotion_1.Internals.Logging.isEqualOrBelowLogLevel(remotion_1.Internals.Logging.getLogLevel(), 'verbose'),
190
+ dir: outputDir !== null && outputDir !== void 0 ? outputDir : undefined,
191
+ cancelSignal: cancelStitcher.cancelSignal,
192
+ }),
193
+ stitchStart,
194
+ ]);
195
+ })
196
+ .then(([, stitchStart]) => {
167
197
  encodedFrames = (0, get_duration_from_frame_range_1.getDurationFromFrameRange)(frameRange !== null && frameRange !== void 0 ? frameRange : null, composition.durationInFrames);
168
198
  encodedDoneIn = Date.now() - stitchStart;
169
199
  callUpdate();
170
- }
171
- catch (err) {
200
+ })
201
+ .catch((err) => {
172
202
  /**
173
203
  * When an error is thrown in renderFrames(...) (e.g., when delayRender() is used incorrectly), fs.unlinkSync(...) throws an error that the file is locked because ffmpeg is still running, and renderMedia returns it.
174
204
  * Therefore we first kill the FFMPEG process before deleting the file
175
205
  */
206
+ cancelled = true;
207
+ cancelRenderFrames.cancel();
208
+ cancelStitcher.cancel();
209
+ cancelPrestitcher.cancel();
176
210
  if (stitcherFfmpeg !== undefined && stitcherFfmpeg.exitCode === null) {
177
211
  const promise = new Promise((resolve) => {
178
212
  setTimeout(() => {
@@ -181,15 +215,25 @@ const renderMedia = async ({ parallelism, proResProfile, crf, composition, image
181
215
  stitcherFfmpeg.on('close', resolve);
182
216
  });
183
217
  stitcherFfmpeg.kill();
184
- await promise;
218
+ return promise.then(() => {
219
+ throw err;
220
+ });
185
221
  }
186
222
  throw err;
187
- }
188
- finally {
223
+ })
224
+ .finally(() => {
189
225
  if (preEncodedFileLocation !== null &&
190
226
  fs_1.default.existsSync(preEncodedFileLocation)) {
191
227
  fs_1.default.unlinkSync(preEncodedFileLocation);
192
228
  }
193
- }
229
+ });
230
+ return Promise.race([
231
+ happyPath,
232
+ new Promise((_resolve, reject) => {
233
+ cancelSignal === null || cancelSignal === void 0 ? void 0 : cancelSignal(() => {
234
+ reject(new Error('renderMedia() got cancelled'));
235
+ });
236
+ }),
237
+ ]);
194
238
  };
195
239
  exports.renderMedia = renderMedia;
@@ -1,10 +1,11 @@
1
1
  import { Browser as PuppeteerBrowser } from 'puppeteer-core';
2
- import { BrowserExecutable, FfmpegExecutable, StillImageFormat, TCompMetadata } from 'remotion';
2
+ import { BrowserExecutable, FfmpegExecutable, SmallTCompMetadata, StillImageFormat } from 'remotion';
3
3
  import { RenderMediaOnDownload } from './assets/download-and-map-assets-to-file';
4
4
  import { ServeUrlOrWebpackBundle } from './legacy-webpack-config';
5
+ import { CancelSignal } from './make-cancel-signal';
5
6
  import { ChromiumOptions } from './open-browser';
6
7
  declare type InnerStillOptions = {
7
- composition: TCompMetadata;
8
+ composition: SmallTCompMetadata;
8
9
  output: string;
9
10
  frame?: number;
10
11
  inputProps?: unknown;
@@ -19,6 +20,7 @@ declare type InnerStillOptions = {
19
20
  chromiumOptions?: ChromiumOptions;
20
21
  scale?: number;
21
22
  onDownload?: RenderMediaOnDownload;
23
+ cancelSignal?: CancelSignal;
22
24
  ffmpegExecutable?: FfmpegExecutable;
23
25
  };
24
26
  declare type RenderStillOptions = InnerStillOptions & ServeUrlOrWebpackBundle & {
@@ -42,7 +42,7 @@ const seek_to_frame_1 = require("./seek-to-frame");
42
42
  const set_props_and_env_1 = require("./set-props-and-env");
43
43
  const validate_puppeteer_timeout_1 = require("./validate-puppeteer-timeout");
44
44
  const validate_scale_1 = require("./validate-scale");
45
- const innerRenderStill = async ({ composition, quality, imageFormat = 'png', serveUrl, puppeteerInstance, dumpBrowserLogs = false, onError, inputProps, envVariables, output, frame = 0, overwrite = true, browserExecutable, timeoutInMilliseconds, chromiumOptions, scale, proxyPort, }) => {
45
+ const innerRenderStill = async ({ composition, quality, imageFormat = 'png', serveUrl, puppeteerInstance, dumpBrowserLogs = false, onError, inputProps, envVariables, output, frame = 0, overwrite = true, browserExecutable, timeoutInMilliseconds, chromiumOptions, scale, proxyPort, cancelSignal, }) => {
46
46
  remotion_1.Internals.validateDimension(composition.height, 'height', 'in the `config` object passed to `renderStill()`');
47
47
  remotion_1.Internals.validateDimension(composition.width, 'width', 'in the `config` object passed to `renderStill()`');
48
48
  remotion_1.Internals.validateFps(composition.fps, 'in the `config` object of `renderStill()`');
@@ -81,6 +81,15 @@ const innerRenderStill = async ({ composition, quality, imageFormat = 'png', ser
81
81
  height: composition.height,
82
82
  deviceScaleFactor: scale !== null && scale !== void 0 ? scale : 1,
83
83
  });
84
+ const errorCallback = (err) => {
85
+ onError(err);
86
+ cleanup();
87
+ };
88
+ const cleanUpJSException = (0, handle_javascript_exception_1.handleJavascriptException)({
89
+ page,
90
+ onError: errorCallback,
91
+ frame: null,
92
+ });
84
93
  const cleanup = async () => {
85
94
  cleanUpJSException();
86
95
  if (puppeteerInstance) {
@@ -92,14 +101,8 @@ const innerRenderStill = async ({ composition, quality, imageFormat = 'png', ser
92
101
  });
93
102
  }
94
103
  };
95
- const errorCallback = (err) => {
96
- onError(err);
104
+ cancelSignal === null || cancelSignal === void 0 ? void 0 : cancelSignal(() => {
97
105
  cleanup();
98
- };
99
- const cleanUpJSException = (0, handle_javascript_exception_1.handleJavascriptException)({
100
- page,
101
- onError: errorCallback,
102
- frame: null,
103
106
  });
104
107
  await (0, set_props_and_env_1.setPropsAndEnv)({
105
108
  inputProps,
@@ -109,6 +112,7 @@ const innerRenderStill = async ({ composition, quality, imageFormat = 'png', ser
109
112
  initialFrame: frame,
110
113
  timeoutInMilliseconds,
111
114
  proxyPort,
115
+ retriesRemaining: 2,
112
116
  });
113
117
  await (0, puppeteer_evaluate_1.puppeteerEvaluateWithCatch)({
114
118
  pageFunction: (id) => {
@@ -141,7 +145,7 @@ const renderStill = (options) => {
141
145
  const selectedServeUrl = (0, legacy_webpack_config_1.getServeUrlWithFallback)(options);
142
146
  const downloadDir = (0, make_assets_download_dir_1.makeAssetsDownloadTmpDir)();
143
147
  const onDownload = (_a = options.onDownload) !== null && _a !== void 0 ? _a : (() => () => undefined);
144
- return new Promise((resolve, reject) => {
148
+ const happyPath = new Promise((resolve, reject) => {
145
149
  var _a, _b;
146
150
  const onError = (err) => reject(err);
147
151
  let close = null;
@@ -166,5 +170,14 @@ const renderStill = (options) => {
166
170
  .catch((err) => reject(err))
167
171
  .finally(() => close === null || close === void 0 ? void 0 : close());
168
172
  });
173
+ return Promise.race([
174
+ happyPath,
175
+ new Promise((_resolve, reject) => {
176
+ var _a;
177
+ (_a = options.cancelSignal) === null || _a === void 0 ? void 0 : _a.call(options, () => {
178
+ reject(new Error('renderStill() got cancelled'));
179
+ });
180
+ }),
181
+ ]);
169
182
  };
170
183
  exports.renderStill = renderStill;
@@ -44,6 +44,9 @@ const serveStatic = async (path, options) => {
44
44
  return new Promise((resolve, reject) => {
45
45
  server.close((err) => {
46
46
  if (err) {
47
+ if (err.code === 'ERR_SERVER_NOT_RUNNING') {
48
+ return resolve();
49
+ }
47
50
  reject(err);
48
51
  }
49
52
  else {
@@ -1,5 +1,5 @@
1
1
  import { Page } from 'puppeteer-core';
2
- export declare const setPropsAndEnv: ({ inputProps, envVariables, page, serveUrl, initialFrame, timeoutInMilliseconds, proxyPort, }: {
2
+ export declare const setPropsAndEnv: ({ inputProps, envVariables, page, serveUrl, initialFrame, timeoutInMilliseconds, proxyPort, retriesRemaining, }: {
3
3
  inputProps: unknown;
4
4
  envVariables: Record<string, string> | undefined;
5
5
  page: Page;
@@ -7,4 +7,5 @@ export declare const setPropsAndEnv: ({ inputProps, envVariables, page, serveUrl
7
7
  initialFrame: number;
8
8
  timeoutInMilliseconds: number | undefined;
9
9
  proxyPort: number;
10
+ retriesRemaining: number;
10
11
  }) => Promise<void>;
@@ -5,7 +5,7 @@ const remotion_1 = require("remotion");
5
5
  const normalize_serve_url_1 = require("./normalize-serve-url");
6
6
  const puppeteer_evaluate_1 = require("./puppeteer-evaluate");
7
7
  const validate_puppeteer_timeout_1 = require("./validate-puppeteer-timeout");
8
- const setPropsAndEnv = async ({ inputProps, envVariables, page, serveUrl, initialFrame, timeoutInMilliseconds, proxyPort, }) => {
8
+ const setPropsAndEnv = async ({ inputProps, envVariables, page, serveUrl, initialFrame, timeoutInMilliseconds, proxyPort, retriesRemaining, }) => {
9
9
  (0, validate_puppeteer_timeout_1.validatePuppeteerTimeout)(timeoutInMilliseconds);
10
10
  const actualTimeout = timeoutInMilliseconds !== null && timeoutInMilliseconds !== void 0 ? timeoutInMilliseconds : remotion_1.Internals.DEFAULT_PUPPETEER_TIMEOUT;
11
11
  page.setDefaultTimeout(actualTimeout);
@@ -32,6 +32,25 @@ const setPropsAndEnv = async ({ inputProps, envVariables, page, serveUrl, initia
32
32
  }, [proxyPort]);
33
33
  const pageRes = await page.goto(urlToVisit);
34
34
  const status = pageRes.status();
35
+ // S3 in rare occasions returns a 500 or 503 error code for GET operations.
36
+ // Usually it is fixed by retrying.
37
+ if (status >= 500 && status <= 504 && retriesRemaining > 0) {
38
+ await new Promise((resolve) => {
39
+ setTimeout(() => {
40
+ resolve();
41
+ }, 2000);
42
+ });
43
+ return (0, exports.setPropsAndEnv)({
44
+ envVariables,
45
+ initialFrame,
46
+ inputProps,
47
+ page,
48
+ proxyPort,
49
+ retriesRemaining: retriesRemaining - 1,
50
+ serveUrl,
51
+ timeoutInMilliseconds,
52
+ });
53
+ }
35
54
  if (status !== 200 &&
36
55
  status !== 301 &&
37
56
  status !== 302 &&
@@ -1,5 +1,6 @@
1
1
  import { Codec, FfmpegExecutable, ImageFormat, PixelFormat, ProResProfile, RenderAssetInfo } from 'remotion';
2
2
  import { RenderMediaOnDownload } from './assets/download-and-map-assets-to-file';
3
+ import { CancelSignal } from './make-cancel-signal';
3
4
  export declare type StitcherOptions = {
4
5
  fps: number;
5
6
  width: number;
@@ -16,13 +17,14 @@ export declare type StitcherOptions = {
16
17
  verbose?: boolean;
17
18
  ffmpegExecutable?: FfmpegExecutable;
18
19
  dir?: string;
20
+ cancelSignal?: CancelSignal;
19
21
  internalOptions?: {
20
22
  preEncodedFileLocation: string | null;
21
23
  imageFormat: ImageFormat;
22
24
  };
23
25
  };
24
26
  declare type ReturnType = {
25
- task: Promise<unknown>;
27
+ task: Promise<void>;
26
28
  getLogs: () => string;
27
29
  };
28
30
  export declare const spawnFfmpeg: (options: StitcherOptions) => Promise<ReturnType>;
@@ -68,7 +68,7 @@ const getAssetsData = async ({ assets, downloadDir, onDownload, fps, expectedFra
68
68
  return outName;
69
69
  };
70
70
  const spawnFfmpeg = async (options) => {
71
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
71
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
72
72
  remotion_1.Internals.validateDimension(options.height, 'height', 'passed to `stitchFramesToVideo()`');
73
73
  remotion_1.Internals.validateDimension(options.width, 'width', 'passed to `stitchFramesToVideo()`');
74
74
  remotion_1.Internals.validateFps(options.fps, 'passed to `stitchFramesToVideo()`');
@@ -121,7 +121,7 @@ const spawnFfmpeg = async (options) => {
121
121
  if (!audioCodecName) {
122
122
  throw new TypeError('exporting audio but has no audio codec name. Report this in the Remotion repo.');
123
123
  }
124
- await (0, execa_1.default)('ffmpeg', [
124
+ const ffmpegTask = (0, execa_1.default)('ffmpeg', [
125
125
  '-i',
126
126
  audio,
127
127
  '-c:a',
@@ -129,7 +129,11 @@ const spawnFfmpeg = async (options) => {
129
129
  options.force ? '-y' : null,
130
130
  options.outputLocation,
131
131
  ].filter(remotion_1.Internals.truthy));
132
- (_h = options.onProgress) === null || _h === void 0 ? void 0 : _h.call(options, expectedFrames);
132
+ (_h = options.cancelSignal) === null || _h === void 0 ? void 0 : _h.call(options, () => {
133
+ ffmpegTask.kill();
134
+ });
135
+ await ffmpegTask;
136
+ (_j = options.onProgress) === null || _j === void 0 ? void 0 : _j.call(options, expectedFrames);
133
137
  return {
134
138
  getLogs: () => '',
135
139
  task: Promise.resolve(),
@@ -137,8 +141,8 @@ const spawnFfmpeg = async (options) => {
137
141
  }
138
142
  const ffmpegArgs = [
139
143
  ['-r', String(options.fps)],
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]]
144
+ ...(((_k = options.internalOptions) === null || _k === void 0 ? void 0 : _k.preEncodedFileLocation)
145
+ ? [['-i', (_l = options.internalOptions) === null || _l === void 0 ? void 0 : _l.preEncodedFileLocation]]
142
146
  : [
143
147
  ['-f', 'image2'],
144
148
  ['-s', `${options.width}x${options.height}`],
@@ -149,7 +153,7 @@ const spawnFfmpeg = async (options) => {
149
153
  // -c:v is the same as -vcodec as -codec:video
150
154
  // and specified the video codec.
151
155
  ['-c:v', encoderName],
152
- ...(((_l = options.internalOptions) === null || _l === void 0 ? void 0 : _l.preEncodedFileLocation)
156
+ ...(((_m = options.internalOptions) === null || _m === void 0 ? void 0 : _m.preEncodedFileLocation)
153
157
  ? []
154
158
  : [
155
159
  proResProfileName ? ['-profile:v', proResProfileName] : null,
@@ -177,12 +181,15 @@ const spawnFfmpeg = async (options) => {
177
181
  console.log(ffmpegArgs);
178
182
  }
179
183
  const ffmpegString = ffmpegArgs.flat(2).filter(Boolean);
180
- const task = (0, execa_1.default)((_m = options.ffmpegExecutable) !== null && _m !== void 0 ? _m : 'ffmpeg', ffmpegString, {
184
+ const task = (0, execa_1.default)((_o = options.ffmpegExecutable) !== null && _o !== void 0 ? _o : 'ffmpeg', ffmpegString, {
181
185
  cwd: options.dir,
182
186
  });
187
+ (_p = options.cancelSignal) === null || _p === void 0 ? void 0 : _p.call(options, () => {
188
+ task.kill();
189
+ });
183
190
  let ffmpegOutput = '';
184
191
  let isFinished = false;
185
- (_o = task.stderr) === null || _o === void 0 ? void 0 : _o.on('data', (data) => {
192
+ (_q = task.stderr) === null || _q === void 0 ? void 0 : _q.on('data', (data) => {
186
193
  var _a;
187
194
  const str = data.toString();
188
195
  ffmpegOutput += str;
@@ -204,16 +211,22 @@ const spawnFfmpeg = async (options) => {
204
211
  }
205
212
  }
206
213
  });
207
- return { task, getLogs: () => ffmpegOutput };
214
+ return { task: task.then(() => undefined), getLogs: () => ffmpegOutput };
208
215
  };
209
216
  exports.spawnFfmpeg = spawnFfmpeg;
210
217
  const stitchFramesToVideo = async (options) => {
211
218
  const { task, getLogs } = await (0, exports.spawnFfmpeg)(options);
212
- try {
213
- await task;
214
- }
215
- catch (err) {
219
+ const happyPath = task.catch(() => {
216
220
  throw new Error(getLogs());
217
- }
221
+ });
222
+ return Promise.race([
223
+ happyPath,
224
+ new Promise((_resolve, reject) => {
225
+ var _a;
226
+ (_a = options.cancelSignal) === null || _a === void 0 ? void 0 : _a.call(options, () => {
227
+ reject(new Error('stitchFramesToVideo() got cancelled'));
228
+ });
229
+ }),
230
+ ]);
218
231
  };
219
232
  exports.stitchFramesToVideo = stitchFramesToVideo;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@remotion/renderer",
3
- "version": "3.0.14",
3
+ "version": "3.0.15",
4
4
  "description": "Renderer for Remotion",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -22,7 +22,7 @@
22
22
  "dependencies": {
23
23
  "execa": "5.1.1",
24
24
  "puppeteer-core": "13.5.1",
25
- "remotion": "3.0.14",
25
+ "remotion": "3.0.15",
26
26
  "serve-handler": "6.1.3",
27
27
  "source-map": "^0.8.0-beta.0"
28
28
  },
@@ -59,5 +59,5 @@
59
59
  "publishConfig": {
60
60
  "access": "public"
61
61
  },
62
- "gitHead": "475caaea420199fcaf3c95c0da908e9208dc0e61"
62
+ "gitHead": "955b43714a53713963f862d3e9aec86de85f1ebd"
63
63
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"calculate-asset-positions.d.ts","sourceRoot":"","sources":["../../src/assets/calculate-asset-positions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,UAAU,CAAC;AAGhC,OAAO,EAAC,MAAM,EAAgD,MAAM,SAAS,CAAC;AA2B9E,eAAO,MAAM,uBAAuB,WAAY,MAAM,EAAE,EAAE,WA4CzD,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"calculate-asset-positions.js","sourceRoot":"","sources":["../../src/assets/calculate-asset-positions.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"calculate-atempo.d.ts","sourceRoot":"","sources":["../../src/assets/calculate-atempo.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,eAAe,iBAAkB,MAAM,KAAG,MAAM,GAAG,IAY/D,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"calculate-atempo.js","sourceRoot":"","sources":["../../src/assets/calculate-atempo.ts"],"names":[],"mappings":";AAAA,kCAAkC;AAClC,mFAAmF;AACnF,sUAAsU;;;AAE/T,MAAM,eAAe,GAAG,CAAC,YAAoB,EAAiB,EAAE;IACtE,IAAI,YAAY,KAAK,CAAC,EAAE;QACvB,OAAO,IAAI,CAAC;KACZ;IAED,IAAI,YAAY,IAAI,GAAG,IAAI,YAAY,IAAI,CAAC,EAAE;QAC7C,OAAO,UAAU,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;KAC3C;IAED,OAAO,GAAG,IAAA,uBAAe,EAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,IAAA,uBAAe,EACpE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CACvB,EAAE,CAAC;AACL,CAAC,CAAC;AAZW,QAAA,eAAe,mBAY1B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"convert-assets-to-file-urls.d.ts","sourceRoot":"","sources":["../../src/assets/convert-assets-to-file-urls.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,UAAU,CAAC;AAChC,OAAO,EAEN,qBAAqB,EACrB,MAAM,mCAAmC,CAAC;AAU3C,eAAO,MAAM,uBAAuB;YAK3B,MAAM,EAAE,EAAE;iBACL,MAAM;gBACP,qBAAqB;MAC9B,QAAQ,MAAM,EAAE,EAAE,CAsBrB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"convert-assets-to-file-urls.js","sourceRoot":"","sources":["../../src/assets/convert-assets-to-file-urls.ts"],"names":[],"mappings":";;;AACA,uFAG2C;AAE3C,MAAM,KAAK,GAAG,CAAI,KAAU,EAAE,IAAY,EAAE,EAAE;IAC7C,OAAO,KAAK,CAAC,MAAM,CAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;QAC7C,OAAO,GAAG,GAAG,IAAI,KAAK,CAAC;YACtB,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;IACvD,CAAC,EAAE,EAAE,CAAC,CAAC;AACR,CAAC,CAAC;AAEK,MAAM,uBAAuB,GAAG,KAAK,EAAE,EAC7C,MAAM,EACN,WAAW,EACX,UAAU,GAKV,EAAuB,EAAE;IACzB,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACnC,MAAM,OAAO,GAAiB,EAAE,CAAC;IAEjC,KAAK,MAAM,EAAE,IAAI,MAAM,EAAE;QACxB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,EAAE,CAAC,GAAG,CAAC,CAAC,cAAc,EAAE,EAAE;YACzB,OAAO,OAAO,CAAC,GAAG,CACjB,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBACxB,OAAO,IAAA,+DAA6B,EAAC;oBACpC,KAAK,EAAE,CAAC;oBACR,WAAW;oBACX,UAAU;iBACV,CAAC,CAAC;YACJ,CAAC,CAAC,CACF,CAAC;QACH,CAAC,CAAC,CACF,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACrB;IAED,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACxB,CAAC,CAAC;AA9BW,QAAA,uBAAuB,2BA8BlC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"download-and-map-assets-to-file.d.ts","sourceRoot":"","sources":["../../src/assets/download-and-map-assets-to-file.ts"],"names":[],"mappings":"AAEA,OAAO,EAAoB,MAAM,EAAC,MAAM,UAAU,CAAC;AAKnD,oBAAY,qBAAqB,GAAG,CACnC,GAAG,EAAE,MAAM,KACP,CAAC,CAAC,QAAQ,EAAE;IAAC,OAAO,EAAE,MAAM,CAAA;CAAC,KAAK,IAAI,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC;AAuHhE,eAAO,MAAM,yBAAyB,YAQrC,CAAC;AAEF,eAAO,MAAM,+BAA+B;SAItC,MAAM;iBACE,MAAM;YAqBnB,CAAC;AAEF,eAAO,MAAM,6BAA6B;WAKlC,MAAM;iBACA,MAAM;gBACP,qBAAqB;MAC9B,QAAQ,MAAM,CAcjB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"download-and-map-assets-to-file.js","sourceRoot":"","sources":["../../src/assets/download-and-map-assets-to-file.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"download-file.d.ts","sourceRoot":"","sources":["../../src/assets/download-file.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,YAAY,QACnB,MAAM,MACP,MAAM;cAGG,MAAM;gBACJ,MAAM;eACP,MAAM;MACX,IAAI;iBAGoB,MAAM;EA0BvC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"download-file.js","sourceRoot":"","sources":["../../src/assets/download-file.ts"],"names":[],"mappings":";;;AAAA,2BAAqC;AACrC,2CAAqC;AAE9B,MAAM,YAAY,GAAG,CAC3B,GAAW,EACX,EAAU,EACV,UAMY,EACX,EAAE;IACH,OAAO,IAAI,OAAO,CAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC7D,IAAA,oBAAQ,EAAC,GAAG,CAAC;aACX,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;YACb,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC;YACxD,MAAM,WAAW,GAAG,IAAA,sBAAiB,EAAC,EAAE,CAAC,CAAC;YAE1C,0CAA0C;YAC1C,uCAAuC;YACvC,6EAA6E;YAC7E,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,EAAC,WAAW,EAAE,SAAS,EAAC,CAAC,CAAC,CAAC;YACjE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAC9C,IAAI,UAAU,GAAG,CAAC,CAAC;YACnB,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YACxD,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE;gBACpB,UAAU,IAAI,CAAC,CAAC,MAAM,CAAC;gBACvB,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAG;oBACZ,UAAU;oBACV,QAAQ,EAAE,UAAU,GAAG,SAAS;oBAChC,SAAS;iBACT,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACd,MAAM,CAAC,GAAG,CAAC,CAAC;QACb,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC;AArCW,QAAA,YAAY,gBAqCvB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ffmpeg-volume-expression.d.ts","sourceRoot":"","sources":["../../src/assets/ffmpeg-volume-expression.ts"],"names":[],"mappings":"AAMA,OAAO,EAAC,WAAW,EAAC,MAAM,SAAS,CAAC;AAEpC,aAAK,UAAU,GAAG,MAAM,GAAG,OAAO,CAAC;AA8DnC,aAAK,sBAAsB,GAAG;IAC7B,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,eAAO,MAAM,sBAAsB;YAK1B,WAAW;kBACL,MAAM;SACf,MAAM;MACR,sBA+CH,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ffmpeg-volume-expression.js","sourceRoot":"","sources":["../../src/assets/ffmpeg-volume-expression.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"flatten-volume-array.d.ts","sourceRoot":"","sources":["../../src/assets/flatten-volume-array.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,WAAW,EAAE,UAAU,EAAC,MAAM,SAAS,CAAC;AAEhD,eAAO,MAAM,kBAAkB,WAAY,WAAW,KAAG,WAcxD,CAAC;AAEF,eAAO,MAAM,6BAA6B,UAClC,UAAU,KACf,UAKF,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"flatten-volume-array.js","sourceRoot":"","sources":["../../src/assets/flatten-volume-array.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,wBAAwB;AACxB,yFAAyF;;;AAIlF,MAAM,kBAAkB,GAAG,CAAC,MAAmB,EAAe,EAAE;IACtE,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;QAC/B,OAAO,MAAM,CAAC;KACd;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QACxB,MAAM,IAAI,SAAS,CAAC,0CAA0C,CAAC,CAAC;KAChE;IAED,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,EAAE;QAC/B,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;KACjB;IAED,OAAO,MAAM,CAAC;AACf,CAAC,CAAC;AAdW,QAAA,kBAAkB,sBAc7B;AAEK,MAAM,6BAA6B,GAAG,CAC5C,KAAiB,EACJ,EAAE;IACf,OAAO;QACN,GAAG,KAAK;QACR,MAAM,EAAE,IAAA,0BAAkB,EAAC,KAAK,CAAC,MAAM,CAAC;KACxC,CAAC;AACH,CAAC,CAAC;AAPW,QAAA,6BAA6B,iCAOxC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-audio-channels.d.ts","sourceRoot":"","sources":["../../src/assets/get-audio-channels.ts"],"names":[],"mappings":"AAEA,wBAAsB,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACxE,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB,CAAC,CAmBD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-audio-channels.js","sourceRoot":"","sources":["../../src/assets/get-audio-channels.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAEnB,KAAK,UAAU,2BAA2B,CAAC,IAAY;IAI7D,MAAM,IAAI,GAAG;QACZ,CAAC,IAAI,EAAE,OAAO,CAAC;QACf,CAAC,eAAe,EAAE,iCAAiC,CAAC;QACpD,CAAC,KAAK,EAAE,cAAc,CAAC;QACvB,CAAC,IAAI,CAAC;KACN;SACC,MAAM,CAAoB,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;SAC5D,MAAM,CAAC,OAAO,CAAa,CAAC;IAE9B,MAAM,IAAI,GAAG,MAAM,IAAA,eAAK,EAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAE1C,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAEzD,OAAO;QACN,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAClD,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;KACnD,CAAC;AACH,CAAC;AAtBD,kEAsBC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"read-file.d.ts","sourceRoot":"","sources":["../../src/assets/read-file.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AA2BxB,eAAO,MAAM,QAAQ,QACf,MAAM,8BAET,QAAQ,KAAK,eAAe,CAuB9B,CAAC"}