@remotion/renderer 4.0.141 → 4.0.142

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.
@@ -1,3 +1,3 @@
1
1
  import type { LogLevel } from './log-level';
2
2
  export declare const gLibCErrorMessage: (libCString: string) => string | null;
3
- export declare const checkNodeVersionAndWarnAboutRosetta: (logLevel: LogLevel, indent: boolean) => void;
3
+ export declare const checkRuntimeVersion: (logLevel: LogLevel, indent: boolean) => void;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.checkNodeVersionAndWarnAboutRosetta = exports.gLibCErrorMessage = void 0;
3
+ exports.checkRuntimeVersion = exports.gLibCErrorMessage = void 0;
4
+ const no_react_1 = require("remotion/no-react");
4
5
  const get_executable_path_1 = require("./compositor/get-executable-path");
5
6
  const logger_1 = require("./logger");
6
7
  const getRequiredLibCVersion = () => {
@@ -54,13 +55,25 @@ const checkLibCRequirement = (logLevel, indent) => {
54
55
  }
55
56
  }
56
57
  };
57
- const checkNodeVersionAndWarnAboutRosetta = (logLevel, indent) => {
58
+ const checkNodeVersion = () => {
58
59
  const version = process.version.replace('v', '').split('.');
59
60
  const majorVersion = Number(version[0]);
60
- const requiredNodeVersion = 16;
61
- if (majorVersion < 16) {
62
- throw new Error(`Remotion requires at least Node ${requiredNodeVersion}. You currently have ${process.version}. Update your node version to ${requiredNodeVersion} to use Remotion.`);
61
+ if (majorVersion < no_react_1.NoReactInternals.MIN_NODE_VERSION) {
62
+ throw new Error(`Remotion requires at least Node ${no_react_1.NoReactInternals.MIN_NODE_VERSION}. You currently have ${process.version}. Update your node version to ${no_react_1.NoReactInternals.MIN_NODE_VERSION} to use Remotion.`);
63
+ }
64
+ };
65
+ const checkBunVersion = () => {
66
+ if (!Bun.semver.satisfies(Bun.version, `>=${no_react_1.NoReactInternals.MIN_BUN_VERSION}`)) {
67
+ throw new Error(`Remotion requires at least Bun ${no_react_1.NoReactInternals.MIN_BUN_VERSION}. You currently have ${Bun.version}. Update your Bun version to ${no_react_1.NoReactInternals.MIN_BUN_VERSION} to use Remotion.`);
68
+ }
69
+ };
70
+ const checkRuntimeVersion = (logLevel, indent) => {
71
+ if (typeof Bun === 'undefined') {
72
+ checkNodeVersion();
73
+ }
74
+ else {
75
+ checkBunVersion();
63
76
  }
64
77
  checkLibCRequirement(logLevel, indent);
65
78
  };
66
- exports.checkNodeVersionAndWarnAboutRosetta = checkNodeVersionAndWarnAboutRosetta;
79
+ exports.checkRuntimeVersion = checkRuntimeVersion;
package/dist/client.d.ts CHANGED
@@ -465,19 +465,19 @@ export declare const BrowserSafeApis: {
465
465
  cliFlag: "gl";
466
466
  docLink: string;
467
467
  name: string;
468
- type: "angle" | "swangle" | "egl" | "swiftshader" | "vulkan" | "angle-egl" | null;
468
+ type: "swangle" | "angle" | "egl" | "swiftshader" | "vulkan" | "angle-egl" | null;
469
469
  ssrName: string;
470
470
  description: () => import("react/jsx-runtime").JSX.Element;
471
471
  getValue: ({ commandLine }: {
472
472
  commandLine: Record<string, unknown>;
473
473
  }) => {
474
- value: "angle" | "swangle" | "egl" | "swiftshader" | "vulkan" | "angle-egl";
474
+ value: "swangle" | "angle" | "egl" | "swiftshader" | "vulkan" | "angle-egl";
475
475
  source: string;
476
476
  } | {
477
477
  value: null;
478
478
  source: string;
479
479
  };
480
- setConfig: (value: "angle" | "swangle" | "egl" | "swiftshader" | "vulkan" | "angle-egl" | null) => void;
480
+ setConfig: (value: "swangle" | "angle" | "egl" | "swiftshader" | "vulkan" | "angle-egl" | null) => void;
481
481
  };
482
482
  enableLambdaInsights: {
483
483
  name: string;
@@ -602,17 +602,17 @@ export declare const BrowserSafeApis: {
602
602
  description: () => import("react/jsx-runtime").JSX.Element;
603
603
  ssrName: "x264Preset";
604
604
  docLink: string;
605
- type: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo" | null;
605
+ type: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | null;
606
606
  getValue: ({ commandLine }: {
607
607
  commandLine: Record<string, unknown>;
608
608
  }) => {
609
- value: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo";
609
+ value: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo";
610
610
  source: string;
611
611
  } | {
612
612
  value: null;
613
613
  source: string;
614
614
  };
615
- setConfig: (profile: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo" | null) => void;
615
+ setConfig: (profile: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | null) => void;
616
616
  };
617
617
  logLevelOption: {
618
618
  cliFlag: "log";
@@ -862,17 +862,17 @@ export declare const BrowserSafeApis: {
862
862
  description: () => import("react/jsx-runtime").JSX.Element;
863
863
  ssrName: "x264Preset";
864
864
  docLink: string;
865
- type: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo" | null;
865
+ type: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | null;
866
866
  getValue: ({ commandLine }: {
867
867
  commandLine: Record<string, unknown>;
868
868
  }) => {
869
- value: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo";
869
+ value: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo";
870
870
  source: string;
871
871
  } | {
872
872
  value: null;
873
873
  source: string;
874
874
  };
875
- setConfig: (profile: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo" | null) => void;
875
+ setConfig: (profile: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | null) => void;
876
876
  };
877
877
  readonly audioBitrate: {
878
878
  name: string;
@@ -1584,17 +1584,17 @@ export declare const BrowserSafeApis: {
1584
1584
  description: () => import("react/jsx-runtime").JSX.Element;
1585
1585
  ssrName: "x264Preset";
1586
1586
  docLink: string;
1587
- type: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo" | null;
1587
+ type: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | null;
1588
1588
  getValue: ({ commandLine }: {
1589
1589
  commandLine: Record<string, unknown>;
1590
1590
  }) => {
1591
- value: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo";
1591
+ value: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo";
1592
1592
  source: string;
1593
1593
  } | {
1594
1594
  value: null;
1595
1595
  source: string;
1596
1596
  };
1597
- setConfig: (profile: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo" | null) => void;
1597
+ setConfig: (profile: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | null) => void;
1598
1598
  };
1599
1599
  readonly encodingMaxRate: {
1600
1600
  name: string;
@@ -1950,17 +1950,17 @@ export declare const BrowserSafeApis: {
1950
1950
  description: () => import("react/jsx-runtime").JSX.Element;
1951
1951
  ssrName: "x264Preset";
1952
1952
  docLink: string;
1953
- type: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo" | null;
1953
+ type: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | null;
1954
1954
  getValue: ({ commandLine }: {
1955
1955
  commandLine: Record<string, unknown>;
1956
1956
  }) => {
1957
- value: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo";
1957
+ value: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo";
1958
1958
  source: string;
1959
1959
  } | {
1960
1960
  value: null;
1961
1961
  source: string;
1962
1962
  };
1963
- setConfig: (profile: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo" | null) => void;
1963
+ setConfig: (profile: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | null) => void;
1964
1964
  };
1965
1965
  readonly encodingMaxRate: {
1966
1966
  name: string;
@@ -10,7 +10,6 @@ const logger_1 = require("../logger");
10
10
  let warned = false;
11
11
  function isMusl({ indent, logLevel, }) {
12
12
  var _a;
13
- // @ts-expect-error bun no types
14
13
  if (!process.report && typeof Bun !== 'undefined') {
15
14
  if (!warned) {
16
15
  logger_1.Log.warn({ indent, logLevel }, 'Bun limitation: Could not determine if your Linux is using musl or glibc. Assuming glibc.');
@@ -40,7 +40,7 @@ export type VideoMetadata = {
40
40
  audioFileExtension: string | null;
41
41
  pixelFormat: null | 'yuv420p' | 'yuyv422' | 'rgb24' | 'bgr24' | 'yuv422p' | 'yuv444p' | 'yuv410p' | 'yuv411p' | 'yuvj420p' | 'yuvj422p' | 'yuvj444p' | 'argb' | 'rgba' | 'abgr' | 'bgra' | 'yuv440p' | 'yuvj440p' | 'yuva420p' | 'yuv420p16le' | 'yuv420p16be' | 'yuv422p16le' | 'yuv422p16be' | 'yuv444p16le' | 'yuv444p16be' | 'yuv420p9be' | 'yuv420p9le' | 'yuv420p10be' | 'yuv420p10le' | 'yuv422p10be' | 'yuv422p10le' | 'yuv444p9be' | 'yuv444p9le' | 'yuv444p10be' | 'yuv444p10le' | 'yuv422p9be' | 'yuv422p9le' | 'yuva420p9be' | 'yuva420p9le' | 'yuva422p9be' | 'yuva422p9le' | 'yuva444p9be' | 'yuva444p9le' | 'yuva420p10be' | 'yuva420p10le' | 'yuva422p10be' | 'yuva422p10le' | 'yuva444p10be' | 'yuva444p10le' | 'yuva420p16be' | 'yuva420p16le' | 'yuva422p16be' | 'yuva422p16le' | 'yuva444p16be' | 'yuva444p16le' | 'yuva444p' | 'yuva422p' | 'yuv420p12be' | 'yuv420p12le' | 'yuv420p14be' | 'yuv420p14le' | 'yuv422p12be' | 'yuv422p12le' | 'yuv422p14be' | 'yuv422p14le' | 'yuv444p12be' | 'yuv444p12le' | 'yuv444p14be' | 'yuv444p14le' | 'yuvj411p' | 'yuv440p10le' | 'yuv440p10be' | 'yuv440p12le' | 'yuv440p12be' | 'yuv420p9' | 'yuv422p9' | 'yuv444p9' | 'yuv420p10' | 'yuv422p10' | 'yuv440p10' | 'yuv444p10' | 'yuv420p12' | 'yuv422p12' | 'yuv440p12' | 'yuv444p12' | 'yuv420p14' | 'yuv422p14' | 'yuv444p14' | 'yuv420p16' | 'yuv422p16' | 'yuv444p16' | 'yuva420p9' | 'yuva422p9' | 'yuva444p9' | 'yuva420p10' | 'yuva422p10' | 'yuva444p10' | 'yuva420p16' | 'yuva422p16' | 'yuva444p16' | 'yuva422p12be' | 'yuva422p12le' | 'yuva444p12be' | 'yuva444p12le' | 'unknown';
42
42
  };
43
- type SilentPart = {
43
+ export type SilentPart = {
44
44
  startInSeconds: number;
45
45
  endInSeconds: number;
46
46
  };
@@ -109,4 +109,3 @@ export type ErrorPayload = {
109
109
  error: string;
110
110
  backtrace: string;
111
111
  };
112
- export {};
@@ -4,6 +4,9 @@ export declare const createFfmpegComplexFilter: ({ filters, downloadMap, }: {
4
4
  filters: PreprocessedAudioTrack[];
5
5
  downloadMap: DownloadMap;
6
6
  }) => Promise<{
7
- complexFilterFlag: [string, string] | null;
7
+ complexFilterFlag: [
8
+ string,
9
+ string
10
+ ] | null;
8
11
  cleanup: () => void;
9
12
  }>;
@@ -6,6 +6,7 @@ import type { ChromiumOptions } from './open-browser';
6
6
  import type { ToOptions } from './options/option';
7
7
  import type { optionsMap } from './options/options-map';
8
8
  import type { RemotionServer } from './prepare-server';
9
+ import type { RequiredInputPropsInV5 } from './v5-required-input-props';
9
10
  type InternalGetCompositionsOptions = {
10
11
  serializedInputPropsWithCustomSchema: string;
11
12
  envVariables: Record<string, string>;
@@ -18,8 +19,7 @@ type InternalGetCompositionsOptions = {
18
19
  indent: boolean;
19
20
  serveUrlOrWebpackUrl: string;
20
21
  } & ToOptions<typeof optionsMap.getCompositions>;
21
- export type GetCompositionsOptions = {
22
- inputProps?: Record<string, unknown> | null;
22
+ export type GetCompositionsOptions = RequiredInputPropsInV5 & {
23
23
  envVariables?: Record<string, string>;
24
24
  puppeteerInstance?: HeadlessBrowser;
25
25
  onBrowserLog?: (log: BrowserLog) => void;
@@ -1,5 +1,6 @@
1
- import type { GetSilentPartsResponse } from './compositor/payloads';
1
+ import type { GetSilentPartsResponse, SilentPart } from './compositor/payloads';
2
2
  import type { LogLevel } from './log-level';
3
+ export type { SilentPart };
3
4
  export declare const getSilentParts: ({ src, noiseThresholdInDecibels: passedNoiseThresholdInDecibels, minDurationInSeconds: passedMinDuration, logLevel, binariesDirectory, }: {
4
5
  src: string;
5
6
  minDurationInSeconds?: number | undefined;
package/dist/index.d.ts CHANGED
@@ -19,7 +19,7 @@ export type { FfmpegOverrideFn } from './ffmpeg-override';
19
19
  export { FileExtension } from './file-extensions';
20
20
  export { FrameRange } from './frame-range';
21
21
  export { GetCompositionsOptions, getCompositions } from './get-compositions';
22
- export { getSilentParts } from './get-silent-parts';
22
+ export { SilentPart, getSilentParts } from './get-silent-parts';
23
23
  export { VideoMetadata, getVideoMetadata } from './get-video-metadata';
24
24
  export { ImageFormat, StillImageFormat, VideoImageFormat, validateSelectedPixelFormatAndImageFormatCombination, } from './image-format';
25
25
  export type { LogLevel } from './log-level';
@@ -140,8 +140,8 @@ export declare const RenderInternals: {
140
140
  validPixelFormats: readonly ["yuv420p", "yuva420p", "yuv422p", "yuv444p", "yuv420p10le", "yuv422p10le", "yuv444p10le", "yuva444p10le"];
141
141
  DEFAULT_BROWSER: "chrome";
142
142
  validateFrameRange: (frameRange: import("./frame-range").FrameRange | null) => void;
143
- DEFAULT_OPENGL_RENDERER: "angle" | "swangle" | "egl" | "swiftshader" | "vulkan" | "angle-egl" | null;
144
- validateOpenGlRenderer: (option: unknown) => "angle" | "swangle" | "egl" | "swiftshader" | "vulkan" | "angle-egl" | null;
143
+ DEFAULT_OPENGL_RENDERER: "swangle" | "angle" | "egl" | "swiftshader" | "vulkan" | "angle-egl" | null;
144
+ validateOpenGlRenderer: (option: unknown) => "swangle" | "angle" | "egl" | "swiftshader" | "vulkan" | "angle-egl" | null;
145
145
  validCodecs: readonly ["h264", "h265", "vp8", "vp9", "mp3", "aac", "wav", "prores", "h264-mkv", "h264-ts", "gif"];
146
146
  DEFAULT_PIXEL_FORMAT: "yuv420p" | "yuva420p" | "yuv422p" | "yuv444p" | "yuv420p10le" | "yuv422p10le" | "yuv444p10le" | "yuva444p10le";
147
147
  validateJpegQuality: (q: unknown) => void;
@@ -408,12 +408,12 @@ export declare const RenderInternals: {
408
408
  Log: {
409
409
  verbose: (options: import("./logger").LogOptions & {
410
410
  tag?: string | undefined;
411
- }, message?: any, ...optionalParams: any[]) => void;
412
- info: (options: import("./logger").LogOptions, message?: any, ...optionalParams: any[]) => void;
413
- warn: (options: import("./logger").LogOptions, message?: any, ...optionalParams: any[]) => void;
411
+ }, ...args: any[]) => void;
412
+ info: (options: import("./logger").LogOptions, ...args: any[]) => void;
413
+ warn: (options: import("./logger").LogOptions, ...args: any[]) => void;
414
414
  error: (options: import("./logger").LogOptions & {
415
415
  tag?: string | undefined;
416
- }, message?: any, ...optionalParams: any[]) => void;
416
+ }, ...args: any[]) => void;
417
417
  };
418
418
  INDENT_TOKEN: string;
419
419
  isColorSupported: () => boolean;
package/dist/index.js CHANGED
@@ -207,4 +207,4 @@ exports.RenderInternals = {
207
207
  internalEnsureBrowser: ensure_browser_2.internalEnsureBrowser,
208
208
  };
209
209
  // Warn of potential performance issues with Apple Silicon (M1 chip under Rosetta)
210
- (0, check_version_requirements_1.checkNodeVersionAndWarnAboutRosetta)('info', false);
210
+ (0, check_version_requirements_1.checkRuntimeVersion)('info', false);
package/dist/logger.d.ts CHANGED
@@ -10,9 +10,9 @@ type VerboseLogOptions = LogOptions & {
10
10
  export declare const verboseTag: (str: string) => string;
11
11
  export declare const secondverboseTag: (str: string) => string;
12
12
  export declare const Log: {
13
- verbose: (options: VerboseLogOptions, message?: any, ...optionalParams: any[]) => void;
14
- info: (options: LogOptions, message?: any, ...optionalParams: any[]) => void;
15
- warn: (options: LogOptions, message?: any, ...optionalParams: any[]) => void;
16
- error: (options: VerboseLogOptions, message?: any, ...optionalParams: any[]) => void;
13
+ verbose: (options: VerboseLogOptions, ...args: Parameters<typeof console.log>) => void;
14
+ info: (options: LogOptions, ...args: Parameters<typeof console.log>) => void;
15
+ warn: (options: LogOptions, ...args: Parameters<typeof console.log>) => void;
16
+ error: (options: VerboseLogOptions, ...args: Parameters<typeof console.log>) => void;
17
17
  };
18
18
  export {};
@@ -120,6 +120,8 @@ const internalOpenBrowser = async ({ browser, browserExecutable, chromiumOptions
120
120
  '--no-pings', // https://source.chromium.org/search?q=lang:cpp+symbol:kNoPings&ss=chromium
121
121
  '--font-render-hinting=none',
122
122
  '--no-zygote', // https://source.chromium.org/search?q=lang:cpp+symbol:kNoZygote&ss=chromium,
123
+ '--ignore-gpu-blocklist',
124
+ '--enable-unsafe-webgpu',
123
125
  typeof forceDeviceScaleFactor === 'undefined'
124
126
  ? null
125
127
  : `--force-device-scale-factor=${forceDeviceScaleFactor}`,
@@ -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;
@@ -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;
@@ -1,8 +1,4 @@
1
1
  /// <reference types="node" />
2
- /// <reference types="node" />
3
- /// <reference types="node" />
4
- /// <reference types="node" />
5
- /// <reference types="node" />
6
2
  import type { NetworkInterfaceInfo } from 'os';
7
3
  import os from 'os';
8
4
  type PortConfig = {
@@ -31,6 +31,8 @@ const preprocessAudioTrackUnlimited = async ({ outName, asset, fps, downloadMap,
31
31
  trimRightOffset,
32
32
  forSeamlessAacConcatenation,
33
33
  volume: (0, flatten_volume_array_1.flattenVolumeArray)(asset.volume),
34
+ indent,
35
+ logLevel,
34
36
  });
35
37
  if (filter === null) {
36
38
  return null;
package/dist/repro.d.ts CHANGED
@@ -13,7 +13,7 @@ type ReproWriter = {
13
13
  }) => Promise<void>;
14
14
  };
15
15
  export declare const getReproWriter: () => ReproWriter;
16
- export declare const writeInRepro: (level: string, message?: any, ...optionalParams: any[]) => void;
16
+ export declare const writeInRepro: (level: string, ...args: Parameters<typeof console.log>) => void;
17
17
  export declare const enableRepro: ({ serveUrl, compositionName, serializedInputPropsWithCustomSchema, serializedResolvedPropsWithCustomSchema, }: {
18
18
  serveUrl: string;
19
19
  compositionName: string;
@@ -6,6 +6,7 @@ import type { ChromiumOptions } from './open-browser';
6
6
  import type { ToOptions } from './options/option';
7
7
  import type { optionsMap } from './options/options-map';
8
8
  import type { RemotionServer } from './prepare-server';
9
+ import type { RequiredInputPropsInV5 } from './v5-required-input-props';
9
10
  type InternalSelectCompositionsConfig = {
10
11
  serializedInputPropsWithCustomSchema: string;
11
12
  envVariables: Record<string, string>;
@@ -19,8 +20,7 @@ type InternalSelectCompositionsConfig = {
19
20
  serveUrl: string;
20
21
  id: string;
21
22
  } & ToOptions<typeof optionsMap.selectComposition>;
22
- export type SelectCompositionOptions = {
23
- inputProps?: Record<string, unknown> | null;
23
+ export type SelectCompositionOptions = RequiredInputPropsInV5 & {
24
24
  envVariables?: Record<string, string>;
25
25
  puppeteerInstance?: HeadlessBrowser;
26
26
  onBrowserLog?: (log: BrowserLog) => void;
@@ -1,4 +1,5 @@
1
1
  import type { AssetVolume, MediaAsset } from './assets/types';
2
+ import type { LogLevel } from './log-level';
2
3
  export type FilterWithoutPaddingApplied = ProcessedTrack & {
3
4
  filter: string;
4
5
  };
@@ -12,7 +13,7 @@ export declare const getActualTrimLeft: ({ asset, fps, trimLeftOffset, seamless,
12
13
  trimLeftOffset: number;
13
14
  seamless: boolean;
14
15
  }) => number;
15
- export declare const stringifyFfmpegFilter: ({ channels, volume, fps, assetDuration, chunkLengthInSeconds, forSeamlessAacConcatenation, trimLeftOffset, trimRightOffset, asset, }: {
16
+ export declare const stringifyFfmpegFilter: ({ channels, volume, fps, assetDuration, chunkLengthInSeconds, forSeamlessAacConcatenation, trimLeftOffset, trimRightOffset, asset, indent, logLevel, }: {
16
17
  channels: number;
17
18
  volume: AssetVolume;
18
19
  fps: number;
@@ -22,4 +23,6 @@ export declare const stringifyFfmpegFilter: ({ channels, volume, fps, assetDurat
22
23
  trimLeftOffset: number;
23
24
  trimRightOffset: number;
24
25
  asset: MediaAsset;
26
+ indent: boolean;
27
+ logLevel: LogLevel;
25
28
  }) => FilterWithoutPaddingApplied | null;
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.stringifyFfmpegFilter = exports.getActualTrimLeft = void 0;
4
4
  const calculate_atempo_1 = require("./assets/calculate-atempo");
5
5
  const ffmpeg_volume_expression_1 = require("./assets/ffmpeg-volume-expression");
6
+ const logger_1 = require("./logger");
6
7
  const sample_rate_1 = require("./sample-rate");
7
8
  const truthy_1 = require("./truthy");
8
9
  const stringifyTrim = (trim) => {
@@ -29,7 +30,7 @@ const getActualTrimLeft = ({ asset, fps, trimLeftOffset, seamless, }) => {
29
30
  throw new Error('This should never happen');
30
31
  };
31
32
  exports.getActualTrimLeft = getActualTrimLeft;
32
- const trimAndSetTempo = ({ forSeamlessAacConcatenation, assetDuration, asset, trimLeftOffset, trimRightOffset, fps, }) => {
33
+ const trimAndSetTempo = ({ forSeamlessAacConcatenation, assetDuration, asset, trimLeftOffset, trimRightOffset, fps, indent, logLevel, }) => {
33
34
  // If we need seamless AAC stitching, we need to apply the tempo filter first
34
35
  // because the atempo filter is not frame-perfect. It creates a small offset
35
36
  // and the offset needs to be the same for all audio tracks, before processing it further.
@@ -42,25 +43,26 @@ const trimAndSetTempo = ({ forSeamlessAacConcatenation, assetDuration, asset, tr
42
43
  seamless: true,
43
44
  });
44
45
  const trimRight = trimLeft + asset.duration / fps - trimLeftOffset + trimRightOffset;
45
- const trimRightOrAssetDuration = assetDuration
46
+ let trimRightOrAssetDuration = assetDuration
46
47
  ? Math.min(trimRight, assetDuration / asset.playbackRate)
47
48
  : trimRight;
48
49
  if (trimRightOrAssetDuration < trimLeft) {
49
- throw new Error('trimRightOrAssetDuration < trimLeft: ' +
50
+ logger_1.Log.warn({ indent, logLevel }, 'trimRightOrAssetDuration < trimLeft: ' +
50
51
  JSON.stringify({
51
52
  trimRight,
52
53
  trimLeft,
53
54
  assetDuration,
54
55
  assetTrimLeft: asset.trimLeft,
55
56
  }));
57
+ trimRightOrAssetDuration = trimLeft;
56
58
  }
57
59
  return {
58
60
  filter: [
59
61
  (0, calculate_atempo_1.calculateATempo)(asset.playbackRate),
60
- `atrim=${stringifyTrim(trimLeft)}:${stringifyTrim(trimRight)}`,
62
+ `atrim=${stringifyTrim(trimLeft)}:${stringifyTrim(trimRightOrAssetDuration)}`,
61
63
  ],
62
64
  actualTrimLeft: trimLeft,
63
- audibleDuration: trimRight - trimLeft,
65
+ audibleDuration: trimRightOrAssetDuration - trimLeft,
64
66
  };
65
67
  }
66
68
  // Otherwise, we first trim and then apply playback rate, as then the atempo
@@ -87,7 +89,7 @@ const trimAndSetTempo = ({ forSeamlessAacConcatenation, assetDuration, asset, tr
87
89
  }
88
90
  throw new Error('This should never happen');
89
91
  };
90
- const stringifyFfmpegFilter = ({ channels, volume, fps, assetDuration, chunkLengthInSeconds, forSeamlessAacConcatenation, trimLeftOffset, trimRightOffset, asset, }) => {
92
+ const stringifyFfmpegFilter = ({ channels, volume, fps, assetDuration, chunkLengthInSeconds, forSeamlessAacConcatenation, trimLeftOffset, trimRightOffset, asset, indent, logLevel, }) => {
91
93
  if (channels === 0) {
92
94
  return null;
93
95
  }
@@ -113,6 +115,8 @@ const stringifyFfmpegFilter = ({ channels, volume, fps, assetDuration, chunkLeng
113
115
  trimRightOffset,
114
116
  asset,
115
117
  fps,
118
+ indent,
119
+ logLevel,
116
120
  });
117
121
  const volumeFilter = (0, ffmpeg_volume_expression_1.ffmpegVolumeExpression)({
118
122
  volume,
@@ -0,0 +1,6 @@
1
+ import type { NoReactInternals } from 'remotion/no-react';
2
+ export type RequiredInputPropsInV5 = typeof NoReactInternals.ENABLE_V5_BREAKING_CHANGES extends true ? {
3
+ inputProps: Record<string, unknown>;
4
+ } : {
5
+ inputProps?: Record<string, unknown>;
6
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@remotion/renderer",
3
- "version": "4.0.141",
3
+ "version": "4.0.142",
4
4
  "description": "Renderer for Remotion",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -18,7 +18,7 @@
18
18
  "extract-zip": "2.0.1",
19
19
  "source-map": "^0.8.0-beta.0",
20
20
  "ws": "8.7.0",
21
- "remotion": "4.0.141"
21
+ "remotion": "4.0.142"
22
22
  },
23
23
  "peerDependencies": {
24
24
  "react": ">=16.8.0",
@@ -30,6 +30,7 @@
30
30
  "@testing-library/react": "13.3.0",
31
31
  "@types/node": "18.14.6",
32
32
  "@types/progress": "2.0.5",
33
+ "@types/bun": "1.0.12",
33
34
  "@types/react": "18.2.48",
34
35
  "@types/react-dom": "18.2.18",
35
36
  "eslint": "8.56.0",
@@ -41,13 +42,13 @@
41
42
  "@types/ws": "8.5.10"
42
43
  },
43
44
  "optionalDependencies": {
44
- "@remotion/compositor-darwin-arm64": "4.0.141",
45
- "@remotion/compositor-darwin-x64": "4.0.141",
46
- "@remotion/compositor-linux-arm64-musl": "4.0.141",
47
- "@remotion/compositor-win32-x64-msvc": "4.0.141",
48
- "@remotion/compositor-linux-x64-musl": "4.0.141",
49
- "@remotion/compositor-linux-x64-gnu": "4.0.141",
50
- "@remotion/compositor-linux-arm64-gnu": "4.0.141"
45
+ "@remotion/compositor-darwin-arm64": "4.0.142",
46
+ "@remotion/compositor-darwin-x64": "4.0.142",
47
+ "@remotion/compositor-linux-arm64-gnu": "4.0.142",
48
+ "@remotion/compositor-linux-arm64-musl": "4.0.142",
49
+ "@remotion/compositor-linux-x64-gnu": "4.0.142",
50
+ "@remotion/compositor-linux-x64-musl": "4.0.142",
51
+ "@remotion/compositor-win32-x64-msvc": "4.0.142"
51
52
  },
52
53
  "keywords": [
53
54
  "remotion",