@remotion/renderer 3.3.83 → 3.3.86

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/dist/client.d.ts +37 -37
  2. package/dist/create-ffmpeg-complex-filter.d.ts +1 -4
  3. package/dist/extract-frame-from-video.d.ts +1 -0
  4. package/dist/get-extension-from-codec.d.ts +2 -2
  5. package/dist/get-frame-of-video-slow.d.ts +2 -4
  6. package/dist/index.d.ts +33 -32
  7. package/dist/last-frame-from-video-cache.d.ts +1 -0
  8. package/dist/provide-screenshot.d.ts +1 -0
  9. package/dist/puppeteer-screenshot.d.ts +1 -0
  10. package/dist/render-media.d.ts +1 -0
  11. package/dist/screenshot-dom-element.d.ts +1 -0
  12. package/dist/screenshot-task.d.ts +1 -0
  13. package/dist/take-frame-and-compose.d.ts +1 -0
  14. package/dist/try-to-extract-frame-of-video-fast.d.ts +1 -0
  15. package/dist/validate-output-filename.d.ts +1 -1
  16. package/package.json +9 -9
  17. package/dist/browser/is-target-closed-err.d.ts +0 -1
  18. package/dist/browser/is-target-closed-err.js +0 -9
  19. package/dist/call-ffmpeg.d.ts +0 -17
  20. package/dist/call-ffmpeg.js +0 -34
  21. package/dist/compositor/compositor.d.ts +0 -14
  22. package/dist/compositor/compositor.js +0 -168
  23. package/dist/compositor/make-nonce.d.ts +0 -1
  24. package/dist/compositor/make-nonce.js +0 -8
  25. package/dist/jpeg-quality.d.ts +0 -1
  26. package/dist/jpeg-quality.js +0 -21
  27. package/dist/options/audio-bitrate.d.ts +0 -2
  28. package/dist/options/audio-bitrate.js +0 -11
  29. package/dist/options/crf.d.ts +0 -2
  30. package/dist/options/crf.js +0 -11
  31. package/dist/options/enforce-audio.d.ts +0 -2
  32. package/dist/options/enforce-audio.js +0 -11
  33. package/dist/options/jpeg-quality.d.ts +0 -2
  34. package/dist/options/jpeg-quality.js +0 -11
  35. package/dist/options/mute.d.ts +0 -2
  36. package/dist/options/mute.js +0 -11
  37. package/dist/options/option.d.ts +0 -8
  38. package/dist/options/option.js +0 -2
  39. package/dist/options/scale.d.ts +0 -2
  40. package/dist/options/scale.js +0 -11
  41. package/dist/options/video-bitrate.d.ts +0 -2
  42. package/dist/options/video-bitrate.js +0 -11
  43. package/dist/options/video-codec.d.ts +0 -2
  44. package/dist/options/video-codec.js +0 -11
package/dist/client.d.ts CHANGED
@@ -1,9 +1,9 @@
1
1
  export declare const BrowserSafeApis: {
2
- getFileExtensionFromCodec: <T extends "aac" | "mp3" | "h264" | "h265" | "vp8" | "vp9" | "wav" | "prores" | "h264-mkv" | "gif">(codec: T, audioCodec: "pcm-16" | "aac" | "mp3" | "opus" | null) => import("./file-extensions").FileExtension;
2
+ getFileExtensionFromCodec: <T extends "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif">(codec: T, audioCodec: "mp3" | "aac" | "pcm-16" | "opus" | null) => import("./file-extensions").FileExtension;
3
3
  validCodecs: readonly ["h264", "h265", "vp8", "vp9", "mp3", "aac", "wav", "prores", "h264-mkv", "gif"];
4
- getDefaultCrfForCodec: (codec: "aac" | "mp3" | "h264" | "h265" | "vp8" | "vp9" | "wav" | "prores" | "h264-mkv" | "gif") => number;
5
- getValidCrfRanges: (codec: "aac" | "mp3" | "h264" | "h265" | "vp8" | "vp9" | "wav" | "prores" | "h264-mkv" | "gif") => [number, number];
6
- isAudioCodec: (codec: "aac" | "mp3" | "h264" | "h265" | "vp8" | "vp9" | "wav" | "prores" | "h264-mkv" | "gif" | undefined) => boolean;
4
+ getDefaultCrfForCodec: (codec: "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif") => number;
5
+ getValidCrfRanges: (codec: "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif") => [number, number];
6
+ isAudioCodec: (codec: "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif" | undefined) => boolean;
7
7
  validPixelFormats: readonly ["yuv420p", "yuva420p", "yuv422p", "yuv444p", "yuv420p10le", "yuv422p10le", "yuv444p10le", "yuva444p10le"];
8
8
  DEFAULT_PIXEL_FORMAT: "yuv420p" | "yuva420p" | "yuv422p" | "yuv444p" | "yuv420p10le" | "yuv422p10le" | "yuv444p10le" | "yuva444p10le";
9
9
  supportedAudioCodecs: {
@@ -19,79 +19,79 @@ export declare const BrowserSafeApis: {
19
19
  readonly wav: readonly ["pcm-16"];
20
20
  };
21
21
  defaultFileExtensionMap: {
22
- aac: {
22
+ h264: {
23
23
  default: import("./file-extensions").FileExtension;
24
24
  forAudioCodec: {
25
- "pcm-16": {
25
+ aac: {
26
26
  possible: import("./file-extensions").FileExtension[];
27
27
  default: import("./file-extensions").FileExtension;
28
28
  };
29
- aac: {
29
+ "pcm-16": {
30
30
  possible: import("./file-extensions").FileExtension[];
31
31
  default: import("./file-extensions").FileExtension;
32
32
  };
33
33
  };
34
34
  };
35
- mp3: {
35
+ h265: {
36
36
  default: import("./file-extensions").FileExtension;
37
37
  forAudioCodec: {
38
- "pcm-16": {
38
+ aac: {
39
39
  possible: import("./file-extensions").FileExtension[];
40
40
  default: import("./file-extensions").FileExtension;
41
41
  };
42
- mp3: {
42
+ "pcm-16": {
43
43
  possible: import("./file-extensions").FileExtension[];
44
44
  default: import("./file-extensions").FileExtension;
45
45
  };
46
46
  };
47
47
  };
48
- h264: {
48
+ vp8: {
49
49
  default: import("./file-extensions").FileExtension;
50
50
  forAudioCodec: {
51
51
  "pcm-16": {
52
52
  possible: import("./file-extensions").FileExtension[];
53
53
  default: import("./file-extensions").FileExtension;
54
54
  };
55
- aac: {
55
+ opus: {
56
56
  possible: import("./file-extensions").FileExtension[];
57
57
  default: import("./file-extensions").FileExtension;
58
58
  };
59
59
  };
60
60
  };
61
- h265: {
61
+ vp9: {
62
62
  default: import("./file-extensions").FileExtension;
63
63
  forAudioCodec: {
64
64
  "pcm-16": {
65
65
  possible: import("./file-extensions").FileExtension[];
66
66
  default: import("./file-extensions").FileExtension;
67
67
  };
68
- aac: {
68
+ opus: {
69
69
  possible: import("./file-extensions").FileExtension[];
70
70
  default: import("./file-extensions").FileExtension;
71
71
  };
72
72
  };
73
73
  };
74
- vp8: {
74
+ mp3: {
75
75
  default: import("./file-extensions").FileExtension;
76
76
  forAudioCodec: {
77
- "pcm-16": {
77
+ mp3: {
78
78
  possible: import("./file-extensions").FileExtension[];
79
79
  default: import("./file-extensions").FileExtension;
80
80
  };
81
- opus: {
81
+ "pcm-16": {
82
82
  possible: import("./file-extensions").FileExtension[];
83
83
  default: import("./file-extensions").FileExtension;
84
84
  };
85
85
  };
86
86
  };
87
- vp9: {
87
+ aac: {
88
88
  default: import("./file-extensions").FileExtension;
89
89
  forAudioCodec: {
90
- "pcm-16": {
90
+ aac: {
91
91
  possible: import("./file-extensions").FileExtension[];
92
92
  default: import("./file-extensions").FileExtension;
93
93
  };
94
- opus: {
94
+ "pcm-16": {
95
95
  possible: import("./file-extensions").FileExtension[];
96
96
  default: import("./file-extensions").FileExtension;
97
97
  };
@@ -109,11 +109,11 @@ export declare const BrowserSafeApis: {
109
109
  prores: {
110
110
  default: import("./file-extensions").FileExtension;
111
111
  forAudioCodec: {
112
- "pcm-16": {
112
+ aac: {
113
113
  possible: import("./file-extensions").FileExtension[];
114
114
  default: import("./file-extensions").FileExtension;
115
115
  };
116
- aac: {
116
+ "pcm-16": {
117
117
  possible: import("./file-extensions").FileExtension[];
118
118
  default: import("./file-extensions").FileExtension;
119
119
  };
@@ -134,21 +134,13 @@ export declare const BrowserSafeApis: {
134
134
  };
135
135
  };
136
136
  defaultAudioCodecs: {
137
- aac: {
138
- compressed: "pcm-16" | "aac" | null;
139
- lossless: "pcm-16" | "aac" | null;
140
- };
141
- mp3: {
142
- compressed: "pcm-16" | "mp3" | null;
143
- lossless: "pcm-16" | "mp3" | null;
144
- };
145
137
  h264: {
146
- compressed: "pcm-16" | "aac" | null;
147
- lossless: "pcm-16" | "aac" | null;
138
+ compressed: "aac" | "pcm-16" | null;
139
+ lossless: "aac" | "pcm-16" | null;
148
140
  };
149
141
  h265: {
150
- compressed: "pcm-16" | "aac" | null;
151
- lossless: "pcm-16" | "aac" | null;
142
+ compressed: "aac" | "pcm-16" | null;
143
+ lossless: "aac" | "pcm-16" | null;
152
144
  };
153
145
  vp8: {
154
146
  compressed: "pcm-16" | "opus" | null;
@@ -158,13 +150,21 @@ export declare const BrowserSafeApis: {
158
150
  compressed: "pcm-16" | "opus" | null;
159
151
  lossless: "pcm-16" | "opus" | null;
160
152
  };
153
+ mp3: {
154
+ compressed: "mp3" | "pcm-16" | null;
155
+ lossless: "mp3" | "pcm-16" | null;
156
+ };
157
+ aac: {
158
+ compressed: "aac" | "pcm-16" | null;
159
+ lossless: "aac" | "pcm-16" | null;
160
+ };
161
161
  wav: {
162
162
  compressed: "pcm-16" | null;
163
163
  lossless: "pcm-16" | null;
164
164
  };
165
165
  prores: {
166
- compressed: "pcm-16" | "aac" | null;
167
- lossless: "pcm-16" | "aac" | null;
166
+ compressed: "aac" | "pcm-16" | null;
167
+ lossless: "aac" | "pcm-16" | null;
168
168
  };
169
169
  "h264-mkv": {
170
170
  compressed: "pcm-16" | null;
@@ -175,5 +175,5 @@ export declare const BrowserSafeApis: {
175
175
  lossless: null;
176
176
  };
177
177
  };
178
- defaultCodecsForFileExtension: Record<import("./file-extensions").FileExtension, "aac" | "mp3" | "h264" | "h265" | "vp8" | "vp9" | "wav" | "prores" | "h264-mkv" | "gif">;
178
+ defaultCodecsForFileExtension: Record<import("./file-extensions").FileExtension, "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif">;
179
179
  };
@@ -7,9 +7,6 @@ export declare const createFfmpegComplexFilter: ({ filters, downloadMap, ffmpegE
7
7
  ffmpegExecutable: FfmpegExecutable;
8
8
  remotionRoot: string;
9
9
  }) => Promise<{
10
- complexFilterFlag: [
11
- string,
12
- string
13
- ] | null;
10
+ complexFilterFlag: [string, string] | null;
14
11
  cleanup: () => void;
15
12
  }>;
@@ -1,3 +1,4 @@
1
+ /// <reference types="node" />
1
2
  import type { OffthreadVideoImageFormat } from 'remotion';
2
3
  import type { DownloadMap } from './assets/download-map';
3
4
  import type { FfmpegExecutable } from './ffmpeg-executable';
@@ -1,6 +1,6 @@
1
1
  import type { AudioCodec } from './audio-codec';
2
2
  import type { Codec } from './codec';
3
3
  import type { FileExtension } from './file-extensions';
4
- export declare const getFileExtensionFromCodec: <T extends "aac" | "mp3" | "h264" | "h265" | "vp8" | "vp9" | "wav" | "prores" | "h264-mkv" | "gif">(codec: T, audioCodec: AudioCodec | null) => FileExtension;
5
- export declare const makeFileExtensionMap: () => Record<string, ("aac" | "mp3" | "h264" | "h265" | "vp8" | "vp9" | "wav" | "prores" | "h264-mkv" | "gif")[]>;
4
+ export declare const getFileExtensionFromCodec: <T extends "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif">(codec: T, audioCodec: AudioCodec | null) => FileExtension;
5
+ export declare const makeFileExtensionMap: () => Record<string, ("h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif")[]>;
6
6
  export declare const defaultCodecsForFileExtension: Record<FileExtension, Codec>;
@@ -1,3 +1,4 @@
1
+ /// <reference types="node" />
1
2
  import type { OffthreadVideoImageFormat } from 'remotion';
2
3
  import type { SpecialVCodecForTransparency } from './assets/download-map';
3
4
  import type { FfmpegExecutable } from './ffmpeg-executable';
@@ -7,10 +8,7 @@ export declare const getFrameOfVideoSlow: ({ src, duration, ffmpegExecutable, im
7
8
  duration: number;
8
9
  imageFormat: OffthreadVideoImageFormat;
9
10
  specialVCodecForTransparency: SpecialVCodecForTransparency;
10
- needsResize: [
11
- number,
12
- number
13
- ] | null;
11
+ needsResize: [number, number] | null;
14
12
  offset: number;
15
13
  fps: number | null;
16
14
  remotionRoot: string;
package/dist/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ /// <reference types="node" />
1
2
  import execa from 'execa';
2
3
  import { SymbolicateableError } from './error-handling/symbolicateable-error';
3
4
  import { mimeContentType, mimeLookup } from './mime-types';
@@ -59,9 +60,9 @@ export declare const RenderInternals: {
59
60
  width: number;
60
61
  height: number;
61
62
  scale: number;
62
- codec: "aac" | "mp3" | "h264" | "h265" | "vp8" | "vp9" | "wav" | "prores" | "h264-mkv" | "gif";
63
+ codec: "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif";
63
64
  }) => void;
64
- getFileExtensionFromCodec: <T extends "aac" | "mp3" | "h264" | "h265" | "vp8" | "vp9" | "wav" | "prores" | "h264-mkv" | "gif">(codec: T, audioCodec: "pcm-16" | "aac" | "mp3" | "opus" | null) => import("./file-extensions").FileExtension;
65
+ getFileExtensionFromCodec: <T extends "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif">(codec: T, audioCodec: "mp3" | "aac" | "pcm-16" | "opus" | null) => import("./file-extensions").FileExtension;
65
66
  tmpDir: (str: string) => string;
66
67
  deleteDirectory: (directory: string) => void;
67
68
  isServeUrl: (potentialUrl: string) => boolean;
@@ -111,24 +112,24 @@ export declare const RenderInternals: {
111
112
  };
112
113
  registerErrorSymbolicationLock: () => number;
113
114
  unlockErrorSymbolicationLock: (id: number) => void;
114
- canUseParallelEncoding: (codec: "aac" | "mp3" | "h264" | "h265" | "vp8" | "vp9" | "wav" | "prores" | "h264-mkv" | "gif") => boolean;
115
+ canUseParallelEncoding: (codec: "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif") => boolean;
115
116
  mimeContentType: typeof mimeContentType;
116
117
  mimeLookup: typeof mimeLookup;
117
118
  validateConcurrency: (value: unknown, setting: string) => void;
118
119
  validPixelFormats: readonly ["yuv420p", "yuva420p", "yuv422p", "yuv444p", "yuv420p10le", "yuv422p10le", "yuv444p10le", "yuva444p10le"];
119
120
  DEFAULT_BROWSER: import("./browser").Browser;
120
121
  validateFrameRange: (frameRange: import("./frame-range").FrameRange | null) => void;
121
- DEFAULT_OPENGL_RENDERER: "swangle" | "angle" | "egl" | "swiftshader" | null;
122
- validateOpenGlRenderer: (option: "swangle" | "angle" | "egl" | "swiftshader" | null) => "swangle" | "angle" | "egl" | "swiftshader" | null;
122
+ DEFAULT_OPENGL_RENDERER: "angle" | "swangle" | "egl" | "swiftshader" | null;
123
+ validateOpenGlRenderer: (option: "angle" | "swangle" | "egl" | "swiftshader" | null) => "angle" | "swangle" | "egl" | "swiftshader" | null;
123
124
  validImageFormats: readonly ["png", "jpeg", "none"];
124
125
  validCodecs: readonly ["h264", "h265", "vp8", "vp9", "mp3", "aac", "wav", "prores", "h264-mkv", "gif"];
125
126
  DEFAULT_PIXEL_FORMAT: "yuv420p" | "yuva420p" | "yuv422p" | "yuv444p" | "yuv420p10le" | "yuv422p10le" | "yuv444p10le" | "yuva444p10le";
126
127
  validateQuality: (q: number | undefined) => void;
127
128
  DEFAULT_TIMEOUT: number;
128
- DEFAULT_CODEC: "aac" | "mp3" | "h264" | "h265" | "vp8" | "vp9" | "wav" | "prores" | "h264-mkv" | "gif";
129
- isAudioCodec: (codec: "aac" | "mp3" | "h264" | "h265" | "vp8" | "vp9" | "wav" | "prores" | "h264-mkv" | "gif" | undefined) => boolean;
129
+ DEFAULT_CODEC: "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif";
130
+ isAudioCodec: (codec: "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif" | undefined) => boolean;
130
131
  logLevels: readonly ["verbose", "info", "warn", "error"];
131
- isEqualOrBelowLogLevel: (currentLevel: "verbose" | "info" | "warn" | "error", level: "verbose" | "info" | "warn" | "error") => boolean;
132
+ isEqualOrBelowLogLevel: (currentLevel: "error" | "verbose" | "info" | "warn", level: "error" | "verbose" | "info" | "warn") => boolean;
132
133
  isValidLogLevel: (level: string) => boolean;
133
134
  perf: typeof perf;
134
135
  makeDownloadMap: () => import("./assets/download-map").DownloadMap;
@@ -150,92 +151,92 @@ export declare const RenderInternals: {
150
151
  output: string;
151
152
  onProgress: (p: number) => void;
152
153
  numberOfFrames: number;
153
- codec: "aac" | "mp3" | "h264" | "h265" | "vp8" | "vp9" | "wav" | "prores" | "h264-mkv" | "gif";
154
+ codec: "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif";
154
155
  fps: number;
155
156
  numberOfGifLoops: number | null;
156
157
  remotionRoot: string;
157
158
  ffmpegExecutable: import("./ffmpeg-executable").FfmpegExecutable;
158
- audioCodec: "pcm-16" | "aac" | "mp3" | "opus" | null;
159
+ audioCodec: "mp3" | "aac" | "pcm-16" | "opus" | null;
159
160
  }) => Promise<void>;
160
161
  getDefaultAudioCodec: ({ codec, preferLossless, }: {
161
- codec: "aac" | "mp3" | "h264" | "h265" | "vp8" | "vp9" | "wav" | "prores" | "h264-mkv" | "gif";
162
+ codec: "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif";
162
163
  preferLossless: boolean;
163
- }) => "pcm-16" | "aac" | "mp3" | "opus" | null;
164
+ }) => "mp3" | "aac" | "pcm-16" | "opus" | null;
164
165
  validAudioCodecs: readonly ["pcm-16", "aac", "mp3", "opus"];
165
166
  defaultFileExtensionMap: {
166
- aac: {
167
+ h264: {
167
168
  default: import("./file-extensions").FileExtension;
168
169
  forAudioCodec: {
169
- "pcm-16": {
170
+ aac: {
170
171
  possible: import("./file-extensions").FileExtension[];
171
172
  default: import("./file-extensions").FileExtension;
172
173
  };
173
- aac: {
174
+ "pcm-16": {
174
175
  possible: import("./file-extensions").FileExtension[];
175
176
  default: import("./file-extensions").FileExtension;
176
177
  };
177
178
  };
178
179
  };
179
- mp3: {
180
+ h265: {
180
181
  default: import("./file-extensions").FileExtension;
181
182
  forAudioCodec: {
182
- "pcm-16": {
183
+ aac: {
183
184
  possible: import("./file-extensions").FileExtension[];
184
185
  default: import("./file-extensions").FileExtension;
185
186
  };
186
- mp3: {
187
+ "pcm-16": {
187
188
  possible: import("./file-extensions").FileExtension[];
188
189
  default: import("./file-extensions").FileExtension;
189
190
  };
190
191
  };
191
192
  };
192
- h264: {
193
+ vp8: {
193
194
  default: import("./file-extensions").FileExtension;
194
195
  forAudioCodec: {
195
196
  "pcm-16": {
196
197
  possible: import("./file-extensions").FileExtension[];
197
198
  default: import("./file-extensions").FileExtension;
198
199
  };
199
- aac: {
200
+ opus: {
200
201
  possible: import("./file-extensions").FileExtension[];
201
202
  default: import("./file-extensions").FileExtension;
202
203
  };
203
204
  };
204
205
  };
205
- h265: {
206
+ vp9: {
206
207
  default: import("./file-extensions").FileExtension;
207
208
  forAudioCodec: {
208
209
  "pcm-16": {
209
210
  possible: import("./file-extensions").FileExtension[];
210
211
  default: import("./file-extensions").FileExtension;
211
212
  };
212
- aac: {
213
+ opus: {
213
214
  possible: import("./file-extensions").FileExtension[];
214
215
  default: import("./file-extensions").FileExtension;
215
216
  };
216
217
  };
217
218
  };
218
- vp8: {
219
+ mp3: {
219
220
  default: import("./file-extensions").FileExtension;
220
221
  forAudioCodec: {
221
- "pcm-16": {
222
+ mp3: {
222
223
  possible: import("./file-extensions").FileExtension[];
223
224
  default: import("./file-extensions").FileExtension;
224
225
  };
225
- opus: {
226
+ "pcm-16": {
226
227
  possible: import("./file-extensions").FileExtension[];
227
228
  default: import("./file-extensions").FileExtension;
228
229
  };
229
230
  };
230
231
  };
231
- vp9: {
232
+ aac: {
232
233
  default: import("./file-extensions").FileExtension;
233
234
  forAudioCodec: {
234
- "pcm-16": {
235
+ aac: {
235
236
  possible: import("./file-extensions").FileExtension[];
236
237
  default: import("./file-extensions").FileExtension;
237
238
  };
238
- opus: {
239
+ "pcm-16": {
239
240
  possible: import("./file-extensions").FileExtension[];
240
241
  default: import("./file-extensions").FileExtension;
241
242
  };
@@ -253,11 +254,11 @@ export declare const RenderInternals: {
253
254
  prores: {
254
255
  default: import("./file-extensions").FileExtension;
255
256
  forAudioCodec: {
256
- "pcm-16": {
257
+ aac: {
257
258
  possible: import("./file-extensions").FileExtension[];
258
259
  default: import("./file-extensions").FileExtension;
259
260
  };
260
- aac: {
261
+ "pcm-16": {
261
262
  possible: import("./file-extensions").FileExtension[];
262
263
  default: import("./file-extensions").FileExtension;
263
264
  };
@@ -289,6 +290,6 @@ export declare const RenderInternals: {
289
290
  readonly vp9: readonly ["opus", "pcm-16"];
290
291
  readonly wav: readonly ["pcm-16"];
291
292
  };
292
- makeFileExtensionMap: () => Record<string, ("aac" | "mp3" | "h264" | "h265" | "vp8" | "vp9" | "wav" | "prores" | "h264-mkv" | "gif")[]>;
293
- defaultCodecsForFileExtension: Record<import("./file-extensions").FileExtension, "aac" | "mp3" | "h264" | "h265" | "vp8" | "vp9" | "wav" | "prores" | "h264-mkv" | "gif">;
293
+ makeFileExtensionMap: () => Record<string, ("h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif")[]>;
294
+ defaultCodecsForFileExtension: Record<import("./file-extensions").FileExtension, "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif">;
294
295
  };
@@ -1,3 +1,4 @@
1
+ /// <reference types="node" />
1
2
  import type { OffthreadVideoImageFormat } from 'remotion';
2
3
  import type { DownloadMap, SpecialVCodecForTransparency } from './assets/download-map';
3
4
  import type { FfmpegExecutable } from './ffmpeg-executable';
@@ -1,3 +1,4 @@
1
+ /// <reference types="node" />
1
2
  import type { ClipRegion } from 'remotion';
2
3
  import type { Page } from './browser/BrowserPage';
3
4
  import type { ImageFormat } from './image-format';
@@ -1,3 +1,4 @@
1
+ /// <reference types="node" />
1
2
  import type { ClipRegion } from 'remotion';
2
3
  import type { Page } from './browser/BrowserPage';
3
4
  export declare const screenshot: (options: {
@@ -1,3 +1,4 @@
1
+ /// <reference types="node" />
1
2
  import type { SmallTCompMetadata } from 'remotion';
2
3
  import type { RenderMediaOnDownload } from './assets/download-and-map-assets-to-file';
3
4
  import type { DownloadMap } from './assets/download-map';
@@ -1,3 +1,4 @@
1
+ /// <reference types="node" />
1
2
  import type { ClipRegion } from 'remotion';
2
3
  import type { Page } from './browser/BrowserPage';
3
4
  import type { ImageFormat } from './image-format';
@@ -1,3 +1,4 @@
1
+ /// <reference types="node" />
1
2
  import type { ClipRegion } from 'remotion';
2
3
  import type { Page } from './browser/BrowserPage';
3
4
  import type { StillImageFormat } from './image-format';
@@ -1,3 +1,4 @@
1
+ /// <reference types="node" />
1
2
  import type { TAsset } from 'remotion';
2
3
  import type { DownloadMap } from './assets/download-map';
3
4
  import type { Page } from './browser/BrowserPage';
@@ -1,3 +1,4 @@
1
+ /// <reference types="node" />
1
2
  import type { OffthreadVideoImageFormat } from 'remotion';
2
3
  import type { NeedsResize, SpecialVCodecForTransparency } from './assets/download-map';
3
4
  import type { FfmpegExecutable } from './ffmpeg-executable';
@@ -1,5 +1,5 @@
1
1
  import type { AudioCodec } from './audio-codec';
2
- export declare const validateOutputFilename: <T extends "aac" | "mp3" | "h264" | "h265" | "vp8" | "vp9" | "wav" | "prores" | "h264-mkv" | "gif">({ codec, audioCodec, extension, preferLossless, }: {
2
+ export declare const validateOutputFilename: <T extends "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif">({ codec, audioCodec, extension, preferLossless, }: {
3
3
  codec: T;
4
4
  audioCodec: AudioCodec | null;
5
5
  extension: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@remotion/renderer",
3
- "version": "3.3.83",
3
+ "version": "3.3.86",
4
4
  "description": "Renderer for Remotion",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -16,7 +16,7 @@
16
16
  "dependencies": {
17
17
  "execa": "5.1.1",
18
18
  "extract-zip": "2.0.1",
19
- "remotion": "3.3.83",
19
+ "remotion": "3.3.86",
20
20
  "source-map": "^0.8.0-beta.0",
21
21
  "ws": "8.7.0"
22
22
  },
@@ -41,13 +41,13 @@
41
41
  "vitest": "0.24.3"
42
42
  },
43
43
  "optionalDependencies": {
44
- "@remotion/compositor-darwin-arm64": "3.3.83",
45
- "@remotion/compositor-darwin-x64": "3.3.83",
46
- "@remotion/compositor-linux-arm64-gnu": "3.3.83",
47
- "@remotion/compositor-linux-arm64-musl": "3.3.83",
48
- "@remotion/compositor-linux-x64-gnu": "3.3.83",
49
- "@remotion/compositor-linux-x64-musl": "3.3.83",
50
- "@remotion/compositor-win32-x64-msvc": "3.3.83"
44
+ "@remotion/compositor-darwin-arm64": "3.3.86",
45
+ "@remotion/compositor-darwin-x64": "3.3.86",
46
+ "@remotion/compositor-linux-arm64-gnu": "3.3.86",
47
+ "@remotion/compositor-linux-arm64-musl": "3.3.86",
48
+ "@remotion/compositor-linux-x64-gnu": "3.3.86",
49
+ "@remotion/compositor-linux-x64-musl": "3.3.86",
50
+ "@remotion/compositor-win32-x64-msvc": "3.3.86"
51
51
  },
52
52
  "keywords": [
53
53
  "remotion",
@@ -1 +0,0 @@
1
- export declare const isTargetClosedErr: (error: Error | undefined) => boolean | undefined;
@@ -1,9 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isTargetClosedErr = void 0;
4
- const isTargetClosedErr = (error) => {
5
- var _a, _b;
6
- return (((_a = error === null || error === void 0 ? void 0 : error.message) === null || _a === void 0 ? void 0 : _a.includes('Target closed')) ||
7
- ((_b = error === null || error === void 0 ? void 0 : error.message) === null || _b === void 0 ? void 0 : _b.includes('Session closed')));
8
- };
9
- exports.isTargetClosedErr = isTargetClosedErr;
@@ -1,17 +0,0 @@
1
- import execa from 'execa';
2
- export declare const dynamicLibraryPathOptions: () => {
3
- env: {
4
- DYLD_LIBRARY_PATH: string;
5
- PATH?: undefined;
6
- LD_LIBRARY_PATH?: undefined;
7
- } | {
8
- PATH: string;
9
- DYLD_LIBRARY_PATH?: undefined;
10
- LD_LIBRARY_PATH?: undefined;
11
- } | {
12
- LD_LIBRARY_PATH: string;
13
- DYLD_LIBRARY_PATH?: undefined;
14
- PATH?: undefined;
15
- };
16
- };
17
- export declare const callFf: (bin: 'ffmpeg' | 'ffprobe', args: (string | null)[], options?: execa.Options<string>) => execa.ExecaChildProcess<string>;
@@ -1,34 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.callFf = exports.dynamicLibraryPathOptions = void 0;
7
- const execa_1 = __importDefault(require("execa"));
8
- const path_1 = __importDefault(require("path"));
9
- const get_executable_path_1 = require("./compositor/get-executable-path");
10
- const truthy_1 = require("./truthy");
11
- const dynamicLibraryPathOptions = () => {
12
- const lib = path_1.default.join((0, get_executable_path_1.getExecutablePath)('ffmpeg-cwd'), 'remotion', 'lib');
13
- return {
14
- env: process.platform === 'darwin'
15
- ? {
16
- DYLD_LIBRARY_PATH: lib,
17
- }
18
- : process.platform === 'win32'
19
- ? {
20
- PATH: `${process.env.PATH};${lib}`,
21
- }
22
- : {
23
- LD_LIBRARY_PATH: lib,
24
- },
25
- };
26
- };
27
- exports.dynamicLibraryPathOptions = dynamicLibraryPathOptions;
28
- const callFf = (bin, args, options) => {
29
- return (0, execa_1.default)((0, get_executable_path_1.getExecutablePath)(bin), args.filter(truthy_1.truthy), {
30
- ...(0, exports.dynamicLibraryPathOptions)(),
31
- ...options,
32
- });
33
- };
34
- exports.callFf = callFf;
@@ -1,14 +0,0 @@
1
- /// <reference types="node" />
2
- import type { CompositorCommand } from './payloads';
3
- export declare type Compositor = {
4
- finishCommands: () => void;
5
- executeCommand: <T extends keyof CompositorCommand>(type: T, payload: CompositorCommand[T]) => Promise<Buffer>;
6
- waitForDone: () => Promise<void>;
7
- };
8
- export declare const spawnCompositorOrReuse: <T extends keyof CompositorCommand>({ initiatePayload, renderId, }: {
9
- initiatePayload: CompositorCommand[T];
10
- renderId: string;
11
- }) => Compositor;
12
- export declare const releaseCompositorWithId: (renderId: string) => void;
13
- export declare const waitForCompositorWithIdToQuit: (renderId: string) => Promise<void>;
14
- export declare const startCompositor: <T extends keyof CompositorCommand>(payload: CompositorCommand[T]) => Compositor;
@@ -1,168 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.startCompositor = exports.waitForCompositorWithIdToQuit = exports.releaseCompositorWithId = exports.spawnCompositorOrReuse = void 0;
4
- const child_process_1 = require("child_process");
5
- const call_ffmpeg_1 = require("../call-ffmpeg");
6
- const get_executable_path_1 = require("./get-executable-path");
7
- const make_nonce_1 = require("./make-nonce");
8
- const compositorMap = {};
9
- const spawnCompositorOrReuse = ({ initiatePayload, renderId, }) => {
10
- if (!compositorMap[renderId]) {
11
- compositorMap[renderId] = (0, exports.startCompositor)(initiatePayload);
12
- }
13
- return compositorMap[renderId];
14
- };
15
- exports.spawnCompositorOrReuse = spawnCompositorOrReuse;
16
- const releaseCompositorWithId = (renderId) => {
17
- if (compositorMap[renderId]) {
18
- compositorMap[renderId].finishCommands();
19
- }
20
- };
21
- exports.releaseCompositorWithId = releaseCompositorWithId;
22
- const waitForCompositorWithIdToQuit = (renderId) => {
23
- if (!compositorMap[renderId]) {
24
- throw new TypeError('No compositor with that id');
25
- }
26
- return compositorMap[renderId].waitForDone();
27
- };
28
- exports.waitForCompositorWithIdToQuit = waitForCompositorWithIdToQuit;
29
- const startCompositor = (payload) => {
30
- const bin = (0, get_executable_path_1.getExecutablePath)('compositor');
31
- const child = (0, child_process_1.spawn)(bin, [JSON.stringify(payload)], (0, call_ffmpeg_1.dynamicLibraryPathOptions)());
32
- const stderrChunks = [];
33
- let outputBuffer = Buffer.from('');
34
- const separator = Buffer.from('remotion_buffer:');
35
- const waiters = new Map();
36
- const onMessage = (nonce, data) => {
37
- if (nonce === '0') {
38
- console.log(data.toString('utf8'));
39
- }
40
- if (waiters.has(nonce)) {
41
- waiters.get(nonce).resolve(data);
42
- waiters.delete(nonce);
43
- }
44
- };
45
- let quit = false;
46
- let missingData = null;
47
- const processInput = () => {
48
- let separatorIndex = outputBuffer.indexOf(separator);
49
- if (separatorIndex === -1) {
50
- return;
51
- }
52
- separatorIndex += separator.length;
53
- let nonceString = '';
54
- let lengthString = '';
55
- // Each message from Rust is prefixed with `remotion_buffer;{[nonce]}:{[length]}`
56
- // Let's read the buffer to extract the nonce, and if the full length is available,
57
- // we'll extract the data and pass it to the callback.
58
- // eslint-disable-next-line no-constant-condition
59
- while (true) {
60
- const nextDigit = outputBuffer[separatorIndex];
61
- // 0x3b is the character ";"
62
- if (nextDigit === 0x3b) {
63
- separatorIndex++;
64
- break;
65
- }
66
- separatorIndex++;
67
- nonceString += String.fromCharCode(nextDigit);
68
- }
69
- // eslint-disable-next-line no-constant-condition
70
- while (true) {
71
- const nextDigit = outputBuffer[separatorIndex];
72
- // 0x3a is the character ":"
73
- if (nextDigit === 0x3a) {
74
- break;
75
- }
76
- separatorIndex++;
77
- lengthString += String.fromCharCode(nextDigit);
78
- }
79
- const length = Number(lengthString);
80
- const dataLength = outputBuffer.length - separatorIndex - 1;
81
- if (dataLength < length) {
82
- missingData = {
83
- dataMissing: length - dataLength,
84
- };
85
- return;
86
- }
87
- const data = outputBuffer.subarray(separatorIndex + 1, separatorIndex + 1 + Number(lengthString));
88
- onMessage(nonceString, data);
89
- missingData = null;
90
- outputBuffer = outputBuffer.subarray(separatorIndex + Number(lengthString) + 1);
91
- processInput();
92
- };
93
- let unprocessedBuffers = [];
94
- child.stdout.on('data', (data) => {
95
- unprocessedBuffers.push(data);
96
- const separatorIndex = data.indexOf(separator);
97
- if (separatorIndex === -1) {
98
- if (missingData) {
99
- missingData.dataMissing -= data.length;
100
- }
101
- if (!missingData || missingData.dataMissing > 0) {
102
- return;
103
- }
104
- }
105
- unprocessedBuffers.unshift(outputBuffer);
106
- outputBuffer = Buffer.concat(unprocessedBuffers);
107
- unprocessedBuffers = [];
108
- processInput();
109
- });
110
- child.stderr.on('data', (data) => {
111
- if (data.toString('utf-8').includes('No accelerated colorspace conversion')) {
112
- return;
113
- }
114
- console.log(data.toString('utf-8'));
115
- });
116
- return {
117
- waitForDone: () => {
118
- return new Promise((resolve, reject) => {
119
- child.on('close', (code) => {
120
- quit = true;
121
- const waitersToKill = Array.from(waiters.values());
122
- for (const waiter of waitersToKill) {
123
- waiter.reject(new Error(`Compositor quit with code ${code}`));
124
- }
125
- waiters.clear();
126
- if (code === 0) {
127
- resolve();
128
- }
129
- else {
130
- reject(Buffer.concat(stderrChunks).toString('utf-8'));
131
- }
132
- });
133
- });
134
- },
135
- finishCommands: () => {
136
- if (quit) {
137
- throw new Error('Compositor already quit');
138
- }
139
- child.stdin.write('EOF\n');
140
- },
141
- executeCommand: (command, params) => {
142
- if (quit) {
143
- throw new Error('Compositor already quit');
144
- }
145
- return new Promise((resolve, reject) => {
146
- const nonce = (0, make_nonce_1.makeNonce)();
147
- const composed = {
148
- type: command,
149
- params: {
150
- ...params,
151
- nonce,
152
- },
153
- };
154
- // TODO: Should have a way to error out a single task
155
- child.stdin.write(JSON.stringify(composed) + '\n');
156
- waiters.set(nonce, {
157
- resolve: (data) => {
158
- resolve(data);
159
- },
160
- reject: (err) => {
161
- reject(err);
162
- },
163
- });
164
- });
165
- },
166
- };
167
- };
168
- exports.startCompositor = startCompositor;
@@ -1 +0,0 @@
1
- export declare const makeNonce: () => string;
@@ -1,8 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.makeNonce = void 0;
4
- const makeNonce = () => {
5
- return (Math.random().toString(36).substring(2, 15) +
6
- Math.random().toString(36).substring(2, 15));
7
- };
8
- exports.makeNonce = makeNonce;
@@ -1 +0,0 @@
1
- export declare const validateJpegQuality: (q: number | undefined) => void;
@@ -1,21 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.validateJpegQuality = void 0;
4
- const validateJpegQuality = (q) => {
5
- if (typeof q !== 'undefined' && typeof q !== 'number') {
6
- throw new Error(`JPEG Quality option must be a number or undefined. Got ${typeof q} (${JSON.stringify(q)})`);
7
- }
8
- if (typeof q === 'undefined') {
9
- return;
10
- }
11
- if (!Number.isFinite(q)) {
12
- throw new RangeError(`JPEG Quality must be a finite number, but is ${q}`);
13
- }
14
- if (Number.isNaN(q)) {
15
- throw new RangeError(`JPEG Quality is NaN, but must be a real number`);
16
- }
17
- if (q > 100 || q < 0) {
18
- throw new RangeError('JPEG Quality option must be between 0 and 100.');
19
- }
20
- };
21
- exports.validateJpegQuality = validateJpegQuality;
@@ -1,2 +0,0 @@
1
- import type { RemotionOption } from './option';
2
- export declare const audioBitrateOption: RemotionOption;
@@ -1,11 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.audioBitrateOption = void 0;
4
- const jsx_runtime_1 = require("react/jsx-runtime");
5
- exports.audioBitrateOption = {
6
- name: 'Audio Bitrate',
7
- cliFlag: '--audio-bitrate',
8
- description: ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: ["Specify the target bitrate for the generated video. The syntax for FFMPEGs", (0, jsx_runtime_1.jsx)("code", { children: "-b:a" }), " parameter should be used. FFMPEG may encode the video in a way that will not result in the exact audio bitrate specified. Example values: ", (0, jsx_runtime_1.jsx)("code", { children: "512K" }), " for 512 kbps, ", (0, jsx_runtime_1.jsx)("code", { children: "1M" }), " for 1 Mbps. Default: ", (0, jsx_runtime_1.jsx)("code", { children: "320k" })] })),
9
- ssrName: 'audioBitrate',
10
- docLink: 'https://www.remotion.dev/docs/renderer/render-media#audiobitrate-',
11
- };
@@ -1,2 +0,0 @@
1
- import type { RemotionOption } from './option';
2
- export declare const crfOption: RemotionOption;
@@ -1,11 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.crfOption = void 0;
4
- const jsx_runtime_1 = require("react/jsx-runtime");
5
- exports.crfOption = {
6
- name: 'CRF',
7
- cliFlag: '--crf',
8
- description: ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: "No matter which codec you end up using, there's always a tradeoff between file size and video quality. You can control it by setting the so called CRF (Constant Rate Factor). The lower the number, the better the quality, the higher the number, the smaller the file is \u2013 of course at the cost of quality." })),
9
- ssrName: 'crf',
10
- docLink: 'https://www.remotion.dev/docs/encoding/#controlling-quality-using-the-crf-setting',
11
- };
@@ -1,2 +0,0 @@
1
- import type { RemotionOption } from './option';
2
- export declare const enforceAudioOption: RemotionOption;
@@ -1,11 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.enforceAudioOption = void 0;
4
- const jsx_runtime_1 = require("react/jsx-runtime");
5
- exports.enforceAudioOption = {
6
- name: 'Enforce Audio Track',
7
- cliFlag: '--enforce-audio-track',
8
- description: ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: "Render a silent audio track if there would be none otherwise." })),
9
- ssrName: 'enforceAudioTrack',
10
- docLink: 'https://www.remotion.dev/docs/config#setenforceaudiotrack-',
11
- };
@@ -1,2 +0,0 @@
1
- import type { RemotionOption } from './option';
2
- export declare const jpegQualityOption: RemotionOption;
@@ -1,11 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.jpegQualityOption = void 0;
4
- const jsx_runtime_1 = require("react/jsx-runtime");
5
- exports.jpegQualityOption = {
6
- name: 'JPEG Quality',
7
- cliFlag: '--jpeg-quality',
8
- description: ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: "Sets the quality of the generated JPEG images. Must be an integer between 0 and 100. Default is to leave it up to the browser, current default is 80." })),
9
- ssrName: 'jpegQuality',
10
- docLink: 'https://www.remotion.dev/docs/renderer/render-media#jpeg-quality',
11
- };
@@ -1,2 +0,0 @@
1
- import type { RemotionOption } from './option';
2
- export declare const muteOption: RemotionOption;
@@ -1,11 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.muteOption = void 0;
4
- const jsx_runtime_1 = require("react/jsx-runtime");
5
- exports.muteOption = {
6
- name: 'Muted',
7
- cliFlag: '--muted',
8
- description: (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: "The Audio of the video will be omitted." }),
9
- ssrName: 'muted',
10
- docLink: 'https://www.remotion.dev/docs/using-audio/#muted-property',
11
- };
@@ -1,8 +0,0 @@
1
- import type React from 'react';
2
- export declare type RemotionOption = {
3
- name: string;
4
- cliFlag: string;
5
- ssrName: string;
6
- description: React.ReactNode;
7
- docLink: string;
8
- };
@@ -1,2 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,2 +0,0 @@
1
- import type { RemotionOption } from './option';
2
- export declare const scaleOption: RemotionOption;
@@ -1,11 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.scaleOption = void 0;
4
- const jsx_runtime_1 = require("react/jsx-runtime");
5
- exports.scaleOption = {
6
- name: 'Scale',
7
- cliFlag: '--scale',
8
- description: ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: ["Scales the output by a factor. For example, a 1280x720px frame will become a 1920x1080px frame with a scale factor of ", (0, jsx_runtime_1.jsx)("code", { children: "1.5" }), ". Vector elements like fonts and HTML markups will be rendered with extra details."] })),
9
- ssrName: 'scale',
10
- docLink: 'https://www.remotion.dev/docs/scaling',
11
- };
@@ -1,2 +0,0 @@
1
- import type { RemotionOption } from './option';
2
- export declare const videoBitrate: RemotionOption;
@@ -1,11 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.videoBitrate = void 0;
4
- const jsx_runtime_1 = require("react/jsx-runtime");
5
- exports.videoBitrate = {
6
- name: 'Video Bitrate',
7
- cliFlag: '--video-bitrate',
8
- description: ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: ["Specify the target bitrate for the generated video. The syntax for FFMPEGs", (0, jsx_runtime_1.jsx)("code", { children: "-b:v" }), " parameter should be used. FFMPEG may encode the video in a way that will not result in the exact video bitrate specified. Example values: ", (0, jsx_runtime_1.jsx)("code", { children: "512K" }), " for 512 kbps, ", (0, jsx_runtime_1.jsx)("code", { children: "1M" }), " for 1 Mbps."] })),
9
- ssrName: 'videoBitrate',
10
- docLink: 'https://www.remotion.dev/docs/renderer/render-media#videobitrate-',
11
- };
@@ -1,2 +0,0 @@
1
- import type { RemotionOption } from './option';
2
- export declare const videoCodecOption: RemotionOption;
@@ -1,11 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.videoCodecOption = void 0;
4
- const jsx_runtime_1 = require("react/jsx-runtime");
5
- exports.videoCodecOption = {
6
- name: 'Codec',
7
- cliFlag: '--codec',
8
- description: ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: "Remotion supports 5 video codecs: h264 (default), h265, vp8, vp9 and prores. While H264 will work well in most cases, sometimes it's worth going for a different codec. Follow the link below for an overview." })),
9
- ssrName: 'codec',
10
- docLink: 'https://www.remotion.dev/docs/encoding/#choosing-a-codec',
11
- };