@remotion/renderer 4.0.438 → 4.0.440

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 (38) hide show
  1. package/dist/can-concat-seamlessly.d.ts +1 -1
  2. package/dist/can-use-parallel-encoding.d.ts +1 -1
  3. package/dist/client.d.ts +41 -19
  4. package/dist/codec-supports-media.d.ts +3 -3
  5. package/dist/codec-supports-media.js +5 -0
  6. package/dist/codec.d.ts +1 -1
  7. package/dist/codec.js +1 -0
  8. package/dist/combine-chunks.js +1 -0
  9. package/dist/combine-video-streams.d.ts +1 -1
  10. package/dist/crf.d.ts +3 -3
  11. package/dist/crf.js +2 -0
  12. package/dist/esm/client.mjs +17 -0
  13. package/dist/esm/index.mjs +28 -1
  14. package/dist/esm/pure.mjs +18 -0
  15. package/dist/ffmpeg-args.d.ts +1 -1
  16. package/dist/file-extensions.js +8 -0
  17. package/dist/get-codec-name.d.ts +1 -1
  18. package/dist/get-codec-name.js +4 -0
  19. package/dist/get-extension-from-codec.d.ts +2 -2
  20. package/dist/get-prores-profile-name.d.ts +1 -1
  21. package/dist/index.d.ts +31 -13
  22. package/dist/is-audio-codec.d.ts +1 -1
  23. package/dist/mux-video-and-audio.js +5 -0
  24. package/dist/options/audio-codec.d.ts +3 -2
  25. package/dist/options/audio-codec.js +5 -0
  26. package/dist/options/index.d.ts +5 -5
  27. package/dist/options/options-map.d.ts +5 -5
  28. package/dist/options/video-codec.d.ts +5 -5
  29. package/dist/options/x264-preset.d.ts +1 -1
  30. package/dist/pixel-format.d.ts +2 -2
  31. package/dist/prores-profile.d.ts +1 -1
  32. package/dist/pure.d.ts +4 -4
  33. package/dist/render-has-audio.d.ts +1 -1
  34. package/dist/validate-even-dimensions-with-codec.d.ts +1 -1
  35. package/dist/validate-even-dimensions-with-codec.js +1 -0
  36. package/dist/validate-number-of-gif-loops.d.ts +1 -1
  37. package/dist/validate-output-filename.d.ts +1 -1
  38. package/package.json +13 -13
@@ -1,2 +1,2 @@
1
1
  export declare const canConcatAudioSeamlessly: (audioCodec: "aac" | "mp3" | "opus" | "pcm-16" | null, chunkDurationInFrames: number) => boolean;
2
- export declare const canConcatVideoSeamlessly: (codec: "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav") => codec is "h264";
2
+ export declare const canConcatVideoSeamlessly: (codec: "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav") => codec is "h264";
@@ -1,2 +1,2 @@
1
- export declare const canUseParallelEncoding: (codec: "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav") => boolean;
1
+ export declare const canUseParallelEncoding: (codec: "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav") => boolean;
2
2
  export declare const getShouldUsePartitionedRendering: () => boolean;
package/dist/client.d.ts CHANGED
@@ -2,17 +2,17 @@ export { AvailableOptions, TypeOfOption } from './options';
2
2
  export { HardwareAccelerationOption } from './options/hardware-acceleration';
3
3
  export { ProResProfile } from './options/prores-profile';
4
4
  export declare const BrowserSafeApis: {
5
- getFileExtensionFromCodec: <T extends "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav">(codec: T, audioCodec: "aac" | "mp3" | "opus" | "pcm-16" | null) => import("./file-extensions").FileExtension;
6
- validCodecs: readonly ["h264", "h265", "vp8", "vp9", "mp3", "aac", "wav", "prores", "h264-mkv", "h264-ts", "gif"];
5
+ getFileExtensionFromCodec: <T extends "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav">(codec: T, audioCodec: "aac" | "mp3" | "opus" | "pcm-16" | null) => import("./file-extensions").FileExtension;
6
+ validCodecs: readonly ["h264", "h265", "vp8", "vp9", "av1", "mp3", "aac", "wav", "prores", "h264-mkv", "h264-ts", "gif"];
7
7
  validAudioCodecs: readonly ["pcm-16", "aac", "mp3", "opus"];
8
- getDefaultCrfForCodec: (codec: "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav") => number | null;
9
- getValidCrfRanges: (codec: "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav") => [number, number];
8
+ getDefaultCrfForCodec: (codec: "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav") => number | null;
9
+ getValidCrfRanges: (codec: "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav") => [number, number];
10
10
  proResProfileOptions: readonly ["4444-xq", "4444", "hq", "standard", "light", "proxy"];
11
11
  x264PresetOptions: readonly ["ultrafast", "superfast", "veryfast", "faster", "fast", "medium", "slow", "slower", "veryslow", "placebo"];
12
12
  hardwareAccelerationOptions: readonly ["disable", "if-possible", "required"];
13
13
  validPixelFormats: readonly ["yuv420p", "yuva420p", "yuv422p", "yuv444p", "yuv420p10le", "yuv422p10le", "yuv444p10le", "yuva444p10le"];
14
14
  validOpenGlRenderers: readonly ["swangle", "angle", "egl", "swiftshader", "vulkan", "angle-egl"];
15
- validPixelFormatsForCodec: (codec: "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav") => ("yuv420p" | "yuv420p10le" | "yuv422p" | "yuv422p10le" | "yuv444p" | "yuv444p10le" | "yuva444p10le")[] | readonly ["yuv420p", "yuva420p", "yuv422p", "yuv444p", "yuv420p10le", "yuv422p10le", "yuv444p10le", "yuva444p10le"];
15
+ validPixelFormatsForCodec: (codec: "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav") => ("yuv420p" | "yuv420p10le" | "yuv422p" | "yuv422p10le" | "yuv444p" | "yuv444p10le" | "yuva444p10le")[] | readonly ["yuv420p", "yuva420p", "yuv422p", "yuv444p", "yuv420p10le", "yuv422p10le", "yuv444p10le", "yuva444p10le"];
16
16
  validVideoImageFormats: readonly ["png", "jpeg", "none"];
17
17
  validStillImageFormats: readonly ["png", "jpeg", "pdf", "webp"];
18
18
  DEFAULT_PIXEL_FORMAT: "yuv420p" | "yuv420p10le" | "yuv422p" | "yuv422p10le" | "yuv444p" | "yuv444p10le" | "yuva420p" | "yuva444p10le";
@@ -27,6 +27,7 @@ export declare const BrowserSafeApis: {
27
27
  readonly avi: readonly [];
28
28
  readonly gif: readonly [];
29
29
  readonly h265: readonly ["aac", "pcm-16"];
30
+ readonly av1: readonly ["aac", "opus", "pcm-16"];
30
31
  readonly mp3: readonly ["mp3", "pcm-16"];
31
32
  readonly prores: readonly ["aac", "pcm-16"];
32
33
  readonly vp8: readonly ["opus", "pcm-16"];
@@ -47,6 +48,23 @@ export declare const BrowserSafeApis: {
47
48
  };
48
49
  };
49
50
  };
51
+ av1: {
52
+ default: import("./file-extensions").FileExtension;
53
+ forAudioCodec: {
54
+ aac: {
55
+ possible: import("./file-extensions").FileExtension[];
56
+ default: import("./file-extensions").FileExtension;
57
+ };
58
+ opus: {
59
+ possible: import("./file-extensions").FileExtension[];
60
+ default: import("./file-extensions").FileExtension;
61
+ };
62
+ "pcm-16": {
63
+ possible: import("./file-extensions").FileExtension[];
64
+ default: import("./file-extensions").FileExtension;
65
+ };
66
+ };
67
+ };
50
68
  gif: {
51
69
  default: import("./file-extensions").FileExtension;
52
70
  forAudioCodec: {};
@@ -174,6 +192,10 @@ export declare const BrowserSafeApis: {
174
192
  compressed: "aac" | "pcm-16" | null;
175
193
  lossless: "aac" | "pcm-16" | null;
176
194
  };
195
+ av1: {
196
+ compressed: "aac" | "opus" | "pcm-16" | null;
197
+ lossless: "aac" | "opus" | "pcm-16" | null;
198
+ };
177
199
  gif: {
178
200
  compressed: null;
179
201
  lossless: null;
@@ -215,8 +237,8 @@ export declare const BrowserSafeApis: {
215
237
  lossless: "pcm-16" | null;
216
238
  };
217
239
  };
218
- defaultCodecsForFileExtension: Record<import("./file-extensions").FileExtension, "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav">;
219
- validateOutputFilename: <T extends "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav">({ codec, audioCodecSetting, extension, preferLossless, separateAudioTo, }: {
240
+ defaultCodecsForFileExtension: Record<import("./file-extensions").FileExtension, "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav">;
241
+ validateOutputFilename: <T extends "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav">({ codec, audioCodecSetting, extension, preferLossless, separateAudioTo, }: {
220
242
  codec: T;
221
243
  audioCodecSetting: "aac" | "mp3" | "opus" | "pcm-16" | null;
222
244
  extension: string;
@@ -434,17 +456,17 @@ export declare const BrowserSafeApis: {
434
456
  description: () => import("react/jsx-runtime").JSX.Element;
435
457
  ssrName: string;
436
458
  docLink: string;
437
- type: "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav";
459
+ type: "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav";
438
460
  getValue: ({ commandLine }: {
439
461
  commandLine: Record<string, unknown>;
440
462
  }, { compositionCodec, configFile, downloadName, outName, uiCodec, }: {
441
463
  outName: string | null;
442
464
  downloadName: string | null;
443
- configFile: "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav" | null;
444
- uiCodec: "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav" | null;
445
- compositionCodec: "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav" | null;
465
+ configFile: "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav" | null;
466
+ uiCodec: "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav" | null;
467
+ compositionCodec: "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav" | null;
446
468
  }) => {
447
- value: "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav";
469
+ value: "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav";
448
470
  source: string;
449
471
  };
450
472
  setConfig: (newCodec: import("./codec").CodecOrUndefined) => void;
@@ -1916,17 +1938,17 @@ export declare const BrowserSafeApis: {
1916
1938
  description: () => import("react/jsx-runtime").JSX.Element;
1917
1939
  ssrName: string;
1918
1940
  docLink: string;
1919
- type: "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav";
1941
+ type: "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav";
1920
1942
  getValue: ({ commandLine }: {
1921
1943
  commandLine: Record<string, unknown>;
1922
1944
  }, { compositionCodec, configFile, downloadName, outName, uiCodec, }: {
1923
1945
  outName: string | null;
1924
1946
  downloadName: string | null;
1925
- configFile: "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav" | null;
1926
- uiCodec: "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav" | null;
1927
- compositionCodec: "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav" | null;
1947
+ configFile: "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav" | null;
1948
+ uiCodec: "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav" | null;
1949
+ compositionCodec: "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav" | null;
1928
1950
  }) => {
1929
- value: "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav";
1951
+ value: "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav";
1930
1952
  source: string;
1931
1953
  };
1932
1954
  setConfig: (newCodec: import("./codec").CodecOrUndefined) => void;
@@ -3991,8 +4013,8 @@ export declare const BrowserSafeApis: {
3991
4013
  };
3992
4014
  };
3993
4015
  };
3994
- codecSupportsCrf: (codec: "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav") => boolean;
3995
- codecSupportsVideoBitrate: (codec: "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav") => boolean;
4016
+ codecSupportsCrf: (codec: "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav") => boolean;
4017
+ codecSupportsVideoBitrate: (codec: "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav") => boolean;
3996
4018
  logLevels: readonly ["trace", "verbose", "info", "warn", "error"];
3997
4019
  getOutputCodecOrUndefined: () => import("./codec").CodecOrUndefined;
3998
4020
  getExtensionFromAudioCodec: (audioCodec: "aac" | "mp3" | "opus" | "pcm-16") => "aac" | "mp3" | "opus" | "wav";
@@ -2,7 +2,7 @@ type MediaSupport = {
2
2
  video: boolean;
3
3
  audio: boolean;
4
4
  };
5
- export declare const codecSupportsMedia: (codec: "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav") => MediaSupport;
6
- export declare const codecSupportsCrf: (codec: "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav") => boolean;
7
- export declare const codecSupportsVideoBitrate: (codec: "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav") => boolean;
5
+ export declare const codecSupportsMedia: (codec: "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav") => MediaSupport;
6
+ export declare const codecSupportsCrf: (codec: "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav") => boolean;
7
+ export declare const codecSupportsVideoBitrate: (codec: "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav") => boolean;
8
8
  export {};
@@ -27,6 +27,10 @@ const support = {
27
27
  video: true,
28
28
  audio: true,
29
29
  },
30
+ av1: {
31
+ video: true,
32
+ audio: true,
33
+ },
30
34
  mp3: {
31
35
  audio: true,
32
36
  video: false,
@@ -59,6 +63,7 @@ const codecSupportsVideoBitrateMap = {
59
63
  gif: false,
60
64
  h264: true,
61
65
  h265: true,
66
+ av1: true,
62
67
  mp3: false,
63
68
  prores: false,
64
69
  vp8: true,
package/dist/codec.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export declare const validCodecs: readonly ["h264", "h265", "vp8", "vp9", "mp3", "aac", "wav", "prores", "h264-mkv", "h264-ts", "gif"];
1
+ export declare const validCodecs: readonly ["h264", "h265", "vp8", "vp9", "av1", "mp3", "aac", "wav", "prores", "h264-mkv", "h264-ts", "gif"];
2
2
  export type Codec = (typeof validCodecs)[number];
3
3
  export type CodecOrUndefined = Codec | undefined;
4
4
  export declare const DEFAULT_CODEC: Codec;
package/dist/codec.js CHANGED
@@ -6,6 +6,7 @@ exports.validCodecs = [
6
6
  'h265',
7
7
  'vp8',
8
8
  'vp9',
9
+ 'av1',
9
10
  'mp3',
10
11
  'aac',
11
12
  'wav',
@@ -23,6 +23,7 @@ const codecSupportsFastStart = {
23
23
  'h264-ts': false,
24
24
  h264: true,
25
25
  h265: true,
26
+ av1: true,
26
27
  aac: false,
27
28
  gif: false,
28
29
  mp3: false,
@@ -1,7 +1,7 @@
1
1
  import type { CancelSignal } from './make-cancel-signal';
2
2
  export declare const combineVideoStreams: ({ fps, codec, filelistDir, numberOfGifLoops, output, indent, logLevel, onProgress, files, addRemotionMetadata, binariesDirectory, cancelSignal, }: {
3
3
  fps: number;
4
- codec: "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav";
4
+ codec: "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav";
5
5
  filelistDir: string;
6
6
  numberOfGifLoops: number | null;
7
7
  output: string;
package/dist/crf.d.ts CHANGED
@@ -1,9 +1,9 @@
1
1
  export type Crf = number | undefined;
2
- export declare const getDefaultCrfForCodec: (codec: "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav") => number | null;
3
- export declare const getValidCrfRanges: (codec: "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav") => [number, number];
2
+ export declare const getDefaultCrfForCodec: (codec: "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav") => number | null;
3
+ export declare const getValidCrfRanges: (codec: "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav") => [number, number];
4
4
  export declare const validateQualitySettings: ({ codec, crf, videoBitrate, encodingMaxRate, encodingBufferSize, hardwareAcceleration, }: {
5
5
  crf: unknown;
6
- codec: "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav";
6
+ codec: "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav";
7
7
  videoBitrate: string | null;
8
8
  encodingMaxRate: string | null;
9
9
  encodingBufferSize: string | null;
package/dist/crf.js CHANGED
@@ -7,6 +7,7 @@ const defaultCrfMap = {
7
7
  h265: 23,
8
8
  vp8: 9,
9
9
  vp9: 28,
10
+ av1: 30,
10
11
  prores: null,
11
12
  gif: null,
12
13
  'h264-mkv': 18,
@@ -28,6 +29,7 @@ const crfRanges = {
28
29
  h265: [0, 51],
29
30
  vp8: [4, 63],
30
31
  vp9: [0, 63],
32
+ av1: [0, 63],
31
33
  prores: [0, 0],
32
34
  gif: [0, 0],
33
35
  'h264-mkv': [1, 51],
@@ -40,6 +40,7 @@ var validCodecs = [
40
40
  "h265",
41
41
  "vp8",
42
42
  "vp9",
43
+ "av1",
43
44
  "mp3",
44
45
  "aac",
45
46
  "wav",
@@ -56,6 +57,7 @@ var defaultCrfMap = {
56
57
  h265: 23,
57
58
  vp8: 9,
58
59
  vp9: 28,
60
+ av1: 30,
59
61
  prores: null,
60
62
  gif: null,
61
63
  "h264-mkv": 18,
@@ -76,6 +78,7 @@ var crfRanges = {
76
78
  h265: [0, 51],
77
79
  vp8: [4, 63],
78
80
  vp9: [0, 63],
81
+ av1: [0, 63],
79
82
  prores: [0, 0],
80
83
  gif: [0, 0],
81
84
  "h264-mkv": [1, 51],
@@ -100,6 +103,7 @@ var codecSupportsVideoBitrateMap = {
100
103
  gif: false,
101
104
  h264: true,
102
105
  h265: true,
106
+ av1: true,
103
107
  mp3: false,
104
108
  prores: false,
105
109
  vp8: true,
@@ -162,6 +166,14 @@ var defaultFileExtensionMap = {
162
166
  "pcm-16": { possible: ["mkv"], default: "mkv" }
163
167
  }
164
168
  },
169
+ av1: {
170
+ default: "mp4",
171
+ forAudioCodec: {
172
+ aac: { possible: ["mp4", "mkv"], default: "mp4" },
173
+ opus: { possible: ["webm", "mkv"], default: "webm" },
174
+ "pcm-16": { possible: ["mkv"], default: "mkv" }
175
+ }
176
+ },
165
177
  mp3: {
166
178
  default: "mp3",
167
179
  forAudioCodec: {
@@ -450,6 +462,7 @@ var supportedAudioCodecs = {
450
462
  avi: [],
451
463
  gif: [],
452
464
  h265: ["aac", "pcm-16"],
465
+ av1: ["aac", "opus", "pcm-16"],
453
466
  mp3: ["mp3", "pcm-16"],
454
467
  prores: ["aac", "pcm-16"],
455
468
  vp8: ["opus", "pcm-16"],
@@ -485,6 +498,10 @@ var defaultAudioCodecs = {
485
498
  lossless: "pcm-16",
486
499
  compressed: "aac"
487
500
  },
501
+ av1: {
502
+ lossless: "pcm-16",
503
+ compressed: "aac"
504
+ },
488
505
  mp3: {
489
506
  lossless: "pcm-16",
490
507
  compressed: "mp3"
@@ -4153,6 +4153,7 @@ var validCodecs = [
4153
4153
  "h265",
4154
4154
  "vp8",
4155
4155
  "vp9",
4156
+ "av1",
4156
4157
  "mp3",
4157
4158
  "aac",
4158
4159
  "wav",
@@ -4589,6 +4590,14 @@ var defaultFileExtensionMap = {
4589
4590
  "pcm-16": { possible: ["mkv"], default: "mkv" }
4590
4591
  }
4591
4592
  },
4593
+ av1: {
4594
+ default: "mp4",
4595
+ forAudioCodec: {
4596
+ aac: { possible: ["mp4", "mkv"], default: "mp4" },
4597
+ opus: { possible: ["webm", "mkv"], default: "webm" },
4598
+ "pcm-16": { possible: ["mkv"], default: "mkv" }
4599
+ }
4600
+ },
4592
4601
  mp3: {
4593
4602
  default: "mp3",
4594
4603
  forAudioCodec: {
@@ -17621,6 +17630,7 @@ var supportedAudioCodecs = {
17621
17630
  avi: [],
17622
17631
  gif: [],
17623
17632
  h265: ["aac", "pcm-16"],
17633
+ av1: ["aac", "opus", "pcm-16"],
17624
17634
  mp3: ["mp3", "pcm-16"],
17625
17635
  prores: ["aac", "pcm-16"],
17626
17636
  vp8: ["opus", "pcm-16"],
@@ -17671,6 +17681,10 @@ var defaultAudioCodecs = {
17671
17681
  lossless: "pcm-16",
17672
17682
  compressed: "aac"
17673
17683
  },
17684
+ av1: {
17685
+ lossless: "pcm-16",
17686
+ compressed: "aac"
17687
+ },
17674
17688
  mp3: {
17675
17689
  lossless: "pcm-16",
17676
17690
  compressed: "mp3"
@@ -19588,6 +19602,7 @@ var defaultCrfMap = {
19588
19602
  h265: 23,
19589
19603
  vp8: 9,
19590
19604
  vp9: 28,
19605
+ av1: 30,
19591
19606
  prores: null,
19592
19607
  gif: null,
19593
19608
  "h264-mkv": 18,
@@ -19608,6 +19623,7 @@ var crfRanges = {
19608
19623
  h265: [0, 51],
19609
19624
  vp8: [4, 63],
19610
19625
  vp9: [0, 63],
19626
+ av1: [0, 63],
19611
19627
  prores: [0, 0],
19612
19628
  gif: [0, 0],
19613
19629
  "h264-mkv": [1, 51],
@@ -19710,6 +19726,10 @@ var support = {
19710
19726
  video: true,
19711
19727
  audio: true
19712
19728
  },
19729
+ av1: {
19730
+ video: true,
19731
+ audio: true
19732
+ },
19713
19733
  mp3: {
19714
19734
  audio: true,
19715
19735
  video: false
@@ -19877,6 +19897,10 @@ var getCodecName = ({
19877
19897
  if (codec === "vp9") {
19878
19898
  return { encoderName: "libvpx-vp9", hardwareAccelerated: false };
19879
19899
  }
19900
+ if (codec === "av1") {
19901
+ Log.warn({ indent, logLevel }, "AV1 encoding is significantly slower than other codecs.");
19902
+ return { encoderName: "libaom-av1", hardwareAccelerated: false };
19903
+ }
19880
19904
  if (codec === "gif") {
19881
19905
  return { encoderName: "gif", hardwareAccelerated: false };
19882
19906
  }
@@ -20037,7 +20061,7 @@ var validateEvenDimensionsWithCodec = ({
20037
20061
  actualHeight: height
20038
20062
  };
20039
20063
  }
20040
- if (codec !== "h264-mkv" && codec !== "h264" && codec !== "h265" && codec !== "h264-ts") {
20064
+ if (codec !== "h264-mkv" && codec !== "h264" && codec !== "h265" && codec !== "av1" && codec !== "h264-ts") {
20041
20065
  return {
20042
20066
  actualWidth: width,
20043
20067
  actualHeight: height
@@ -23135,6 +23159,8 @@ var muxVideoAndAudio = async ({
23135
23159
  videoOutput ? "copy" : null,
23136
23160
  audioOutput ? "-c:a" : null,
23137
23161
  audioOutput ? "copy" : null,
23162
+ videoOutput ? "-r" : null,
23163
+ videoOutput ? String(fps) : null,
23138
23164
  numberOfGifLoops === null ? null : "-loop",
23139
23165
  numberOfGifLoops === null ? null : convertNumberOfGifLoopsToFfmpegSyntax(numberOfGifLoops),
23140
23166
  addFaststart ? "-movflags" : null,
@@ -23174,6 +23200,7 @@ var codecSupportsFastStart = {
23174
23200
  "h264-ts": false,
23175
23201
  h264: true,
23176
23202
  h265: true,
23203
+ av1: true,
23177
23204
  aac: false,
23178
23205
  gif: false,
23179
23206
  mp3: false,
package/dist/esm/pure.mjs CHANGED
@@ -29,6 +29,10 @@ var support = {
29
29
  video: true,
30
30
  audio: true
31
31
  },
32
+ av1: {
33
+ video: true,
34
+ audio: true
35
+ },
32
36
  mp3: {
33
37
  audio: true,
34
38
  video: false
@@ -72,6 +76,7 @@ var validCodecs = [
72
76
  "h265",
73
77
  "vp8",
74
78
  "vp9",
79
+ "av1",
75
80
  "mp3",
76
81
  "aac",
77
82
  "wav",
@@ -129,6 +134,14 @@ var defaultFileExtensionMap = {
129
134
  "pcm-16": { possible: ["mkv"], default: "mkv" }
130
135
  }
131
136
  },
137
+ av1: {
138
+ default: "mp4",
139
+ forAudioCodec: {
140
+ aac: { possible: ["mp4", "mkv"], default: "mp4" },
141
+ opus: { possible: ["webm", "mkv"], default: "webm" },
142
+ "pcm-16": { possible: ["mkv"], default: "mkv" }
143
+ }
144
+ },
132
145
  mp3: {
133
146
  default: "mp3",
134
147
  forAudioCodec: {
@@ -334,6 +347,7 @@ var supportedAudioCodecs = {
334
347
  avi: [],
335
348
  gif: [],
336
349
  h265: ["aac", "pcm-16"],
350
+ av1: ["aac", "opus", "pcm-16"],
337
351
  mp3: ["mp3", "pcm-16"],
338
352
  prores: ["aac", "pcm-16"],
339
353
  vp8: ["opus", "pcm-16"],
@@ -369,6 +383,10 @@ var defaultAudioCodecs = {
369
383
  lossless: "pcm-16",
370
384
  compressed: "aac"
371
385
  },
386
+ av1: {
387
+ lossless: "pcm-16",
388
+ compressed: "aac"
389
+ },
372
390
  mp3: {
373
391
  lossless: "pcm-16",
374
392
  compressed: "mp3"
@@ -4,7 +4,7 @@ export declare const generateFfmpegArgs: ({ hasPreencoded, proResProfileName, pi
4
4
  pixelFormat: "yuv420p" | "yuv420p10le" | "yuv422p" | "yuv422p10le" | "yuv444p" | "yuv444p10le" | "yuva420p" | "yuva444p10le";
5
5
  x264Preset: "fast" | "faster" | "medium" | "placebo" | "slow" | "slower" | "superfast" | "ultrafast" | "veryfast" | "veryslow" | null;
6
6
  crf: unknown;
7
- codec: "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav";
7
+ codec: "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav";
8
8
  videoBitrate: string | null;
9
9
  encodingMaxRate: string | null;
10
10
  encodingBufferSize: string | null;
@@ -48,6 +48,14 @@ exports.defaultFileExtensionMap = {
48
48
  'pcm-16': { possible: ['mkv'], default: 'mkv' },
49
49
  },
50
50
  },
51
+ av1: {
52
+ default: 'mp4',
53
+ forAudioCodec: {
54
+ aac: { possible: ['mp4', 'mkv'], default: 'mp4' },
55
+ opus: { possible: ['webm', 'mkv'], default: 'webm' },
56
+ 'pcm-16': { possible: ['mkv'], default: 'mkv' },
57
+ },
58
+ },
51
59
  mp3: {
52
60
  default: 'mp3',
53
61
  forAudioCodec: {
@@ -8,7 +8,7 @@ export declare const hasSpecifiedUnsupportedHardwareQualifySettings: ({ encoding
8
8
  crf: unknown;
9
9
  }) => "crf" | "encodingBufferSize" | "encodingMaxRate" | null;
10
10
  export declare const getCodecName: ({ codec, encodingMaxRate, encodingBufferSize, crf, hardwareAcceleration, logLevel, indent, }: {
11
- codec: "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav";
11
+ codec: "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav";
12
12
  hardwareAcceleration: "disable" | "if-possible" | "required";
13
13
  encodingMaxRate: string | null;
14
14
  encodingBufferSize: string | null;
@@ -64,6 +64,10 @@ const getCodecName = ({ codec, encodingMaxRate, encodingBufferSize, crf, hardwar
64
64
  if (codec === 'vp9') {
65
65
  return { encoderName: 'libvpx-vp9', hardwareAccelerated: false };
66
66
  }
67
+ if (codec === 'av1') {
68
+ logger_1.Log.warn({ indent, logLevel }, 'AV1 encoding is significantly slower than other codecs.');
69
+ return { encoderName: 'libaom-av1', hardwareAccelerated: false };
70
+ }
67
71
  if (codec === 'gif') {
68
72
  return { encoderName: 'gif', hardwareAccelerated: false };
69
73
  }
@@ -1,5 +1,5 @@
1
1
  import type { Codec } from './codec';
2
2
  import type { FileExtension } from './file-extensions';
3
- export declare const getFileExtensionFromCodec: <T extends "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav">(codec: T, audioCodec: "aac" | "mp3" | "opus" | "pcm-16" | null) => FileExtension;
4
- export declare const makeFileExtensionMap: () => Record<string, ("aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav")[]>;
3
+ export declare const getFileExtensionFromCodec: <T extends "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav">(codec: T, audioCodec: "aac" | "mp3" | "opus" | "pcm-16" | null) => FileExtension;
4
+ export declare const makeFileExtensionMap: () => Record<string, ("aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav")[]>;
5
5
  export declare const defaultCodecsForFileExtension: Record<FileExtension, Codec>;
@@ -1 +1 @@
1
- export declare const getProResProfileName: (codec: "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav", proResProfile: "4444" | "4444-xq" | "hq" | "light" | "proxy" | "standard" | undefined) => string | null;
1
+ export declare const getProResProfileName: (codec: "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav", proResProfile: "4444" | "4444-xq" | "hq" | "light" | "proxy" | "standard" | undefined) => string | null;
package/dist/index.d.ts CHANGED
@@ -72,7 +72,7 @@ export declare const RenderInternals: {
72
72
  width: number;
73
73
  height: number;
74
74
  scale: number;
75
- codec: "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav";
75
+ codec: "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav";
76
76
  wantsImageSequence: boolean;
77
77
  indent: boolean;
78
78
  logLevel: "error" | "info" | "trace" | "verbose" | "warn";
@@ -80,7 +80,7 @@ export declare const RenderInternals: {
80
80
  actualWidth: number;
81
81
  actualHeight: number;
82
82
  };
83
- getFileExtensionFromCodec: <T extends "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav">(codec: T, audioCodec: "aac" | "mp3" | "opus" | "pcm-16" | null) => import("./file-extensions").FileExtension;
83
+ getFileExtensionFromCodec: <T extends "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav">(codec: T, audioCodec: "aac" | "mp3" | "opus" | "pcm-16" | null) => import("./file-extensions").FileExtension;
84
84
  tmpDir: (str: string) => string;
85
85
  deleteDirectory: (directory: string) => void;
86
86
  isServeUrl: (potentialUrl: string) => boolean;
@@ -143,7 +143,7 @@ export declare const RenderInternals: {
143
143
  };
144
144
  registerErrorSymbolicationLock: () => number;
145
145
  unlockErrorSymbolicationLock: (id: number) => void;
146
- canUseParallelEncoding: (codec: "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav") => boolean;
146
+ canUseParallelEncoding: (codec: "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav") => boolean;
147
147
  mimeContentType: typeof mimeContentType;
148
148
  mimeLookup: typeof mimeLookup;
149
149
  validateConcurrency: ({ setting, value, checkIfValidForCurrentMachine, }: {
@@ -156,11 +156,11 @@ export declare const RenderInternals: {
156
156
  validateFrameRange: (frameRange: import("./frame-range").FrameRange | null) => void;
157
157
  DEFAULT_OPENGL_RENDERER: "angle" | "angle-egl" | "egl" | "swangle" | "swiftshader" | "vulkan" | null;
158
158
  validateOpenGlRenderer: (option: unknown) => "angle" | "angle-egl" | "egl" | "swangle" | "swiftshader" | "vulkan" | null;
159
- validCodecs: readonly ["h264", "h265", "vp8", "vp9", "mp3", "aac", "wav", "prores", "h264-mkv", "h264-ts", "gif"];
159
+ validCodecs: readonly ["h264", "h265", "vp8", "vp9", "av1", "mp3", "aac", "wav", "prores", "h264-mkv", "h264-ts", "gif"];
160
160
  DEFAULT_PIXEL_FORMAT: "yuv420p" | "yuv420p10le" | "yuv422p" | "yuv422p10le" | "yuv444p" | "yuv444p10le" | "yuva420p" | "yuva444p10le";
161
161
  validateJpegQuality: (q: unknown) => void;
162
162
  DEFAULT_TIMEOUT: number;
163
- DEFAULT_CODEC: "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav";
163
+ DEFAULT_CODEC: "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav";
164
164
  logLevels: readonly ["trace", "verbose", "info", "warn", "error"];
165
165
  isEqualOrBelowLogLevel: (currentLevel: "error" | "info" | "trace" | "verbose" | "warn", level: "error" | "info" | "trace" | "verbose" | "warn") => boolean;
166
166
  isValidLogLevel: (level: string) => boolean;
@@ -174,7 +174,7 @@ export declare const RenderInternals: {
174
174
  getMinConcurrency: () => number;
175
175
  getMaxConcurrency: () => number;
176
176
  getDefaultAudioCodec: ({ codec, preferLossless, }: {
177
- codec: "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav";
177
+ codec: "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav";
178
178
  preferLossless: boolean;
179
179
  }) => "aac" | "mp3" | "opus" | "pcm-16" | null;
180
180
  defaultFileExtensionMap: {
@@ -191,6 +191,23 @@ export declare const RenderInternals: {
191
191
  };
192
192
  };
193
193
  };
194
+ av1: {
195
+ default: import("./file-extensions").FileExtension;
196
+ forAudioCodec: {
197
+ aac: {
198
+ possible: import("./file-extensions").FileExtension[];
199
+ default: import("./file-extensions").FileExtension;
200
+ };
201
+ opus: {
202
+ possible: import("./file-extensions").FileExtension[];
203
+ default: import("./file-extensions").FileExtension;
204
+ };
205
+ "pcm-16": {
206
+ possible: import("./file-extensions").FileExtension[];
207
+ default: import("./file-extensions").FileExtension;
208
+ };
209
+ };
210
+ };
194
211
  gif: {
195
212
  default: import("./file-extensions").FileExtension;
196
213
  forAudioCodec: {};
@@ -321,14 +338,15 @@ export declare const RenderInternals: {
321
338
  readonly avi: readonly [];
322
339
  readonly gif: readonly [];
323
340
  readonly h265: readonly ["aac", "pcm-16"];
341
+ readonly av1: readonly ["aac", "opus", "pcm-16"];
324
342
  readonly mp3: readonly ["mp3", "pcm-16"];
325
343
  readonly prores: readonly ["aac", "pcm-16"];
326
344
  readonly vp8: readonly ["opus", "pcm-16"];
327
345
  readonly vp9: readonly ["opus", "pcm-16"];
328
346
  readonly wav: readonly ["pcm-16"];
329
347
  };
330
- makeFileExtensionMap: () => Record<string, ("aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav")[]>;
331
- defaultCodecsForFileExtension: Record<import("./file-extensions").FileExtension, "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav">;
348
+ makeFileExtensionMap: () => Record<string, ("aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav")[]>;
349
+ defaultCodecsForFileExtension: Record<import("./file-extensions").FileExtension, "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav">;
332
350
  getExecutablePath: ({ indent, logLevel, type, binariesDirectory, }: {
333
351
  type: "compositor" | "ffmpeg" | "ffprobe";
334
352
  indent: boolean;
@@ -1246,17 +1264,17 @@ export declare const RenderInternals: {
1246
1264
  makeFileExecutableIfItIsNot: (path: string) => void;
1247
1265
  resolveAudioCodec: ({ codec, setting, preferLossless, separateAudioTo, }: {
1248
1266
  setting: "aac" | "mp3" | "opus" | "pcm-16" | null;
1249
- codec: "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav";
1267
+ codec: "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav";
1250
1268
  preferLossless: boolean;
1251
1269
  separateAudioTo: string | null;
1252
1270
  }) => "aac" | "mp3" | "opus" | "pcm-16" | null;
1253
1271
  getShouldRenderAudio: ({ codec, assetsInfo, enforceAudioTrack, muted, }: {
1254
- codec: "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav";
1272
+ codec: "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav";
1255
1273
  assetsInfo: import("./assets/download-map").RenderAssetInfo | null;
1256
1274
  enforceAudioTrack: boolean;
1257
1275
  muted: boolean;
1258
1276
  }) => "maybe" | "no" | "yes";
1259
- codecSupportsMedia: (codec: "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav") => {
1277
+ codecSupportsMedia: (codec: "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav") => {
1260
1278
  video: boolean;
1261
1279
  audio: boolean;
1262
1280
  };
@@ -1312,12 +1330,12 @@ export declare const RenderInternals: {
1312
1330
  }>) => Promise<import("./ensure-browser").BrowserStatus>;
1313
1331
  printUsefulErrorMessage: (err: Error, logLevel: "error" | "info" | "trace" | "verbose" | "warn", indent: boolean) => void;
1314
1332
  DEFAULT_RENDER_FRAMES_OFFTHREAD_VIDEO_THREADS: number;
1315
- canConcatVideoSeamlessly: (codec: "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav") => codec is "h264";
1333
+ canConcatVideoSeamlessly: (codec: "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav") => codec is "h264";
1316
1334
  canConcatAudioSeamlessly: (audioCodec: "aac" | "mp3" | "opus" | "pcm-16" | null, chunkDurationInFrames: number) => boolean;
1317
1335
  internalCombineChunks: ({ outputLocation: output, onProgress, codec, fps, numberOfGifLoops, audioBitrate, indent, logLevel, binariesDirectory, cancelSignal, metadata, audioFiles, videoFiles, framesPerChunk, audioCodec, preferLossless, everyNthFrame, frameRange, compositionDurationInFrames, }: {
1318
1336
  outputLocation: string;
1319
1337
  audioFiles: string[];
1320
- codec: "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav";
1338
+ codec: "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav";
1321
1339
  videoFiles: string[];
1322
1340
  fps: number;
1323
1341
  framesPerChunk: number;
@@ -1 +1 @@
1
- export declare const isAudioCodec: (codec: "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav" | null | undefined) => codec is "aac" | "mp3" | "wav";
1
+ export declare const isAudioCodec: (codec: "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav" | null | undefined) => codec is "aac" | "mp3" | "wav";
@@ -21,6 +21,11 @@ const muxVideoAndAudio = async ({ videoOutput, audioOutput, output, indent, logL
21
21
  videoOutput ? 'copy' : null,
22
22
  audioOutput ? '-c:a' : null,
23
23
  audioOutput ? 'copy' : null,
24
+ // Set the exact output framerate to prevent drift when combining chunks.
25
+ // Without this, ffmpeg infers the framerate from the stream which can
26
+ // result in slightly imprecise values like 95940000/3197999 instead of 30/1.
27
+ videoOutput ? '-r' : null,
28
+ videoOutput ? String(fps) : null,
24
29
  numberOfGifLoops === null ? null : '-loop',
25
30
  numberOfGifLoops === null
26
31
  ? null
@@ -9,6 +9,7 @@ export declare const supportedAudioCodecs: {
9
9
  readonly avi: readonly [];
10
10
  readonly gif: readonly [];
11
11
  readonly h265: readonly ["aac", "pcm-16"];
12
+ readonly av1: readonly ["aac", "opus", "pcm-16"];
12
13
  readonly mp3: readonly ["mp3", "pcm-16"];
13
14
  readonly prores: readonly ["aac", "pcm-16"];
14
15
  readonly vp8: readonly ["opus", "pcm-16"];
@@ -24,12 +25,12 @@ export declare const defaultAudioCodecs: {
24
25
  export declare const getExtensionFromAudioCodec: (audioCodec: "aac" | "mp3" | "opus" | "pcm-16") => "aac" | "mp3" | "opus" | "wav";
25
26
  export declare const resolveAudioCodec: ({ codec, setting, preferLossless, separateAudioTo, }: {
26
27
  setting: "aac" | "mp3" | "opus" | "pcm-16" | null;
27
- codec: "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav";
28
+ codec: "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav";
28
29
  preferLossless: boolean;
29
30
  separateAudioTo: string | null;
30
31
  }) => "aac" | "mp3" | "opus" | "pcm-16" | null;
31
32
  export declare const getDefaultAudioCodec: ({ codec, preferLossless, }: {
32
- codec: "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav";
33
+ codec: "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav";
33
34
  preferLossless: boolean;
34
35
  }) => "aac" | "mp3" | "opus" | "pcm-16" | null;
35
36
  export declare const audioCodecOption: {
@@ -11,6 +11,7 @@ exports.supportedAudioCodecs = {
11
11
  avi: [],
12
12
  gif: [],
13
13
  h265: ['aac', 'pcm-16'],
14
+ av1: ['aac', 'opus', 'pcm-16'],
14
15
  mp3: ['mp3', 'pcm-16'],
15
16
  prores: ['aac', 'pcm-16'],
16
17
  vp8: ['opus', 'pcm-16'],
@@ -71,6 +72,10 @@ exports.defaultAudioCodecs = {
71
72
  lossless: 'pcm-16',
72
73
  compressed: 'aac',
73
74
  },
75
+ av1: {
76
+ lossless: 'pcm-16',
77
+ compressed: 'aac',
78
+ },
74
79
  mp3: {
75
80
  lossless: 'pcm-16',
76
81
  compressed: 'mp3',
@@ -210,17 +210,17 @@ export declare const allOptions: {
210
210
  description: () => import("react/jsx-runtime").JSX.Element;
211
211
  ssrName: string;
212
212
  docLink: string;
213
- type: "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav";
213
+ type: "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav";
214
214
  getValue: ({ commandLine }: {
215
215
  commandLine: Record<string, unknown>;
216
216
  }, { compositionCodec, configFile, downloadName, outName, uiCodec, }: {
217
217
  outName: string | null;
218
218
  downloadName: string | null;
219
- configFile: "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav" | null;
220
- uiCodec: "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav" | null;
221
- compositionCodec: "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav" | null;
219
+ configFile: "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav" | null;
220
+ uiCodec: "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav" | null;
221
+ compositionCodec: "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav" | null;
222
222
  }) => {
223
- value: "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav";
223
+ value: "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav";
224
224
  source: string;
225
225
  };
226
226
  setConfig: (newCodec: import("..").CodecOrUndefined) => void;
@@ -168,17 +168,17 @@ export declare const optionsMap: {
168
168
  description: () => import("react/jsx-runtime").JSX.Element;
169
169
  ssrName: string;
170
170
  docLink: string;
171
- type: "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav";
171
+ type: "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav";
172
172
  getValue: ({ commandLine }: {
173
173
  commandLine: Record<string, unknown>;
174
174
  }, { compositionCodec, configFile, downloadName, outName, uiCodec, }: {
175
175
  outName: string | null;
176
176
  downloadName: string | null;
177
- configFile: "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav" | null;
178
- uiCodec: "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav" | null;
179
- compositionCodec: "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav" | null;
177
+ configFile: "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav" | null;
178
+ uiCodec: "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav" | null;
179
+ compositionCodec: "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav" | null;
180
180
  }) => {
181
- value: "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav";
181
+ value: "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav";
182
182
  source: string;
183
183
  };
184
184
  setConfig: (newCodec: import("..").CodecOrUndefined) => void;
@@ -6,17 +6,17 @@ export declare const videoCodecOption: {
6
6
  description: () => import("react/jsx-runtime").JSX.Element;
7
7
  ssrName: string;
8
8
  docLink: string;
9
- type: "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav";
9
+ type: "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav";
10
10
  getValue: ({ commandLine }: {
11
11
  commandLine: Record<string, unknown>;
12
12
  }, { compositionCodec, configFile, downloadName, outName, uiCodec, }: {
13
13
  outName: string | null;
14
14
  downloadName: string | null;
15
- configFile: "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav" | null;
16
- uiCodec: "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav" | null;
17
- compositionCodec: "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav" | null;
15
+ configFile: "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav" | null;
16
+ uiCodec: "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav" | null;
17
+ compositionCodec: "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav" | null;
18
18
  }) => {
19
- value: "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav";
19
+ value: "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav";
20
20
  source: string;
21
21
  };
22
22
  setConfig: (newCodec: CodecOrUndefined) => void;
@@ -1,7 +1,7 @@
1
1
  export declare const x264PresetOptions: readonly ["ultrafast", "superfast", "veryfast", "faster", "fast", "medium", "slow", "slower", "veryslow", "placebo"];
2
2
  export type X264Preset = (typeof x264PresetOptions)[number];
3
3
  export declare const validateSelectedCodecAndPresetCombination: ({ codec, x264Preset, }: {
4
- codec: "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav";
4
+ codec: "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav";
5
5
  x264Preset: "fast" | "faster" | "medium" | "placebo" | "slow" | "slower" | "superfast" | "ultrafast" | "veryfast" | "veryslow" | null;
6
6
  }) => void;
7
7
  export declare const x264Option: {
@@ -1,5 +1,5 @@
1
1
  export declare const validPixelFormats: readonly ["yuv420p", "yuva420p", "yuv422p", "yuv444p", "yuv420p10le", "yuv422p10le", "yuv444p10le", "yuva444p10le"];
2
2
  export type PixelFormat = (typeof validPixelFormats)[number];
3
3
  export declare const DEFAULT_PIXEL_FORMAT: PixelFormat;
4
- export declare const validPixelFormatsForCodec: (codec: "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav") => ("yuv420p" | "yuv420p10le" | "yuv422p" | "yuv422p10le" | "yuv444p" | "yuv444p10le" | "yuva444p10le")[] | readonly ["yuv420p", "yuva420p", "yuv422p", "yuv444p", "yuv420p10le", "yuv422p10le", "yuv444p10le", "yuva444p10le"];
5
- export declare const validateSelectedPixelFormatAndCodecCombination: (pixelFormat: "yuv420p" | "yuv420p10le" | "yuv422p" | "yuv422p10le" | "yuv444p" | "yuv444p10le" | "yuva420p" | "yuva444p10le" | undefined, codec: "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav") => undefined;
4
+ export declare const validPixelFormatsForCodec: (codec: "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav") => ("yuv420p" | "yuv420p10le" | "yuv422p" | "yuv422p10le" | "yuv444p" | "yuv444p10le" | "yuva444p10le")[] | readonly ["yuv420p", "yuva420p", "yuv422p", "yuv444p", "yuv420p10le", "yuv422p10le", "yuv444p10le", "yuva444p10le"];
5
+ export declare const validateSelectedPixelFormatAndCodecCombination: (pixelFormat: "yuv420p" | "yuv420p10le" | "yuv422p" | "yuv422p10le" | "yuv444p" | "yuv444p10le" | "yuva420p" | "yuva444p10le" | undefined, codec: "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav") => undefined;
@@ -1,4 +1,4 @@
1
1
  export declare const validateSelectedCodecAndProResCombination: ({ codec, proResProfile, }: {
2
- codec: "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav";
2
+ codec: "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav";
3
3
  proResProfile: "4444" | "4444-xq" | "hq" | "light" | "proxy" | "standard" | undefined;
4
4
  }) => void;
package/dist/pure.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  export declare const NoReactAPIs: {
2
2
  getExtensionOfFilename: (filename: string | null) => string | null;
3
- getFileExtensionFromCodec: <T extends "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav">(codec: T, audioCodec: "aac" | "mp3" | "opus" | "pcm-16" | null) => import("./file-extensions").FileExtension;
4
- validateOutputFilename: <T extends "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav">({ codec, audioCodecSetting, extension, preferLossless, separateAudioTo, }: {
3
+ getFileExtensionFromCodec: <T extends "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav">(codec: T, audioCodec: "aac" | "mp3" | "opus" | "pcm-16" | null) => import("./file-extensions").FileExtension;
4
+ validateOutputFilename: <T extends "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav">({ codec, audioCodecSetting, extension, preferLossless, separateAudioTo, }: {
5
5
  codec: T;
6
6
  audioCodecSetting: "aac" | "mp3" | "opus" | "pcm-16" | null;
7
7
  extension: string;
@@ -9,9 +9,9 @@ export declare const NoReactAPIs: {
9
9
  separateAudioTo: string | null;
10
10
  }) => void;
11
11
  getFramesToRender: (frameRange: [number, number], everyNthFrame: number) => number[];
12
- codecSupportsMedia: (codec: "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav") => {
12
+ codecSupportsMedia: (codec: "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav") => {
13
13
  video: boolean;
14
14
  audio: boolean;
15
15
  };
16
- isAudioCodec: (codec: "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav" | null | undefined) => codec is "aac" | "mp3" | "wav";
16
+ isAudioCodec: (codec: "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav" | null | undefined) => codec is "aac" | "mp3" | "wav";
17
17
  };
@@ -1,6 +1,6 @@
1
1
  import type { RenderAssetInfo } from './assets/download-map';
2
2
  export declare const getShouldRenderAudio: ({ codec, assetsInfo, enforceAudioTrack, muted, }: {
3
- codec: "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav";
3
+ codec: "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav";
4
4
  assetsInfo: RenderAssetInfo | null;
5
5
  enforceAudioTrack: boolean;
6
6
  muted: boolean;
@@ -2,7 +2,7 @@ export declare const validateEvenDimensionsWithCodec: ({ width, height, codec, s
2
2
  width: number;
3
3
  height: number;
4
4
  scale: number;
5
- codec: "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav";
5
+ codec: "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav";
6
6
  wantsImageSequence: boolean;
7
7
  indent: boolean;
8
8
  logLevel: "error" | "info" | "trace" | "verbose" | "warn";
@@ -12,6 +12,7 @@ const validateEvenDimensionsWithCodec = ({ width, height, codec, scale, wantsIma
12
12
  if (codec !== 'h264-mkv' &&
13
13
  codec !== 'h264' &&
14
14
  codec !== 'h265' &&
15
+ codec !== 'av1' &&
15
16
  codec !== 'h264-ts') {
16
17
  return {
17
18
  actualWidth: width,
@@ -1 +1 @@
1
- export declare const validateNumberOfGifLoops: (numberOfGifLoops: unknown, codec: "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav") => void;
1
+ export declare const validateNumberOfGifLoops: (numberOfGifLoops: unknown, codec: "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav") => void;
@@ -1,4 +1,4 @@
1
- export declare const validateOutputFilename: <T extends "aac" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav">({ codec, audioCodecSetting, extension, preferLossless, separateAudioTo, }: {
1
+ export declare const validateOutputFilename: <T extends "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav">({ codec, audioCodecSetting, extension, preferLossless, separateAudioTo, }: {
2
2
  codec: T;
3
3
  audioCodecSetting: "aac" | "mp3" | "opus" | "pcm-16" | null;
4
4
  extension: string;
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.438",
6
+ "version": "4.0.440",
7
7
  "description": "Render Remotion videos using Node.js or Bun",
8
8
  "main": "dist/index.js",
9
9
  "types": "dist/index.d.ts",
@@ -24,11 +24,11 @@
24
24
  "dependencies": {
25
25
  "execa": "5.1.1",
26
26
  "extract-zip": "2.0.1",
27
- "remotion": "4.0.438",
28
- "@remotion/streaming": "4.0.438",
27
+ "remotion": "4.0.440",
28
+ "@remotion/streaming": "4.0.440",
29
29
  "source-map": "^0.8.0-beta.0",
30
30
  "ws": "8.17.1",
31
- "@remotion/licensing": "4.0.438"
31
+ "@remotion/licensing": "4.0.440"
32
32
  },
33
33
  "peerDependencies": {
34
34
  "react": ">=16.8.0",
@@ -42,19 +42,19 @@
42
42
  "react-dom": "19.2.3",
43
43
  "@typescript/native-preview": "7.0.0-dev.20260217.1",
44
44
  "@types/ws": "8.5.10",
45
- "@remotion/example-videos": "4.0.438",
46
- "@remotion/eslint-config-internal": "4.0.438",
45
+ "@remotion/example-videos": "4.0.440",
46
+ "@remotion/eslint-config-internal": "4.0.440",
47
47
  "eslint": "9.19.0",
48
48
  "@types/node": "20.12.14"
49
49
  },
50
50
  "optionalDependencies": {
51
- "@remotion/compositor-darwin-arm64": "4.0.438",
52
- "@remotion/compositor-darwin-x64": "4.0.438",
53
- "@remotion/compositor-linux-arm64-gnu": "4.0.438",
54
- "@remotion/compositor-linux-arm64-musl": "4.0.438",
55
- "@remotion/compositor-linux-x64-gnu": "4.0.438",
56
- "@remotion/compositor-linux-x64-musl": "4.0.438",
57
- "@remotion/compositor-win32-x64-msvc": "4.0.438"
51
+ "@remotion/compositor-darwin-arm64": "4.0.440",
52
+ "@remotion/compositor-darwin-x64": "4.0.440",
53
+ "@remotion/compositor-linux-arm64-gnu": "4.0.440",
54
+ "@remotion/compositor-linux-arm64-musl": "4.0.440",
55
+ "@remotion/compositor-linux-x64-gnu": "4.0.440",
56
+ "@remotion/compositor-linux-x64-musl": "4.0.440",
57
+ "@remotion/compositor-win32-x64-msvc": "4.0.440"
58
58
  },
59
59
  "keywords": [
60
60
  "remotion",