@remotion/cli 4.0.423 → 4.0.425

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 (73) hide show
  1. package/dist/add.d.ts +1 -2
  2. package/dist/benchmark.d.ts +1 -2
  3. package/dist/benchmark.js +23 -2
  4. package/dist/browser/ensure.d.ts +1 -2
  5. package/dist/browser/ensure.js +5 -6
  6. package/dist/browser/index.d.ts +1 -2
  7. package/dist/browser-download-bar.d.ts +2 -2
  8. package/dist/bundle.d.ts +1 -2
  9. package/dist/chalk/index.js +1 -1
  10. package/dist/check-for-npm-run-flag-pass.d.ts +1 -2
  11. package/dist/cleanup-before-quit.d.ts +2 -3
  12. package/dist/cloudrun-command.d.ts +1 -2
  13. package/dist/code-frame.d.ts +2 -2
  14. package/dist/compositions.d.ts +1 -2
  15. package/dist/compositions.js +12 -2
  16. package/dist/config/image-format.d.ts +4 -5
  17. package/dist/config/index.d.ts +9 -12
  18. package/dist/config/index.js +15 -38
  19. package/dist/config/pixel-format.d.ts +2 -3
  20. package/dist/config/prores-profile.d.ts +2 -3
  21. package/dist/determine-image-format.d.ts +4 -6
  22. package/dist/determine-image-format.js +10 -17
  23. package/dist/entry-point.d.ts +1 -2
  24. package/dist/extra-packages.js +1 -1
  25. package/dist/ffmpeg.d.ts +6 -7
  26. package/dist/get-cli-options.d.ts +5 -12
  27. package/dist/get-cli-options.js +19 -22
  28. package/dist/get-composition-id.d.ts +3 -3
  29. package/dist/get-composition-with-dimension-override.d.ts +7 -5
  30. package/dist/get-composition-with-dimension-override.js +3 -1
  31. package/dist/get-env.d.ts +1 -2
  32. package/dist/get-filename.d.ts +1 -2
  33. package/dist/get-github-repository.d.ts +2 -3
  34. package/dist/get-input-props.d.ts +1 -2
  35. package/dist/get-render-defaults.js +22 -10
  36. package/dist/gpu.d.ts +1 -2
  37. package/dist/gpu.js +11 -7
  38. package/dist/image-formats.d.ts +3 -5
  39. package/dist/image-formats.js +6 -11
  40. package/dist/index.d.ts +32 -37
  41. package/dist/initialize-cli.d.ts +1 -2
  42. package/dist/lambda-command.d.ts +1 -2
  43. package/dist/log.js +1 -1
  44. package/dist/make-on-download.d.ts +2 -2
  45. package/dist/parse-command-line.d.ts +237 -15
  46. package/dist/parse-command-line.js +1 -49
  47. package/dist/parsed-cli.js +2 -2
  48. package/dist/print-compositions.d.ts +1 -2
  49. package/dist/print-error.d.ts +1 -2
  50. package/dist/print-help.d.ts +1 -2
  51. package/dist/progress-bar.d.ts +4 -4
  52. package/dist/render-flows/add-log-to-aggregate-progress.d.ts +3 -5
  53. package/dist/render-flows/render.d.ts +16 -16
  54. package/dist/render-flows/render.js +5 -1
  55. package/dist/render-flows/still.d.ts +8 -6
  56. package/dist/render-flows/still.js +7 -5
  57. package/dist/render-queue/process-still.js +7 -8
  58. package/dist/render-queue/process-video.d.ts +1 -2
  59. package/dist/render-queue/process-video.js +8 -3
  60. package/dist/render-queue/queue.d.ts +1 -2
  61. package/dist/render.d.ts +1 -2
  62. package/dist/render.js +23 -2
  63. package/dist/setup-cache.d.ts +2 -3
  64. package/dist/should-use-non-overlaying-logger.d.ts +1 -2
  65. package/dist/show-compositions-picker.d.ts +2 -5
  66. package/dist/skills.d.ts +2 -3
  67. package/dist/still.d.ts +1 -2
  68. package/dist/still.js +15 -3
  69. package/dist/studio.d.ts +1 -2
  70. package/dist/upgrade.d.ts +1 -2
  71. package/dist/versions.d.ts +2 -3
  72. package/package.json +19 -18
  73. package/remotion-cli.js +1 -1
@@ -62,7 +62,7 @@ const should_use_non_overlaying_logger_1 = require("../should-use-non-overlaying
62
62
  const truthy_1 = require("../truthy");
63
63
  const user_passed_output_location_1 = require("../user-passed-output-location");
64
64
  const add_log_to_aggregate_progress_1 = require("./add-log-to-aggregate-progress");
65
- const renderVideoFlow = async ({ remotionRoot, fullEntryPoint, indent, logLevel, browserExecutable, browser, chromiumOptions, scale, shouldOutputImageSequence, publicDir, envVariables, puppeteerTimeout, port, height, width, remainingArgs, compositionIdFromUi, entryPointReason, overwrite, quiet, concurrency, frameRange, everyNthFrame, outputLocationFromUI, jpegQuality, onProgress, addCleanupCallback, cancelSignal, crf, uiCodec, uiImageFormat, ffmpegOverride, audioBitrate, muted, enforceAudioTrack, proResProfile, x264Preset, pixelFormat, videoBitrate, encodingMaxRate, encodingBufferSize, numberOfGifLoops, audioCodec, serializedInputPropsWithCustomSchema, disallowParallelEncoding, offthreadVideoCacheSizeInBytes, offthreadVideoThreads, colorSpace, repro, binariesDirectory, forSeamlessAacConcatenation, separateAudioTo, publicPath, metadata, hardwareAcceleration, chromeMode, audioLatencyHint, imageSequencePattern, mediaCacheSizeInBytes, askAIEnabled, experimentalClientSideRenderingEnabled, keyboardShortcutsEnabled, }) => {
65
+ const renderVideoFlow = async ({ remotionRoot, fullEntryPoint, indent, logLevel, browserExecutable, browser, chromiumOptions, scale, shouldOutputImageSequence, publicDir, envVariables, puppeteerTimeout, port, height, width, fps, durationInFrames, remainingArgs, compositionIdFromUi, entryPointReason, overwrite, quiet, concurrency, frameRange, everyNthFrame, outputLocationFromUI, jpegQuality, onProgress, addCleanupCallback, cancelSignal, crf, uiCodec, uiImageFormat, ffmpegOverride, audioBitrate, muted, enforceAudioTrack, proResProfile, x264Preset, pixelFormat, videoBitrate, encodingMaxRate, encodingBufferSize, numberOfGifLoops, audioCodec, serializedInputPropsWithCustomSchema, disallowParallelEncoding, offthreadVideoCacheSizeInBytes, offthreadVideoThreads, colorSpace, repro, binariesDirectory, forSeamlessAacConcatenation, separateAudioTo, publicPath, metadata, hardwareAcceleration, chromeMode, audioLatencyHint, imageSequencePattern, mediaCacheSizeInBytes, askAIEnabled, experimentalClientSideRenderingEnabled, keyboardShortcutsEnabled, }) => {
66
66
  var _a;
67
67
  let bundlingProgress = null;
68
68
  let renderingProgress = null;
@@ -213,6 +213,8 @@ const renderVideoFlow = async ({ remotionRoot, fullEntryPoint, indent, logLevel,
213
213
  const { compositionId, config, reason, argsAfterComposition } = await (0, get_composition_with_dimension_override_1.getCompositionWithDimensionOverride)({
214
214
  height,
215
215
  width,
216
+ fps,
217
+ durationInFrames,
216
218
  args: remainingArgs,
217
219
  compositionIdFromUi,
218
220
  browserExecutable,
@@ -427,6 +429,8 @@ const renderVideoFlow = async ({ remotionRoot, fullEntryPoint, indent, logLevel,
427
429
  ...config,
428
430
  width: width !== null && width !== void 0 ? width : config.width,
429
431
  height: height !== null && height !== void 0 ? height : config.height,
432
+ fps: fps !== null && fps !== void 0 ? fps : config.fps,
433
+ durationInFrames: durationInFrames !== null && durationInFrames !== void 0 ? durationInFrames : config.durationInFrames,
430
434
  },
431
435
  crf: crf !== null && crf !== void 0 ? crf : null,
432
436
  envVariables,
@@ -1,6 +1,6 @@
1
- import type { Browser, BrowserExecutable, CancelSignal, ChromeMode, ChromiumOptions, LogLevel, StillImageFormat } from '@remotion/renderer';
1
+ import type { BrowserExecutable, CancelSignal, ChromiumOptions } from '@remotion/renderer';
2
2
  import type { JobProgressCallback } from '@remotion/studio-server';
3
- export declare const renderStillFlow: ({ remotionRoot, fullEntryPoint, entryPointReason, remainingArgs, browser, browserExecutable, chromiumOptions, envVariables, height, serializedInputPropsWithCustomSchema, overwrite, port, publicDir, puppeteerTimeout, jpegQuality, scale, stillFrame, width, compositionIdFromUi, imageFormatFromUi, logLevel, onProgress, indent, addCleanupCallback, cancelSignal, outputLocationFromUi, offthreadVideoCacheSizeInBytes, binariesDirectory, publicPath, chromeMode, offthreadVideoThreads, audioLatencyHint, mediaCacheSizeInBytes, askAIEnabled, experimentalClientSideRenderingEnabled, keyboardShortcutsEnabled, }: {
3
+ export declare const renderStillFlow: ({ remotionRoot, fullEntryPoint, entryPointReason, remainingArgs, browser, browserExecutable, chromiumOptions, envVariables, height, width, fps, durationInFrames, serializedInputPropsWithCustomSchema, overwrite, port, publicDir, puppeteerTimeout, jpegQuality, scale, stillFrame, compositionIdFromUi, imageFormatFromUi, logLevel, onProgress, indent, addCleanupCallback, cancelSignal, outputLocationFromUi, offthreadVideoCacheSizeInBytes, binariesDirectory, publicPath, chromeMode, offthreadVideoThreads, audioLatencyHint, mediaCacheSizeInBytes, askAIEnabled, experimentalClientSideRenderingEnabled, keyboardShortcutsEnabled, }: {
4
4
  remotionRoot: string;
5
5
  fullEntryPoint: string;
6
6
  entryPointReason: string;
@@ -8,7 +8,7 @@ export declare const renderStillFlow: ({ remotionRoot, fullEntryPoint, entryPoin
8
8
  serializedInputPropsWithCustomSchema: string;
9
9
  envVariables: Record<string, string>;
10
10
  jpegQuality: number;
11
- browser: Browser;
11
+ browser: "chrome";
12
12
  stillFrame: number;
13
13
  browserExecutable: BrowserExecutable;
14
14
  chromiumOptions: ChromiumOptions;
@@ -19,9 +19,11 @@ export declare const renderStillFlow: ({ remotionRoot, fullEntryPoint, entryPoin
19
19
  publicDir: string | null;
20
20
  height: number | null;
21
21
  width: number | null;
22
+ fps: number | null;
23
+ durationInFrames: number | null;
22
24
  compositionIdFromUi: string | null;
23
- imageFormatFromUi: StillImageFormat | null;
24
- logLevel: LogLevel;
25
+ imageFormatFromUi: "jpeg" | "pdf" | "png" | "webp" | null;
26
+ logLevel: "error" | "info" | "trace" | "verbose" | "warn";
25
27
  onProgress: JobProgressCallback;
26
28
  indent: boolean;
27
29
  addCleanupCallback: (label: string, cb: () => void) => void;
@@ -31,7 +33,7 @@ export declare const renderStillFlow: ({ remotionRoot, fullEntryPoint, entryPoin
31
33
  offthreadVideoThreads: number | null;
32
34
  binariesDirectory: string | null;
33
35
  publicPath: string | null;
34
- chromeMode: ChromeMode;
36
+ chromeMode: "chrome-for-testing" | "headless-shell";
35
37
  audioLatencyHint: AudioContextLatencyCategory | null;
36
38
  mediaCacheSizeInBytes: number | null;
37
39
  askAIEnabled: boolean;
@@ -6,13 +6,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
7
  exports.renderStillFlow = void 0;
8
8
  const renderer_1 = require("@remotion/renderer");
9
+ const client_1 = require("@remotion/renderer/client");
9
10
  const node_fs_1 = require("node:fs");
10
11
  const node_path_1 = __importDefault(require("node:path"));
11
12
  const no_react_1 = require("remotion/no-react");
12
13
  const browser_download_bar_1 = require("../browser-download-bar");
13
14
  const chalk_1 = require("../chalk");
14
15
  const cleanup_before_quit_1 = require("../cleanup-before-quit");
15
- const config_1 = require("../config");
16
16
  const determine_image_format_1 = require("../determine-image-format");
17
17
  const get_cli_options_1 = require("../get-cli-options");
18
18
  const get_composition_with_dimension_override_1 = require("../get-composition-with-dimension-override");
@@ -28,8 +28,7 @@ const should_use_non_overlaying_logger_1 = require("../should-use-non-overlaying
28
28
  const truthy_1 = require("../truthy");
29
29
  const user_passed_output_location_1 = require("../user-passed-output-location");
30
30
  const add_log_to_aggregate_progress_1 = require("./add-log-to-aggregate-progress");
31
- const renderStillFlow = async ({ remotionRoot, fullEntryPoint, entryPointReason, remainingArgs, browser, browserExecutable, chromiumOptions, envVariables, height, serializedInputPropsWithCustomSchema, overwrite, port, publicDir, puppeteerTimeout, jpegQuality, scale, stillFrame, width, compositionIdFromUi, imageFormatFromUi, logLevel, onProgress, indent, addCleanupCallback, cancelSignal, outputLocationFromUi, offthreadVideoCacheSizeInBytes, binariesDirectory, publicPath, chromeMode, offthreadVideoThreads, audioLatencyHint, mediaCacheSizeInBytes, askAIEnabled, experimentalClientSideRenderingEnabled, keyboardShortcutsEnabled, }) => {
32
- var _a, _b;
31
+ const renderStillFlow = async ({ remotionRoot, fullEntryPoint, entryPointReason, remainingArgs, browser, browserExecutable, chromiumOptions, envVariables, height, width, fps, durationInFrames, serializedInputPropsWithCustomSchema, overwrite, port, publicDir, puppeteerTimeout, jpegQuality, scale, stillFrame, compositionIdFromUi, imageFormatFromUi, logLevel, onProgress, indent, addCleanupCallback, cancelSignal, outputLocationFromUi, offthreadVideoCacheSizeInBytes, binariesDirectory, publicPath, chromeMode, offthreadVideoThreads, audioLatencyHint, mediaCacheSizeInBytes, askAIEnabled, experimentalClientSideRenderingEnabled, keyboardShortcutsEnabled, }) => {
33
32
  const isVerbose = renderer_1.RenderInternals.isEqualOrBelowLogLevel(logLevel, 'verbose');
34
33
  log_1.Log.verbose({ indent, logLevel }, chalk_1.chalk.gray(`Entry point = ${fullEntryPoint} (${entryPointReason})`));
35
34
  const aggregate = (0, progress_types_1.initialAggregateRenderProgress)();
@@ -132,6 +131,8 @@ const renderStillFlow = async ({ remotionRoot, fullEntryPoint, entryPointReason,
132
131
  const { compositionId, config, reason, argsAfterComposition } = await (0, get_composition_with_dimension_override_1.getCompositionWithDimensionOverride)({
133
132
  height,
134
133
  width,
134
+ fps,
135
+ durationInFrames,
135
136
  args: remainingArgs,
136
137
  compositionIdFromUi,
137
138
  browserExecutable,
@@ -153,8 +154,9 @@ const renderStillFlow = async ({ remotionRoot, fullEntryPoint, entryPointReason,
153
154
  mediaCacheSizeInBytes,
154
155
  });
155
156
  const { format: imageFormat, source } = (0, determine_image_format_1.determineFinalStillImageFormat)({
156
- cliFlag: (_a = parsed_cli_1.parsedCli['image-format']) !== null && _a !== void 0 ? _a : null,
157
- configImageFormat: (_b = config_1.ConfigInternals.getUserPreferredStillImageFormat()) !== null && _b !== void 0 ? _b : null,
157
+ configuredImageFormat: client_1.BrowserSafeApis.options.stillImageFormatOption.getValue({
158
+ commandLine: parsed_cli_1.parsedCli,
159
+ }).value,
158
160
  downloadName: null,
159
161
  outName: (0, user_passed_output_location_1.getUserPassedOutputLocation)(argsAfterComposition, outputLocationFromUi),
160
162
  isLambda: false,
@@ -4,19 +4,16 @@ exports.processStill = void 0;
4
4
  const client_1 = require("@remotion/renderer/client");
5
5
  const preview_server_1 = require("../config/preview-server");
6
6
  const convert_entry_point_to_serve_url_1 = require("../convert-entry-point-to-serve-url");
7
- const get_cli_options_1 = require("../get-cli-options");
8
7
  const parsed_cli_1 = require("../parsed-cli");
9
8
  const still_1 = require("../render-flows/still");
10
- const { publicDirOption, askAIOption, experimentalClientSideRenderingOption, keyboardShortcutsOption, } = client_1.BrowserSafeApis.options;
9
+ const { publicDirOption, askAIOption, experimentalClientSideRenderingOption, keyboardShortcutsOption, browserExecutableOption, } = client_1.BrowserSafeApis.options;
11
10
  const processStill = async ({ job, remotionRoot, entryPoint, onProgress, addCleanupCallback, }) => {
12
11
  if (job.type !== 'still') {
13
12
  throw new Error('Expected still job');
14
13
  }
15
- const { browserExecutable } = (0, get_cli_options_1.getCliOptions)({
16
- isStill: true,
17
- logLevel: job.logLevel,
18
- indent: true,
19
- });
14
+ const browserExecutable = browserExecutableOption.getValue({
15
+ commandLine: parsed_cli_1.parsedCli,
16
+ }).value;
20
17
  const publicDir = publicDirOption.getValue({
21
18
  commandLine: parsed_cli_1.parsedCli,
22
19
  }).value;
@@ -36,6 +33,9 @@ const processStill = async ({ job, remotionRoot, entryPoint, onProgress, addClea
36
33
  entryPointReason: 'same as Studio',
37
34
  envVariables: job.envVariables,
38
35
  height: null,
36
+ width: null,
37
+ fps: null,
38
+ durationInFrames: null,
39
39
  fullEntryPoint,
40
40
  serializedInputPropsWithCustomSchema: job.serializedInputPropsWithCustomSchema,
41
41
  overwrite: true,
@@ -46,7 +46,6 @@ const processStill = async ({ job, remotionRoot, entryPoint, onProgress, addClea
46
46
  remainingArgs: [],
47
47
  scale: job.scale,
48
48
  stillFrame: job.frame,
49
- width: null,
50
49
  compositionIdFromUi: job.compositionId,
51
50
  imageFormatFromUi: job.imageFormat,
52
51
  logLevel: job.logLevel,
@@ -1,4 +1,3 @@
1
- import type { LogLevel } from '@remotion/renderer';
2
1
  import type { JobProgressCallback, RenderJob } from '@remotion/studio-server';
3
2
  export declare const processVideoJob: ({ job, remotionRoot, entryPoint, onProgress, addCleanupCallback, logLevel, }: {
4
3
  job: RenderJob;
@@ -6,5 +5,5 @@ export declare const processVideoJob: ({ job, remotionRoot, entryPoint, onProgre
6
5
  entryPoint: string;
7
6
  onProgress: JobProgressCallback;
8
7
  addCleanupCallback: (label: string, cb: () => void) => void;
9
- logLevel: LogLevel;
8
+ logLevel: "error" | "info" | "trace" | "verbose" | "warn";
10
9
  }) => Promise<void>;
@@ -7,7 +7,7 @@ const convert_entry_point_to_serve_url_1 = require("../convert-entry-point-to-se
7
7
  const get_cli_options_1 = require("../get-cli-options");
8
8
  const parsed_cli_1 = require("../parsed-cli");
9
9
  const render_1 = require("../render-flows/render");
10
- const { publicDirOption, askAIOption, experimentalClientSideRenderingOption, keyboardShortcutsOption, } = client_1.BrowserSafeApis.options;
10
+ const { publicDirOption, askAIOption, experimentalClientSideRenderingOption, keyboardShortcutsOption, browserExecutableOption, } = client_1.BrowserSafeApis.options;
11
11
  const processVideoJob = async ({ job, remotionRoot, entryPoint, onProgress, addCleanupCallback, logLevel, }) => {
12
12
  var _a, _b, _c;
13
13
  if (job.type !== 'video' && job.type !== 'sequence') {
@@ -20,11 +20,14 @@ const processVideoJob = async ({ job, remotionRoot, entryPoint, onProgress, addC
20
20
  const keyboardShortcutsEnabled = keyboardShortcutsOption.getValue({
21
21
  commandLine: parsed_cli_1.parsedCli,
22
22
  }).value;
23
- const { browserExecutable, ffmpegOverride } = (0, get_cli_options_1.getCliOptions)({
23
+ const { ffmpegOverride } = (0, get_cli_options_1.getCliOptions)({
24
24
  isStill: true,
25
25
  logLevel,
26
26
  indent: true,
27
27
  });
28
+ const browserExecutable = browserExecutableOption.getValue({
29
+ commandLine: parsed_cli_1.parsedCli,
30
+ }).value;
28
31
  const fullEntryPoint = (0, convert_entry_point_to_serve_url_1.convertEntryPointToServeUrl)(entryPoint);
29
32
  await (0, render_1.renderVideoFlow)({
30
33
  remotionRoot,
@@ -34,6 +37,9 @@ const processVideoJob = async ({ job, remotionRoot, entryPoint, onProgress, addC
34
37
  entryPointReason: 'same as Studio',
35
38
  envVariables: job.envVariables,
36
39
  height: null,
40
+ width: null,
41
+ fps: null,
42
+ durationInFrames: null,
37
43
  fullEntryPoint,
38
44
  serializedInputPropsWithCustomSchema: job.serializedInputPropsWithCustomSchema,
39
45
  overwrite: true,
@@ -43,7 +49,6 @@ const processVideoJob = async ({ job, remotionRoot, entryPoint, onProgress, addC
43
49
  jpegQuality: (_a = job.jpegQuality) !== null && _a !== void 0 ? _a : undefined,
44
50
  remainingArgs: [],
45
51
  scale: job.scale,
46
- width: null,
47
52
  compositionIdFromUi: job.compositionId,
48
53
  logLevel: job.logLevel,
49
54
  onProgress,
@@ -1,11 +1,10 @@
1
- import type { LogLevel } from '@remotion/renderer';
2
1
  import type { RenderJob, RenderJobWithCleanup } from '@remotion/studio-server';
3
2
  export declare const getRenderQueue: () => RenderJob[];
4
3
  export declare const addJob: ({ job, entryPoint, remotionRoot, logLevel, }: {
5
4
  job: RenderJobWithCleanup;
6
5
  entryPoint: string;
7
6
  remotionRoot: string;
8
- logLevel: LogLevel;
7
+ logLevel: "error" | "info" | "trace" | "verbose" | "warn";
9
8
  }) => void;
10
9
  export declare const removeJob: (jobId: string) => void;
11
10
  export declare const cancelJob: (jobId: string) => void;
package/dist/render.d.ts CHANGED
@@ -1,2 +1 @@
1
- import type { LogLevel } from '@remotion/renderer';
2
- export declare const render: (remotionRoot: string, args: (string | number)[], logLevel: LogLevel) => Promise<void>;
1
+ export declare const render: (remotionRoot: string, args: (string | number)[], logLevel: "error" | "info" | "trace" | "verbose" | "warn") => Promise<void>;
package/dist/render.js CHANGED
@@ -11,7 +11,7 @@ const get_cli_options_1 = require("./get-cli-options");
11
11
  const log_1 = require("./log");
12
12
  const parsed_cli_1 = require("./parsed-cli");
13
13
  const render_1 = require("./render-flows/render");
14
- const { x264Option, audioBitrateOption, offthreadVideoCacheSizeInBytesOption, scaleOption, crfOption, jpegQualityOption, videoBitrateOption, enforceAudioOption, mutedOption, colorSpaceOption, disallowParallelEncodingOption, enableMultiprocessOnLinuxOption, glOption, numberOfGifLoopsOption, encodingMaxRateOption, encodingBufferSizeOption, reproOption, delayRenderTimeoutInMillisecondsOption, headlessOption, overwriteOption, binariesDirectoryOption, forSeamlessAacConcatenationOption, separateAudioOption, audioCodecOption, publicPathOption, publicDirOption, metadataOption, hardwareAccelerationOption, chromeModeOption, offthreadVideoThreadsOption, audioLatencyHintOption, imageSequencePatternOption, mediaCacheSizeInBytesOption, darkModeOption, askAIOption, experimentalClientSideRenderingOption, keyboardShortcutsOption, } = client_1.BrowserSafeApis.options;
14
+ const { x264Option, audioBitrateOption, offthreadVideoCacheSizeInBytesOption, scaleOption, crfOption, jpegQualityOption, videoBitrateOption, enforceAudioOption, mutedOption, colorSpaceOption, disallowParallelEncodingOption, enableMultiprocessOnLinuxOption, glOption, numberOfGifLoopsOption, encodingMaxRateOption, encodingBufferSizeOption, reproOption, delayRenderTimeoutInMillisecondsOption, headlessOption, overwriteOption, binariesDirectoryOption, forSeamlessAacConcatenationOption, separateAudioOption, audioCodecOption, publicPathOption, publicDirOption, metadataOption, hardwareAccelerationOption, chromeModeOption, offthreadVideoThreadsOption, audioLatencyHintOption, imageSequencePatternOption, mediaCacheSizeInBytesOption, darkModeOption, askAIOption, experimentalClientSideRenderingOption, keyboardShortcutsOption, pixelFormatOption, browserExecutableOption, everyNthFrameOption, proResProfileOption, userAgentOption, disableWebSecurityOption, ignoreCertificateErrorsOption, } = client_1.BrowserSafeApis.options;
15
15
  const render = async (remotionRoot, args, logLevel) => {
16
16
  const { file, remainingArgs, reason: entryPointReason, } = (0, entry_point_1.findEntryPoint)({ args, remotionRoot, logLevel, allowDirectory: true });
17
17
  if (!file) {
@@ -25,11 +25,30 @@ const render = async (remotionRoot, args, logLevel) => {
25
25
  log_1.Log.error({ indent: false, logLevel }, '--frame flag was passed to the `render` command. This flag only works with the `still` command. Did you mean `--frames`? See reference: https://www.remotion.dev/docs/cli/');
26
26
  process.exit(1);
27
27
  }
28
- const { concurrency, frameRange, shouldOutputImageSequence, inputProps, envVariables, browserExecutable, everyNthFrame, userAgent, disableWebSecurity, ignoreCertificateErrors, height, width, ffmpegOverride, proResProfile, pixelFormat, } = (0, get_cli_options_1.getCliOptions)({
28
+ const { concurrency, frameRange, shouldOutputImageSequence, inputProps, envVariables, height, width, fps, durationInFrames, ffmpegOverride, } = (0, get_cli_options_1.getCliOptions)({
29
29
  isStill: false,
30
30
  logLevel,
31
31
  indent: false,
32
32
  });
33
+ const pixelFormat = pixelFormatOption.getValue({
34
+ commandLine: parsed_cli_1.parsedCli,
35
+ }).value;
36
+ const browserExecutable = browserExecutableOption.getValue({
37
+ commandLine: parsed_cli_1.parsedCli,
38
+ }).value;
39
+ const everyNthFrame = everyNthFrameOption.getValue({
40
+ commandLine: parsed_cli_1.parsedCli,
41
+ }).value;
42
+ const proResProfile = proResProfileOption.getValue({
43
+ commandLine: parsed_cli_1.parsedCli,
44
+ }).value;
45
+ const userAgent = userAgentOption.getValue({ commandLine: parsed_cli_1.parsedCli }).value;
46
+ const disableWebSecurity = disableWebSecurityOption.getValue({
47
+ commandLine: parsed_cli_1.parsedCli,
48
+ }).value;
49
+ const ignoreCertificateErrors = ignoreCertificateErrorsOption.getValue({
50
+ commandLine: parsed_cli_1.parsedCli,
51
+ }).value;
33
52
  const x264Preset = x264Option.getValue({ commandLine: parsed_cli_1.parsedCli }).value;
34
53
  const audioBitrate = audioBitrateOption.getValue({
35
54
  commandLine: parsed_cli_1.parsedCli,
@@ -144,6 +163,8 @@ const render = async (remotionRoot, args, logLevel) => {
144
163
  port: (0, preview_server_1.getRendererPortFromConfigFileAndCliFlag)(),
145
164
  height,
146
165
  width,
166
+ fps,
167
+ durationInFrames,
147
168
  remainingArgs,
148
169
  compositionIdFromUi: null,
149
170
  entryPointReason,
@@ -1,4 +1,3 @@
1
- import type { LogLevel } from '@remotion/renderer';
2
1
  import type { BundlingState, CopyingState } from '@remotion/studio-server';
3
2
  import type { GitSource } from '@remotion/studio-shared';
4
3
  export declare const bundleOnCliOrTakeServeUrl: ({ fullPath, remotionRoot, publicDir, onProgress, indentOutput, logLevel, onDirectoryCreated, quietProgress, quietFlag, outDir, gitSource, bufferStateDelayInMilliseconds, maxTimelineTracks, publicPath, audioLatencyHint, experimentalClientSideRenderingEnabled, askAIEnabled, keyboardShortcutsEnabled, }: {
@@ -10,7 +9,7 @@ export declare const bundleOnCliOrTakeServeUrl: ({ fullPath, remotionRoot, publi
10
9
  copying: CopyingState;
11
10
  }) => void;
12
11
  indentOutput: boolean;
13
- logLevel: LogLevel;
12
+ logLevel: "error" | "info" | "trace" | "verbose" | "warn";
14
13
  onDirectoryCreated: (path: string) => void;
15
14
  quietProgress: boolean;
16
15
  quietFlag: boolean;
@@ -36,7 +35,7 @@ export declare const bundleOnCli: ({ fullPath, remotionRoot, publicDir, onProgre
36
35
  copying: CopyingState;
37
36
  }) => void;
38
37
  indent: boolean;
39
- logLevel: LogLevel;
38
+ logLevel: "error" | "info" | "trace" | "verbose" | "warn";
40
39
  onDirectoryCreated: (path: string) => void;
41
40
  quietProgress: boolean;
42
41
  quietFlag: boolean;
@@ -1,4 +1,3 @@
1
- import type { LogLevel } from '@remotion/renderer';
2
1
  export declare const shouldUseNonOverlayingLogger: ({ logLevel, }: {
3
- logLevel: LogLevel;
2
+ logLevel: "error" | "info" | "trace" | "verbose" | "warn";
4
3
  }) => boolean;
@@ -1,8 +1,5 @@
1
- import type { getCompositions, LogLevel } from '@remotion/renderer';
2
- type Await<T> = T extends PromiseLike<infer U> ? U : T;
3
- export declare const showSingleCompositionsPicker: (validCompositions: Await<ReturnType<typeof getCompositions>>, logLevel: LogLevel) => Promise<{
1
+ export declare const showSingleCompositionsPicker: (validCompositions: import("remotion").VideoConfig[], logLevel: "error" | "info" | "trace" | "verbose" | "warn") => Promise<{
4
2
  compositionId: string;
5
3
  reason: string;
6
4
  }>;
7
- export declare const showMultiCompositionsPicker: (validCompositions: Await<ReturnType<typeof getCompositions>>, logLevel: LogLevel) => Promise<string[]>;
8
- export {};
5
+ export declare const showMultiCompositionsPicker: (validCompositions: import("remotion").VideoConfig[], logLevel: "error" | "info" | "trace" | "verbose" | "warn") => Promise<string[]>;
package/dist/skills.d.ts CHANGED
@@ -1,3 +1,2 @@
1
- import type { LogLevel } from '@remotion/renderer';
2
- export declare const printSkillsHelp: (logLevel: LogLevel) => void;
3
- export declare const skillsCommand: (args: string[], logLevel: LogLevel) => Promise<void> | undefined;
1
+ export declare const printSkillsHelp: (logLevel: "error" | "info" | "trace" | "verbose" | "warn") => void;
2
+ export declare const skillsCommand: (args: string[], logLevel: "error" | "info" | "trace" | "verbose" | "warn") => Promise<void> | undefined;
package/dist/still.d.ts CHANGED
@@ -1,2 +1 @@
1
- import type { LogLevel } from '@remotion/renderer';
2
- export declare const still: (remotionRoot: string, args: string[], logLevel: LogLevel) => Promise<void>;
1
+ export declare const still: (remotionRoot: string, args: string[], logLevel: "error" | "info" | "trace" | "verbose" | "warn") => Promise<void>;
package/dist/still.js CHANGED
@@ -11,7 +11,7 @@ const get_cli_options_1 = require("./get-cli-options");
11
11
  const log_1 = require("./log");
12
12
  const parsed_cli_1 = require("./parsed-cli");
13
13
  const still_1 = require("./render-flows/still");
14
- const { offthreadVideoCacheSizeInBytesOption, scaleOption, jpegQualityOption, enableMultiprocessOnLinuxOption, glOption, delayRenderTimeoutInMillisecondsOption, headlessOption, overwriteOption, binariesDirectoryOption, publicPathOption, publicDirOption, chromeModeOption, offthreadVideoThreadsOption, audioLatencyHintOption, mediaCacheSizeInBytesOption, darkModeOption, askAIOption, experimentalClientSideRenderingOption, keyboardShortcutsOption, } = client_1.BrowserSafeApis.options;
14
+ const { offthreadVideoCacheSizeInBytesOption, scaleOption, jpegQualityOption, enableMultiprocessOnLinuxOption, glOption, delayRenderTimeoutInMillisecondsOption, headlessOption, overwriteOption, binariesDirectoryOption, publicPathOption, publicDirOption, chromeModeOption, offthreadVideoThreadsOption, audioLatencyHintOption, mediaCacheSizeInBytesOption, darkModeOption, askAIOption, experimentalClientSideRenderingOption, keyboardShortcutsOption, browserExecutableOption, userAgentOption, disableWebSecurityOption, ignoreCertificateErrorsOption, } = client_1.BrowserSafeApis.options;
15
15
  const still = async (remotionRoot, args, logLevel) => {
16
16
  const { file, remainingArgs, reason: entryPointReason, } = (0, entry_point_1.findEntryPoint)({ args, remotionRoot, logLevel, allowDirectory: true });
17
17
  if (!file) {
@@ -25,11 +25,21 @@ const still = async (remotionRoot, args, logLevel) => {
25
25
  log_1.Log.error({ indent: false, logLevel }, '--frames flag was passed to the `still` command. This flag only works with the `render` command. Did you mean `--frame`? See reference: https://www.remotion.dev/docs/cli/');
26
26
  process.exit(1);
27
27
  }
28
- const { browserExecutable, envVariables, height, inputProps, stillFrame, width, disableWebSecurity, ignoreCertificateErrors, userAgent, } = (0, get_cli_options_1.getCliOptions)({
28
+ const { envVariables, height, inputProps, stillFrame, width, fps, durationInFrames, } = (0, get_cli_options_1.getCliOptions)({
29
29
  isStill: true,
30
30
  logLevel,
31
31
  indent: false,
32
32
  });
33
+ const browserExecutable = browserExecutableOption.getValue({
34
+ commandLine: parsed_cli_1.parsedCli,
35
+ }).value;
36
+ const userAgent = userAgentOption.getValue({ commandLine: parsed_cli_1.parsedCli }).value;
37
+ const disableWebSecurity = disableWebSecurityOption.getValue({
38
+ commandLine: parsed_cli_1.parsedCli,
39
+ }).value;
40
+ const ignoreCertificateErrors = ignoreCertificateErrorsOption.getValue({
41
+ commandLine: parsed_cli_1.parsedCli,
42
+ }).value;
33
43
  const jpegQuality = jpegQualityOption.getValue({
34
44
  commandLine: parsed_cli_1.parsedCli,
35
45
  }).value;
@@ -95,6 +105,9 @@ const still = async (remotionRoot, args, logLevel) => {
95
105
  chromiumOptions,
96
106
  envVariables,
97
107
  height,
108
+ width,
109
+ fps,
110
+ durationInFrames,
98
111
  serializedInputPropsWithCustomSchema: no_react_1.NoReactInternals.serializeJSONWithSpecialTypes({
99
112
  data: inputProps,
100
113
  indent: undefined,
@@ -107,7 +120,6 @@ const still = async (remotionRoot, args, logLevel) => {
107
120
  jpegQuality,
108
121
  scale,
109
122
  stillFrame,
110
- width,
111
123
  compositionIdFromUi: null,
112
124
  imageFormatFromUi: null,
113
125
  logLevel,
package/dist/studio.d.ts CHANGED
@@ -1,2 +1 @@
1
- import type { LogLevel } from '@remotion/renderer';
2
- export declare const studioCommand: (remotionRoot: string, args: string[], logLevel: LogLevel) => Promise<void>;
1
+ export declare const studioCommand: (remotionRoot: string, args: string[], logLevel: "error" | "info" | "trace" | "verbose" | "warn") => Promise<void>;
package/dist/upgrade.d.ts CHANGED
@@ -1,8 +1,7 @@
1
- import { type LogLevel } from '@remotion/renderer';
2
1
  export declare const upgradeCommand: ({ remotionRoot, packageManager, version, logLevel, args, }: {
3
2
  remotionRoot: string;
4
3
  packageManager: string | undefined;
5
4
  version: string | undefined;
6
- logLevel: LogLevel;
5
+ logLevel: "error" | "info" | "trace" | "verbose" | "warn";
7
6
  args: string[];
8
7
  }) => Promise<void>;
@@ -1,8 +1,7 @@
1
- import type { LogLevel } from '@remotion/renderer';
2
1
  export type VersionAndPath = {
3
2
  version: string;
4
3
  path: string;
5
4
  };
6
5
  export declare const VERSIONS_COMMAND = "versions";
7
- export declare const validateVersionsBeforeCommand: (remotionRoot: string, logLevel: LogLevel) => Promise<void>;
8
- export declare const versionsCommand: (remotionRoot: string, logLevel: LogLevel) => Promise<void>;
6
+ export declare const validateVersionsBeforeCommand: (remotionRoot: string, logLevel: "error" | "info" | "trace" | "verbose" | "warn") => Promise<void>;
7
+ export declare const versionsCommand: (remotionRoot: string, logLevel: "error" | "info" | "trace" | "verbose" | "warn") => Promise<void>;
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "url": "https://github.com/remotion-dev/remotion/tree/main/packages/cli"
4
4
  },
5
5
  "name": "@remotion/cli",
6
- "version": "4.0.423",
6
+ "version": "4.0.425",
7
7
  "description": "Control Remotion features using the `npx remotion` command",
8
8
  "main": "dist/index.js",
9
9
  "sideEffects": false,
@@ -13,10 +13,10 @@
13
13
  "remotiond": "remotiond-cli.js"
14
14
  },
15
15
  "scripts": {
16
- "formatting": "prettier --experimental-cli src --check",
16
+ "formatting": "prettier src --check",
17
17
  "lint": "eslint src",
18
18
  "test": "bun test src",
19
- "make": "tsc -d"
19
+ "make": "tsgo -d"
20
20
  },
21
21
  "bugs": {
22
22
  "url": "https://github.com/remotion-dev/remotion/issues"
@@ -36,17 +36,17 @@
36
36
  "author": "Jonny Burger <jonny@remotion.dev>",
37
37
  "license": "SEE LICENSE IN LICENSE.md",
38
38
  "dependencies": {
39
- "@remotion/bundler": "4.0.423",
40
- "@remotion/media-utils": "4.0.423",
41
- "@remotion/player": "4.0.423",
42
- "@remotion/renderer": "4.0.423",
43
- "@remotion/studio-shared": "4.0.423",
44
- "@remotion/studio-server": "4.0.423",
45
- "@remotion/studio": "4.0.423",
46
- "dotenv": "9.0.2",
39
+ "@remotion/bundler": "4.0.425",
40
+ "@remotion/media-utils": "4.0.425",
41
+ "@remotion/player": "4.0.425",
42
+ "@remotion/renderer": "4.0.425",
43
+ "@remotion/studio-shared": "4.0.425",
44
+ "@remotion/studio-server": "4.0.425",
45
+ "@remotion/studio": "4.0.425",
46
+ "dotenv": "17.3.1",
47
47
  "minimist": "1.2.6",
48
48
  "prompts": "2.4.2",
49
- "remotion": "4.0.423"
49
+ "remotion": "4.0.425"
50
50
  },
51
51
  "peerDependencies": {
52
52
  "react": ">=16.8.0",
@@ -57,15 +57,16 @@
57
57
  "@types/prompts": "^2.4.1",
58
58
  "@types/prettier": "^2.7.2",
59
59
  "@types/node": "20.12.14",
60
- "@remotion/zod-types": "4.0.423",
61
- "@remotion/tailwind-v4": "4.0.423",
62
- "@remotion/enable-scss": "4.0.423",
63
- "@remotion/skia": "4.0.423",
60
+ "@remotion/zod-types": "4.0.425",
61
+ "@remotion/tailwind-v4": "4.0.425",
62
+ "@remotion/enable-scss": "4.0.425",
63
+ "@remotion/skia": "4.0.425",
64
64
  "react": "19.2.3",
65
65
  "react-dom": "19.2.3",
66
66
  "zod": "3.22.3",
67
- "@remotion/eslint-config-internal": "4.0.423",
68
- "eslint": "9.19.0"
67
+ "@remotion/eslint-config-internal": "4.0.425",
68
+ "eslint": "9.19.0",
69
+ "@typescript/native-preview": "7.0.0-dev.20260217.1"
69
70
  },
70
71
  "keywords": [
71
72
  "remotion",
package/remotion-cli.js CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  const dotenv = require('dotenv');
3
- dotenv.config();
3
+ dotenv.config({quiet: true});
4
4
  const {cli} = require('./dist/index');
5
5
 
6
6
  cli()