@remotion/cli 4.0.501 → 4.0.502
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.
- package/dist/benchmark.js +4 -1
- package/dist/config/index.d.ts +5 -1
- package/dist/config/index.js +1 -0
- package/dist/get-cli-options.d.ts +4 -2
- package/dist/get-cli-options.js +13 -4
- package/dist/index.d.ts +1 -0
- package/dist/list-of-remotion-packages.js +1 -1
- package/dist/parse-command-line.js +3 -0
- package/dist/parsed-cli.d.ts +20 -3
- package/dist/parsed-cli.js +3 -1
- package/dist/render-flows/render.d.ts +2 -1
- package/dist/render-flows/render.js +9 -3
- package/dist/render-queue/process-video.js +1 -0
- package/dist/render.js +5 -1
- package/dist/skills.js +1 -1
- package/dist/studio.js +1 -3
- package/package.json +14 -14
package/dist/benchmark.js
CHANGED
|
@@ -104,11 +104,14 @@ const benchmarkCommand = async (remotionRoot, args, logLevel) => {
|
|
|
104
104
|
process.exit(1);
|
|
105
105
|
}
|
|
106
106
|
const fullEntryPoint = (0, convert_entry_point_to_serve_url_1.convertEntryPointToServeUrl)(file);
|
|
107
|
-
const { inputProps, envVariables, frameRange: defaultFrameRange, ffmpegOverride, } = (0, get_cli_options_1.getCliOptions)({
|
|
107
|
+
const { inputProps, envVariables, frameRange: defaultFrameRange, selectedFrames, ffmpegOverride, } = (0, get_cli_options_1.getCliOptions)({
|
|
108
108
|
isStill: false,
|
|
109
109
|
logLevel,
|
|
110
110
|
indent: false,
|
|
111
111
|
});
|
|
112
|
+
if (selectedFrames !== null) {
|
|
113
|
+
throw new Error('Comma-separated frame selections are only supported by the `render` command.');
|
|
114
|
+
}
|
|
112
115
|
const unparsedConcurrency = concurrencyOption.getValue({
|
|
113
116
|
commandLine: parsed_cli_1.parsedCli,
|
|
114
117
|
}).value;
|
package/dist/config/index.d.ts
CHANGED
|
@@ -66,10 +66,14 @@ declare global {
|
|
|
66
66
|
*/
|
|
67
67
|
readonly setAllowHtmlInCanvasEnabled: (enabled: boolean) => void;
|
|
68
68
|
/**
|
|
69
|
-
* Enable
|
|
69
|
+
* Enable the Rspack bundler instead of Webpack.
|
|
70
70
|
* @param enabled Boolean whether to enable the Rspack bundler
|
|
71
71
|
* @default false
|
|
72
72
|
*/
|
|
73
|
+
readonly setRspack: (enabled: boolean) => void;
|
|
74
|
+
/**
|
|
75
|
+
* @deprecated Use `setRspack()` instead: https://www.remotion.dev/docs/config#setrspack
|
|
76
|
+
*/
|
|
73
77
|
readonly setExperimentalRspackEnabled: (enabled: boolean) => void;
|
|
74
78
|
/**
|
|
75
79
|
* Set number of shared audio tags. https://www.remotion.dev/docs/player/autoplay#using-the-numberofsharedaudiotags-prop
|
package/dist/config/index.js
CHANGED
|
@@ -45,6 +45,7 @@ exports.Config = {
|
|
|
45
45
|
setKeyboardShortcutsEnabled: keyboardShortcutsOption.setConfig,
|
|
46
46
|
setInteractivityEnabled: interactivityOption.setConfig,
|
|
47
47
|
setAllowHtmlInCanvasEnabled,
|
|
48
|
+
setRspack: rspackOption.setConfig,
|
|
48
49
|
setExperimentalRspackEnabled: rspackOption.setConfig,
|
|
49
50
|
setNumberOfSharedAudioTags: numberOfSharedAudioTagsOption.setConfig,
|
|
50
51
|
setWebpackPollingInMilliseconds: webpackPollOption.setConfig,
|
|
@@ -1,13 +1,15 @@
|
|
|
1
|
+
import type { FfmpegOverrideFn, FrameRange } from '@remotion/renderer';
|
|
1
2
|
export declare const getAndValidateAbsoluteOutputFile: (relativeOutputLocation: string, overwrite: boolean, logLevel: "error" | "info" | "trace" | "verbose" | "warn") => string;
|
|
2
3
|
export declare const getCliOptions: (options: {
|
|
3
4
|
isStill: boolean;
|
|
4
5
|
logLevel: "error" | "info" | "trace" | "verbose" | "warn";
|
|
5
6
|
indent: boolean;
|
|
6
7
|
}) => {
|
|
7
|
-
frameRange:
|
|
8
|
+
frameRange: FrameRange | null;
|
|
9
|
+
selectedFrames: number[] | null;
|
|
8
10
|
shouldOutputImageSequence: boolean;
|
|
9
11
|
inputProps: Record<string, unknown>;
|
|
10
12
|
envVariables: Record<string, string>;
|
|
11
13
|
stillFrame: number;
|
|
12
|
-
ffmpegOverride:
|
|
14
|
+
ffmpegOverride: FfmpegOverrideFn;
|
|
13
15
|
};
|
package/dist/get-cli-options.js
CHANGED
|
@@ -13,15 +13,21 @@ const get_input_props_1 = require("./get-input-props");
|
|
|
13
13
|
const log_1 = require("./log");
|
|
14
14
|
const parsed_cli_1 = require("./parsed-cli");
|
|
15
15
|
const getAndValidateFrameRange = (logLevel, indent) => {
|
|
16
|
-
const
|
|
16
|
+
const frameSelection = client_1.BrowserSafeApis.options.framesOption.getValue({
|
|
17
17
|
commandLine: parsed_cli_1.parsedCli,
|
|
18
18
|
}).value;
|
|
19
|
+
const selectedFrames = typeof frameSelection === 'object' &&
|
|
20
|
+
frameSelection !== null &&
|
|
21
|
+
!Array.isArray(frameSelection)
|
|
22
|
+
? frameSelection.frames
|
|
23
|
+
: null;
|
|
24
|
+
const frameRange = selectedFrames === null ? frameSelection : null;
|
|
19
25
|
if (typeof frameRange === 'number') {
|
|
20
26
|
log_1.Log.warn({ logLevel, indent }, 'Selected a single frame. Assuming you want to output an image.');
|
|
21
27
|
log_1.Log.warn({ logLevel, indent }, `If you want to render a video, pass a range: '--frames=${frameRange}-${frameRange}'.`);
|
|
22
28
|
log_1.Log.warn({ indent, logLevel }, "To dismiss this message, add the '--sequence' flag explicitly.");
|
|
23
29
|
}
|
|
24
|
-
return frameRange;
|
|
30
|
+
return { frameRange, selectedFrames };
|
|
25
31
|
};
|
|
26
32
|
const getAndValidateAbsoluteOutputFile = (relativeOutputLocation, overwrite, logLevel) => {
|
|
27
33
|
const absoluteOutputFile = node_path_1.default.resolve(process.cwd(), relativeOutputLocation);
|
|
@@ -34,15 +40,18 @@ const getAndValidateAbsoluteOutputFile = (relativeOutputLocation, overwrite, log
|
|
|
34
40
|
exports.getAndValidateAbsoluteOutputFile = getAndValidateAbsoluteOutputFile;
|
|
35
41
|
const getCliOptions = (options) => {
|
|
36
42
|
var _a;
|
|
37
|
-
const frameRange = getAndValidateFrameRange(options.logLevel, false);
|
|
43
|
+
const { frameRange, selectedFrames } = getAndValidateFrameRange(options.logLevel, false);
|
|
38
44
|
const imageSequence = client_1.BrowserSafeApis.options.imageSequenceOption.getValue({
|
|
39
45
|
commandLine: parsed_cli_1.parsedCli,
|
|
40
46
|
}).value;
|
|
41
47
|
const shouldOutputImageSequence = options.isStill
|
|
42
48
|
? true
|
|
43
|
-
: imageSequence ||
|
|
49
|
+
: imageSequence ||
|
|
50
|
+
typeof frameRange === 'number' ||
|
|
51
|
+
selectedFrames !== null;
|
|
44
52
|
return {
|
|
45
53
|
frameRange,
|
|
54
|
+
selectedFrames,
|
|
46
55
|
shouldOutputImageSequence,
|
|
47
56
|
inputProps: (0, get_input_props_1.getInputProps)(null, options.logLevel),
|
|
48
57
|
envVariables: (0, get_env_1.getEnvironmentVariables)(null, options.logLevel, options.indent),
|
package/dist/index.d.ts
CHANGED
|
@@ -82,6 +82,7 @@ export declare const CliInternals: {
|
|
|
82
82
|
indent: boolean;
|
|
83
83
|
}) => {
|
|
84
84
|
frameRange: import("@remotion/renderer").FrameRange | null;
|
|
85
|
+
selectedFrames: number[] | null;
|
|
85
86
|
shouldOutputImageSequence: boolean;
|
|
86
87
|
inputProps: Record<string, unknown>;
|
|
87
88
|
envVariables: Record<string, string>;
|
|
@@ -98,7 +98,7 @@ exports.listOfRemotionPackages = [
|
|
|
98
98
|
'@remotion/remotion-media',
|
|
99
99
|
'@remotion/web-renderer',
|
|
100
100
|
'@remotion/design',
|
|
101
|
-
'@remotion/
|
|
101
|
+
'@remotion/studio-protocol',
|
|
102
102
|
'@remotion/light-leaks',
|
|
103
103
|
'@remotion/rough-notation',
|
|
104
104
|
'@remotion/starburst',
|
|
@@ -6,6 +6,9 @@ const config_1 = require("./config");
|
|
|
6
6
|
const parsed_cli_1 = require("./parsed-cli");
|
|
7
7
|
const { licenseKeyOption } = client_1.BrowserSafeApis.options;
|
|
8
8
|
const parseCommandLine = () => {
|
|
9
|
+
if (parsed_cli_1.parsedCli['experimental-rspack'] !== undefined) {
|
|
10
|
+
throw new Error('The --experimental-rspack flag has been removed. Use --rspack from now on.');
|
|
11
|
+
}
|
|
9
12
|
if (parsed_cli_1.parsedCli.png) {
|
|
10
13
|
throw new Error('The --png flag has been removed. Use --sequence --image-format=png from now on.');
|
|
11
14
|
}
|
package/dist/parsed-cli.d.ts
CHANGED
|
@@ -983,14 +983,14 @@ declare const benchmarkConcurrenciesOption: {
|
|
|
983
983
|
description: () => import("react/jsx-runtime").JSX.Element;
|
|
984
984
|
ssrName: "frameRange";
|
|
985
985
|
docLink: string;
|
|
986
|
-
type: import("@remotion/renderer").
|
|
986
|
+
type: import("@remotion/renderer").FrameSelection;
|
|
987
987
|
getValue: ({ commandLine }: {
|
|
988
988
|
commandLine: Record<string, unknown>;
|
|
989
989
|
}) => {
|
|
990
990
|
source: string;
|
|
991
|
-
value: import("@remotion/renderer").
|
|
991
|
+
value: import("@remotion/renderer").FrameSelection;
|
|
992
992
|
};
|
|
993
|
-
setConfig: (value: import("@remotion/renderer").
|
|
993
|
+
setConfig: (value: import("@remotion/renderer").FrameSelection) => void;
|
|
994
994
|
id: "frames";
|
|
995
995
|
}, isProductionOption: {
|
|
996
996
|
name: string;
|
|
@@ -1131,6 +1131,21 @@ declare const benchmarkConcurrenciesOption: {
|
|
|
1131
1131
|
};
|
|
1132
1132
|
setConfig: (value: number | null) => void;
|
|
1133
1133
|
id: "preview-sample-rate";
|
|
1134
|
+
}, rspackOption: {
|
|
1135
|
+
name: string;
|
|
1136
|
+
cliFlag: "rspack";
|
|
1137
|
+
description: () => import("react/jsx-runtime").JSX.Element;
|
|
1138
|
+
ssrName: null;
|
|
1139
|
+
docLink: null;
|
|
1140
|
+
type: boolean;
|
|
1141
|
+
getValue: ({ commandLine }: {
|
|
1142
|
+
commandLine: Record<string, unknown>;
|
|
1143
|
+
}) => {
|
|
1144
|
+
value: boolean;
|
|
1145
|
+
source: string;
|
|
1146
|
+
};
|
|
1147
|
+
setConfig(value: boolean): void;
|
|
1148
|
+
id: "rspack";
|
|
1134
1149
|
};
|
|
1135
1150
|
export type CommandLineOptions = {
|
|
1136
1151
|
[browserExecutableOption.cliFlag]: TypeOfOption<typeof browserExecutableOption>;
|
|
@@ -1210,6 +1225,8 @@ export type CommandLineOptions = {
|
|
|
1210
1225
|
[forceNewStudioOption.cliFlag]: TypeOfOption<typeof forceNewStudioOption> | null;
|
|
1211
1226
|
[sampleRateOption.cliFlag]: TypeOfOption<typeof sampleRateOption>;
|
|
1212
1227
|
[previewSampleRateOption.cliFlag]: TypeOfOption<typeof previewSampleRateOption>;
|
|
1228
|
+
[rspackOption.cliFlag]: TypeOfOption<typeof rspackOption> | null;
|
|
1229
|
+
'experimental-rspack'?: unknown;
|
|
1213
1230
|
[isProductionOption.cliFlag]: TypeOfOption<typeof isProductionOption> | null;
|
|
1214
1231
|
};
|
|
1215
1232
|
export declare const BooleanFlags: string[];
|
package/dist/parsed-cli.js
CHANGED
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.quietFlagProvided = exports.parsedCli = exports.BooleanFlags = void 0;
|
|
7
7
|
const client_1 = require("@remotion/renderer/client");
|
|
8
8
|
const minimist_1 = __importDefault(require("minimist"));
|
|
9
|
-
const { benchmarkConcurrenciesOption, beepOnFinishOption, colorSpaceOption, concurrencyOption, disallowParallelEncodingOption, offthreadVideoCacheSizeInBytesOption, encodingBufferSizeOption, encodingMaxRateOption, deleteAfterOption, folderExpiryOption, enableMultiprocessOnLinuxOption, numberOfGifLoopsOption, x264Option, enforceAudioOption, jpegQualityOption, audioBitrateOption, videoBitrateOption, audioCodecOption, publicPathOption, audioLatencyHintOption, darkModeOption, publicLicenseKeyOption, forceNewStudioOption, numberOfSharedAudioTagsOption, ipv4Option, pixelFormatOption, browserExecutableOption, everyNthFrameOption, proResProfileOption, userAgentOption, disableWebSecurityOption, ignoreCertificateErrorsOption, overrideHeightOption, overrideWidthOption, overrideFpsOption, overrideDurationOption, outDirOption, packageManagerOption, webpackPollOption, keyboardShortcutsOption, interactivityOption, imageSequencePatternOption, scaleOption, overwriteOption, crfOption, logLevelOption, videoCodecOption, stillFrameOption, imageSequenceOption, versionFlagOption, bundleCacheOption, envFileOption, glOption, gopSizeOption, runsOption, reproOption, mutedOption, headlessOption, disableGitSourceOption, delayRenderTimeoutInMillisecondsOption, framesOption, forSeamlessAacConcatenationOption, isProductionOption, noOpenOption, portOption, propsOption, configOption, browserOption, sampleRateOption, previewSampleRateOption, } = client_1.BrowserSafeApis.options;
|
|
9
|
+
const { benchmarkConcurrenciesOption, beepOnFinishOption, colorSpaceOption, concurrencyOption, disallowParallelEncodingOption, offthreadVideoCacheSizeInBytesOption, encodingBufferSizeOption, encodingMaxRateOption, deleteAfterOption, folderExpiryOption, enableMultiprocessOnLinuxOption, numberOfGifLoopsOption, x264Option, enforceAudioOption, jpegQualityOption, audioBitrateOption, videoBitrateOption, audioCodecOption, publicPathOption, audioLatencyHintOption, darkModeOption, publicLicenseKeyOption, forceNewStudioOption, numberOfSharedAudioTagsOption, ipv4Option, pixelFormatOption, browserExecutableOption, everyNthFrameOption, proResProfileOption, userAgentOption, disableWebSecurityOption, ignoreCertificateErrorsOption, overrideHeightOption, overrideWidthOption, overrideFpsOption, overrideDurationOption, outDirOption, packageManagerOption, webpackPollOption, keyboardShortcutsOption, interactivityOption, imageSequencePatternOption, scaleOption, overwriteOption, crfOption, logLevelOption, videoCodecOption, stillFrameOption, imageSequenceOption, versionFlagOption, bundleCacheOption, envFileOption, glOption, gopSizeOption, runsOption, reproOption, mutedOption, headlessOption, disableGitSourceOption, delayRenderTimeoutInMillisecondsOption, framesOption, forSeamlessAacConcatenationOption, isProductionOption, noOpenOption, portOption, propsOption, configOption, browserOption, sampleRateOption, previewSampleRateOption, rspackOption, } = client_1.BrowserSafeApis.options;
|
|
10
10
|
exports.BooleanFlags = [
|
|
11
11
|
overwriteOption.cliFlag,
|
|
12
12
|
imageSequenceOption.cliFlag,
|
|
@@ -30,6 +30,7 @@ exports.BooleanFlags = [
|
|
|
30
30
|
isProductionOption.cliFlag,
|
|
31
31
|
forceNewStudioOption.cliFlag,
|
|
32
32
|
bundleCacheOption.cliFlag,
|
|
33
|
+
rspackOption.cliFlag,
|
|
33
34
|
];
|
|
34
35
|
exports.parsedCli = (0, minimist_1.default)(process.argv.slice(2), {
|
|
35
36
|
boolean: exports.BooleanFlags,
|
|
@@ -50,6 +51,7 @@ exports.parsedCli = (0, minimist_1.default)(process.argv.slice(2), {
|
|
|
50
51
|
[isProductionOption.cliFlag]: null,
|
|
51
52
|
[forceNewStudioOption.cliFlag]: null,
|
|
52
53
|
[mutedOption.cliFlag]: null,
|
|
54
|
+
[rspackOption.cliFlag]: null,
|
|
53
55
|
},
|
|
54
56
|
});
|
|
55
57
|
const quietFlagProvided = () => exports.parsedCli.quiet || exports.parsedCli.q;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { BundlerOverrideFn, RspackOverrideFn, WebpackOverrideFn } from '@remotion/bundler';
|
|
2
2
|
import type { BrowserExecutable, CancelSignal, ChromiumOptions, Crf, FfmpegOverrideFn, FrameRange, NumberOfGifLoops } from '@remotion/renderer';
|
|
3
3
|
import type { JobProgressCallback } from '@remotion/studio-server';
|
|
4
|
-
export declare const renderVideoFlow: ({ 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, gopSize, 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, rspack, askAIEnabled, keyboardShortcutsEnabled, shouldCache, sampleRate, bundlerOverride, rspackOverride, webpackOverride, }: {
|
|
4
|
+
export declare const renderVideoFlow: ({ remotionRoot, fullEntryPoint, indent, logLevel, browserExecutable, browser, chromiumOptions, scale, shouldOutputImageSequence, publicDir, envVariables, puppeteerTimeout, port, height, width, fps, durationInFrames, remainingArgs, compositionIdFromUi, entryPointReason, overwrite, quiet, concurrency, frameRange, selectedFrames, everyNthFrame, outputLocationFromUI, jpegQuality, onProgress, addCleanupCallback, cancelSignal, crf, gopSize, 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, rspack, askAIEnabled, keyboardShortcutsEnabled, shouldCache, sampleRate, bundlerOverride, rspackOverride, webpackOverride, }: {
|
|
5
5
|
remotionRoot: string;
|
|
6
6
|
fullEntryPoint: string;
|
|
7
7
|
entryPointReason: string;
|
|
@@ -28,6 +28,7 @@ export declare const renderVideoFlow: ({ remotionRoot, fullEntryPoint, indent, l
|
|
|
28
28
|
quiet: boolean;
|
|
29
29
|
concurrency: string | number | null;
|
|
30
30
|
frameRange: FrameRange | null;
|
|
31
|
+
selectedFrames: number[] | null;
|
|
31
32
|
everyNthFrame: number;
|
|
32
33
|
jpegQuality: number | undefined;
|
|
33
34
|
onProgress: JobProgressCallback;
|
|
@@ -61,7 +61,7 @@ const should_use_non_overlaying_logger_1 = require("../should-use-non-overlaying
|
|
|
61
61
|
const truthy_1 = require("../truthy");
|
|
62
62
|
const user_passed_output_location_1 = require("../user-passed-output-location");
|
|
63
63
|
const add_log_to_aggregate_progress_1 = require("./add-log-to-aggregate-progress");
|
|
64
|
-
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, gopSize, 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, rspack, askAIEnabled, keyboardShortcutsEnabled, shouldCache, sampleRate, bundlerOverride, rspackOverride, webpackOverride, }) => {
|
|
64
|
+
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, selectedFrames, everyNthFrame, outputLocationFromUI, jpegQuality, onProgress, addCleanupCallback, cancelSignal, crf, gopSize, 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, rspack, askAIEnabled, keyboardShortcutsEnabled, shouldCache, sampleRate, bundlerOverride, rspackOverride, webpackOverride, }) => {
|
|
65
65
|
var _a;
|
|
66
66
|
renderer_1.RenderInternals.validateConcurrency({
|
|
67
67
|
value: concurrency,
|
|
@@ -326,8 +326,12 @@ const renderVideoFlow = async ({ remotionRoot, fullEntryPoint, indent, logLevel,
|
|
|
326
326
|
const audioExists = absoluteSeparateAudioTo
|
|
327
327
|
? (0, node_fs_1.existsSync)(absoluteSeparateAudioTo)
|
|
328
328
|
: false;
|
|
329
|
-
const
|
|
330
|
-
|
|
329
|
+
const totalFrames = selectedFrames
|
|
330
|
+
? renderer_1.RenderInternals.validateSelectedFrames({
|
|
331
|
+
frames: selectedFrames,
|
|
332
|
+
durationInFrames: config.durationInFrames,
|
|
333
|
+
})
|
|
334
|
+
: renderer_1.RenderInternals.getFramesToRender(renderer_1.RenderInternals.getRealFrameRanges(config.durationInFrames, frameRange), everyNthFrame);
|
|
331
335
|
renderingProgress = {
|
|
332
336
|
frames: 0,
|
|
333
337
|
totalFrames: totalFrames.length,
|
|
@@ -392,6 +396,8 @@ const renderVideoFlow = async ({ remotionRoot, fullEntryPoint, indent, logLevel,
|
|
|
392
396
|
everyNthFrame,
|
|
393
397
|
envVariables,
|
|
394
398
|
frameRange,
|
|
399
|
+
frames: selectedFrames,
|
|
400
|
+
outputFramesInSequence: false,
|
|
395
401
|
concurrency: resolvedConcurrency,
|
|
396
402
|
puppeteerInstance,
|
|
397
403
|
jpegQuality: jpegQuality !== null && jpegQuality !== void 0 ? jpegQuality : renderer_1.RenderInternals.DEFAULT_JPEG_QUALITY,
|
|
@@ -59,6 +59,7 @@ const processVideoJob = async ({ job, remotionRoot, entryPoint, onProgress, addC
|
|
|
59
59
|
concurrency: job.concurrency,
|
|
60
60
|
everyNthFrame: job.type === 'video' ? job.everyNthFrame : 1,
|
|
61
61
|
frameRange: [job.startFrame, job.endFrame],
|
|
62
|
+
selectedFrames: null,
|
|
62
63
|
quiet: false,
|
|
63
64
|
shouldOutputImageSequence: job.type === 'sequence',
|
|
64
65
|
addCleanupCallback,
|
package/dist/render.js
CHANGED
|
@@ -25,7 +25,7 @@ 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 { frameRange, shouldOutputImageSequence, inputProps, envVariables, ffmpegOverride, } = (0, get_cli_options_1.getCliOptions)({
|
|
28
|
+
const { frameRange, selectedFrames, shouldOutputImageSequence, inputProps, envVariables, ffmpegOverride, } = (0, get_cli_options_1.getCliOptions)({
|
|
29
29
|
isStill: false,
|
|
30
30
|
logLevel,
|
|
31
31
|
indent: false,
|
|
@@ -49,6 +49,9 @@ const render = async (remotionRoot, args, logLevel) => {
|
|
|
49
49
|
const everyNthFrame = everyNthFrameOption.getValue({
|
|
50
50
|
commandLine: parsed_cli_1.parsedCli,
|
|
51
51
|
}).value;
|
|
52
|
+
if (selectedFrames !== null && everyNthFrame !== 1) {
|
|
53
|
+
throw new Error('Comma-separated `--frames` cannot be combined with `--every-nth-frame`.');
|
|
54
|
+
}
|
|
52
55
|
const userAgent = userAgentOption.getValue({ commandLine: parsed_cli_1.parsedCli }).value;
|
|
53
56
|
const disableWebSecurity = disableWebSecurityOption.getValue({
|
|
54
57
|
commandLine: parsed_cli_1.parsedCli,
|
|
@@ -188,6 +191,7 @@ const render = async (remotionRoot, args, logLevel) => {
|
|
|
188
191
|
concurrency,
|
|
189
192
|
everyNthFrame,
|
|
190
193
|
frameRange,
|
|
194
|
+
selectedFrames,
|
|
191
195
|
jpegQuality,
|
|
192
196
|
onProgress: () => undefined,
|
|
193
197
|
addCleanupCallback: (label, c) => {
|
package/dist/skills.js
CHANGED
package/dist/studio.js
CHANGED
|
@@ -101,9 +101,7 @@ const studioCommand = async (remotionRoot, args, logLevel) => {
|
|
|
101
101
|
const bundlerOverride = config_1.ConfigInternals.getBundlerOverrideFn();
|
|
102
102
|
const rspackOverride = config_1.ConfigInternals.getRspackOverrideFn();
|
|
103
103
|
const webpackOverride = config_1.ConfigInternals.getWebpackOverrideFn();
|
|
104
|
-
|
|
105
|
-
log_1.Log.warn({ indent: false, logLevel }, 'Enabling experimental Rspack bundler.');
|
|
106
|
-
}
|
|
104
|
+
log_1.Log.verbose({ indent: false, logLevel }, `Using ${useRspack ? 'Rspack' : 'Webpack'} bundler.`);
|
|
107
105
|
const getStudioRuntimeConfig = () => ({
|
|
108
106
|
maxTimelineTracks: config_1.ConfigInternals.getMaxTimelineTracks(),
|
|
109
107
|
askAIEnabled: askAIOption.getValue({
|
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.
|
|
6
|
+
"version": "4.0.502",
|
|
7
7
|
"description": "Control Remotion features using the `npx remotion` command",
|
|
8
8
|
"main": "dist/index.js",
|
|
9
9
|
"bin": {
|
|
@@ -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.
|
|
40
|
-
"@remotion/media-utils": "4.0.
|
|
41
|
-
"@remotion/player": "4.0.
|
|
42
|
-
"@remotion/renderer": "4.0.
|
|
43
|
-
"@remotion/studio-shared": "4.0.
|
|
44
|
-
"@remotion/studio-server": "4.0.
|
|
45
|
-
"@remotion/studio": "4.0.
|
|
39
|
+
"@remotion/bundler": "4.0.502",
|
|
40
|
+
"@remotion/media-utils": "4.0.502",
|
|
41
|
+
"@remotion/player": "4.0.502",
|
|
42
|
+
"@remotion/renderer": "4.0.502",
|
|
43
|
+
"@remotion/studio-shared": "4.0.502",
|
|
44
|
+
"@remotion/studio-server": "4.0.502",
|
|
45
|
+
"@remotion/studio": "4.0.502",
|
|
46
46
|
"dotenv": "17.3.1",
|
|
47
47
|
"minimist": "1.2.6",
|
|
48
48
|
"prompts": "2.4.2",
|
|
49
|
-
"remotion": "4.0.
|
|
49
|
+
"remotion": "4.0.502"
|
|
50
50
|
},
|
|
51
51
|
"peerDependencies": {
|
|
52
52
|
"react": ">=16.8.0",
|
|
@@ -57,14 +57,14 @@
|
|
|
57
57
|
"@types/prompts": "2.4.9",
|
|
58
58
|
"@types/prettier": "2.7.2",
|
|
59
59
|
"@types/node": "20.12.14",
|
|
60
|
-
"@remotion/zod-types": "4.0.
|
|
61
|
-
"@remotion/tailwind-v4": "4.0.
|
|
62
|
-
"@remotion/enable-scss": "4.0.
|
|
63
|
-
"@remotion/skia": "4.0.
|
|
60
|
+
"@remotion/zod-types": "4.0.502",
|
|
61
|
+
"@remotion/tailwind-v4": "4.0.502",
|
|
62
|
+
"@remotion/enable-scss": "4.0.502",
|
|
63
|
+
"@remotion/skia": "4.0.502",
|
|
64
64
|
"react": "19.2.3",
|
|
65
65
|
"react-dom": "19.2.3",
|
|
66
66
|
"zod": "4.4.3",
|
|
67
|
-
"@remotion/eslint-config-internal": "4.0.
|
|
67
|
+
"@remotion/eslint-config-internal": "4.0.502",
|
|
68
68
|
"eslint": "9.19.0",
|
|
69
69
|
"@typescript/native-preview": "7.0.0-dev.20260217.1"
|
|
70
70
|
},
|