@remotion/renderer 4.0.206 → 4.0.208

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.
@@ -4,7 +4,6 @@ exports.defaultBrowserDownloadProgress = void 0;
4
4
  const logger_1 = require("../logger");
5
5
  const to_megabytes_1 = require("../to-megabytes");
6
6
  const defaultBrowserDownloadProgress = ({ indent, logLevel, api, }) => () => {
7
- logger_1.Log.info({ indent, logLevel }, 'No local browser could be found.');
8
7
  logger_1.Log.info({ indent, logLevel }, 'Downloading Chrome Headless Shell https://www.remotion.dev/docs/miscellaneous/chrome-headless-shell');
9
8
  logger_1.Log.info({ indent, logLevel }, `Customize this behavior by adding a onBrowserDownload function to ${api}.`);
10
9
  return {
package/dist/client.d.ts CHANGED
@@ -467,19 +467,19 @@ export declare const BrowserSafeApis: {
467
467
  cliFlag: "gl";
468
468
  docLink: string;
469
469
  name: string;
470
- type: "angle" | "swangle" | "egl" | "swiftshader" | "vulkan" | "angle-egl" | null;
470
+ type: "swangle" | "angle" | "egl" | "swiftshader" | "vulkan" | "angle-egl" | null;
471
471
  ssrName: string;
472
472
  description: () => import("react/jsx-runtime").JSX.Element;
473
473
  getValue: ({ commandLine }: {
474
474
  commandLine: Record<string, unknown>;
475
475
  }) => {
476
- value: "angle" | "swangle" | "egl" | "swiftshader" | "vulkan" | "angle-egl";
476
+ value: "swangle" | "angle" | "egl" | "swiftshader" | "vulkan" | "angle-egl";
477
477
  source: string;
478
478
  } | {
479
479
  value: null;
480
480
  source: string;
481
481
  };
482
- setConfig: (value: "angle" | "swangle" | "egl" | "swiftshader" | "vulkan" | "angle-egl" | null) => void;
482
+ setConfig: (value: "swangle" | "angle" | "egl" | "swiftshader" | "vulkan" | "angle-egl" | null) => void;
483
483
  };
484
484
  enableLambdaInsights: {
485
485
  name: string;
@@ -604,17 +604,17 @@ export declare const BrowserSafeApis: {
604
604
  description: () => import("react/jsx-runtime").JSX.Element;
605
605
  ssrName: "x264Preset";
606
606
  docLink: string;
607
- type: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo" | null;
607
+ type: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | null;
608
608
  getValue: ({ commandLine }: {
609
609
  commandLine: Record<string, unknown>;
610
610
  }) => {
611
- value: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo";
611
+ value: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo";
612
612
  source: string;
613
613
  } | {
614
614
  value: null;
615
615
  source: string;
616
616
  };
617
- setConfig: (profile: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo" | null) => void;
617
+ setConfig: (profile: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | null) => void;
618
618
  };
619
619
  logLevelOption: {
620
620
  cliFlag: "log";
@@ -879,17 +879,17 @@ export declare const BrowserSafeApis: {
879
879
  description: () => import("react/jsx-runtime").JSX.Element;
880
880
  ssrName: "x264Preset";
881
881
  docLink: string;
882
- type: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo" | null;
882
+ type: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | null;
883
883
  getValue: ({ commandLine }: {
884
884
  commandLine: Record<string, unknown>;
885
885
  }) => {
886
- value: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo";
886
+ value: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo";
887
887
  source: string;
888
888
  } | {
889
889
  value: null;
890
890
  source: string;
891
891
  };
892
- setConfig: (profile: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo" | null) => void;
892
+ setConfig: (profile: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | null) => void;
893
893
  };
894
894
  readonly audioBitrate: {
895
895
  name: string;
@@ -1601,17 +1601,17 @@ export declare const BrowserSafeApis: {
1601
1601
  description: () => import("react/jsx-runtime").JSX.Element;
1602
1602
  ssrName: "x264Preset";
1603
1603
  docLink: string;
1604
- type: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo" | null;
1604
+ type: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | null;
1605
1605
  getValue: ({ commandLine }: {
1606
1606
  commandLine: Record<string, unknown>;
1607
1607
  }) => {
1608
- value: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo";
1608
+ value: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo";
1609
1609
  source: string;
1610
1610
  } | {
1611
1611
  value: null;
1612
1612
  source: string;
1613
1613
  };
1614
- setConfig: (profile: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo" | null) => void;
1614
+ setConfig: (profile: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | null) => void;
1615
1615
  };
1616
1616
  readonly encodingMaxRate: {
1617
1617
  name: string;
@@ -1967,17 +1967,17 @@ export declare const BrowserSafeApis: {
1967
1967
  description: () => import("react/jsx-runtime").JSX.Element;
1968
1968
  ssrName: "x264Preset";
1969
1969
  docLink: string;
1970
- type: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo" | null;
1970
+ type: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | null;
1971
1971
  getValue: ({ commandLine }: {
1972
1972
  commandLine: Record<string, unknown>;
1973
1973
  }) => {
1974
- value: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo";
1974
+ value: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo";
1975
1975
  source: string;
1976
1976
  } | {
1977
1977
  value: null;
1978
1978
  source: string;
1979
1979
  };
1980
- setConfig: (profile: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo" | null) => void;
1980
+ setConfig: (profile: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | null) => void;
1981
1981
  };
1982
1982
  readonly encodingMaxRate: {
1983
1983
  name: string;
@@ -1 +1 @@
1
- export declare const getLocalBrowser: () => string | null;
1
+ export declare const getLocalBrowser: () => null;
@@ -5,44 +5,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.getLocalBrowser = void 0;
7
7
  const fs_1 = __importDefault(require("fs"));
8
- const node_os_1 = require("node:os");
9
- const no_react_1 = require("remotion/no-react");
10
8
  const getSearchPathsForProduct = () => {
11
- var _a;
12
- if (no_react_1.NoReactInternals.ENABLE_V5_BREAKING_CHANGES) {
13
- return [];
14
- }
15
- return [
16
- (_a = process.env.PUPPETEER_EXECUTABLE_PATH) !== null && _a !== void 0 ? _a : null,
17
- process.platform === 'darwin'
18
- ? '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome'
19
- : null,
20
- process.platform === 'linux' ? '/usr/bin/google-chrome' : null,
21
- process.platform === 'linux' ? '/usr/bin/chromium-browser' : null,
22
- process.platform === 'linux' ? '/usr/bin/chromium' : null, // Debian
23
- process.platform === 'linux'
24
- ? '/app/.apt/usr/bin/google-chrome-stable'
25
- : null,
26
- process.platform === 'win32'
27
- ? 'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe'
28
- : null,
29
- process.platform === 'win32'
30
- ? 'C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe'
31
- : null,
32
- process.platform === 'win32'
33
- ? (0, node_os_1.homedir)() + '\\AppData\\Local\\Google\\Chrome\\Application\\chrome.exe'
34
- : null,
35
- process.platform === 'win32'
36
- ? 'C:\\Program Files\\Google\\Chrome SxS\\Application\\chrome.exe'
37
- : null,
38
- process.platform === 'win32'
39
- ? 'C:\\Program Files (x86)\\Google\\Chrome SxS\\Application\\chrome.exe'
40
- : null,
41
- process.platform === 'win32'
42
- ? (0, node_os_1.homedir)() +
43
- '\\AppData\\Local\\Google\\Chrome SxS\\Application\\chrome.exe'
44
- : null,
45
- ].filter(Boolean);
9
+ return [];
46
10
  };
47
11
  const getLocalBrowser = () => {
48
12
  for (const p of getSearchPathsForProduct()) {
package/dist/index.d.ts CHANGED
@@ -141,8 +141,8 @@ 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
147
  DEFAULT_PIXEL_FORMAT: "yuv420p" | "yuva420p" | "yuv422p" | "yuv444p" | "yuv420p10le" | "yuv422p10le" | "yuv444p10le" | "yuva444p10le";
148
148
  validateJpegQuality: (q: unknown) => void;
@@ -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;
@@ -922,7 +922,7 @@ export declare const RenderInternals: {
922
922
  assetsInfo: import("./assets/download-map").RenderAssetInfo | null;
923
923
  enforceAudioTrack: boolean;
924
924
  muted: boolean;
925
- }) => "no" | "yes" | "maybe";
925
+ }) => "yes" | "maybe" | "no";
926
926
  codecSupportsMedia: (codec: "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "h264-ts" | "gif") => {
927
927
  video: boolean;
928
928
  audio: boolean;
@@ -0,0 +1 @@
1
+ export declare const getRetriesLeftFromError: (error: Error | undefined) => number;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getRetriesLeftFromError = void 0;
4
+ const no_react_1 = require("remotion/no-react");
5
+ const getRetriesLeftFromError = (error) => {
6
+ if (!error) {
7
+ throw new Error('Expected stack');
8
+ }
9
+ const { stack } = error;
10
+ if (!stack) {
11
+ throw new Error('Expected stack: ' + JSON.stringify(error));
12
+ }
13
+ const beforeIndex = stack.indexOf(no_react_1.NoReactInternals.DELAY_RENDER_ATTEMPT_TOKEN);
14
+ if (beforeIndex === -1) {
15
+ throw new Error('Expected to find attempt token in stack');
16
+ }
17
+ const afterIndex = stack.indexOf(no_react_1.NoReactInternals.DELAY_RENDER_RETRY_TOKEN);
18
+ if (afterIndex === -1) {
19
+ throw new Error('Expected to find retry token in stack');
20
+ }
21
+ const inbetween = stack.substring(beforeIndex + no_react_1.NoReactInternals.DELAY_RENDER_ATTEMPT_TOKEN.length, afterIndex);
22
+ const parsed = Number(inbetween);
23
+ if (Number.isNaN(parsed)) {
24
+ throw new Error(`Expected to find a number in the stack ${stack}`);
25
+ }
26
+ return parsed;
27
+ };
28
+ exports.getRetriesLeftFromError = getRetriesLeftFromError;
@@ -7,6 +7,10 @@ import type { validOpenGlRenderers } from './options/gl';
7
7
  import type { OnBrowserDownload } from './options/on-browser-download';
8
8
  type OpenGlRenderer = (typeof validOpenGlRenderers)[number];
9
9
  type OnlyV4Options = typeof NoReactInternals.ENABLE_V5_BREAKING_CHANGES extends true ? {} : {
10
+ /**
11
+ * @deprecated - Will be removed in v5.
12
+ * Chrome Headless shell does not allow disabling headless mode anymore.
13
+ */
10
14
  headless?: boolean;
11
15
  };
12
16
  export type ChromiumOptions = {
@@ -1,19 +1,19 @@
1
1
  export declare const validOpenGlRenderers: readonly ["swangle", "angle", "egl", "swiftshader", "vulkan", "angle-egl"];
2
2
  export type OpenGlRenderer = (typeof validOpenGlRenderers)[number];
3
3
  export declare const DEFAULT_OPENGL_RENDERER: OpenGlRenderer | null;
4
- export declare const getChromiumOpenGlRenderer: () => "angle" | "swangle" | "egl" | "swiftshader" | "vulkan" | "angle-egl" | null;
4
+ export declare const getChromiumOpenGlRenderer: () => "swangle" | "angle" | "egl" | "swiftshader" | "vulkan" | "angle-egl" | null;
5
5
  export declare const setChromiumOpenGlRenderer: (renderer: OpenGlRenderer) => void;
6
6
  export declare const glOption: {
7
7
  cliFlag: "gl";
8
8
  docLink: string;
9
9
  name: string;
10
- type: "angle" | "swangle" | "egl" | "swiftshader" | "vulkan" | "angle-egl" | null;
10
+ type: "swangle" | "angle" | "egl" | "swiftshader" | "vulkan" | "angle-egl" | null;
11
11
  ssrName: string;
12
12
  description: () => import("react/jsx-runtime").JSX.Element;
13
13
  getValue: ({ commandLine }: {
14
14
  commandLine: Record<string, unknown>;
15
15
  }) => {
16
- value: "angle" | "swangle" | "egl" | "swiftshader" | "vulkan" | "angle-egl";
16
+ value: "swangle" | "angle" | "egl" | "swiftshader" | "vulkan" | "angle-egl";
17
17
  source: string;
18
18
  } | {
19
19
  value: null;
@@ -8,7 +8,7 @@ const cliFlag = 'disable-headless';
8
8
  exports.headlessOption = {
9
9
  name: 'Disable Headless Mode',
10
10
  cliFlag,
11
- description: () => ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: "If disabled, the render will open an actual Chrome window where you can see the render happen. The default is headless mode." })),
11
+ description: () => ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: ["Deprecated - will be removed in 5.0.0. With the migration to", ' ', (0, jsx_runtime_1.jsx)("a", { href: "/docs/miscellaneous/chrome-headless-shell", children: "Chrome Headless Shell" }), ", this option is not functional anymore.", (0, jsx_runtime_1.jsx)("br", {}), (0, jsx_runtime_1.jsx)("br", {}), " If disabled, the render will open an actual Chrome window where you can see the render happen. The default is headless mode."] })),
12
12
  ssrName: 'headless',
13
13
  docLink: 'https://www.remotion.dev/docs/chromium-flags#--disable-headless',
14
14
  type: false,
@@ -245,19 +245,19 @@ export declare const allOptions: {
245
245
  cliFlag: "gl";
246
246
  docLink: string;
247
247
  name: string;
248
- type: "angle" | "swangle" | "egl" | "swiftshader" | "vulkan" | "angle-egl" | null;
248
+ type: "swangle" | "angle" | "egl" | "swiftshader" | "vulkan" | "angle-egl" | null;
249
249
  ssrName: string;
250
250
  description: () => import("react/jsx-runtime").JSX.Element;
251
251
  getValue: ({ commandLine }: {
252
252
  commandLine: Record<string, unknown>;
253
253
  }) => {
254
- value: "angle" | "swangle" | "egl" | "swiftshader" | "vulkan" | "angle-egl";
254
+ value: "swangle" | "angle" | "egl" | "swiftshader" | "vulkan" | "angle-egl";
255
255
  source: string;
256
256
  } | {
257
257
  value: null;
258
258
  source: string;
259
259
  };
260
- setConfig: (value: "angle" | "swangle" | "egl" | "swiftshader" | "vulkan" | "angle-egl" | null) => void;
260
+ setConfig: (value: "swangle" | "angle" | "egl" | "swiftshader" | "vulkan" | "angle-egl" | null) => void;
261
261
  };
262
262
  enableLambdaInsights: {
263
263
  name: string;
@@ -382,17 +382,17 @@ export declare const allOptions: {
382
382
  description: () => import("react/jsx-runtime").JSX.Element;
383
383
  ssrName: "x264Preset";
384
384
  docLink: string;
385
- type: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo" | null;
385
+ type: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | null;
386
386
  getValue: ({ commandLine }: {
387
387
  commandLine: Record<string, unknown>;
388
388
  }) => {
389
- value: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo";
389
+ value: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo";
390
390
  source: string;
391
391
  } | {
392
392
  value: null;
393
393
  source: string;
394
394
  };
395
- setConfig: (profile: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo" | null) => void;
395
+ setConfig: (profile: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | null) => void;
396
396
  };
397
397
  logLevelOption: {
398
398
  cliFlag: "log";
@@ -72,17 +72,17 @@ export declare const optionsMap: {
72
72
  description: () => import("react/jsx-runtime").JSX.Element;
73
73
  ssrName: "x264Preset";
74
74
  docLink: string;
75
- type: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo" | null;
75
+ type: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | null;
76
76
  getValue: ({ commandLine }: {
77
77
  commandLine: Record<string, unknown>;
78
78
  }) => {
79
- value: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo";
79
+ value: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo";
80
80
  source: string;
81
81
  } | {
82
82
  value: null;
83
83
  source: string;
84
84
  };
85
- setConfig: (profile: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo" | null) => void;
85
+ setConfig: (profile: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | null) => void;
86
86
  };
87
87
  readonly audioBitrate: {
88
88
  name: string;
@@ -794,17 +794,17 @@ export declare const optionsMap: {
794
794
  description: () => import("react/jsx-runtime").JSX.Element;
795
795
  ssrName: "x264Preset";
796
796
  docLink: string;
797
- type: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo" | null;
797
+ type: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | null;
798
798
  getValue: ({ commandLine }: {
799
799
  commandLine: Record<string, unknown>;
800
800
  }) => {
801
- value: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo";
801
+ value: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo";
802
802
  source: string;
803
803
  } | {
804
804
  value: null;
805
805
  source: string;
806
806
  };
807
- setConfig: (profile: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo" | null) => void;
807
+ setConfig: (profile: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | null) => void;
808
808
  };
809
809
  readonly encodingMaxRate: {
810
810
  name: string;
@@ -1160,17 +1160,17 @@ export declare const optionsMap: {
1160
1160
  description: () => import("react/jsx-runtime").JSX.Element;
1161
1161
  ssrName: "x264Preset";
1162
1162
  docLink: string;
1163
- type: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo" | null;
1163
+ type: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | null;
1164
1164
  getValue: ({ commandLine }: {
1165
1165
  commandLine: Record<string, unknown>;
1166
1166
  }) => {
1167
- value: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo";
1167
+ value: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo";
1168
1168
  source: string;
1169
1169
  } | {
1170
1170
  value: null;
1171
1171
  source: string;
1172
1172
  };
1173
- setConfig: (profile: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo" | null) => void;
1173
+ setConfig: (profile: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | null) => void;
1174
1174
  };
1175
1175
  readonly encodingMaxRate: {
1176
1176
  name: string;
@@ -11,11 +11,11 @@ export declare const x264Option: {
11
11
  description: () => import("react/jsx-runtime").JSX.Element;
12
12
  ssrName: "x264Preset";
13
13
  docLink: string;
14
- type: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo" | null;
14
+ type: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | null;
15
15
  getValue: ({ commandLine }: {
16
16
  commandLine: Record<string, unknown>;
17
17
  }) => {
18
- value: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo";
18
+ value: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo";
19
19
  source: string;
20
20
  } | {
21
21
  value: null;
@@ -2,5 +2,5 @@ import type { Codec } from './codec';
2
2
  export declare const validPixelFormats: readonly ["yuv420p", "yuva420p", "yuv422p", "yuv444p", "yuv420p10le", "yuv422p10le", "yuv444p10le", "yuva444p10le"];
3
3
  export type PixelFormat = (typeof validPixelFormats)[number];
4
4
  export declare const DEFAULT_PIXEL_FORMAT: PixelFormat;
5
- export declare const validPixelFormatsForCodec: (codec: Codec) => readonly ["yuv420p", "yuva420p", "yuv422p", "yuv444p", "yuv420p10le", "yuv422p10le", "yuv444p10le", "yuva444p10le"] | ("yuv420p" | "yuva420p" | "yuv422p" | "yuv444p" | "yuv420p10le" | "yuv422p10le" | "yuv444p10le" | "yuva444p10le")[];
5
+ export declare const validPixelFormatsForCodec: (codec: Codec) => readonly ["yuv420p", "yuva420p", "yuv422p", "yuv444p", "yuv420p10le", "yuv422p10le", "yuv444p10le", "yuva444p10le"] | ("yuv420p" | "yuv422p" | "yuv444p" | "yuva420p" | "yuv420p10le" | "yuv422p10le" | "yuv444p10le" | "yuva444p10le")[];
6
6
  export declare const validateSelectedPixelFormatAndCodecCombination: (pixelFormat: PixelFormat | undefined, codec: Codec) => undefined;
@@ -23,7 +23,7 @@ const get_duration_from_frame_range_1 = require("./get-duration-from-frame-range
23
23
  const get_extra_frames_to_capture_1 = require("./get-extra-frames-to-capture");
24
24
  const get_frame_padded_index_1 = require("./get-frame-padded-index");
25
25
  const get_frame_to_render_1 = require("./get-frame-to-render");
26
- const is_delay_render_error_with_retry_1 = require("./is-delay-render-error-with.retry");
26
+ const is_delay_render_error_with_retry_1 = require("./is-delay-render-error-with-retry");
27
27
  const jpeg_quality_1 = require("./jpeg-quality");
28
28
  const logger_1 = require("./logger");
29
29
  const make_cancel_signal_1 = require("./make-cancel-signal");
@@ -128,6 +128,11 @@ const internalRenderMediaRaw = ({ proResProfile, x264Preset, crf, composition, s
128
128
  logLevel,
129
129
  tag: 'renderMedia()',
130
130
  }, 'Using concurrency:', resolvedConcurrency);
131
+ logger_1.Log.verbose({
132
+ indent,
133
+ logLevel,
134
+ tag: 'renderMedia()',
135
+ }, 'delayRender() timeout:', timeoutInMilliseconds);
131
136
  logger_1.Log.verbose({
132
137
  indent,
133
138
  logLevel,
@@ -0,0 +1,11 @@
1
+ export declare const streamingKey = "remotion_buffer:";
2
+ export declare const makeStreamer: (onMessage: (statusType: 'success' | 'error', nonce: string, data: Uint8Array) => void) => {
3
+ onData: (data: Uint8Array) => void;
4
+ getOutputBuffer: () => Uint8Array;
5
+ clear: () => void;
6
+ };
7
+ export declare const makeStreamPayloadMessage: ({ status, body, nonce, }: {
8
+ nonce: string;
9
+ status: 0 | 1;
10
+ body: Uint8Array;
11
+ }) => Uint8Array;
@@ -0,0 +1,140 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.makeStreamPayloadMessage = exports.makeStreamer = exports.streamingKey = void 0;
4
+ exports.streamingKey = 'remotion_buffer:';
5
+ const magicWordStr = 'remotion_buffer:';
6
+ const makeStreamer = (onMessage) => {
7
+ const separator = new Uint8Array(magicWordStr.length);
8
+ for (let i = 0; i < magicWordStr.length; i++) {
9
+ separator[i] = magicWordStr.charCodeAt(i);
10
+ }
11
+ let unprocessedBuffers = [];
12
+ let outputBuffer = new Uint8Array(0);
13
+ let missingData = null;
14
+ const processInput = () => {
15
+ let separatorIndex = outputBuffer.indexOf(separator[0]); // Start checking for the first byte of the separator
16
+ if (separatorIndex === -1 ||
17
+ outputBuffer
18
+ .subarray(separatorIndex, separatorIndex + separator.length)
19
+ .toString() !== separator.toString()) {
20
+ return;
21
+ }
22
+ separatorIndex += separator.length;
23
+ let nonceString = '';
24
+ let lengthString = '';
25
+ let statusString = '';
26
+ // eslint-disable-next-line no-constant-condition
27
+ while (true) {
28
+ if (separatorIndex > outputBuffer.length - 1) {
29
+ return;
30
+ }
31
+ const nextDigit = outputBuffer[separatorIndex];
32
+ separatorIndex++;
33
+ if (nextDigit === 0x3a) {
34
+ break;
35
+ }
36
+ nonceString += String.fromCharCode(nextDigit);
37
+ }
38
+ // eslint-disable-next-line no-constant-condition
39
+ while (true) {
40
+ if (separatorIndex > outputBuffer.length - 1) {
41
+ return;
42
+ }
43
+ const nextDigit = outputBuffer[separatorIndex];
44
+ separatorIndex++;
45
+ if (nextDigit === 0x3a) {
46
+ break;
47
+ }
48
+ lengthString += String.fromCharCode(nextDigit);
49
+ }
50
+ // eslint-disable-next-line no-constant-condition
51
+ while (true) {
52
+ if (separatorIndex > outputBuffer.length - 1) {
53
+ return;
54
+ }
55
+ const nextDigit = outputBuffer[separatorIndex];
56
+ if (nextDigit === 0x3a) {
57
+ break;
58
+ }
59
+ separatorIndex++;
60
+ statusString += String.fromCharCode(nextDigit);
61
+ }
62
+ const length = Number(lengthString);
63
+ const status = Number(statusString);
64
+ const dataLength = outputBuffer.length - separatorIndex - 1;
65
+ if (dataLength < length) {
66
+ missingData = {
67
+ dataMissing: length - dataLength,
68
+ };
69
+ return;
70
+ }
71
+ const data = outputBuffer.subarray(separatorIndex + 1, separatorIndex + 1 + Number(lengthString));
72
+ onMessage(status === 1 ? 'error' : 'success', nonceString, data);
73
+ missingData = null;
74
+ outputBuffer = outputBuffer.subarray(separatorIndex + Number(lengthString) + 1);
75
+ processInput();
76
+ };
77
+ const onData = (data) => {
78
+ unprocessedBuffers.push(data);
79
+ const separatorIndex = data.indexOf(separator[0]);
80
+ if (separatorIndex === -1) {
81
+ if (missingData) {
82
+ missingData.dataMissing -= data.length;
83
+ }
84
+ if (!missingData || missingData.dataMissing > 0) {
85
+ return;
86
+ }
87
+ }
88
+ unprocessedBuffers.unshift(outputBuffer);
89
+ outputBuffer = new Uint8Array(unprocessedBuffers.reduce((acc, val) => acc + val.length, 0));
90
+ let offset = 0;
91
+ for (const buf of unprocessedBuffers) {
92
+ outputBuffer.set(buf, offset);
93
+ offset += buf.length;
94
+ }
95
+ unprocessedBuffers = [];
96
+ processInput();
97
+ };
98
+ return {
99
+ onData,
100
+ getOutputBuffer: () => outputBuffer,
101
+ clear: () => {
102
+ unprocessedBuffers = [];
103
+ outputBuffer = new Uint8Array(0);
104
+ },
105
+ };
106
+ };
107
+ exports.makeStreamer = makeStreamer;
108
+ const makeStreamPayloadMessage = ({ status, body, nonce, }) => {
109
+ const nonceArr = new TextEncoder().encode(nonce);
110
+ const magicWordArr = new TextEncoder().encode(magicWordStr);
111
+ const separatorArr = new TextEncoder().encode(':');
112
+ const bodyLengthArr = new TextEncoder().encode(body.length.toString());
113
+ const statusArr = new TextEncoder().encode(String(status));
114
+ // Calculate total length of new Uint8Array
115
+ const totalLength = nonceArr.length +
116
+ magicWordArr.length +
117
+ separatorArr.length * 3 +
118
+ bodyLengthArr.length +
119
+ statusArr.length +
120
+ body.length;
121
+ // Create a new Uint8Array to hold all combined parts
122
+ const concat = new Uint8Array(totalLength);
123
+ let offset = 0;
124
+ // Function to append data to concat
125
+ const appendToConcat = (data) => {
126
+ concat.set(data, offset);
127
+ offset += data.length;
128
+ };
129
+ // Building the final Uint8Array
130
+ appendToConcat(magicWordArr);
131
+ appendToConcat(nonceArr);
132
+ appendToConcat(separatorArr);
133
+ appendToConcat(bodyLengthArr);
134
+ appendToConcat(separatorArr);
135
+ appendToConcat(statusArr);
136
+ appendToConcat(separatorArr);
137
+ appendToConcat(body);
138
+ return concat;
139
+ };
140
+ exports.makeStreamPayloadMessage = makeStreamPayloadMessage;
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.206",
6
+ "version": "4.0.208",
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/streaming": "4.0.206",
22
- "remotion": "4.0.206"
21
+ "remotion": "4.0.208",
22
+ "@remotion/streaming": "4.0.208"
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-darwin-arm64": "4.0.206",
38
- "@remotion/compositor-linux-arm64-musl": "4.0.206",
39
- "@remotion/compositor-darwin-x64": "4.0.206",
40
- "@remotion/compositor-linux-arm64-gnu": "4.0.206",
41
- "@remotion/compositor-linux-x64-gnu": "4.0.206",
42
- "@remotion/compositor-win32-x64-msvc": "4.0.206",
43
- "@remotion/compositor-linux-x64-musl": "4.0.206"
37
+ "@remotion/compositor-darwin-x64": "4.0.208",
38
+ "@remotion/compositor-darwin-arm64": "4.0.208",
39
+ "@remotion/compositor-linux-arm64-gnu": "4.0.208",
40
+ "@remotion/compositor-linux-arm64-musl": "4.0.208",
41
+ "@remotion/compositor-linux-x64-gnu": "4.0.208",
42
+ "@remotion/compositor-win32-x64-msvc": "4.0.208",
43
+ "@remotion/compositor-linux-x64-musl": "4.0.208"
44
44
  },
45
45
  "keywords": [
46
46
  "remotion",