@remotion/cli 4.0.501 → 4.0.503
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 +10 -2
- package/dist/config/index.js +3 -1
- package/dist/detect-outdated-remotion-skills.d.ts +2 -0
- package/dist/detect-outdated-remotion-skills.js +6 -0
- package/dist/get-cli-options.d.ts +4 -2
- package/dist/get-cli-options.js +13 -4
- package/dist/get-config-file-name.js +27 -2
- package/dist/image-formats.d.ts +4 -0
- package/dist/image-formats.js +36 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +6 -2
- package/dist/list-of-remotion-packages.js +1 -2
- package/dist/parse-command-line.js +3 -0
- package/dist/parsed-cli.d.ts +55 -3
- package/dist/parsed-cli.js +4 -1
- package/dist/remotion-skill-names.d.ts +2 -0
- package/dist/remotion-skill-names.js +5 -0
- 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.d.ts +4 -1
- package/dist/skills.js +21 -9
- package/dist/studio.js +4 -4
- package/dist/update-remotion-skills.d.ts +8 -0
- package/dist/update-remotion-skills.js +24 -0
- package/dist/upgrade.d.ts +2 -1
- package/dist/upgrade.js +11 -1
- package/package.json +16 -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
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { BundlerOverrideFn, RspackConfiguration, RspackOverrideFn, WebpackConfiguration, WebpackOverrideFn } from '@remotion/bundler';
|
|
2
|
-
import type { BrowserExecutable, ChromeMode, CodecOrUndefined, ColorSpace, Crf, DeleteAfter, FrameRange, NumberOfGifLoops, StillImageFormat, VideoImageFormat } from '@remotion/renderer';
|
|
2
|
+
import type { BrowserExecutable, ChromeMode, CodecOrUndefined, ColorSpace, Crf, DeleteAfter, DefaultEditor, FrameRange, NumberOfGifLoops, StillImageFormat, VideoImageFormat } from '@remotion/renderer';
|
|
3
3
|
import type { HardwareAccelerationOption } from '@remotion/renderer/client';
|
|
4
4
|
import type { Concurrency } from './concurrency';
|
|
5
5
|
export type { BundlerOverrideFn, Concurrency, RspackConfiguration, RspackOverrideFn, WebpackConfiguration, WebpackOverrideFn, };
|
|
@@ -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
|
|
@@ -380,6 +384,10 @@ type FlatConfig = RemotionConfigObject & RemotionBundlingOptions & {
|
|
|
380
384
|
* Default: false
|
|
381
385
|
*/
|
|
382
386
|
setForceNewStudioEnabled: (forceNew: boolean) => void;
|
|
387
|
+
/**
|
|
388
|
+
* Set the editor used when opening files from Remotion Studio.
|
|
389
|
+
*/
|
|
390
|
+
setDefaultEditor: (editor: DefaultEditor) => void;
|
|
383
391
|
setDeleteAfter: (day: DeleteAfter | null) => void;
|
|
384
392
|
/**
|
|
385
393
|
* Set whether S3 buckets should be allowed to expire.
|
package/dist/config/index.js
CHANGED
|
@@ -18,7 +18,7 @@ const preview_server_1 = require("./preview-server");
|
|
|
18
18
|
const still_frame_1 = require("./still-frame");
|
|
19
19
|
const webpack_caching_1 = require("./webpack-caching");
|
|
20
20
|
const webpack_poll_1 = require("./webpack-poll");
|
|
21
|
-
const { benchmarkConcurrenciesOption, concurrencyOption, offthreadVideoCacheSizeInBytesOption, x264Option, audioBitrateOption, videoBitrateOption, scaleOption, crfOption, jpegQualityOption, enforceAudioOption, overwriteOption, chromeModeOption, mutedOption, videoCodecOption, colorSpaceOption, disallowParallelEncodingOption, deleteAfterOption, folderExpiryOption, enableMultiprocessOnLinuxOption, glOption, gopSizeOption, headlessOption, numberOfGifLoopsOption, beepOnFinishOption, encodingMaxRateOption, encodingBufferSizeOption, reproOption, enableLambdaInsights, logLevelOption, delayRenderTimeoutInMillisecondsOption, publicDirOption, binariesDirectoryOption, preferLosslessOption, framesOption, forSeamlessAacConcatenationOption, audioCodecOption, publicPathOption, hardwareAccelerationOption, audioLatencyHintOption, enableCrossSiteIsolationOption, imageSequencePatternOption, darkModeOption, askAIOption, publicLicenseKeyOption, interactivityOption, keyboardShortcutsOption, forceNewStudioOption, numberOfSharedAudioTagsOption, ipv4Option, pixelFormatOption, browserExecutableOption, everyNthFrameOption, proResProfileOption, stillImageFormatOption, videoImageFormatOption, userAgentOption, disableWebSecurityOption, ignoreCertificateErrorsOption, overrideHeightOption, overrideWidthOption, overrideFpsOption, overrideDurationOption, rspackOption, outDirOption, webpackPollOption, imageSequenceOption, bundleCacheOption, envFileOption, runsOption, noOpenOption, sampleRateOption, previewSampleRateOption, } = client_1.BrowserSafeApis.options;
|
|
21
|
+
const { benchmarkConcurrenciesOption, concurrencyOption, offthreadVideoCacheSizeInBytesOption, x264Option, audioBitrateOption, videoBitrateOption, scaleOption, crfOption, jpegQualityOption, enforceAudioOption, overwriteOption, chromeModeOption, mutedOption, videoCodecOption, colorSpaceOption, disallowParallelEncodingOption, deleteAfterOption, folderExpiryOption, enableMultiprocessOnLinuxOption, glOption, gopSizeOption, headlessOption, numberOfGifLoopsOption, beepOnFinishOption, encodingMaxRateOption, encodingBufferSizeOption, reproOption, enableLambdaInsights, logLevelOption, delayRenderTimeoutInMillisecondsOption, publicDirOption, binariesDirectoryOption, preferLosslessOption, framesOption, forSeamlessAacConcatenationOption, audioCodecOption, publicPathOption, hardwareAccelerationOption, audioLatencyHintOption, enableCrossSiteIsolationOption, imageSequencePatternOption, darkModeOption, defaultEditorOption, askAIOption, publicLicenseKeyOption, interactivityOption, keyboardShortcutsOption, forceNewStudioOption, numberOfSharedAudioTagsOption, ipv4Option, pixelFormatOption, browserExecutableOption, everyNthFrameOption, proResProfileOption, stillImageFormatOption, videoImageFormatOption, userAgentOption, disableWebSecurityOption, ignoreCertificateErrorsOption, overrideHeightOption, overrideWidthOption, overrideFpsOption, overrideDurationOption, rspackOption, outDirOption, webpackPollOption, imageSequenceOption, bundleCacheOption, envFileOption, runsOption, noOpenOption, sampleRateOption, previewSampleRateOption, } = client_1.BrowserSafeApis.options;
|
|
22
22
|
const setAllowHtmlInCanvasEnabled = (_enabled) => {
|
|
23
23
|
log_1.Log.warn({ indent: false, logLevel: 'info' }, 'Config.setAllowHtmlInCanvasEnabled() is now a no-op because HTML-in-canvas is enabled by default when supported. You can remove this option from your config file.');
|
|
24
24
|
};
|
|
@@ -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,
|
|
@@ -127,6 +128,7 @@ exports.Config = {
|
|
|
127
128
|
setEnableCrossSiteIsolation: enableCrossSiteIsolationOption.setConfig,
|
|
128
129
|
setAskAIEnabled: askAIOption.setConfig,
|
|
129
130
|
setPublicLicenseKey: publicLicenseKeyOption.setConfig,
|
|
131
|
+
setDefaultEditor: defaultEditorOption.setConfig,
|
|
130
132
|
setForceNewStudioEnabled: forceNewStudioOption.setConfig,
|
|
131
133
|
setIPv4: ipv4Option.setConfig,
|
|
132
134
|
setBundleOutDir: outDirOption.setConfig,
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseRemotionSkillVersion = exports.detectOutdatedRemotionSkills = void 0;
|
|
4
|
+
const studio_server_1 = require("@remotion/studio-server");
|
|
5
|
+
Object.defineProperty(exports, "detectOutdatedRemotionSkills", { enumerable: true, get: function () { return studio_server_1.detectOutdatedRemotionSkills; } });
|
|
6
|
+
Object.defineProperty(exports, "parseRemotionSkillVersion", { enumerable: true, get: function () { return studio_server_1.parseRemotionSkillVersion; } });
|
|
@@ -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),
|
|
@@ -7,10 +7,11 @@ exports.reloadConfig = exports.loadConfig = exports.getLoadedConfigFile = void 0
|
|
|
7
7
|
const node_fs_1 = require("node:fs");
|
|
8
8
|
const node_path_1 = __importDefault(require("node:path"));
|
|
9
9
|
const client_1 = require("@remotion/renderer/client");
|
|
10
|
+
const config_1 = require("./config");
|
|
10
11
|
const load_config_1 = require("./load-config");
|
|
11
12
|
const log_1 = require("./log");
|
|
12
13
|
const parsed_cli_1 = require("./parsed-cli");
|
|
13
|
-
const { configOption } = client_1.BrowserSafeApis.options;
|
|
14
|
+
const { configOption, logLevelOption, rspackOption } = client_1.BrowserSafeApis.options;
|
|
14
15
|
const defaultConfigFileJavascript = 'remotion.config.js';
|
|
15
16
|
const defaultConfigFileTypescript = 'remotion.config.ts';
|
|
16
17
|
let loadedConfigFile = null;
|
|
@@ -19,9 +20,32 @@ const getLoadedConfigFile = () => {
|
|
|
19
20
|
return (_a = loadedConfigFile === null || loadedConfigFile === void 0 ? void 0 : loadedConfigFile.resolved) !== null && _a !== void 0 ? _a : null;
|
|
20
21
|
};
|
|
21
22
|
exports.getLoadedConfigFile = getLoadedConfigFile;
|
|
23
|
+
const warnAboutBundlerOverride = () => {
|
|
24
|
+
const useRspack = rspackOption.getValue({ commandLine: parsed_cli_1.parsedCli }).value;
|
|
25
|
+
const hasWebpackOverride = config_1.ConfigInternals.getWebpackOverrideFn() !==
|
|
26
|
+
config_1.ConfigInternals.defaultOverrideFunction;
|
|
27
|
+
const hasRspackOverride = config_1.ConfigInternals.getRspackOverrideFn() !==
|
|
28
|
+
config_1.ConfigInternals.defaultRspackOverrideFunction;
|
|
29
|
+
if ((useRspack && !hasWebpackOverride) ||
|
|
30
|
+
(!useRspack && !hasRspackOverride)) {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
const selectedBundler = useRspack ? 'Rspack' : 'Webpack';
|
|
34
|
+
const ignoredBundler = useRspack ? 'Webpack' : 'Rspack';
|
|
35
|
+
const selectedOverride = useRspack
|
|
36
|
+
? 'overrideRspackConfig'
|
|
37
|
+
: 'overrideWebpackConfig';
|
|
38
|
+
const ignoredOverride = useRspack
|
|
39
|
+
? 'overrideWebpackConfig'
|
|
40
|
+
: 'overrideRspackConfig';
|
|
41
|
+
const logLevel = logLevelOption.getValue({ commandLine: parsed_cli_1.parsedCli }).value;
|
|
42
|
+
log_1.Log.warn({ indent: false, logLevel }, `You have selected ${selectedBundler} as the bundler, but Config.${ignoredOverride}() was called. The ${ignoredBundler} override will be ignored. Use Config.${selectedOverride}() or Config.overrideBundlerConfig() instead.`);
|
|
43
|
+
};
|
|
22
44
|
const loadInitialConfigFile = async (remotionRoot, configFileName, isJavascript) => {
|
|
23
45
|
try {
|
|
24
|
-
|
|
46
|
+
const config = await (0, load_config_1.loadConfigFile)(remotionRoot, configFileName, isJavascript);
|
|
47
|
+
warnAboutBundlerOverride();
|
|
48
|
+
return config;
|
|
25
49
|
}
|
|
26
50
|
catch (error) {
|
|
27
51
|
log_1.Log.error({ indent: false, logLevel: 'error' }, error instanceof Error ? error.message : String(error));
|
|
@@ -72,6 +96,7 @@ const reloadConfig = async ({ resetConfigOptions, }) => {
|
|
|
72
96
|
try {
|
|
73
97
|
(0, load_config_1.executeConfigFile)(nextConfigFile);
|
|
74
98
|
loadedConfigFile = nextConfigFile;
|
|
99
|
+
warnAboutBundlerOverride();
|
|
75
100
|
return true;
|
|
76
101
|
}
|
|
77
102
|
catch (error) {
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getVideoImageFormat = void 0;
|
|
4
|
+
const client_1 = require("@remotion/renderer/client");
|
|
5
|
+
const pure_1 = require("@remotion/renderer/pure");
|
|
6
|
+
const parsed_cli_1 = require("./parsed-cli");
|
|
7
|
+
const getVideoImageFormat = ({ codec, uiImageFormat, }) => {
|
|
8
|
+
if (uiImageFormat !== null) {
|
|
9
|
+
return uiImageFormat;
|
|
10
|
+
}
|
|
11
|
+
const configured = client_1.BrowserSafeApis.options.videoImageFormatOption.getValue({
|
|
12
|
+
commandLine: parsed_cli_1.parsedCli,
|
|
13
|
+
}).value;
|
|
14
|
+
if (configured !== null) {
|
|
15
|
+
return configured;
|
|
16
|
+
}
|
|
17
|
+
if (pure_1.NoReactAPIs.isAudioCodec(codec)) {
|
|
18
|
+
return 'none';
|
|
19
|
+
}
|
|
20
|
+
if (codec === 'h264' ||
|
|
21
|
+
codec === 'h264-mkv' ||
|
|
22
|
+
codec === 'h264-ts' ||
|
|
23
|
+
codec === 'h265' ||
|
|
24
|
+
codec === 'av1' ||
|
|
25
|
+
codec === 'vp8' ||
|
|
26
|
+
codec === 'vp9' ||
|
|
27
|
+
codec === 'prores' ||
|
|
28
|
+
codec === 'gif') {
|
|
29
|
+
return 'jpeg';
|
|
30
|
+
}
|
|
31
|
+
if (codec === undefined) {
|
|
32
|
+
return 'png';
|
|
33
|
+
}
|
|
34
|
+
throw new Error('Unrecognized codec ' + codec);
|
|
35
|
+
};
|
|
36
|
+
exports.getVideoImageFormat = getVideoImageFormat;
|
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>;
|
package/dist/index.js
CHANGED
|
@@ -46,7 +46,7 @@ const still_1 = require("./still");
|
|
|
46
46
|
const studio_1 = require("./studio");
|
|
47
47
|
const upgrade_1 = require("./upgrade");
|
|
48
48
|
const versions_1 = require("./versions");
|
|
49
|
-
const { packageManagerOption, versionFlagOption } = client_1.BrowserSafeApis.options;
|
|
49
|
+
const { packageManagerOption, skipSkillsOption, versionFlagOption } = client_1.BrowserSafeApis.options;
|
|
50
50
|
const cli = async () => {
|
|
51
51
|
var _a;
|
|
52
52
|
const [command, ...args] = parsed_cli_1.parsedCli._;
|
|
@@ -113,6 +113,7 @@ const cli = async () => {
|
|
|
113
113
|
remotionRoot,
|
|
114
114
|
packageManager: packageManager !== null && packageManager !== void 0 ? packageManager : undefined,
|
|
115
115
|
version: (_a = versionFlagOption.getValue({ commandLine: parsed_cli_1.parsedCli }).value) !== null && _a !== void 0 ? _a : undefined,
|
|
116
|
+
skipSkills: skipSkillsOption.getValue({ commandLine: parsed_cli_1.parsedCli }).value,
|
|
116
117
|
logLevel,
|
|
117
118
|
args,
|
|
118
119
|
});
|
|
@@ -134,7 +135,10 @@ const cli = async () => {
|
|
|
134
135
|
});
|
|
135
136
|
}
|
|
136
137
|
else if (command === 'skills') {
|
|
137
|
-
await (0, skills_1.skillsCommand)(args, logLevel
|
|
138
|
+
await (0, skills_1.skillsCommand)(args, logLevel, {
|
|
139
|
+
cwd: process.cwd(),
|
|
140
|
+
environment: process.env,
|
|
141
|
+
});
|
|
138
142
|
}
|
|
139
143
|
else if (command === versions_1.VERSIONS_COMMAND) {
|
|
140
144
|
await (0, versions_1.versionsCommand)(remotionRoot, logLevel);
|
|
@@ -12,7 +12,6 @@ exports.listOfRemotionPackages = [
|
|
|
12
12
|
'@remotion/brand',
|
|
13
13
|
'@remotion/bundler',
|
|
14
14
|
'@remotion/browser-studio',
|
|
15
|
-
'@remotion/canvas-capture',
|
|
16
15
|
'@remotion/claude-code-plugin',
|
|
17
16
|
'@remotion/cli',
|
|
18
17
|
'@remotion/cloudrun',
|
|
@@ -98,7 +97,7 @@ exports.listOfRemotionPackages = [
|
|
|
98
97
|
'@remotion/remotion-media',
|
|
99
98
|
'@remotion/web-renderer',
|
|
100
99
|
'@remotion/design',
|
|
101
|
-
'@remotion/
|
|
100
|
+
'@remotion/studio-protocol',
|
|
102
101
|
'@remotion/light-leaks',
|
|
103
102
|
'@remotion/rough-notation',
|
|
104
103
|
'@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
|
@@ -351,6 +351,21 @@ declare const benchmarkConcurrenciesOption: {
|
|
|
351
351
|
};
|
|
352
352
|
setConfig: (value: boolean) => void;
|
|
353
353
|
id: "dark-mode";
|
|
354
|
+
}, defaultEditorOption: {
|
|
355
|
+
name: string;
|
|
356
|
+
cliFlag: "editor";
|
|
357
|
+
description: () => import("react/jsx-runtime").JSX.Element;
|
|
358
|
+
ssrName: null;
|
|
359
|
+
docLink: string;
|
|
360
|
+
type: import("@remotion/renderer").DefaultEditor | null;
|
|
361
|
+
getValue: ({ commandLine }: {
|
|
362
|
+
commandLine: Record<string, unknown>;
|
|
363
|
+
}) => {
|
|
364
|
+
value: import("@remotion/renderer").DefaultEditor | null;
|
|
365
|
+
source: string;
|
|
366
|
+
};
|
|
367
|
+
setConfig(value: import("@remotion/renderer").DefaultEditor | null): void;
|
|
368
|
+
id: "editor";
|
|
354
369
|
}, publicLicenseKeyOption: {
|
|
355
370
|
name: string;
|
|
356
371
|
cliFlag: "public-license-key";
|
|
@@ -983,14 +998,14 @@ declare const benchmarkConcurrenciesOption: {
|
|
|
983
998
|
description: () => import("react/jsx-runtime").JSX.Element;
|
|
984
999
|
ssrName: "frameRange";
|
|
985
1000
|
docLink: string;
|
|
986
|
-
type: import("@remotion/renderer").
|
|
1001
|
+
type: import("@remotion/renderer").FrameSelection;
|
|
987
1002
|
getValue: ({ commandLine }: {
|
|
988
1003
|
commandLine: Record<string, unknown>;
|
|
989
1004
|
}) => {
|
|
990
1005
|
source: string;
|
|
991
|
-
value: import("@remotion/renderer").
|
|
1006
|
+
value: import("@remotion/renderer").FrameSelection;
|
|
992
1007
|
};
|
|
993
|
-
setConfig: (value: import("@remotion/renderer").
|
|
1008
|
+
setConfig: (value: import("@remotion/renderer").FrameSelection) => void;
|
|
994
1009
|
id: "frames";
|
|
995
1010
|
}, isProductionOption: {
|
|
996
1011
|
name: string;
|
|
@@ -1131,6 +1146,39 @@ declare const benchmarkConcurrenciesOption: {
|
|
|
1131
1146
|
};
|
|
1132
1147
|
setConfig: (value: number | null) => void;
|
|
1133
1148
|
id: "preview-sample-rate";
|
|
1149
|
+
}, rspackOption: {
|
|
1150
|
+
name: string;
|
|
1151
|
+
cliFlag: "rspack";
|
|
1152
|
+
description: () => import("react/jsx-runtime").JSX.Element;
|
|
1153
|
+
ssrName: null;
|
|
1154
|
+
docLink: null;
|
|
1155
|
+
type: boolean;
|
|
1156
|
+
getValue: ({ commandLine }: {
|
|
1157
|
+
commandLine: Record<string, unknown>;
|
|
1158
|
+
}) => {
|
|
1159
|
+
value: boolean;
|
|
1160
|
+
source: string;
|
|
1161
|
+
};
|
|
1162
|
+
setConfig(value: boolean): void;
|
|
1163
|
+
id: "rspack";
|
|
1164
|
+
}, skipSkillsOption: {
|
|
1165
|
+
name: string;
|
|
1166
|
+
cliFlag: "skip-skills";
|
|
1167
|
+
description: () => import("react/jsx-runtime").JSX.Element;
|
|
1168
|
+
ssrName: null;
|
|
1169
|
+
docLink: string;
|
|
1170
|
+
getValue: ({ commandLine }: {
|
|
1171
|
+
commandLine: Record<string, unknown>;
|
|
1172
|
+
}) => {
|
|
1173
|
+
source: string;
|
|
1174
|
+
value: true;
|
|
1175
|
+
} | {
|
|
1176
|
+
source: string;
|
|
1177
|
+
value: false;
|
|
1178
|
+
};
|
|
1179
|
+
setConfig: () => never;
|
|
1180
|
+
type: boolean;
|
|
1181
|
+
id: "skip-skills";
|
|
1134
1182
|
};
|
|
1135
1183
|
export type CommandLineOptions = {
|
|
1136
1184
|
[browserExecutableOption.cliFlag]: TypeOfOption<typeof browserExecutableOption>;
|
|
@@ -1142,6 +1190,7 @@ export type CommandLineOptions = {
|
|
|
1142
1190
|
[envFileOption.cliFlag]: TypeOfOption<typeof envFileOption>;
|
|
1143
1191
|
[ignoreCertificateErrorsOption.cliFlag]: TypeOfOption<typeof ignoreCertificateErrorsOption> | null;
|
|
1144
1192
|
[darkModeOption.cliFlag]: TypeOfOption<typeof darkModeOption> | null;
|
|
1193
|
+
[defaultEditorOption.cliFlag]: TypeOfOption<typeof defaultEditorOption>;
|
|
1145
1194
|
[disableWebSecurityOption.cliFlag]: TypeOfOption<typeof disableWebSecurityOption> | null;
|
|
1146
1195
|
[everyNthFrameOption.cliFlag]: TypeOfOption<typeof everyNthFrameOption>;
|
|
1147
1196
|
[numberOfGifLoopsOption.cliFlag]: TypeOfOption<typeof numberOfGifLoopsOption>;
|
|
@@ -1210,7 +1259,10 @@ export type CommandLineOptions = {
|
|
|
1210
1259
|
[forceNewStudioOption.cliFlag]: TypeOfOption<typeof forceNewStudioOption> | null;
|
|
1211
1260
|
[sampleRateOption.cliFlag]: TypeOfOption<typeof sampleRateOption>;
|
|
1212
1261
|
[previewSampleRateOption.cliFlag]: TypeOfOption<typeof previewSampleRateOption>;
|
|
1262
|
+
[rspackOption.cliFlag]: TypeOfOption<typeof rspackOption> | null;
|
|
1263
|
+
'experimental-rspack'?: unknown;
|
|
1213
1264
|
[isProductionOption.cliFlag]: TypeOfOption<typeof isProductionOption> | null;
|
|
1265
|
+
[skipSkillsOption.cliFlag]: TypeOfOption<typeof skipSkillsOption>;
|
|
1214
1266
|
};
|
|
1215
1267
|
export declare const BooleanFlags: string[];
|
|
1216
1268
|
export declare const parsedCli: CommandLineOptions & {
|
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, defaultEditorOption, 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, skipSkillsOption, } = client_1.BrowserSafeApis.options;
|
|
10
10
|
exports.BooleanFlags = [
|
|
11
11
|
overwriteOption.cliFlag,
|
|
12
12
|
imageSequenceOption.cliFlag,
|
|
@@ -30,6 +30,8 @@ exports.BooleanFlags = [
|
|
|
30
30
|
isProductionOption.cliFlag,
|
|
31
31
|
forceNewStudioOption.cliFlag,
|
|
32
32
|
bundleCacheOption.cliFlag,
|
|
33
|
+
rspackOption.cliFlag,
|
|
34
|
+
skipSkillsOption.cliFlag,
|
|
33
35
|
];
|
|
34
36
|
exports.parsedCli = (0, minimist_1.default)(process.argv.slice(2), {
|
|
35
37
|
boolean: exports.BooleanFlags,
|
|
@@ -50,6 +52,7 @@ exports.parsedCli = (0, minimist_1.default)(process.argv.slice(2), {
|
|
|
50
52
|
[isProductionOption.cliFlag]: null,
|
|
51
53
|
[forceNewStudioOption.cliFlag]: null,
|
|
52
54
|
[mutedOption.cliFlag]: null,
|
|
55
|
+
[rspackOption.cliFlag]: null,
|
|
53
56
|
},
|
|
54
57
|
});
|
|
55
58
|
const quietFlagProvided = () => exports.parsedCli.quiet || exports.parsedCli.q;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.remotionSkillNames = void 0;
|
|
4
|
+
const studio_server_1 = require("@remotion/studio-server");
|
|
5
|
+
Object.defineProperty(exports, "remotionSkillNames", { enumerable: true, get: function () { return studio_server_1.remotionSkillNames; } });
|
|
@@ -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.d.ts
CHANGED
|
@@ -1,2 +1,5 @@
|
|
|
1
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"
|
|
2
|
+
export declare const skillsCommand: (args: string[], logLevel: "error" | "info" | "trace" | "verbose" | "warn", { cwd, environment, }: {
|
|
3
|
+
cwd: string;
|
|
4
|
+
environment: NodeJS.ProcessEnv;
|
|
5
|
+
}) => Promise<void> | undefined;
|
package/dist/skills.js
CHANGED
|
@@ -4,6 +4,7 @@ exports.skillsCommand = exports.printSkillsHelp = void 0;
|
|
|
4
4
|
const node_child_process_1 = require("node:child_process");
|
|
5
5
|
const chalk_1 = require("./chalk");
|
|
6
6
|
const log_1 = require("./log");
|
|
7
|
+
const remotion_skill_names_1 = require("./remotion-skill-names");
|
|
7
8
|
const printSkillsHelp = (logLevel) => {
|
|
8
9
|
log_1.Log.info({ indent: false, logLevel }, chalk_1.chalk.blue('remotion skills'));
|
|
9
10
|
log_1.Log.info({ indent: false, logLevel }, 'Install or update skills from remotion-dev/skills.');
|
|
@@ -17,7 +18,7 @@ const printSkillsHelp = (logLevel) => {
|
|
|
17
18
|
log_1.Log.info({ indent: false, logLevel }, 'Update skills from remotion-dev/skills.');
|
|
18
19
|
};
|
|
19
20
|
exports.printSkillsHelp = printSkillsHelp;
|
|
20
|
-
const skillsCommand = (args, logLevel) => {
|
|
21
|
+
const skillsCommand = (args, logLevel, { cwd, environment, }) => {
|
|
21
22
|
const subcommand = args[0];
|
|
22
23
|
const restArgs = args.slice(1);
|
|
23
24
|
if (!subcommand || !['add', 'update'].includes(subcommand)) {
|
|
@@ -25,15 +26,26 @@ const skillsCommand = (args, logLevel) => {
|
|
|
25
26
|
return;
|
|
26
27
|
}
|
|
27
28
|
const command = process.platform === 'win32' ? 'npx.cmd' : 'npx';
|
|
28
|
-
const fullArgs =
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
29
|
+
const fullArgs = subcommand === 'add'
|
|
30
|
+
? [
|
|
31
|
+
'--loglevel=error',
|
|
32
|
+
'skills@1.5.20',
|
|
33
|
+
'add',
|
|
34
|
+
'remotion-dev/skills',
|
|
35
|
+
...restArgs,
|
|
36
|
+
'--yes',
|
|
37
|
+
]
|
|
38
|
+
: [
|
|
39
|
+
'--loglevel=error',
|
|
40
|
+
'skills',
|
|
41
|
+
'update',
|
|
42
|
+
...remotion_skill_names_1.remotionSkillNames,
|
|
43
|
+
...restArgs,
|
|
44
|
+
'--yes',
|
|
45
|
+
];
|
|
36
46
|
const child = (0, node_child_process_1.spawn)(command, fullArgs, {
|
|
47
|
+
cwd,
|
|
48
|
+
env: environment,
|
|
37
49
|
stdio: 'inherit',
|
|
38
50
|
});
|
|
39
51
|
return new Promise((resolve, reject) => {
|
package/dist/studio.js
CHANGED
|
@@ -15,7 +15,7 @@ const get_render_defaults_1 = require("./get-render-defaults");
|
|
|
15
15
|
const log_1 = require("./log");
|
|
16
16
|
const parsed_cli_1 = require("./parsed-cli");
|
|
17
17
|
const queue_1 = require("./render-queue/queue");
|
|
18
|
-
const { binariesDirectoryOption, publicDirOption, disableGitSourceOption, enableCrossSiteIsolationOption, askAIOption, interactivityOption, keyboardShortcutsOption, forceNewStudioOption, numberOfSharedAudioTagsOption, audioLatencyHintOption, ipv4Option, rspackOption, webpackPollOption, noOpenOption, portOption, browserOption, previewSampleRateOption, } = client_1.BrowserSafeApis.options;
|
|
18
|
+
const { binariesDirectoryOption, publicDirOption, disableGitSourceOption, enableCrossSiteIsolationOption, askAIOption, interactivityOption, keyboardShortcutsOption, forceNewStudioOption, numberOfSharedAudioTagsOption, audioLatencyHintOption, ipv4Option, rspackOption, webpackPollOption, noOpenOption, portOption, browserOption, previewSampleRateOption, defaultEditorOption, } = client_1.BrowserSafeApis.options;
|
|
19
19
|
const studioCommand = async (remotionRoot, args, logLevel) => {
|
|
20
20
|
var _a, _b, _c;
|
|
21
21
|
const { file, reason } = (0, entry_point_1.findEntryPoint)({
|
|
@@ -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({
|
|
@@ -120,6 +118,7 @@ const studioCommand = async (remotionRoot, args, logLevel) => {
|
|
|
120
118
|
const getNumberOfAudioTags = () => numberOfSharedAudioTagsOption.getValue({ commandLine: parsed_cli_1.parsedCli }).value;
|
|
121
119
|
const getAudioLatencyHint = () => audioLatencyHintOption.getValue({ commandLine: parsed_cli_1.parsedCli }).value;
|
|
122
120
|
const getPreviewSampleRate = () => previewSampleRateOption.getValue({ commandLine: parsed_cli_1.parsedCli }).value;
|
|
121
|
+
const getDefaultEditor = () => defaultEditorOption.getValue({ commandLine: parsed_cli_1.parsedCli }).value;
|
|
123
122
|
const result = await studio_server_1.StudioServerInternals.startStudio({
|
|
124
123
|
previewEntry: require.resolve('@remotion/studio/previewEntry'),
|
|
125
124
|
browserArgs: parsed_cli_1.parsedCli['browser-args'],
|
|
@@ -159,6 +158,7 @@ const studioCommand = async (remotionRoot, args, logLevel) => {
|
|
|
159
158
|
forceIPv4: ipv4Option.getValue({ commandLine: parsed_cli_1.parsedCli }).value,
|
|
160
159
|
getAudioLatencyHint,
|
|
161
160
|
getPreviewSampleRate,
|
|
161
|
+
getDefaultEditor,
|
|
162
162
|
enableCrossSiteIsolation,
|
|
163
163
|
forceNew: forceNewStudioOption.getValue({ commandLine: parsed_cli_1.parsedCli }).value,
|
|
164
164
|
rspack: useRspack,
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare const updateRemotionSkills: ({ currentVersion, cwd, homeDirectory, skipSkills, logLevel, environment, }: {
|
|
2
|
+
currentVersion: string;
|
|
3
|
+
cwd: string;
|
|
4
|
+
homeDirectory: string;
|
|
5
|
+
skipSkills: boolean;
|
|
6
|
+
logLevel: "error" | "info" | "trace" | "verbose" | "warn";
|
|
7
|
+
environment: NodeJS.ProcessEnv;
|
|
8
|
+
}) => Promise<void>;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.updateRemotionSkills = void 0;
|
|
4
|
+
const detect_outdated_remotion_skills_1 = require("./detect-outdated-remotion-skills");
|
|
5
|
+
const log_1 = require("./log");
|
|
6
|
+
const skills_1 = require("./skills");
|
|
7
|
+
const updateRemotionSkills = async ({ currentVersion, cwd, homeDirectory, skipSkills, logLevel, environment, }) => {
|
|
8
|
+
if (skipSkills) {
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
const skillsStatuses = (0, detect_outdated_remotion_skills_1.detectOutdatedRemotionSkills)({
|
|
12
|
+
currentVersion,
|
|
13
|
+
cwd,
|
|
14
|
+
homeDirectory,
|
|
15
|
+
});
|
|
16
|
+
if (skillsStatuses.project.type === 'outdated') {
|
|
17
|
+
log_1.Log.info({ indent: false, logLevel }, 'Updating project Remotion Agent Skills...');
|
|
18
|
+
await (0, skills_1.skillsCommand)(['update', '--project'], logLevel, {
|
|
19
|
+
cwd,
|
|
20
|
+
environment,
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
exports.updateRemotionSkills = updateRemotionSkills;
|
package/dist/upgrade.d.ts
CHANGED
|
@@ -20,10 +20,11 @@ export declare const getPackagesToUpgrade: ({ depsWithVersions, catalogEntries,
|
|
|
20
20
|
version: string;
|
|
21
21
|
}[];
|
|
22
22
|
};
|
|
23
|
-
export declare const upgradeCommand: ({ remotionRoot, packageManager, version, logLevel, args, }: {
|
|
23
|
+
export declare const upgradeCommand: ({ remotionRoot, packageManager, version, skipSkills, logLevel, args, }: {
|
|
24
24
|
remotionRoot: string;
|
|
25
25
|
packageManager: string | undefined;
|
|
26
26
|
version: string | undefined;
|
|
27
|
+
skipSkills: boolean;
|
|
27
28
|
logLevel: "error" | "info" | "trace" | "verbose" | "warn";
|
|
28
29
|
args: string[];
|
|
29
30
|
}) => Promise<void>;
|
package/dist/upgrade.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.upgradeCommand = exports.getPackagesToUpgrade = exports.resolveExtraPackageVersions = void 0;
|
|
4
4
|
const node_child_process_1 = require("node:child_process");
|
|
5
|
+
const node_os_1 = require("node:os");
|
|
5
6
|
const renderer_1 = require("@remotion/renderer");
|
|
6
7
|
const studio_server_1 = require("@remotion/studio-server");
|
|
7
8
|
const catalog_utils_1 = require("./catalog-utils");
|
|
@@ -9,6 +10,7 @@ const chalk_1 = require("./chalk");
|
|
|
9
10
|
const extra_packages_1 = require("./extra-packages");
|
|
10
11
|
const list_of_remotion_packages_1 = require("./list-of-remotion-packages");
|
|
11
12
|
const log_1 = require("./log");
|
|
13
|
+
const update_remotion_skills_1 = require("./update-remotion-skills");
|
|
12
14
|
const resolveExtraPackageVersions = (dependencies) => {
|
|
13
15
|
const extraVersions = { ...extra_packages_1.EXTRA_PACKAGES };
|
|
14
16
|
for (const pkg of Object.keys(extra_packages_1.EXTRA_PACKAGES)) {
|
|
@@ -64,7 +66,7 @@ const getPackagesToUpgrade = ({ depsWithVersions, catalogEntries, targetVersion,
|
|
|
64
66
|
return { normalPackages, catalogPackages: catalogPackagesToUpgrade };
|
|
65
67
|
};
|
|
66
68
|
exports.getPackagesToUpgrade = getPackagesToUpgrade;
|
|
67
|
-
const upgradeCommand = async ({ remotionRoot, packageManager, version, logLevel, args, }) => {
|
|
69
|
+
const upgradeCommand = async ({ remotionRoot, packageManager, version, skipSkills, logLevel, args, }) => {
|
|
68
70
|
const depsWithVersions = studio_server_1.StudioServerInternals.getInstalledDependenciesWithVersions(remotionRoot);
|
|
69
71
|
let targetVersion;
|
|
70
72
|
if (version) {
|
|
@@ -152,6 +154,14 @@ const upgradeCommand = async ({ remotionRoot, packageManager, version, logLevel,
|
|
|
152
154
|
logLevel,
|
|
153
155
|
});
|
|
154
156
|
}
|
|
157
|
+
await (0, update_remotion_skills_1.updateRemotionSkills)({
|
|
158
|
+
currentVersion: targetVersion,
|
|
159
|
+
cwd: remotionRoot,
|
|
160
|
+
homeDirectory: (0, node_os_1.homedir)(),
|
|
161
|
+
skipSkills,
|
|
162
|
+
logLevel,
|
|
163
|
+
environment: process.env,
|
|
164
|
+
});
|
|
155
165
|
log_1.Log.info({ indent: false, logLevel }, '⏫ Remotion has been upgraded!');
|
|
156
166
|
log_1.Log.info({ indent: false, logLevel }, 'https://remotion.dev/changelog');
|
|
157
167
|
};
|
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.503",
|
|
7
7
|
"description": "Control Remotion features using the `npx remotion` command",
|
|
8
8
|
"main": "dist/index.js",
|
|
9
9
|
"bin": {
|
|
@@ -36,17 +36,18 @@
|
|
|
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.503",
|
|
40
|
+
"@remotion/media-utils": "4.0.503",
|
|
41
|
+
"@remotion/player": "4.0.503",
|
|
42
|
+
"@remotion/renderer": "4.0.503",
|
|
43
|
+
"@remotion/studio-shared": "4.0.503",
|
|
44
|
+
"@remotion/studio-server": "4.0.503",
|
|
45
|
+
"@remotion/studio": "4.0.503",
|
|
46
46
|
"dotenv": "17.3.1",
|
|
47
47
|
"minimist": "1.2.6",
|
|
48
48
|
"prompts": "2.4.2",
|
|
49
|
-
"
|
|
49
|
+
"semver": "7.5.3",
|
|
50
|
+
"remotion": "4.0.503"
|
|
50
51
|
},
|
|
51
52
|
"peerDependencies": {
|
|
52
53
|
"react": ">=16.8.0",
|
|
@@ -56,15 +57,16 @@
|
|
|
56
57
|
"@types/minimist": "1.2.2",
|
|
57
58
|
"@types/prompts": "2.4.9",
|
|
58
59
|
"@types/prettier": "2.7.2",
|
|
60
|
+
"@types/semver": "7.5.3",
|
|
59
61
|
"@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.
|
|
62
|
+
"@remotion/zod-types": "4.0.503",
|
|
63
|
+
"@remotion/tailwind-v4": "4.0.503",
|
|
64
|
+
"@remotion/enable-scss": "4.0.503",
|
|
65
|
+
"@remotion/skia": "4.0.503",
|
|
64
66
|
"react": "19.2.3",
|
|
65
67
|
"react-dom": "19.2.3",
|
|
66
68
|
"zod": "4.4.3",
|
|
67
|
-
"@remotion/eslint-config-internal": "4.0.
|
|
69
|
+
"@remotion/eslint-config-internal": "4.0.503",
|
|
68
70
|
"eslint": "9.19.0",
|
|
69
71
|
"@typescript/native-preview": "7.0.0-dev.20260217.1"
|
|
70
72
|
},
|