@remotion/renderer 4.0.199 → 4.0.201

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.
@@ -226,6 +226,7 @@ _NetworkManager_client = new WeakMap(), _NetworkManager_frameManager = new WeakM
226
226
  __classPrivateFieldGet(this, _NetworkManager_instances, "m", _NetworkManager_emitLoadingFailed).call(this, event);
227
227
  }
228
228
  }, _NetworkManager_emitLoadingFailed = function _NetworkManager_emitLoadingFailed(event) {
229
+ var _a;
229
230
  const request = __classPrivateFieldGet(this, _NetworkManager_networkEventManager, "f").getRequest(event.requestId);
230
231
  // For certain requestIds we never receive requestWillBeSent event.
231
232
  // @see https://crbug.com/750469
@@ -234,6 +235,13 @@ _NetworkManager_client = new WeakMap(), _NetworkManager_frameManager = new WeakM
234
235
  }
235
236
  if (!event.canceled) {
236
237
  logger_1.Log.warn({ indent: __classPrivateFieldGet(this, _NetworkManager_indent, "f"), logLevel: __classPrivateFieldGet(this, _NetworkManager_logLevel, "f") }, `Browser failed to load ${request._url} (${event.type}): ${event.errorText}`);
238
+ if (event.errorText === 'net::ERR_FAILED' &&
239
+ event.type === 'Fetch' &&
240
+ ((_a = request._url) === null || _a === void 0 ? void 0 : _a.includes('/proxy'))) {
241
+ logger_1.Log.warn({ indent: __classPrivateFieldGet(this, _NetworkManager_indent, "f"), logLevel: __classPrivateFieldGet(this, _NetworkManager_logLevel, "f") }, 'This could be caused by Chrome rejecting the request because the disk space is low.');
242
+ logger_1.Log.warn({ indent: __classPrivateFieldGet(this, _NetworkManager_indent, "f"), logLevel: __classPrivateFieldGet(this, _NetworkManager_logLevel, "f") }, 'This could be caused by Chrome rejecting the request because the disk space is low.');
243
+ logger_1.Log.warn({ indent: __classPrivateFieldGet(this, _NetworkManager_indent, "f"), logLevel: __classPrivateFieldGet(this, _NetworkManager_logLevel, "f") }, 'Consider increasing the disk size of your Lambda function.');
244
+ }
237
245
  }
238
246
  __classPrivateFieldGet(this, _NetworkManager_instances, "m", _NetworkManager_forgetRequest).call(this, request, true);
239
247
  };
@@ -66,7 +66,6 @@ const handleJavascriptException = ({ page, onError, frame, }) => {
66
66
  return;
67
67
  }
68
68
  const errorType = (_b = exception.exceptionDetails.exception) === null || _b === void 0 ? void 0 : _b.className;
69
- page.close();
70
69
  const symbolicatedErr = new symbolicateable_error_1.SymbolicateableError({
71
70
  message: removeDelayRenderStack(cleanErrorMessage),
72
71
  stackFrame: exception.exceptionDetails.stackTrace.callFrames.map((f) => callFrameToStackFrame(f)),
@@ -29,4 +29,5 @@ export declare const exampleVideos: {
29
29
  matroskaMp3: string;
30
30
  matroskaH265Aac: string;
31
31
  opusWebm: string;
32
+ avi: string;
32
33
  };
@@ -38,4 +38,5 @@ exports.exampleVideos = {
38
38
  matroskaMp3: node_path_1.default.join(examplePackage, 'public', 'matroska-mp3.mkv'),
39
39
  matroskaH265Aac: node_path_1.default.join(examplePackage, 'public', 'matroska-h265-aac.mkv'),
40
40
  opusWebm: node_path_1.default.join(examplePackage, 'public', 'opus.webm'),
41
+ avi: node_path_1.default.join(examplePackage, 'public', 'example.avi'),
41
42
  };
package/dist/index.d.ts CHANGED
@@ -70,10 +70,10 @@ export declare const RenderInternals: {
70
70
  width: number;
71
71
  height: number;
72
72
  scale: number;
73
- codec: "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "h264-ts" | "gif";
73
+ codec: "h264" | "h265" | "vp8" | "vp9" | "prores" | "aac" | "mp3" | "wav" | "h264-mkv" | "h264-ts" | "gif";
74
74
  wantsImageSequence: boolean;
75
75
  }) => void;
76
- getFileExtensionFromCodec: <T extends "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "h264-ts" | "gif">(codec: T, audioCodec: "mp3" | "aac" | "pcm-16" | "opus" | null) => import("./file-extensions").FileExtension;
76
+ getFileExtensionFromCodec: <T extends "h264" | "h265" | "vp8" | "vp9" | "prores" | "aac" | "mp3" | "wav" | "h264-mkv" | "h264-ts" | "gif">(codec: T, audioCodec: "opus" | "aac" | "mp3" | "pcm-16" | null) => import("./file-extensions").FileExtension;
77
77
  tmpDir: (str: string) => string;
78
78
  deleteDirectory: (directory: string) => void;
79
79
  isServeUrl: (potentialUrl: string) => boolean;
@@ -130,7 +130,7 @@ export declare const RenderInternals: {
130
130
  };
131
131
  registerErrorSymbolicationLock: () => number;
132
132
  unlockErrorSymbolicationLock: (id: number) => void;
133
- canUseParallelEncoding: (codec: "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "h264-ts" | "gif") => boolean;
133
+ canUseParallelEncoding: (codec: "h264" | "h265" | "vp8" | "vp9" | "prores" | "aac" | "mp3" | "wav" | "h264-mkv" | "h264-ts" | "gif") => boolean;
134
134
  mimeContentType: typeof mimeContentType;
135
135
  mimeLookup: typeof mimeLookup;
136
136
  validateConcurrency: ({ setting, value, checkIfValidForCurrentMachine, }: {
@@ -141,14 +141,14 @@ export declare const RenderInternals: {
141
141
  validPixelFormats: readonly ["yuv420p", "yuva420p", "yuv422p", "yuv444p", "yuv420p10le", "yuv422p10le", "yuv444p10le", "yuva444p10le"];
142
142
  DEFAULT_BROWSER: "chrome";
143
143
  validateFrameRange: (frameRange: import("./frame-range").FrameRange | null) => void;
144
- DEFAULT_OPENGL_RENDERER: "angle" | "swangle" | "egl" | "swiftshader" | "vulkan" | "angle-egl" | null;
145
- validateOpenGlRenderer: (option: unknown) => "angle" | "swangle" | "egl" | "swiftshader" | "vulkan" | "angle-egl" | null;
144
+ DEFAULT_OPENGL_RENDERER: "swangle" | "angle" | "egl" | "swiftshader" | "vulkan" | "angle-egl" | null;
145
+ validateOpenGlRenderer: (option: unknown) => "swangle" | "angle" | "egl" | "swiftshader" | "vulkan" | "angle-egl" | null;
146
146
  validCodecs: readonly ["h264", "h265", "vp8", "vp9", "mp3", "aac", "wav", "prores", "h264-mkv", "h264-ts", "gif"];
147
- DEFAULT_PIXEL_FORMAT: "yuv420p" | "yuva420p" | "yuv422p" | "yuv444p" | "yuv420p10le" | "yuv422p10le" | "yuv444p10le" | "yuva444p10le";
147
+ DEFAULT_PIXEL_FORMAT: "yuv420p" | "yuv422p" | "yuv444p" | "yuva420p" | "yuv420p10le" | "yuv422p10le" | "yuv444p10le" | "yuva444p10le";
148
148
  validateJpegQuality: (q: unknown) => void;
149
149
  DEFAULT_TIMEOUT: number;
150
- DEFAULT_CODEC: "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "h264-ts" | "gif";
151
- isAudioCodec: (codec: "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "h264-ts" | "gif" | null | undefined) => boolean;
150
+ DEFAULT_CODEC: "h264" | "h265" | "vp8" | "vp9" | "prores" | "aac" | "mp3" | "wav" | "h264-mkv" | "h264-ts" | "gif";
151
+ isAudioCodec: (codec: "h264" | "h265" | "vp8" | "vp9" | "prores" | "aac" | "mp3" | "wav" | "h264-mkv" | "h264-ts" | "gif" | null | undefined) => boolean;
152
152
  logLevels: readonly ["verbose", "info", "warn", "error"];
153
153
  isEqualOrBelowLogLevel: (currentLevel: "verbose" | "info" | "warn" | "error", level: "verbose" | "info" | "warn" | "error") => boolean;
154
154
  isValidLogLevel: (level: string) => boolean;
@@ -165,10 +165,10 @@ export declare const RenderInternals: {
165
165
  output: string;
166
166
  onProgress: (p: number) => void;
167
167
  numberOfFrames: number;
168
- codec: "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "h264-ts" | "gif";
168
+ codec: "h264" | "h265" | "vp8" | "vp9" | "prores" | "aac" | "mp3" | "wav" | "h264-mkv" | "h264-ts" | "gif";
169
169
  fps: number;
170
170
  numberOfGifLoops: number | null;
171
- resolvedAudioCodec: "mp3" | "aac" | "pcm-16" | "opus" | null;
171
+ resolvedAudioCodec: "opus" | "aac" | "mp3" | "pcm-16" | null;
172
172
  audioBitrate: string | null;
173
173
  indent: boolean;
174
174
  logLevel: "verbose" | "info" | "warn" | "error";
@@ -182,18 +182,18 @@ export declare const RenderInternals: {
182
182
  getMinConcurrency: () => number;
183
183
  getMaxConcurrency: () => number;
184
184
  getDefaultAudioCodec: ({ codec, preferLossless, }: {
185
- codec: "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "h264-ts" | "gif";
185
+ codec: "h264" | "h265" | "vp8" | "vp9" | "prores" | "aac" | "mp3" | "wav" | "h264-mkv" | "h264-ts" | "gif";
186
186
  preferLossless: boolean;
187
- }) => "mp3" | "aac" | "pcm-16" | "opus" | null;
187
+ }) => "opus" | "aac" | "mp3" | "pcm-16" | null;
188
188
  defaultFileExtensionMap: {
189
189
  h264: {
190
190
  default: import("./file-extensions").FileExtension;
191
191
  forAudioCodec: {
192
- mp3: {
192
+ aac: {
193
193
  possible: import("./file-extensions").FileExtension[];
194
194
  default: import("./file-extensions").FileExtension;
195
195
  };
196
- aac: {
196
+ mp3: {
197
197
  possible: import("./file-extensions").FileExtension[];
198
198
  default: import("./file-extensions").FileExtension;
199
199
  };
@@ -219,11 +219,11 @@ export declare const RenderInternals: {
219
219
  vp8: {
220
220
  default: import("./file-extensions").FileExtension;
221
221
  forAudioCodec: {
222
- "pcm-16": {
222
+ opus: {
223
223
  possible: import("./file-extensions").FileExtension[];
224
224
  default: import("./file-extensions").FileExtension;
225
225
  };
226
- opus: {
226
+ "pcm-16": {
227
227
  possible: import("./file-extensions").FileExtension[];
228
228
  default: import("./file-extensions").FileExtension;
229
229
  };
@@ -232,20 +232,20 @@ export declare const RenderInternals: {
232
232
  vp9: {
233
233
  default: import("./file-extensions").FileExtension;
234
234
  forAudioCodec: {
235
- "pcm-16": {
235
+ opus: {
236
236
  possible: import("./file-extensions").FileExtension[];
237
237
  default: import("./file-extensions").FileExtension;
238
238
  };
239
- opus: {
239
+ "pcm-16": {
240
240
  possible: import("./file-extensions").FileExtension[];
241
241
  default: import("./file-extensions").FileExtension;
242
242
  };
243
243
  };
244
244
  };
245
- mp3: {
245
+ prores: {
246
246
  default: import("./file-extensions").FileExtension;
247
247
  forAudioCodec: {
248
- mp3: {
248
+ aac: {
249
249
  possible: import("./file-extensions").FileExtension[];
250
250
  default: import("./file-extensions").FileExtension;
251
251
  };
@@ -268,22 +268,22 @@ export declare const RenderInternals: {
268
268
  };
269
269
  };
270
270
  };
271
- wav: {
271
+ mp3: {
272
272
  default: import("./file-extensions").FileExtension;
273
273
  forAudioCodec: {
274
+ mp3: {
275
+ possible: import("./file-extensions").FileExtension[];
276
+ default: import("./file-extensions").FileExtension;
277
+ };
274
278
  "pcm-16": {
275
279
  possible: import("./file-extensions").FileExtension[];
276
280
  default: import("./file-extensions").FileExtension;
277
281
  };
278
282
  };
279
283
  };
280
- prores: {
284
+ wav: {
281
285
  default: import("./file-extensions").FileExtension;
282
286
  forAudioCodec: {
283
- aac: {
284
- possible: import("./file-extensions").FileExtension[];
285
- default: import("./file-extensions").FileExtension;
286
- };
287
287
  "pcm-16": {
288
288
  possible: import("./file-extensions").FileExtension[];
289
289
  default: import("./file-extensions").FileExtension;
@@ -335,10 +335,10 @@ export declare const RenderInternals: {
335
335
  readonly vp9: readonly ["opus", "pcm-16"];
336
336
  readonly wav: readonly ["pcm-16"];
337
337
  };
338
- makeFileExtensionMap: () => Record<string, ("h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "h264-ts" | "gif")[]>;
339
- defaultCodecsForFileExtension: Record<import("./file-extensions").FileExtension, "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "h264-ts" | "gif">;
338
+ makeFileExtensionMap: () => Record<string, ("h264" | "h265" | "vp8" | "vp9" | "prores" | "aac" | "mp3" | "wav" | "h264-mkv" | "h264-ts" | "gif")[]>;
339
+ defaultCodecsForFileExtension: Record<import("./file-extensions").FileExtension, "h264" | "h265" | "vp8" | "vp9" | "prores" | "aac" | "mp3" | "wav" | "h264-mkv" | "h264-ts" | "gif">;
340
340
  getExecutablePath: ({ indent, logLevel, type, binariesDirectory, }: {
341
- type: "ffmpeg" | "ffprobe" | "compositor";
341
+ type: "compositor" | "ffmpeg" | "ffprobe";
342
342
  indent: boolean;
343
343
  logLevel: "verbose" | "info" | "warn" | "error";
344
344
  binariesDirectory: string | null;
@@ -354,8 +354,8 @@ export declare const RenderInternals: {
354
354
  }) => execa.ExecaChildProcess<string>;
355
355
  validStillImageFormats: readonly ["png", "jpeg", "pdf", "webp"];
356
356
  validVideoImageFormats: readonly ["png", "jpeg", "none"];
357
- DEFAULT_STILL_IMAGE_FORMAT: "jpeg" | "png" | "webp" | "pdf";
358
- DEFAULT_VIDEO_IMAGE_FORMAT: "jpeg" | "png" | "none";
357
+ DEFAULT_STILL_IMAGE_FORMAT: "png" | "jpeg" | "pdf" | "webp";
358
+ DEFAULT_VIDEO_IMAGE_FORMAT: "png" | "jpeg" | "none";
359
359
  DEFAULT_JPEG_QUALITY: number;
360
360
  chalk: {
361
361
  enabled: () => boolean;
@@ -453,7 +453,7 @@ export declare const RenderInternals: {
453
453
  frame: number;
454
454
  serializedInputPropsWithCustomSchema: string;
455
455
  serializedResolvedPropsWithCustomSchema: string;
456
- imageFormat: "jpeg" | "png" | "webp" | "pdf";
456
+ imageFormat: "png" | "jpeg" | "pdf" | "webp";
457
457
  jpegQuality: number;
458
458
  puppeteerInstance: HeadlessBrowser | null;
459
459
  envVariables: Record<string, string>;
@@ -754,7 +754,7 @@ export declare const RenderInternals: {
754
754
  onFrameUpdate: ((framesRendered: number, frameIndex: number, timeToRenderInMilliseconds: number) => void) | null;
755
755
  outputDir: string | null;
756
756
  envVariables: Record<string, string>;
757
- imageFormat: "jpeg" | "png" | "none";
757
+ imageFormat: "png" | "jpeg" | "none";
758
758
  jpegQuality: number;
759
759
  frameRange: import("./frame-range").FrameRange | null;
760
760
  everyNthFrame: number;
@@ -767,7 +767,7 @@ export declare const RenderInternals: {
767
767
  scale: number;
768
768
  port: number | null;
769
769
  cancelSignal: import("./make-cancel-signal").CancelSignal | undefined;
770
- composition: Omit<import("remotion").VideoConfig, "defaultProps" | "props">;
770
+ composition: Omit<import("remotion").VideoConfig, "props" | "defaultProps">;
771
771
  indent: boolean;
772
772
  server: import("./prepare-server").RemotionServer | undefined;
773
773
  muted: boolean;
@@ -909,21 +909,21 @@ export declare const RenderInternals: {
909
909
  hostsToTry: string[];
910
910
  };
911
911
  makeDownloadMap: () => import("./assets/download-map").DownloadMap;
912
- getExtensionFromAudioCodec: (audioCodec: "mp3" | "aac" | "pcm-16" | "opus") => "mp3" | "aac" | "wav" | "opus";
912
+ getExtensionFromAudioCodec: (audioCodec: "opus" | "aac" | "mp3" | "pcm-16") => "opus" | "aac" | "mp3" | "wav";
913
913
  makeFileExecutableIfItIsNot: (path: string) => void;
914
914
  resolveAudioCodec: ({ codec, setting, preferLossless, separateAudioTo, }: {
915
- setting: "mp3" | "aac" | "pcm-16" | "opus" | null;
916
- codec: "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "h264-ts" | "gif";
915
+ setting: "opus" | "aac" | "mp3" | "pcm-16" | null;
916
+ codec: "h264" | "h265" | "vp8" | "vp9" | "prores" | "aac" | "mp3" | "wav" | "h264-mkv" | "h264-ts" | "gif";
917
917
  preferLossless: boolean;
918
918
  separateAudioTo: string | null;
919
- }) => "mp3" | "aac" | "pcm-16" | "opus" | null;
919
+ }) => "opus" | "aac" | "mp3" | "pcm-16" | null;
920
920
  getShouldRenderAudio: ({ codec, assetsInfo, enforceAudioTrack, muted, }: {
921
- codec: "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "h264-ts" | "gif";
921
+ codec: "h264" | "h265" | "vp8" | "vp9" | "prores" | "aac" | "mp3" | "wav" | "h264-mkv" | "h264-ts" | "gif";
922
922
  assetsInfo: import("./assets/download-map").RenderAssetInfo | null;
923
923
  enforceAudioTrack: boolean;
924
924
  muted: boolean;
925
925
  }) => "yes" | "maybe" | "no";
926
- codecSupportsMedia: (codec: "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "h264-ts" | "gif") => {
926
+ codecSupportsMedia: (codec: "h264" | "h265" | "vp8" | "vp9" | "prores" | "aac" | "mp3" | "wav" | "h264-mkv" | "h264-ts" | "gif") => {
927
927
  video: boolean;
928
928
  audio: boolean;
929
929
  };
@@ -989,5 +989,7 @@ export declare const RenderInternals: {
989
989
  matroskaMp3: string;
990
990
  matroskaH265Aac: string;
991
991
  opusWebm: string;
992
+ avi: string;
992
993
  };
994
+ printUsefulErrorMessage: (err: Error, logLevel: "verbose" | "info" | "warn" | "error", indent: boolean) => void;
993
995
  };
package/dist/index.js CHANGED
@@ -116,6 +116,7 @@ const make_file_executable_1 = require("./compositor/make-file-executable");
116
116
  const ensure_browser_2 = require("./ensure-browser");
117
117
  const example_videos_1 = require("./example-videos");
118
118
  const audio_codec_1 = require("./options/audio-codec");
119
+ const print_useful_error_message_1 = require("./print-useful-error-message");
119
120
  const render_has_audio_1 = require("./render-has-audio");
120
121
  const to_megabytes_1 = require("./to-megabytes");
121
122
  const validate_puppeteer_timeout_1 = require("./validate-puppeteer-timeout");
@@ -208,6 +209,7 @@ exports.RenderInternals = {
208
209
  toMegabytes: to_megabytes_1.toMegabytes,
209
210
  internalEnsureBrowser: ensure_browser_2.internalEnsureBrowser,
210
211
  exampleVideos: example_videos_1.exampleVideos,
212
+ printUsefulErrorMessage: print_useful_error_message_1.printUsefulErrorMessage,
211
213
  };
212
214
  // Warn of potential performance issues with Apple Silicon (M1 chip under Rosetta)
213
215
  (0, check_version_requirements_1.checkRuntimeVersion)('info', false);
@@ -12,6 +12,7 @@ const download_map_1 = require("./assets/download-map");
12
12
  const get_bundle_url_from_serve_url_1 = require("./get-bundle-url-from-serve-url");
13
13
  const is_serve_url_1 = require("./is-serve-url");
14
14
  const logger_1 = require("./logger");
15
+ const normalize_serve_url_1 = require("./normalize-serve-url");
15
16
  const serve_static_1 = require("./serve-static");
16
17
  const symbolicate_stacktrace_1 = require("./symbolicate-stacktrace");
17
18
  const wait_for_symbolication_error_to_be_done_1 = require("./wait-for-symbolication-error-to-be-done");
@@ -30,16 +31,17 @@ const prepareServer = async ({ webpackConfigOrServeUrl, port, remotionRoot, conc
30
31
  binariesDirectory,
31
32
  forceIPv4,
32
33
  });
34
+ const normalized = (0, normalize_serve_url_1.normalizeServeUrl)(webpackConfigOrServeUrl);
33
35
  let remoteSourceMap = null;
34
- (0, symbolicate_stacktrace_1.getSourceMapFromRemoteUrl)((0, get_bundle_url_from_serve_url_1.getBundleMapUrlFromServeUrl)(webpackConfigOrServeUrl))
36
+ (0, symbolicate_stacktrace_1.getSourceMapFromRemoteUrl)((0, get_bundle_url_from_serve_url_1.getBundleMapUrlFromServeUrl)(normalized))
35
37
  .then((s) => {
36
38
  remoteSourceMap = s;
37
39
  })
38
40
  .catch((err) => {
39
- logger_1.Log.verbose({ indent, logLevel }, 'Could not fetch sourcemap for ', webpackConfigOrServeUrl, err);
41
+ logger_1.Log.verbose({ indent, logLevel }, 'Could not fetch sourcemap for ', normalized, err);
40
42
  });
41
43
  return Promise.resolve({
42
- serveUrl: webpackConfigOrServeUrl,
44
+ serveUrl: normalized,
43
45
  closeServer: () => {
44
46
  (0, download_map_1.cleanDownloadMap)(downloadMap);
45
47
  remoteSourceMap === null || remoteSourceMap === void 0 ? void 0 : remoteSourceMap.destroy();
@@ -77,5 +77,9 @@ const printUsefulErrorMessage = (err, logLevel, indent) => {
77
77
  logger_1.Log.info({ indent, logLevel }, '💡 This error might happen if using Cloud Run with credentials that have a newline at the end or are otherwise badly encoded.');
78
78
  logger_1.Log.info({ indent, logLevel }, ' https://github.com/remotion-dev/remotion/issues/3864');
79
79
  }
80
+ if (err.message.includes('Failed to fetch')) {
81
+ logger_1.Log.info({ indent, logLevel }, '💡 On Lambda, one reason this could happen is that Chrome is rejecting an asset to be loaded when it is running low on disk space.');
82
+ logger_1.Log.info({ indent, logLevel }, 'Try increasing the disk size of your Lambda function.');
83
+ }
80
84
  };
81
85
  exports.printUsefulErrorMessage = printUsefulErrorMessage;
@@ -455,7 +455,14 @@ const internalRenderMediaRaw = ({ proResProfile, x264Preset, crf, composition, s
455
455
  }, 2000);
456
456
  stitcherFfmpeg.on('close', res);
457
457
  });
458
- stitcherFfmpeg.kill();
458
+ // An exception can happen here:
459
+ // https://discord.com/channels/809501355504959528/817306238811111454/1273184655348072468
460
+ try {
461
+ stitcherFfmpeg.kill();
462
+ }
463
+ catch (e) {
464
+ // Ignore
465
+ }
459
466
  return promise.then(() => {
460
467
  reject(err);
461
468
  });
@@ -83,7 +83,7 @@ const waitForReady = ({ page, timeoutInMilliseconds, frame, indent, logLevel, })
83
83
  timeoutInMilliseconds: 5000,
84
84
  })
85
85
  .then((res) => {
86
- reject(new Error(`Timeout exceeded rendering the component${frame ? ' at frame ' + frame : ''}. ${res.value ? `Open delayRender() handles: ${res.value}` : ''}`));
86
+ reject(new Error(`Timeout (${timeoutInMilliseconds}ms) exceeded rendering the component${frame ? ' at frame ' + frame : ' initially'}. ${res.value ? `Open delayRender() handles: ${res.value}` : ''}`));
87
87
  })
88
88
  .catch((newErr) => {
89
89
  logger_1.Log.warn({ indent, logLevel }, 'Tried to get delayRender() handles for timeout, but could not do so because of', newErr);
@@ -18,7 +18,7 @@ var __toESM = (mod, isNodeMode, target) => {
18
18
  var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
19
19
  var __require = createRequire(import.meta.url);
20
20
 
21
- // /Users/jonathanburger/remotion/node_modules/.pnpm/debug@4.3.4/node_modules/ms/index.js
21
+ // /Users/jonathanburger/remotion/node_modules/.pnpm/debug@4.3.4_supports-color@5.5.0/node_modules/ms/index.js
22
22
  var require_ms = __commonJS((exports, module) => {
23
23
  var parse = function(str) {
24
24
  str = String(str);
@@ -128,7 +128,7 @@ var require_ms = __commonJS((exports, module) => {
128
128
  };
129
129
  });
130
130
 
131
- // ../../node_modules/.pnpm/debug@4.3.4/node_modules/debug/src/common.js
131
+ // ../../node_modules/.pnpm/debug@4.3.4_supports-color@5.5.0/node_modules/debug/src/common.js
132
132
  var require_common = __commonJS((exports, module) => {
133
133
  var setup = function(env) {
134
134
  createDebug.debug = createDebug;
@@ -289,7 +289,7 @@ var require_common = __commonJS((exports, module) => {
289
289
  module.exports = setup;
290
290
  });
291
291
 
292
- // ../../node_modules/.pnpm/debug@4.3.4/node_modules/debug/src/browser.js
292
+ // ../../node_modules/.pnpm/debug@4.3.4_supports-color@5.5.0/node_modules/debug/src/browser.js
293
293
  var require_browser = __commonJS((exports, module) => {
294
294
  var useColors = function() {
295
295
  if (typeof window !== "undefined" && window.process && (window.process.type === "renderer" || window.process.__nwjs)) {
@@ -452,17 +452,18 @@ var require_browser = __commonJS((exports, module) => {
452
452
  };
453
453
  });
454
454
 
455
- // /Users/jonathanburger/remotion/node_modules/.pnpm/supports-color@7.2.0/node_modules/has-flag/index.js
455
+ // /Users/jonathanburger/remotion/node_modules/.pnpm/supports-color@5.5.0/node_modules/has-flag/index.js
456
456
  var require_has_flag = __commonJS((exports, module) => {
457
- module.exports = (flag, argv = process.argv) => {
457
+ module.exports = (flag, argv) => {
458
+ argv = argv || process.argv;
458
459
  const prefix = flag.startsWith("-") ? "" : flag.length === 1 ? "-" : "--";
459
- const position = argv.indexOf(prefix + flag);
460
- const terminatorPosition = argv.indexOf("--");
461
- return position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);
460
+ const pos = argv.indexOf(prefix + flag);
461
+ const terminatorPos = argv.indexOf("--");
462
+ return pos !== -1 && (terminatorPos === -1 ? true : pos < terminatorPos);
462
463
  };
463
464
  });
464
465
 
465
- // /Users/jonathanburger/remotion/node_modules/.pnpm/node_modules/supports-color/index.js
466
+ // /Users/jonathanburger/remotion/node_modules/.pnpm/debug@4.3.4_supports-color@5.5.0/node_modules/supports-color/index.js
466
467
  var require_supports_color = __commonJS((exports, module) => {
467
468
  var translateLevel = function(level) {
468
469
  if (level === 0) {
@@ -475,8 +476,8 @@ var require_supports_color = __commonJS((exports, module) => {
475
476
  has16m: level >= 3
476
477
  };
477
478
  };
478
- var supportsColor = function(haveStream, streamIsTTY) {
479
- if (forceColor === 0) {
479
+ var supportsColor = function(stream) {
480
+ if (forceColor === false) {
480
481
  return 0;
481
482
  }
482
483
  if (hasFlag("color=16m") || hasFlag("color=full") || hasFlag("color=truecolor")) {
@@ -485,22 +486,19 @@ var require_supports_color = __commonJS((exports, module) => {
485
486
  if (hasFlag("color=256")) {
486
487
  return 2;
487
488
  }
488
- if (haveStream && !streamIsTTY && forceColor === undefined) {
489
+ if (stream && !stream.isTTY && forceColor !== true) {
489
490
  return 0;
490
491
  }
491
- const min = forceColor || 0;
492
- if (env.TERM === "dumb") {
493
- return min;
494
- }
492
+ const min = forceColor ? 1 : 0;
495
493
  if (process.platform === "win32") {
496
494
  const osRelease = os.release().split(".");
497
- if (Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10586) {
495
+ if (Number(process.versions.node.split(".")[0]) >= 8 && Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10586) {
498
496
  return Number(osRelease[2]) >= 14931 ? 3 : 2;
499
497
  }
500
498
  return 1;
501
499
  }
502
500
  if ("CI" in env) {
503
- if (["TRAVIS", "CIRCLECI", "APPVEYOR", "GITLAB_CI", "GITHUB_ACTIONS", "BUILDKITE"].some((sign) => (sign in env)) || env.CI_NAME === "codeship") {
501
+ if (["TRAVIS", "CIRCLECI", "APPVEYOR", "GITLAB_CI"].some((sign) => (sign in env)) || env.CI_NAME === "codeship") {
504
502
  return 1;
505
503
  }
506
504
  return min;
@@ -529,39 +527,35 @@ var require_supports_color = __commonJS((exports, module) => {
529
527
  if ("COLORTERM" in env) {
530
528
  return 1;
531
529
  }
530
+ if (env.TERM === "dumb") {
531
+ return min;
532
+ }
532
533
  return min;
533
534
  };
534
535
  var getSupportLevel = function(stream) {
535
- const level = supportsColor(stream, stream && stream.isTTY);
536
+ const level = supportsColor(stream);
536
537
  return translateLevel(level);
537
538
  };
538
539
  var os = __require("os");
539
- var tty = __require("tty");
540
540
  var hasFlag = require_has_flag();
541
- var { env } = process;
541
+ var env = process.env;
542
542
  var forceColor;
543
- if (hasFlag("no-color") || hasFlag("no-colors") || hasFlag("color=false") || hasFlag("color=never")) {
544
- forceColor = 0;
543
+ if (hasFlag("no-color") || hasFlag("no-colors") || hasFlag("color=false")) {
544
+ forceColor = false;
545
545
  } else if (hasFlag("color") || hasFlag("colors") || hasFlag("color=true") || hasFlag("color=always")) {
546
- forceColor = 1;
546
+ forceColor = true;
547
547
  }
548
548
  if ("FORCE_COLOR" in env) {
549
- if (env.FORCE_COLOR === "true") {
550
- forceColor = 1;
551
- } else if (env.FORCE_COLOR === "false") {
552
- forceColor = 0;
553
- } else {
554
- forceColor = env.FORCE_COLOR.length === 0 ? 1 : Math.min(parseInt(env.FORCE_COLOR, 10), 3);
555
- }
549
+ forceColor = env.FORCE_COLOR.length === 0 || parseInt(env.FORCE_COLOR, 10) !== 0;
556
550
  }
557
551
  module.exports = {
558
552
  supportsColor: getSupportLevel,
559
- stdout: translateLevel(supportsColor(true, tty.isatty(1))),
560
- stderr: translateLevel(supportsColor(true, tty.isatty(2)))
553
+ stdout: getSupportLevel(process.stdout),
554
+ stderr: getSupportLevel(process.stderr)
561
555
  };
562
556
  });
563
557
 
564
- // ../../node_modules/.pnpm/debug@4.3.4/node_modules/debug/src/node.js
558
+ // ../../node_modules/.pnpm/debug@4.3.4_supports-color@5.5.0/node_modules/debug/src/node.js
565
559
  var require_node = __commonJS((exports, module) => {
566
560
  var useColors = function() {
567
561
  return "colors" in exports.inspectOpts ? Boolean(exports.inspectOpts.colors) : tty.isatty(process.stderr.fd);
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "url": "https://github.com/remotion-dev/remotion/tree/main/packages/renderer"
4
4
  },
5
5
  "name": "@remotion/renderer",
6
- "version": "4.0.199",
6
+ "version": "4.0.201",
7
7
  "description": "Render Remotion videos using Node.js or Bun",
8
8
  "main": "dist/index.js",
9
9
  "types": "dist/index.d.ts",
@@ -18,8 +18,8 @@
18
18
  "extract-zip": "2.0.1",
19
19
  "source-map": "^0.8.0-beta.0",
20
20
  "ws": "8.17.1",
21
- "remotion": "4.0.199",
22
- "@remotion/streaming": "4.0.199"
21
+ "remotion": "4.0.201",
22
+ "@remotion/streaming": "4.0.201"
23
23
  },
24
24
  "peerDependencies": {
25
25
  "react": ">=16.8.0",
@@ -34,13 +34,13 @@
34
34
  "@types/ws": "8.5.10"
35
35
  },
36
36
  "optionalDependencies": {
37
- "@remotion/compositor-linux-arm64-gnu": "4.0.199",
38
- "@remotion/compositor-darwin-arm64": "4.0.199",
39
- "@remotion/compositor-darwin-x64": "4.0.199",
40
- "@remotion/compositor-linux-x64-gnu": "4.0.199",
41
- "@remotion/compositor-linux-x64-musl": "4.0.199",
42
- "@remotion/compositor-win32-x64-msvc": "4.0.199",
43
- "@remotion/compositor-linux-arm64-musl": "4.0.199"
37
+ "@remotion/compositor-darwin-arm64": "4.0.201",
38
+ "@remotion/compositor-linux-arm64-gnu": "4.0.201",
39
+ "@remotion/compositor-darwin-x64": "4.0.201",
40
+ "@remotion/compositor-linux-arm64-musl": "4.0.201",
41
+ "@remotion/compositor-linux-x64-gnu": "4.0.201",
42
+ "@remotion/compositor-linux-x64-musl": "4.0.201",
43
+ "@remotion/compositor-win32-x64-msvc": "4.0.201"
44
44
  },
45
45
  "keywords": [
46
46
  "remotion",