@remotion/renderer 4.0.513 → 4.0.515

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 (44) hide show
  1. package/dist/client.d.ts +78 -0
  2. package/dist/compositor/compositor.d.ts +7 -0
  3. package/dist/compositor/compositor.js +45 -1
  4. package/dist/ensure-browser.d.ts +2 -0
  5. package/dist/esm/client.mjs +978 -839
  6. package/dist/esm/index.mjs +104 -11
  7. package/dist/index.d.ts +13 -1
  8. package/dist/offthread-video-server.js +3 -8
  9. package/dist/options/ask-ai.d.ts +2 -0
  10. package/dist/options/ask-ai.js +7 -0
  11. package/dist/options/beep-on-finish.d.ts +2 -0
  12. package/dist/options/beep-on-finish.js +7 -0
  13. package/dist/options/cross-site-isolation.d.ts +2 -0
  14. package/dist/options/cross-site-isolation.js +7 -0
  15. package/dist/options/enable-cancellation.d.ts +16 -0
  16. package/dist/options/enable-cancellation.js +31 -0
  17. package/dist/options/index.d.ts +50 -0
  18. package/dist/options/index.js +4 -0
  19. package/dist/options/interactivity.d.ts +2 -0
  20. package/dist/options/interactivity.js +7 -0
  21. package/dist/options/keyboard-shortcuts.d.ts +2 -0
  22. package/dist/options/keyboard-shortcuts.js +7 -0
  23. package/dist/options/latency-hint.d.ts +2 -0
  24. package/dist/options/latency-hint.js +4 -0
  25. package/dist/options/log-level.d.ts +2 -0
  26. package/dist/options/log-level.js +7 -0
  27. package/dist/options/number-of-shared-audio-tags.d.ts +2 -0
  28. package/dist/options/number-of-shared-audio-tags.js +7 -0
  29. package/dist/options/option.d.ts +1 -0
  30. package/dist/options/options-map.d.ts +28 -0
  31. package/dist/options/rspack.d.ts +2 -0
  32. package/dist/options/rspack.js +7 -0
  33. package/dist/prestitcher-memory-usage.d.ts +4 -0
  34. package/dist/prestitcher-memory-usage.js +10 -3
  35. package/dist/render-frame-and-retry-target-close.d.ts +1 -1
  36. package/dist/render-frame-with-option-to-reject.d.ts +1 -1
  37. package/dist/render-frame-with-option-to-reject.js +1 -1
  38. package/dist/render-frame.d.ts +1 -1
  39. package/dist/render-frames.d.ts +3 -3
  40. package/dist/render-frames.js +8 -2
  41. package/dist/render-media.js +7 -3
  42. package/dist/write-with-backpressure.d.ts +5 -0
  43. package/dist/write-with-backpressure.js +34 -0
  44. package/package.json +13 -13
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.numberOfSharedAudioTagsOption = void 0;
4
4
  const jsx_runtime_1 = require("react/jsx-runtime");
5
5
  let numberOfSharedAudioTags = 0;
6
+ let configuredNumberOfSharedAudioTags = null;
6
7
  const cliFlag = 'number-of-shared-audio-tags';
7
8
  exports.numberOfSharedAudioTagsOption = {
8
9
  name: 'Number of shared audio tags',
@@ -25,6 +26,12 @@ exports.numberOfSharedAudioTagsOption = {
25
26
  },
26
27
  setConfig(value) {
27
28
  numberOfSharedAudioTags = value;
29
+ configuredNumberOfSharedAudioTags = value;
30
+ },
31
+ getConfigValue: () => configuredNumberOfSharedAudioTags,
32
+ reset: () => {
33
+ numberOfSharedAudioTags = 0;
34
+ configuredNumberOfSharedAudioTags = null;
28
35
  },
29
36
  id: cliFlag,
30
37
  };
@@ -13,6 +13,7 @@ export type RemotionOption<SsrName extends string, Type> = {
13
13
  source: string;
14
14
  };
15
15
  setConfig: (value: Type) => void;
16
+ getConfigValue?: () => Type | null;
16
17
  reset?: () => void;
17
18
  id: string;
18
19
  };
@@ -301,6 +301,8 @@ export declare const optionsMap: {
301
301
  source: string;
302
302
  };
303
303
  setConfig: (newLogLevel: "error" | "info" | "trace" | "verbose" | "warn") => void;
304
+ getConfigValue: () => "error" | "info" | "trace" | "verbose" | "warn" | null;
305
+ reset: () => void;
304
306
  type: "error" | "info" | "trace" | "verbose" | "warn";
305
307
  id: "log";
306
308
  };
@@ -593,6 +595,8 @@ export declare const optionsMap: {
593
595
  source: string;
594
596
  };
595
597
  setConfig: (newLogLevel: "error" | "info" | "trace" | "verbose" | "warn") => void;
598
+ getConfigValue: () => "error" | "info" | "trace" | "verbose" | "warn" | null;
599
+ reset: () => void;
596
600
  type: "error" | "info" | "trace" | "verbose" | "warn";
597
601
  id: "log";
598
602
  };
@@ -759,6 +763,8 @@ export declare const optionsMap: {
759
763
  source: string;
760
764
  };
761
765
  setConfig: (newLogLevel: "error" | "info" | "trace" | "verbose" | "warn") => void;
766
+ getConfigValue: () => "error" | "info" | "trace" | "verbose" | "warn" | null;
767
+ reset: () => void;
762
768
  type: "error" | "info" | "trace" | "verbose" | "warn";
763
769
  id: "log";
764
770
  };
@@ -893,6 +899,8 @@ export declare const optionsMap: {
893
899
  source: string;
894
900
  };
895
901
  setConfig: (newLogLevel: "error" | "info" | "trace" | "verbose" | "warn") => void;
902
+ getConfigValue: () => "error" | "info" | "trace" | "verbose" | "warn" | null;
903
+ reset: () => void;
896
904
  type: "error" | "info" | "trace" | "verbose" | "warn";
897
905
  id: "log";
898
906
  };
@@ -1062,6 +1070,8 @@ export declare const optionsMap: {
1062
1070
  source: string;
1063
1071
  };
1064
1072
  setConfig: (newLogLevel: "error" | "info" | "trace" | "verbose" | "warn") => void;
1073
+ getConfigValue: () => "error" | "info" | "trace" | "verbose" | "warn" | null;
1074
+ reset: () => void;
1065
1075
  type: "error" | "info" | "trace" | "verbose" | "warn";
1066
1076
  id: "log";
1067
1077
  };
@@ -1427,6 +1437,8 @@ export declare const optionsMap: {
1427
1437
  source: string;
1428
1438
  };
1429
1439
  setConfig: (newLogLevel: "error" | "info" | "trace" | "verbose" | "warn") => void;
1440
+ getConfigValue: () => "error" | "info" | "trace" | "verbose" | "warn" | null;
1441
+ reset: () => void;
1430
1442
  type: "error" | "info" | "trace" | "verbose" | "warn";
1431
1443
  id: "log";
1432
1444
  };
@@ -1582,6 +1594,8 @@ export declare const optionsMap: {
1582
1594
  source: string;
1583
1595
  };
1584
1596
  setConfig: (newLogLevel: "error" | "info" | "trace" | "verbose" | "warn") => void;
1597
+ getConfigValue: () => "error" | "info" | "trace" | "verbose" | "warn" | null;
1598
+ reset: () => void;
1585
1599
  type: "error" | "info" | "trace" | "verbose" | "warn";
1586
1600
  id: "log";
1587
1601
  };
@@ -1721,6 +1735,8 @@ export declare const optionsMap: {
1721
1735
  source: string;
1722
1736
  };
1723
1737
  setConfig: (newLogLevel: "error" | "info" | "trace" | "verbose" | "warn") => void;
1738
+ getConfigValue: () => "error" | "info" | "trace" | "verbose" | "warn" | null;
1739
+ reset: () => void;
1724
1740
  type: "error" | "info" | "trace" | "verbose" | "warn";
1725
1741
  id: "log";
1726
1742
  };
@@ -1991,6 +2007,8 @@ export declare const optionsMap: {
1991
2007
  source: string;
1992
2008
  };
1993
2009
  setConfig: (newLogLevel: "error" | "info" | "trace" | "verbose" | "warn") => void;
2010
+ getConfigValue: () => "error" | "info" | "trace" | "verbose" | "warn" | null;
2011
+ reset: () => void;
1994
2012
  type: "error" | "info" | "trace" | "verbose" | "warn";
1995
2013
  id: "log";
1996
2014
  };
@@ -2165,6 +2183,8 @@ export declare const optionsMap: {
2165
2183
  source: string;
2166
2184
  };
2167
2185
  setConfig: (newLogLevel: "error" | "info" | "trace" | "verbose" | "warn") => void;
2186
+ getConfigValue: () => "error" | "info" | "trace" | "verbose" | "warn" | null;
2187
+ reset: () => void;
2168
2188
  type: "error" | "info" | "trace" | "verbose" | "warn";
2169
2189
  id: "log";
2170
2190
  };
@@ -2231,6 +2251,8 @@ export declare const optionsMap: {
2231
2251
  source: string;
2232
2252
  };
2233
2253
  setConfig: (newLogLevel: "error" | "info" | "trace" | "verbose" | "warn") => void;
2254
+ getConfigValue: () => "error" | "info" | "trace" | "verbose" | "warn" | null;
2255
+ reset: () => void;
2234
2256
  type: "error" | "info" | "trace" | "verbose" | "warn";
2235
2257
  id: "log";
2236
2258
  };
@@ -2276,6 +2298,8 @@ export declare const optionsMap: {
2276
2298
  source: string;
2277
2299
  };
2278
2300
  setConfig: (newLogLevel: "error" | "info" | "trace" | "verbose" | "warn") => void;
2301
+ getConfigValue: () => "error" | "info" | "trace" | "verbose" | "warn" | null;
2302
+ reset: () => void;
2279
2303
  type: "error" | "info" | "trace" | "verbose" | "warn";
2280
2304
  id: "log";
2281
2305
  };
@@ -2321,6 +2345,8 @@ export declare const optionsMap: {
2321
2345
  source: string;
2322
2346
  };
2323
2347
  setConfig: (newLogLevel: "error" | "info" | "trace" | "verbose" | "warn") => void;
2348
+ getConfigValue: () => "error" | "info" | "trace" | "verbose" | "warn" | null;
2349
+ reset: () => void;
2324
2350
  type: "error" | "info" | "trace" | "verbose" | "warn";
2325
2351
  id: "log";
2326
2352
  };
@@ -2355,6 +2381,8 @@ export declare const optionsMap: {
2355
2381
  source: string;
2356
2382
  };
2357
2383
  setConfig: (newLogLevel: "error" | "info" | "trace" | "verbose" | "warn") => void;
2384
+ getConfigValue: () => "error" | "info" | "trace" | "verbose" | "warn" | null;
2385
+ reset: () => void;
2358
2386
  type: "error" | "info" | "trace" | "verbose" | "warn";
2359
2387
  id: "log";
2360
2388
  };
@@ -12,5 +12,7 @@ export declare const rspackOption: {
12
12
  source: string;
13
13
  };
14
14
  setConfig(value: boolean): void;
15
+ getConfigValue: () => boolean | null;
16
+ reset: () => void;
15
17
  id: "rspack";
16
18
  };
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.rspackOption = void 0;
4
4
  const jsx_runtime_1 = require("react/jsx-runtime");
5
5
  let rspackEnabled = false;
6
+ let configuredRspackEnabled = null;
6
7
  const cliFlag = 'rspack';
7
8
  exports.rspackOption = {
8
9
  name: 'Rspack',
@@ -25,6 +26,12 @@ exports.rspackOption = {
25
26
  },
26
27
  setConfig(value) {
27
28
  rspackEnabled = value;
29
+ configuredRspackEnabled = value;
30
+ },
31
+ getConfigValue: () => configuredRspackEnabled,
32
+ reset: () => {
33
+ rspackEnabled = false;
34
+ configuredRspackEnabled = null;
28
35
  },
29
36
  id: cliFlag,
30
37
  };
@@ -1,3 +1,7 @@
1
+ export declare const hasEnoughMemoryForParallelEncoding: ({ freeMemory, estimatedUsage, }: {
2
+ freeMemory: number;
3
+ estimatedUsage: number;
4
+ }) => boolean;
1
5
  export declare const shouldUseParallelEncoding: ({ width, height, logLevel, }: {
2
6
  width: number;
3
7
  height: number;
@@ -1,7 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.shouldUseParallelEncoding = void 0;
3
+ exports.shouldUseParallelEncoding = exports.hasEnoughMemoryForParallelEncoding = void 0;
4
4
  const get_available_memory_1 = require("./memory/get-available-memory");
5
+ const MINIMUM_MEMORY_LEFT = 2000000000;
6
+ const hasEnoughMemoryForParallelEncoding = ({ freeMemory, estimatedUsage, }) => {
7
+ return freeMemory - estimatedUsage > MINIMUM_MEMORY_LEFT;
8
+ };
9
+ exports.hasEnoughMemoryForParallelEncoding = hasEnoughMemoryForParallelEncoding;
5
10
  const estimateMemoryUsageForPrestitcher = ({ width, height, }) => {
6
11
  // Empirically we detected that per 1 million pixels, FFMPEG uses around 1GB of memory, relatively independent of
7
12
  // the duration of the video.
@@ -15,8 +20,10 @@ const shouldUseParallelEncoding = ({ width, height, logLevel, }) => {
15
20
  height,
16
21
  width,
17
22
  });
18
- const hasEnoughMemory = freeMemory - estimatedUsage > 2000000000 &&
19
- estimatedUsage / freeMemory < 0.5;
23
+ const hasEnoughMemory = (0, exports.hasEnoughMemoryForParallelEncoding)({
24
+ estimatedUsage,
25
+ freeMemory,
26
+ });
20
27
  return {
21
28
  hasEnoughMemory,
22
29
  freeMemory,
@@ -41,7 +41,7 @@ export declare const renderFrameAndRetryTargetClose: ({ retriesLeft, attempt, as
41
41
  framesRenderedObj: {
42
42
  count: number;
43
43
  };
44
- onFrameBuffer: ((buffer: Buffer, frame: number) => void) | null | undefined;
44
+ onFrameBuffer: ((buffer: Buffer, frame: number) => void | Promise<void>) | null | undefined;
45
45
  onFrameUpdate: ((framesRendered: number, frameIndex: number, timeToRenderInMilliseconds: number) => void) | null;
46
46
  nextFrameToRender: {
47
47
  getNextFrame: (_pageIndex: number) => number;
@@ -17,7 +17,7 @@ export declare const renderFrameWithOptionToReject: ({ reject, width, height, co
17
17
  indent: boolean;
18
18
  logLevel: "error" | "info" | "trace" | "verbose" | "warn";
19
19
  outputDir: string | null;
20
- onFrameBuffer: ((buffer: Buffer, frame: number) => void) | null | undefined;
20
+ onFrameBuffer: ((buffer: Buffer, frame: number) => void | Promise<void>) | null | undefined;
21
21
  imageFormat: "jpeg" | "none" | "png";
22
22
  onError: (err: Error) => void;
23
23
  lastFrame: number;
@@ -83,7 +83,7 @@ const renderFrameWithOptionToReject = async ({ reject, width, height, compId, at
83
83
  if (!buffer) {
84
84
  throw new Error('unexpected null buffer');
85
85
  }
86
- onFrameBuffer(buffer, frame);
86
+ await onFrameBuffer(buffer, frame);
87
87
  }
88
88
  const onlyAvailableAssets = assets.filter(truthy_1.truthy);
89
89
  const previousAudioRenderAssets = onlyAvailableAssets
@@ -28,7 +28,7 @@ export declare const renderFrame: ({ attempt, binariesDirectory, cancelSignal, i
28
28
  };
29
29
  timeoutInMilliseconds: number;
30
30
  outputDir: string | null;
31
- onFrameBuffer: ((buffer: Buffer, frame: number) => void) | null | undefined;
31
+ onFrameBuffer: ((buffer: Buffer, frame: number) => void | Promise<void>) | null | undefined;
32
32
  lastFrame: number;
33
33
  onFrameUpdate: ((framesRendered: number, frameIndex: number, timeToRenderInMilliseconds: number) => void) | null;
34
34
  framesRenderedObj: {
@@ -28,7 +28,7 @@ type InternalRenderFramesOptions = {
28
28
  puppeteerInstance: HeadlessBrowser | undefined;
29
29
  browserExecutable: BrowserExecutable | null;
30
30
  onBrowserLog: null | ((log: BrowserLog) => void);
31
- onFrameBuffer: null | ((buffer: Buffer, frame: number) => void);
31
+ onFrameBuffer: null | ((buffer: Buffer, frame: number) => void | Promise<void>);
32
32
  onDownload: RenderMediaOnDownload | null;
33
33
  chromiumOptions: ChromiumOptions;
34
34
  scale: number;
@@ -85,7 +85,7 @@ export type RenderFramesOptions = Prettify<{
85
85
  puppeteerInstance?: HeadlessBrowser;
86
86
  browserExecutable?: BrowserExecutable;
87
87
  onBrowserLog?: (log: BrowserLog) => void;
88
- onFrameBuffer?: (buffer: Buffer, frame: number) => void;
88
+ onFrameBuffer?: (buffer: Buffer, frame: number) => void | Promise<void>;
89
89
  onDownload?: RenderMediaOnDownload;
90
90
  timeoutInMilliseconds?: number;
91
91
  chromiumOptions?: ChromiumOptions;
@@ -126,7 +126,7 @@ export declare const renderFrames: (options: {
126
126
  puppeteerInstance?: HeadlessBrowser | undefined;
127
127
  browserExecutable?: BrowserExecutable | undefined;
128
128
  onBrowserLog?: ((log: BrowserLog) => void) | undefined;
129
- onFrameBuffer?: ((buffer: Buffer, frame: number) => void) | undefined;
129
+ onFrameBuffer?: ((buffer: Buffer, frame: number) => void | Promise<void>) | undefined;
130
130
  onDownload?: RenderMediaOnDownload | undefined;
131
131
  timeoutInMilliseconds?: number | undefined;
132
132
  chromiumOptions?: ChromiumOptions | undefined;
@@ -330,9 +330,15 @@ const internalRenderFramesRaw = ({ browserExecutable, cancelSignal, chromiumOpti
330
330
  }),
331
331
  ])
332
332
  .then((res) => {
333
- server === null || server === void 0 ? void 0 : server.compositor.executeCommand('CloseAllVideos', {}).then(() => {
333
+ if (!server || server.compositor.pid === null) {
334
+ return resolve(res);
335
+ }
336
+ server.compositor
337
+ .executeCommand('CloseAllVideos', {})
338
+ .then(() => {
334
339
  logger_1.Log.verbose({ indent, logLevel, tag: 'compositor' }, 'Freed memory from compositor');
335
- }).catch((err) => {
340
+ })
341
+ .catch((err) => {
336
342
  logger_1.Log.verbose({ indent, logLevel }, 'Could not close compositor', err);
337
343
  });
338
344
  return resolve(res);
@@ -54,6 +54,7 @@ const validate_output_filename_1 = require("./validate-output-filename");
54
54
  const validate_scale_1 = require("./validate-scale");
55
55
  const validate_videobitrate_1 = require("./validate-videobitrate");
56
56
  const wrap_with_error_handling_1 = require("./wrap-with-error-handling");
57
+ const write_with_backpressure_1 = require("./write-with-backpressure");
57
58
  const SLOWEST_FRAME_COUNT = 10;
58
59
  const MAX_RECENT_FRAME_TIMINGS = 150;
59
60
  const internalRenderMediaRaw = ({ proResProfile, x264Preset, gopSize, crf, composition: compositionWithPossibleUnevenDimensions, serializedInputPropsWithCustomSchema, pixelFormat: userPixelFormat, codec, envVariables, frameRange, puppeteerInstance, outputLocation, onProgress, overwrite, onDownload, onBrowserLog, onStart, timeoutInMilliseconds, chromiumOptions, scale, browserExecutable, port, cancelSignal, muted, enforceAudioTrack, ffmpegOverride, audioBitrate, videoBitrate, encodingMaxRate, encodingBufferSize, audioCodec, concurrency, disallowParallelEncoding, everyNthFrame, imageFormat: provisionalImageFormat, indent, jpegQuality, numberOfGifLoops, onCtrlCExit, preferLossless, serveUrl, server: reusedServer, logLevel, serializedResolvedPropsWithCustomSchema, offthreadVideoCacheSizeInBytes, colorSpace, repro, binariesDirectory, separateAudioTo, forSeamlessAacConcatenation, compositionStart, onBrowserDownload, onArtifact, metadata, hardwareAcceleration, chromeMode, offthreadVideoThreads, mediaCacheSizeInBytes, onLog, licenseKey, isProduction, sampleRate, }) => {
@@ -361,7 +362,6 @@ const internalRenderMediaRaw = ({ proResProfile, x264Preset, gopSize, crf, compo
361
362
  onFrameBuffer: parallelEncoding
362
363
  ? async (buffer, frame) => {
363
364
  var _a;
364
- var _b;
365
365
  await waitForRightTimeOfFrameToBeInserted(frame);
366
366
  if (cancelled) {
367
367
  return;
@@ -374,10 +374,14 @@ const internalRenderMediaRaw = ({ proResProfile, x264Preset, gopSize, crf, compo
374
374
  if ((exitStatus === null || exitStatus === void 0 ? void 0 : exitStatus.type) === 'quit-with-error') {
375
375
  throw new Error(`FFmpeg quit with code ${exitStatus.exitCode}${exitStatus.signal ? ` (signal ${exitStatus.signal})` : ''} while piping frame ${frame}. Stderr: ${exitStatus.stderr}`);
376
376
  }
377
- (_a = stitcherFfmpeg === null || stitcherFfmpeg === void 0 ? void 0 : stitcherFfmpeg.stdin) === null || _a === void 0 ? void 0 : _a.write(buffer);
377
+ const stdin = stitcherFfmpeg === null || stitcherFfmpeg === void 0 ? void 0 : stitcherFfmpeg.stdin;
378
+ if (!stdin) {
379
+ throw new Error(`FFmpeg stdin is not available while trying to pipe frame ${frame} to it.`);
380
+ }
381
+ await (0, write_with_backpressure_1.writeWithBackpressure)({ data: buffer, writable: stdin });
378
382
  (0, perf_1.stopPerfMeasure)(id);
379
383
  const frameIndex = framesToRender.indexOf(frame);
380
- setFrameToStitch((_b = framesToRender[frameIndex + 1]) !== null && _b !== void 0 ? _b : lastFrameToRender + 1);
384
+ setFrameToStitch((_a = framesToRender[frameIndex + 1]) !== null && _a !== void 0 ? _a : lastFrameToRender + 1);
381
385
  }
382
386
  : null,
383
387
  webpackBundleOrServeUrl: serveUrl,
@@ -0,0 +1,5 @@
1
+ import type { Writable } from 'node:stream';
2
+ export declare const writeWithBackpressure: ({ data, writable, }: {
3
+ data: Buffer;
4
+ writable: Writable;
5
+ }) => Promise<void>;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.writeWithBackpressure = void 0;
4
+ const writeWithBackpressure = ({ data, writable, }) => {
5
+ if (writable.write(data)) {
6
+ return Promise.resolve();
7
+ }
8
+ return new Promise((resolve, reject) => {
9
+ const cleanup = () => {
10
+ writable.off('close', onClose);
11
+ writable.off('drain', onDrain);
12
+ writable.off('error', onError);
13
+ };
14
+ const onClose = () => {
15
+ cleanup();
16
+ reject(new Error('The writable stream closed before it accepted all data.'));
17
+ };
18
+ const onDrain = () => {
19
+ cleanup();
20
+ resolve();
21
+ };
22
+ const onError = (error) => {
23
+ cleanup();
24
+ reject(error);
25
+ };
26
+ writable.once('close', onClose);
27
+ writable.once('drain', onDrain);
28
+ writable.once('error', onError);
29
+ if (writable.destroyed) {
30
+ onClose();
31
+ }
32
+ });
33
+ };
34
+ exports.writeWithBackpressure = writeWithBackpressure;
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.513",
6
+ "version": "4.0.515",
7
7
  "description": "Render Remotion videos using Node.js or Bun",
8
8
  "main": "dist/index.js",
9
9
  "types": "dist/index.d.ts",
@@ -22,11 +22,11 @@
22
22
  },
23
23
  "dependencies": {
24
24
  "execa": "5.1.1",
25
- "remotion": "4.0.513",
26
- "@remotion/streaming": "4.0.513",
25
+ "remotion": "4.0.515",
26
+ "@remotion/streaming": "4.0.515",
27
27
  "source-map": "0.8.0",
28
28
  "ws": "8.21.0",
29
- "@remotion/licensing": "4.0.513"
29
+ "@remotion/licensing": "4.0.515"
30
30
  },
31
31
  "peerDependencies": {
32
32
  "react": ">=16.8.0",
@@ -40,19 +40,19 @@
40
40
  "react-dom": "19.2.3",
41
41
  "@typescript/native-preview": "7.0.0-dev.20260217.1",
42
42
  "@types/ws": "8.5.10",
43
- "@remotion/example-videos": "4.0.513",
44
- "@remotion/eslint-config-internal": "4.0.513",
43
+ "@remotion/example-videos": "4.0.515",
44
+ "@remotion/eslint-config-internal": "4.0.515",
45
45
  "eslint": "9.19.0",
46
46
  "@types/node": "20.12.14"
47
47
  },
48
48
  "optionalDependencies": {
49
- "@remotion/compositor-darwin-arm64": "4.0.513",
50
- "@remotion/compositor-darwin-x64": "4.0.513",
51
- "@remotion/compositor-linux-arm64-gnu": "4.0.513",
52
- "@remotion/compositor-linux-arm64-musl": "4.0.513",
53
- "@remotion/compositor-linux-x64-gnu": "4.0.513",
54
- "@remotion/compositor-linux-x64-musl": "4.0.513",
55
- "@remotion/compositor-win32-x64-msvc": "4.0.513"
49
+ "@remotion/compositor-darwin-arm64": "4.0.515",
50
+ "@remotion/compositor-darwin-x64": "4.0.515",
51
+ "@remotion/compositor-linux-arm64-gnu": "4.0.515",
52
+ "@remotion/compositor-linux-arm64-musl": "4.0.515",
53
+ "@remotion/compositor-linux-x64-gnu": "4.0.515",
54
+ "@remotion/compositor-linux-x64-musl": "4.0.515",
55
+ "@remotion/compositor-win32-x64-msvc": "4.0.515"
56
56
  },
57
57
  "keywords": [
58
58
  "remotion",