@remotion/cli 4.0.427 → 4.0.428

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 CHANGED
@@ -21,7 +21,7 @@ const setup_cache_1 = require("./setup-cache");
21
21
  const should_use_non_overlaying_logger_1 = require("./should-use-non-overlaying-logger");
22
22
  const show_compositions_picker_1 = require("./show-compositions-picker");
23
23
  const truthy_1 = require("./truthy");
24
- const { audioBitrateOption, x264Option, offthreadVideoCacheSizeInBytesOption, scaleOption, crfOption, jpegQualityOption, videoBitrateOption, enforceAudioOption, mutedOption, videoCodecOption, colorSpaceOption, disallowParallelEncodingOption, enableMultiprocessOnLinuxOption, glOption, numberOfGifLoopsOption, encodingMaxRateOption, encodingBufferSizeOption, delayRenderTimeoutInMillisecondsOption, headlessOption, overwriteOption, binariesDirectoryOption, forSeamlessAacConcatenationOption, publicPathOption, publicDirOption, metadataOption, hardwareAccelerationOption, chromeModeOption, offthreadVideoThreadsOption, mediaCacheSizeInBytesOption, darkModeOption, askAIOption, experimentalClientSideRenderingOption, keyboardShortcutsOption, rspackOption, pixelFormatOption, browserExecutableOption, everyNthFrameOption, proResProfileOption, userAgentOption, disableWebSecurityOption, ignoreCertificateErrorsOption, concurrencyOption, overrideHeightOption, overrideWidthOption, overrideFpsOption, overrideDurationOption, bundleCacheOption, runsOption, } = client_1.BrowserSafeApis.options;
24
+ const { audioBitrateOption, x264Option, offthreadVideoCacheSizeInBytesOption, scaleOption, crfOption, jpegQualityOption, videoBitrateOption, enforceAudioOption, mutedOption, videoCodecOption, colorSpaceOption, disallowParallelEncodingOption, enableMultiprocessOnLinuxOption, glOption, numberOfGifLoopsOption, encodingMaxRateOption, encodingBufferSizeOption, delayRenderTimeoutInMillisecondsOption, headlessOption, overwriteOption, binariesDirectoryOption, forSeamlessAacConcatenationOption, publicPathOption, publicDirOption, metadataOption, hardwareAccelerationOption, chromeModeOption, offthreadVideoThreadsOption, mediaCacheSizeInBytesOption, darkModeOption, askAIOption, experimentalClientSideRenderingOption, experimentalVisualModeOption, keyboardShortcutsOption, rspackOption, pixelFormatOption, browserExecutableOption, everyNthFrameOption, proResProfileOption, userAgentOption, disableWebSecurityOption, ignoreCertificateErrorsOption, concurrencyOption, overrideHeightOption, overrideWidthOption, overrideFpsOption, overrideDurationOption, bundleCacheOption, runsOption, } = client_1.BrowserSafeApis.options;
25
25
  const getValidConcurrency = (cliConcurrency) => {
26
26
  const { concurrencies } = parsed_cli_1.parsedCli;
27
27
  if (!concurrencies) {
@@ -153,6 +153,9 @@ const benchmarkCommand = async (remotionRoot, args, logLevel) => {
153
153
  const experimentalClientSideRenderingEnabled = experimentalClientSideRenderingOption.getValue({
154
154
  commandLine: parsed_cli_1.parsedCli,
155
155
  }).value;
156
+ const experimentalVisualModeEnabled = experimentalVisualModeOption.getValue({
157
+ commandLine: parsed_cli_1.parsedCli,
158
+ }).value;
156
159
  const askAIEnabled = askAIOption.getValue({ commandLine: parsed_cli_1.parsedCli }).value;
157
160
  const keyboardShortcutsEnabled = keyboardShortcutsOption.getValue({
158
161
  commandLine: parsed_cli_1.parsedCli,
@@ -218,6 +221,7 @@ const benchmarkCommand = async (remotionRoot, args, logLevel) => {
218
221
  publicPath,
219
222
  audioLatencyHint: null,
220
223
  experimentalClientSideRenderingEnabled,
224
+ experimentalVisualModeEnabled,
221
225
  askAIEnabled,
222
226
  keyboardShortcutsEnabled,
223
227
  rspack,
package/dist/bundle.js CHANGED
@@ -17,7 +17,7 @@ const parsed_cli_1 = require("./parsed-cli");
17
17
  const setup_cache_1 = require("./setup-cache");
18
18
  const should_use_non_overlaying_logger_1 = require("./should-use-non-overlaying-logger");
19
19
  const yes_or_no_1 = require("./yes-or-no");
20
- const { publicPathOption, publicDirOption, disableGitSourceOption, audioLatencyHintOption, askAIOption, experimentalClientSideRenderingOption, keyboardShortcutsOption, rspackOption, outDirOption, bundleCacheOption, } = client_1.BrowserSafeApis.options;
20
+ const { publicPathOption, publicDirOption, disableGitSourceOption, audioLatencyHintOption, askAIOption, experimentalClientSideRenderingOption, experimentalVisualModeOption, keyboardShortcutsOption, rspackOption, outDirOption, bundleCacheOption, } = client_1.BrowserSafeApis.options;
21
21
  const bundleCommand = async (remotionRoot, args, logLevel) => {
22
22
  const { file, reason } = (0, entry_point_1.findEntryPoint)({
23
23
  args,
@@ -43,6 +43,9 @@ const bundleCommand = async (remotionRoot, args, logLevel) => {
43
43
  const experimentalClientSideRenderingEnabled = experimentalClientSideRenderingOption.getValue({
44
44
  commandLine: parsed_cli_1.parsedCli,
45
45
  }).value;
46
+ const experimentalVisualModeEnabled = experimentalVisualModeOption.getValue({
47
+ commandLine: parsed_cli_1.parsedCli,
48
+ }).value;
46
49
  const askAIEnabled = askAIOption.getValue({ commandLine: parsed_cli_1.parsedCli }).value;
47
50
  const keyboardShortcutsEnabled = keyboardShortcutsOption.getValue({
48
51
  commandLine: parsed_cli_1.parsedCli,
@@ -109,6 +112,7 @@ const bundleCommand = async (remotionRoot, args, logLevel) => {
109
112
  publicPath,
110
113
  audioLatencyHint,
111
114
  experimentalClientSideRenderingEnabled,
115
+ experimentalVisualModeEnabled,
112
116
  askAIEnabled,
113
117
  keyboardShortcutsEnabled,
114
118
  rspack,
@@ -13,7 +13,7 @@ const log_1 = require("./log");
13
13
  const parsed_cli_1 = require("./parsed-cli");
14
14
  const print_compositions_1 = require("./print-compositions");
15
15
  const setup_cache_1 = require("./setup-cache");
16
- const { enableMultiprocessOnLinuxOption, offthreadVideoCacheSizeInBytesOption, offthreadVideoThreadsOption, glOption, headlessOption, delayRenderTimeoutInMillisecondsOption, binariesDirectoryOption, publicPathOption, publicDirOption, chromeModeOption, audioLatencyHintOption, mediaCacheSizeInBytesOption, darkModeOption, askAIOption, experimentalClientSideRenderingOption, keyboardShortcutsOption, rspackOption, browserExecutableOption, userAgentOption, disableWebSecurityOption, ignoreCertificateErrorsOption, bundleCacheOption, } = client_1.BrowserSafeApis.options;
16
+ const { enableMultiprocessOnLinuxOption, offthreadVideoCacheSizeInBytesOption, offthreadVideoThreadsOption, glOption, headlessOption, delayRenderTimeoutInMillisecondsOption, binariesDirectoryOption, publicPathOption, publicDirOption, chromeModeOption, audioLatencyHintOption, mediaCacheSizeInBytesOption, darkModeOption, askAIOption, experimentalClientSideRenderingOption, experimentalVisualModeOption, keyboardShortcutsOption, rspackOption, browserExecutableOption, userAgentOption, disableWebSecurityOption, ignoreCertificateErrorsOption, bundleCacheOption, } = client_1.BrowserSafeApis.options;
17
17
  const listCompositionsCommand = async (remotionRoot, args, logLevel) => {
18
18
  const { file, reason } = (0, entry_point_1.findEntryPoint)({
19
19
  args,
@@ -82,6 +82,9 @@ const listCompositionsCommand = async (remotionRoot, args, logLevel) => {
82
82
  const experimentalClientSideRenderingEnabled = experimentalClientSideRenderingOption.getValue({
83
83
  commandLine: parsed_cli_1.parsedCli,
84
84
  }).value;
85
+ const experimentalVisualModeEnabled = experimentalVisualModeOption.getValue({
86
+ commandLine: parsed_cli_1.parsedCli,
87
+ }).value;
85
88
  const keyboardShortcutsEnabled = keyboardShortcutsOption.getValue({
86
89
  commandLine: parsed_cli_1.parsedCli,
87
90
  }).value;
@@ -112,6 +115,7 @@ const listCompositionsCommand = async (remotionRoot, args, logLevel) => {
112
115
  publicPath,
113
116
  audioLatencyHint,
114
117
  experimentalClientSideRenderingEnabled,
118
+ experimentalVisualModeEnabled,
115
119
  askAIEnabled,
116
120
  keyboardShortcutsEnabled,
117
121
  rspack,
@@ -67,6 +67,12 @@ declare global {
67
67
  * @default false
68
68
  */
69
69
  readonly setExperimentalRspackEnabled: (enabled: boolean) => void;
70
+ /**
71
+ * Nothing here yet, but this is our playground for experiments.
72
+ * @param enabled Boolean whether to enable experimental visual mode
73
+ * @default false
74
+ */
75
+ readonly setExperimentalVisualMode: (enabled: boolean) => void;
70
76
  /**
71
77
  * Set number of shared audio tags. https://www.remotion.dev/docs/player/autoplay#using-the-numberofsharedaudiotags-prop
72
78
  * @param numberOfAudioTags
@@ -20,7 +20,7 @@ const output_location_2 = require("./output-location");
20
20
  const override_webpack_2 = require("./override-webpack");
21
21
  const preview_server_2 = require("./preview-server");
22
22
  const webpack_poll_1 = require("./webpack-poll");
23
- const { concurrencyOption, offthreadVideoCacheSizeInBytesOption, x264Option, audioBitrateOption, videoBitrateOption, scaleOption, crfOption, jpegQualityOption, enforceAudioOption, overwriteOption, chromeModeOption, mutedOption, videoCodecOption, colorSpaceOption, disallowParallelEncodingOption, deleteAfterOption, folderExpiryOption, enableMultiprocessOnLinuxOption, glOption, headlessOption, numberOfGifLoopsOption, beepOnFinishOption, encodingMaxRateOption, encodingBufferSizeOption, reproOption, enableLambdaInsights, logLevelOption, delayRenderTimeoutInMillisecondsOption, publicDirOption, binariesDirectoryOption, preferLosslessOption, framesOption, forSeamlessAacConcatenationOption, audioCodecOption, publicPathOption, hardwareAccelerationOption, audioLatencyHintOption, enableCrossSiteIsolationOption, imageSequencePatternOption, darkModeOption, askAIOption, publicLicenseKeyOption, experimentalClientSideRenderingOption, 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, } = client_1.BrowserSafeApis.options;
23
+ const { concurrencyOption, offthreadVideoCacheSizeInBytesOption, x264Option, audioBitrateOption, videoBitrateOption, scaleOption, crfOption, jpegQualityOption, enforceAudioOption, overwriteOption, chromeModeOption, mutedOption, videoCodecOption, colorSpaceOption, disallowParallelEncodingOption, deleteAfterOption, folderExpiryOption, enableMultiprocessOnLinuxOption, glOption, headlessOption, numberOfGifLoopsOption, beepOnFinishOption, encodingMaxRateOption, encodingBufferSizeOption, reproOption, enableLambdaInsights, logLevelOption, delayRenderTimeoutInMillisecondsOption, publicDirOption, binariesDirectoryOption, preferLosslessOption, framesOption, forSeamlessAacConcatenationOption, audioCodecOption, publicPathOption, hardwareAccelerationOption, audioLatencyHintOption, enableCrossSiteIsolationOption, imageSequencePatternOption, darkModeOption, askAIOption, publicLicenseKeyOption, experimentalClientSideRenderingOption, experimentalVisualModeOption, 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, } = client_1.BrowserSafeApis.options;
24
24
  exports.Config = {
25
25
  get Bundling() {
26
26
  throw new Error('The config format has changed. Change `Config.Bundling.*()` calls to `Config.*()` in your config file.');
@@ -44,6 +44,7 @@ exports.Config = {
44
44
  setKeyboardShortcutsEnabled: keyboardShortcutsOption.setConfig,
45
45
  setExperimentalClientSideRenderingEnabled: experimentalClientSideRenderingOption.setConfig,
46
46
  setExperimentalRspackEnabled: rspackOption.setConfig,
47
+ setExperimentalVisualMode: experimentalVisualModeOption.setConfig,
47
48
  setNumberOfSharedAudioTags: numberOfSharedAudioTagsOption.setConfig,
48
49
  setWebpackPollingInMilliseconds: webpackPollOption.setConfig,
49
50
  setShouldOpenBrowser: noOpenOption.setConfig,
@@ -3,9 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.EXTRA_PACKAGES_DOCS = exports.EXTRA_PACKAGES = void 0;
4
4
  exports.EXTRA_PACKAGES = {
5
5
  mediabunny: '1.34.4',
6
+ '@mediabunny/ac3': '1.34.4',
6
7
  zod: '4.3.6',
7
8
  };
8
9
  exports.EXTRA_PACKAGES_DOCS = {
9
10
  mediabunny: 'https://www.remotion.dev/docs/mediabunny/version',
11
+ '@mediabunny/ac3': 'https://www.remotion.dev/docs/mediabunny/formats#ac-3-and-e-ac-3',
10
12
  zod: 'https://zod.dev',
11
13
  };
@@ -660,6 +660,21 @@ declare const beepOnFinishOption: {
660
660
  };
661
661
  setConfig(value: boolean): void;
662
662
  id: "enable-experimental-client-side-rendering";
663
+ }, experimentalVisualModeOption: {
664
+ name: string;
665
+ cliFlag: "experimental-visual-mode";
666
+ description: () => import("react/jsx-runtime").JSX.Element;
667
+ ssrName: null;
668
+ docLink: string;
669
+ type: boolean;
670
+ getValue: ({ commandLine }: {
671
+ commandLine: Record<string, unknown>;
672
+ }) => {
673
+ value: boolean;
674
+ source: string;
675
+ };
676
+ setConfig(value: boolean): void;
677
+ id: "experimental-visual-mode";
663
678
  }, imageSequencePatternOption: {
664
679
  name: string;
665
680
  cliFlag: "image-sequence-pattern";
@@ -1074,6 +1089,7 @@ export type CommandLineOptions = {
1074
1089
  [headlessOption.cliFlag]: TypeOfOption<typeof headlessOption>;
1075
1090
  [keyboardShortcutsOption.cliFlag]: TypeOfOption<typeof keyboardShortcutsOption>;
1076
1091
  [experimentalClientSideRenderingOption.cliFlag]: TypeOfOption<typeof experimentalClientSideRenderingOption>;
1092
+ [experimentalVisualModeOption.cliFlag]: TypeOfOption<typeof experimentalVisualModeOption>;
1077
1093
  [mutedOption.cliFlag]: TypeOfOption<typeof mutedOption>;
1078
1094
  [overrideHeightOption.cliFlag]: TypeOfOption<typeof overrideHeightOption>;
1079
1095
  [overrideWidthOption.cliFlag]: TypeOfOption<typeof overrideWidthOption>;
@@ -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 { 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, experimentalClientSideRenderingOption, imageSequencePatternOption, scaleOption, overwriteOption, crfOption, logLevelOption, videoCodecOption, stillFrameOption, imageSequenceOption, versionFlagOption, bundleCacheOption, envFileOption, glOption, runsOption, reproOption, mutedOption, headlessOption, disableGitSourceOption, framesOption, forSeamlessAacConcatenationOption, isProductionOption, noOpenOption, portOption, propsOption, configOption, browserOption, } = client_1.BrowserSafeApis.options;
9
+ const { 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, experimentalClientSideRenderingOption, experimentalVisualModeOption, imageSequencePatternOption, scaleOption, overwriteOption, crfOption, logLevelOption, videoCodecOption, stillFrameOption, imageSequenceOption, versionFlagOption, bundleCacheOption, envFileOption, glOption, runsOption, reproOption, mutedOption, headlessOption, disableGitSourceOption, framesOption, forSeamlessAacConcatenationOption, isProductionOption, noOpenOption, portOption, propsOption, configOption, browserOption, } = client_1.BrowserSafeApis.options;
10
10
  exports.BooleanFlags = [
11
11
  overwriteOption.cliFlag,
12
12
  imageSequenceOption.cliFlag,
@@ -21,6 +21,7 @@ exports.BooleanFlags = [
21
21
  headlessOption.cliFlag,
22
22
  keyboardShortcutsOption.cliFlag,
23
23
  experimentalClientSideRenderingOption.cliFlag,
24
+ experimentalVisualModeOption.cliFlag,
24
25
  ipv4Option.cliFlag,
25
26
  beepOnFinishOption.cliFlag,
26
27
  disableGitSourceOption.cliFlag,
@@ -37,6 +38,7 @@ exports.parsedCli = (0, minimist_1.default)(process.argv.slice(2), {
37
38
  [overwriteOption.cliFlag]: true,
38
39
  [bundleCacheOption.cliFlag]: null,
39
40
  [experimentalClientSideRenderingOption.cliFlag]: null,
41
+ [experimentalVisualModeOption.cliFlag]: null,
40
42
  [mutedOption.cliFlag]: null,
41
43
  },
42
44
  });
@@ -1,6 +1,6 @@
1
1
  import type { BrowserExecutable, CancelSignal, ChromiumOptions, Crf, FfmpegOverrideFn, FrameRange, NumberOfGifLoops } from '@remotion/renderer';
2
2
  import type { JobProgressCallback } from '@remotion/studio-server';
3
- 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, 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, experimentalClientSideRenderingEnabled, keyboardShortcutsEnabled, shouldCache, }: {
3
+ 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, 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, experimentalClientSideRenderingEnabled, experimentalVisualModeEnabled, keyboardShortcutsEnabled, shouldCache, }: {
4
4
  remotionRoot: string;
5
5
  fullEntryPoint: string;
6
6
  entryPointReason: string;
@@ -65,6 +65,7 @@ export declare const renderVideoFlow: ({ remotionRoot, fullEntryPoint, indent, l
65
65
  rspack: boolean;
66
66
  askAIEnabled: boolean;
67
67
  experimentalClientSideRenderingEnabled: boolean;
68
+ experimentalVisualModeEnabled: boolean;
68
69
  keyboardShortcutsEnabled: boolean;
69
70
  shouldCache: boolean;
70
71
  }) => Promise<void>;
@@ -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, 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, rspack, askAIEnabled, experimentalClientSideRenderingEnabled, keyboardShortcutsEnabled, shouldCache, }) => {
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, rspack, askAIEnabled, experimentalClientSideRenderingEnabled, experimentalVisualModeEnabled, keyboardShortcutsEnabled, shouldCache, }) => {
66
66
  var _a;
67
67
  renderer_1.RenderInternals.validateConcurrency({
68
68
  value: concurrency,
@@ -188,6 +188,7 @@ const renderVideoFlow = async ({ remotionRoot, fullEntryPoint, indent, logLevel,
188
188
  publicPath,
189
189
  audioLatencyHint,
190
190
  experimentalClientSideRenderingEnabled,
191
+ experimentalVisualModeEnabled,
191
192
  askAIEnabled,
192
193
  keyboardShortcutsEnabled,
193
194
  rspack,
@@ -1,6 +1,6 @@
1
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, 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, rspack, askAIEnabled, experimentalClientSideRenderingEnabled, keyboardShortcutsEnabled, shouldCache, }: {
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, rspack, askAIEnabled, experimentalClientSideRenderingEnabled, experimentalVisualModeEnabled, keyboardShortcutsEnabled, shouldCache, }: {
4
4
  remotionRoot: string;
5
5
  fullEntryPoint: string;
6
6
  entryPointReason: string;
@@ -39,6 +39,7 @@ export declare const renderStillFlow: ({ remotionRoot, fullEntryPoint, entryPoin
39
39
  rspack: boolean;
40
40
  askAIEnabled: boolean;
41
41
  experimentalClientSideRenderingEnabled: boolean;
42
+ experimentalVisualModeEnabled: boolean;
42
43
  keyboardShortcutsEnabled: boolean;
43
44
  shouldCache: boolean;
44
45
  }) => Promise<void>;
@@ -28,7 +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, 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, rspack, askAIEnabled, experimentalClientSideRenderingEnabled, keyboardShortcutsEnabled, shouldCache, }) => {
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, rspack, askAIEnabled, experimentalClientSideRenderingEnabled, experimentalVisualModeEnabled, keyboardShortcutsEnabled, shouldCache, }) => {
32
32
  const isVerbose = renderer_1.RenderInternals.isEqualOrBelowLogLevel(logLevel, 'verbose');
33
33
  log_1.Log.verbose({ indent, logLevel }, chalk_1.chalk.gray(`Entry point = ${fullEntryPoint} (${entryPointReason})`));
34
34
  const aggregate = (0, progress_types_1.initialAggregateRenderProgress)();
@@ -110,6 +110,7 @@ const renderStillFlow = async ({ remotionRoot, fullEntryPoint, entryPointReason,
110
110
  publicPath,
111
111
  audioLatencyHint,
112
112
  experimentalClientSideRenderingEnabled,
113
+ experimentalVisualModeEnabled,
113
114
  askAIEnabled,
114
115
  keyboardShortcutsEnabled,
115
116
  rspack,
@@ -6,7 +6,7 @@ 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
7
  const parsed_cli_1 = require("../parsed-cli");
8
8
  const still_1 = require("../render-flows/still");
9
- const { publicDirOption, askAIOption, experimentalClientSideRenderingOption, keyboardShortcutsOption, rspackOption, browserExecutableOption, bundleCacheOption, } = client_1.BrowserSafeApis.options;
9
+ const { publicDirOption, askAIOption, experimentalClientSideRenderingOption, experimentalVisualModeOption, keyboardShortcutsOption, rspackOption, browserExecutableOption, bundleCacheOption, } = client_1.BrowserSafeApis.options;
10
10
  const processStill = async ({ job, remotionRoot, entryPoint, onProgress, addCleanupCallback, }) => {
11
11
  if (job.type !== 'still') {
12
12
  throw new Error('Expected still job');
@@ -21,6 +21,9 @@ const processStill = async ({ job, remotionRoot, entryPoint, onProgress, addClea
21
21
  const experimentalClientSideRenderingEnabled = experimentalClientSideRenderingOption.getValue({
22
22
  commandLine: parsed_cli_1.parsedCli,
23
23
  }).value;
24
+ const experimentalVisualModeEnabled = experimentalVisualModeOption.getValue({
25
+ commandLine: parsed_cli_1.parsedCli,
26
+ }).value;
24
27
  const keyboardShortcutsEnabled = keyboardShortcutsOption.getValue({
25
28
  commandLine: parsed_cli_1.parsedCli,
26
29
  }).value;
@@ -67,6 +70,7 @@ const processStill = async ({ job, remotionRoot, entryPoint, onProgress, addClea
67
70
  mediaCacheSizeInBytes: job.mediaCacheSizeInBytes,
68
71
  askAIEnabled,
69
72
  experimentalClientSideRenderingEnabled,
73
+ experimentalVisualModeEnabled,
70
74
  keyboardShortcutsEnabled,
71
75
  rspack,
72
76
  shouldCache,
@@ -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, rspackOption, browserExecutableOption, bundleCacheOption, } = client_1.BrowserSafeApis.options;
10
+ const { publicDirOption, askAIOption, experimentalClientSideRenderingOption, experimentalVisualModeOption, keyboardShortcutsOption, rspackOption, browserExecutableOption, bundleCacheOption, } = 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') {
@@ -98,6 +98,9 @@ const processVideoJob = async ({ job, remotionRoot, entryPoint, onProgress, addC
98
98
  askAIEnabled,
99
99
  experimentalClientSideRenderingEnabled: experimentalClientSideRenderingOption.getValue({ commandLine: parsed_cli_1.parsedCli })
100
100
  .value,
101
+ experimentalVisualModeEnabled: experimentalVisualModeOption.getValue({
102
+ commandLine: parsed_cli_1.parsedCli,
103
+ }).value,
101
104
  keyboardShortcutsEnabled,
102
105
  rspack,
103
106
  shouldCache,
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, rspackOption, pixelFormatOption, browserExecutableOption, everyNthFrameOption, proResProfileOption, userAgentOption, disableWebSecurityOption, ignoreCertificateErrorsOption, concurrencyOption, overrideHeightOption, overrideWidthOption, overrideFpsOption, overrideDurationOption, bundleCacheOption, } = 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, experimentalVisualModeOption, keyboardShortcutsOption, rspackOption, pixelFormatOption, browserExecutableOption, everyNthFrameOption, proResProfileOption, userAgentOption, disableWebSecurityOption, ignoreCertificateErrorsOption, concurrencyOption, overrideHeightOption, overrideWidthOption, overrideFpsOption, overrideDurationOption, bundleCacheOption, } = 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) {
@@ -162,6 +162,9 @@ const render = async (remotionRoot, args, logLevel) => {
162
162
  const experimentalClientSideRenderingEnabled = experimentalClientSideRenderingOption.getValue({
163
163
  commandLine: parsed_cli_1.parsedCli,
164
164
  }).value;
165
+ const experimentalVisualModeEnabled = experimentalVisualModeOption.getValue({
166
+ commandLine: parsed_cli_1.parsedCli,
167
+ }).value;
165
168
  await (0, render_1.renderVideoFlow)({
166
169
  fullEntryPoint,
167
170
  remotionRoot,
@@ -232,6 +235,7 @@ const render = async (remotionRoot, args, logLevel) => {
232
235
  imageSequencePattern,
233
236
  askAIEnabled,
234
237
  experimentalClientSideRenderingEnabled,
238
+ experimentalVisualModeEnabled,
235
239
  keyboardShortcutsEnabled,
236
240
  rspack,
237
241
  shouldCache,
@@ -1,6 +1,6 @@
1
1
  import type { BundlingState, CopyingState } from '@remotion/studio-server';
2
2
  import type { GitSource } from '@remotion/studio-shared';
3
- export declare const bundleOnCliOrTakeServeUrl: ({ fullPath, remotionRoot, publicDir, onProgress, indentOutput, logLevel, onDirectoryCreated, quietProgress, quietFlag, outDir, gitSource, bufferStateDelayInMilliseconds, maxTimelineTracks, publicPath, audioLatencyHint, experimentalClientSideRenderingEnabled, askAIEnabled, keyboardShortcutsEnabled, rspack, shouldCache, }: {
3
+ export declare const bundleOnCliOrTakeServeUrl: ({ fullPath, remotionRoot, publicDir, onProgress, indentOutput, logLevel, onDirectoryCreated, quietProgress, quietFlag, outDir, gitSource, bufferStateDelayInMilliseconds, maxTimelineTracks, publicPath, audioLatencyHint, experimentalClientSideRenderingEnabled, experimentalVisualModeEnabled, askAIEnabled, keyboardShortcutsEnabled, rspack, shouldCache, }: {
4
4
  fullPath: string;
5
5
  remotionRoot: string;
6
6
  publicDir: string | null;
@@ -20,6 +20,7 @@ export declare const bundleOnCliOrTakeServeUrl: ({ fullPath, remotionRoot, publi
20
20
  publicPath: string | null;
21
21
  audioLatencyHint: AudioContextLatencyCategory | null;
22
22
  experimentalClientSideRenderingEnabled: boolean;
23
+ experimentalVisualModeEnabled: boolean;
23
24
  askAIEnabled: boolean;
24
25
  keyboardShortcutsEnabled: boolean;
25
26
  rspack: boolean;
@@ -28,7 +29,7 @@ export declare const bundleOnCliOrTakeServeUrl: ({ fullPath, remotionRoot, publi
28
29
  urlOrBundle: string;
29
30
  cleanup: () => void;
30
31
  }>;
31
- export declare const bundleOnCli: ({ fullPath, remotionRoot, publicDir, onProgressCallback, indent, logLevel, onDirectoryCreated, quietProgress, quietFlag, outDir, gitSource, maxTimelineTracks, bufferStateDelayInMilliseconds, publicPath, audioLatencyHint, experimentalClientSideRenderingEnabled, askAIEnabled, keyboardShortcutsEnabled, rspack, shouldCache, }: {
32
+ export declare const bundleOnCli: ({ fullPath, remotionRoot, publicDir, onProgressCallback, indent, logLevel, onDirectoryCreated, quietProgress, quietFlag, outDir, gitSource, maxTimelineTracks, bufferStateDelayInMilliseconds, publicPath, audioLatencyHint, experimentalClientSideRenderingEnabled, experimentalVisualModeEnabled, askAIEnabled, keyboardShortcutsEnabled, rspack, shouldCache, }: {
32
33
  fullPath: string;
33
34
  remotionRoot: string;
34
35
  publicDir: string | null;
@@ -48,6 +49,7 @@ export declare const bundleOnCli: ({ fullPath, remotionRoot, publicDir, onProgre
48
49
  publicPath: string | null;
49
50
  audioLatencyHint: AudioContextLatencyCategory | null;
50
51
  experimentalClientSideRenderingEnabled: boolean;
52
+ experimentalVisualModeEnabled: boolean;
51
53
  keyboardShortcutsEnabled: boolean;
52
54
  askAIEnabled: boolean;
53
55
  rspack: boolean;
@@ -13,7 +13,7 @@ const get_render_defaults_1 = require("./get-render-defaults");
13
13
  const log_1 = require("./log");
14
14
  const progress_bar_1 = require("./progress-bar");
15
15
  const should_use_non_overlaying_logger_1 = require("./should-use-non-overlaying-logger");
16
- const bundleOnCliOrTakeServeUrl = async ({ fullPath, remotionRoot, publicDir, onProgress, indentOutput, logLevel, onDirectoryCreated, quietProgress, quietFlag, outDir, gitSource, bufferStateDelayInMilliseconds, maxTimelineTracks, publicPath, audioLatencyHint, experimentalClientSideRenderingEnabled, askAIEnabled, keyboardShortcutsEnabled, rspack, shouldCache, }) => {
16
+ const bundleOnCliOrTakeServeUrl = async ({ fullPath, remotionRoot, publicDir, onProgress, indentOutput, logLevel, onDirectoryCreated, quietProgress, quietFlag, outDir, gitSource, bufferStateDelayInMilliseconds, maxTimelineTracks, publicPath, audioLatencyHint, experimentalClientSideRenderingEnabled, experimentalVisualModeEnabled, askAIEnabled, keyboardShortcutsEnabled, rspack, shouldCache, }) => {
17
17
  const isServeUrl = renderer_1.RenderInternals.isServeUrl(fullPath);
18
18
  const isBundle = (0, fs_1.existsSync)(fullPath) && (0, fs_1.existsSync)(path_1.default.join(fullPath, 'index.html'));
19
19
  if (isServeUrl || isBundle) {
@@ -49,6 +49,7 @@ const bundleOnCliOrTakeServeUrl = async ({ fullPath, remotionRoot, publicDir, on
49
49
  publicPath,
50
50
  audioLatencyHint,
51
51
  experimentalClientSideRenderingEnabled,
52
+ experimentalVisualModeEnabled,
52
53
  askAIEnabled,
53
54
  keyboardShortcutsEnabled,
54
55
  rspack,
@@ -60,7 +61,7 @@ const bundleOnCliOrTakeServeUrl = async ({ fullPath, remotionRoot, publicDir, on
60
61
  };
61
62
  };
62
63
  exports.bundleOnCliOrTakeServeUrl = bundleOnCliOrTakeServeUrl;
63
- const bundleOnCli = async ({ fullPath, remotionRoot, publicDir, onProgressCallback, indent, logLevel, onDirectoryCreated, quietProgress, quietFlag, outDir, gitSource, maxTimelineTracks, bufferStateDelayInMilliseconds, publicPath, audioLatencyHint, experimentalClientSideRenderingEnabled, askAIEnabled, keyboardShortcutsEnabled, rspack, shouldCache, }) => {
64
+ const bundleOnCli = async ({ fullPath, remotionRoot, publicDir, onProgressCallback, indent, logLevel, onDirectoryCreated, quietProgress, quietFlag, outDir, gitSource, maxTimelineTracks, bufferStateDelayInMilliseconds, publicPath, audioLatencyHint, experimentalClientSideRenderingEnabled, experimentalVisualModeEnabled, askAIEnabled, keyboardShortcutsEnabled, rspack, shouldCache, }) => {
64
65
  var _a;
65
66
  const symlinkState = {
66
67
  symlinks: [],
@@ -124,6 +125,7 @@ const bundleOnCli = async ({ fullPath, remotionRoot, publicDir, onProgressCallba
124
125
  bufferStateDelayInMilliseconds,
125
126
  maxTimelineTracks,
126
127
  experimentalClientSideRenderingEnabled,
128
+ experimentalVisualModeEnabled,
127
129
  });
128
130
  const cacheExistedBefore = bundler_1.BundlerInternals.cacheExists(remotionRoot, 'production', hash);
129
131
  if (cacheExistedBefore !== 'does-not-exist' && !shouldCache) {
@@ -162,6 +164,7 @@ const bundleOnCli = async ({ fullPath, remotionRoot, publicDir, onProgressCallba
162
164
  bufferStateDelayInMilliseconds,
163
165
  audioLatencyHint,
164
166
  experimentalClientSideRenderingEnabled,
167
+ experimentalVisualModeEnabled,
165
168
  renderDefaults: (0, get_render_defaults_1.getRenderDefaults)(),
166
169
  });
167
170
  bundlingState = {
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, rspackOption, browserExecutableOption, userAgentOption, disableWebSecurityOption, ignoreCertificateErrorsOption, overrideHeightOption, overrideWidthOption, overrideFpsOption, overrideDurationOption, bundleCacheOption, } = client_1.BrowserSafeApis.options;
14
+ const { offthreadVideoCacheSizeInBytesOption, scaleOption, jpegQualityOption, enableMultiprocessOnLinuxOption, glOption, delayRenderTimeoutInMillisecondsOption, headlessOption, overwriteOption, binariesDirectoryOption, publicPathOption, publicDirOption, chromeModeOption, offthreadVideoThreadsOption, audioLatencyHintOption, mediaCacheSizeInBytesOption, darkModeOption, askAIOption, experimentalClientSideRenderingOption, experimentalVisualModeOption, keyboardShortcutsOption, rspackOption, browserExecutableOption, userAgentOption, disableWebSecurityOption, ignoreCertificateErrorsOption, overrideHeightOption, overrideWidthOption, overrideFpsOption, overrideDurationOption, bundleCacheOption, } = 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) {
@@ -154,6 +154,9 @@ const still = async (remotionRoot, args, logLevel) => {
154
154
  askAIEnabled,
155
155
  experimentalClientSideRenderingEnabled: experimentalClientSideRenderingOption.getValue({ commandLine: parsed_cli_1.parsedCli })
156
156
  .value,
157
+ experimentalVisualModeEnabled: experimentalVisualModeOption.getValue({
158
+ commandLine: parsed_cli_1.parsedCli,
159
+ }).value,
157
160
  keyboardShortcutsEnabled,
158
161
  rspack,
159
162
  shouldCache,
package/dist/studio.js CHANGED
@@ -13,7 +13,7 @@ const get_render_defaults_1 = require("./get-render-defaults");
13
13
  const log_1 = require("./log");
14
14
  const parsed_cli_1 = require("./parsed-cli");
15
15
  const queue_1 = require("./render-queue/queue");
16
- const { binariesDirectoryOption, publicDirOption, disableGitSourceOption, enableCrossSiteIsolationOption, askAIOption, experimentalClientSideRenderingOption, keyboardShortcutsOption, forceNewStudioOption, numberOfSharedAudioTagsOption, audioLatencyHintOption, ipv4Option, rspackOption, webpackPollOption, noOpenOption, portOption, browserOption, } = client_1.BrowserSafeApis.options;
16
+ const { binariesDirectoryOption, publicDirOption, disableGitSourceOption, enableCrossSiteIsolationOption, askAIOption, experimentalClientSideRenderingOption, experimentalVisualModeOption, keyboardShortcutsOption, forceNewStudioOption, numberOfSharedAudioTagsOption, audioLatencyHintOption, ipv4Option, rspackOption, webpackPollOption, noOpenOption, portOption, browserOption, } = client_1.BrowserSafeApis.options;
17
17
  const studioCommand = async (remotionRoot, args, logLevel) => {
18
18
  var _a, _b, _c;
19
19
  const { file, reason } = (0, entry_point_1.findEntryPoint)({
@@ -78,6 +78,12 @@ const studioCommand = async (remotionRoot, args, logLevel) => {
78
78
  if (useRspack) {
79
79
  log_1.Log.warn({ indent: false, logLevel }, 'Enabling experimental Rspack bundler.');
80
80
  }
81
+ const useVisualMode = experimentalVisualModeOption.getValue({
82
+ commandLine: parsed_cli_1.parsedCli,
83
+ }).value;
84
+ if (useVisualMode) {
85
+ log_1.Log.warn({ indent: false, logLevel }, 'Enabling experimental visual mode.');
86
+ }
81
87
  const result = await studio_server_1.StudioServerInternals.startStudio({
82
88
  previewEntry: require.resolve('@remotion/studio/previewEntry'),
83
89
  browserArgs: parsed_cli_1.parsedCli['browser-args'],
@@ -90,6 +96,7 @@ const studioCommand = async (remotionRoot, args, logLevel) => {
90
96
  desiredPort,
91
97
  keyboardShortcutsEnabled,
92
98
  experimentalClientSideRenderingEnabled,
99
+ experimentalVisualModeEnabled: useVisualMode,
93
100
  maxTimelineTracks: config_1.ConfigInternals.getMaxTimelineTracks(),
94
101
  remotionRoot,
95
102
  relativePublicDir,
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.427",
6
+ "version": "4.0.428",
7
7
  "description": "Control Remotion features using the `npx remotion` command",
8
8
  "main": "dist/index.js",
9
9
  "sideEffects": false,
@@ -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.427",
40
- "@remotion/media-utils": "4.0.427",
41
- "@remotion/player": "4.0.427",
42
- "@remotion/renderer": "4.0.427",
43
- "@remotion/studio-shared": "4.0.427",
44
- "@remotion/studio-server": "4.0.427",
45
- "@remotion/studio": "4.0.427",
39
+ "@remotion/bundler": "4.0.428",
40
+ "@remotion/media-utils": "4.0.428",
41
+ "@remotion/player": "4.0.428",
42
+ "@remotion/renderer": "4.0.428",
43
+ "@remotion/studio-shared": "4.0.428",
44
+ "@remotion/studio-server": "4.0.428",
45
+ "@remotion/studio": "4.0.428",
46
46
  "dotenv": "17.3.1",
47
47
  "minimist": "1.2.6",
48
48
  "prompts": "2.4.2",
49
- "remotion": "4.0.427"
49
+ "remotion": "4.0.428"
50
50
  },
51
51
  "peerDependencies": {
52
52
  "react": ">=16.8.0",
@@ -57,14 +57,14 @@
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.427",
61
- "@remotion/tailwind-v4": "4.0.427",
62
- "@remotion/enable-scss": "4.0.427",
63
- "@remotion/skia": "4.0.427",
60
+ "@remotion/zod-types": "4.0.428",
61
+ "@remotion/tailwind-v4": "4.0.428",
62
+ "@remotion/enable-scss": "4.0.428",
63
+ "@remotion/skia": "4.0.428",
64
64
  "react": "19.2.3",
65
65
  "react-dom": "19.2.3",
66
66
  "zod": "4.3.6",
67
- "@remotion/eslint-config-internal": "4.0.427",
67
+ "@remotion/eslint-config-internal": "4.0.428",
68
68
  "eslint": "9.19.0",
69
69
  "@typescript/native-preview": "7.0.0-dev.20260217.1"
70
70
  },
@@ -1,4 +0,0 @@
1
- export declare const setStillImageFormat: (format: "jpeg" | "pdf" | "png" | "webp") => void;
2
- export declare const setVideoImageFormat: (format: "jpeg" | "none" | "png") => void;
3
- export declare const getUserPreferredStillImageFormat: () => "jpeg" | "pdf" | "png" | "webp" | undefined;
4
- export declare const getUserPreferredVideoImageFormat: () => "jpeg" | "none" | "png" | undefined;
@@ -1,49 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getUserPreferredVideoImageFormat = exports.getUserPreferredStillImageFormat = exports.setVideoImageFormat = exports.setStillImageFormat = void 0;
4
- const renderer_1 = require("@remotion/renderer");
5
- const truthy_1 = require("../truthy");
6
- let currentStillImageFormat;
7
- let currentVideoImageFormat;
8
- const setStillImageFormat = (format) => {
9
- if (typeof format === 'undefined') {
10
- currentStillImageFormat = undefined;
11
- return;
12
- }
13
- if (!renderer_1.RenderInternals.validStillImageFormats.includes(format)) {
14
- throw new TypeError([
15
- `Value ${format} is not valid as an image format.`,
16
- // @ts-expect-error
17
- format === 'jpg' ? 'Did you mean "jpeg"?' : null,
18
- ]
19
- .filter(truthy_1.truthy)
20
- .join(' '));
21
- }
22
- currentStillImageFormat = format;
23
- };
24
- exports.setStillImageFormat = setStillImageFormat;
25
- const setVideoImageFormat = (format) => {
26
- if (typeof format === 'undefined') {
27
- currentVideoImageFormat = undefined;
28
- return;
29
- }
30
- if (!renderer_1.RenderInternals.validVideoImageFormats.includes(format)) {
31
- throw new TypeError([
32
- `Value ${format} is not valid as a video image format.`,
33
- // @ts-expect-error
34
- format === 'jpg' ? 'Did you mean "jpeg"?' : null,
35
- ]
36
- .filter(truthy_1.truthy)
37
- .join(' '));
38
- }
39
- currentVideoImageFormat = format;
40
- };
41
- exports.setVideoImageFormat = setVideoImageFormat;
42
- const getUserPreferredStillImageFormat = () => {
43
- return currentStillImageFormat;
44
- };
45
- exports.getUserPreferredStillImageFormat = getUserPreferredStillImageFormat;
46
- const getUserPreferredVideoImageFormat = () => {
47
- return currentVideoImageFormat;
48
- };
49
- exports.getUserPreferredVideoImageFormat = getUserPreferredVideoImageFormat;
@@ -1,2 +0,0 @@
1
- export declare const getNumberOfSharedAudioTags: () => number;
2
- export declare const setNumberOfSharedAudioTags: (audioTags: number) => void;
@@ -1,12 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.setNumberOfSharedAudioTags = exports.getNumberOfSharedAudioTags = void 0;
4
- let numberOfSharedAudioTags = 0;
5
- const getNumberOfSharedAudioTags = () => {
6
- return numberOfSharedAudioTags;
7
- };
8
- exports.getNumberOfSharedAudioTags = getNumberOfSharedAudioTags;
9
- const setNumberOfSharedAudioTags = (audioTags) => {
10
- numberOfSharedAudioTags = audioTags;
11
- };
12
- exports.setNumberOfSharedAudioTags = setNumberOfSharedAudioTags;
@@ -1,9 +0,0 @@
1
- type RemotionDetectionResult = {
2
- type: 'match';
3
- } | {
4
- type: 'mismatch';
5
- } | {
6
- type: 'not-remotion';
7
- };
8
- export declare const detectRemotionServer: (port: number, cwd: string) => Promise<RemotionDetectionResult>;
9
- export {};
@@ -1,45 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.detectRemotionServer = void 0;
7
- const http_1 = __importDefault(require("http"));
8
- const detectRemotionServer = (port, cwd) => {
9
- return new Promise((resolve) => {
10
- const req = http_1.default.get({
11
- hostname: 'localhost',
12
- port,
13
- path: '/__remotion_config',
14
- timeout: 1000,
15
- }, (res) => {
16
- let data = '';
17
- res.on('data', (chunk) => {
18
- data += chunk;
19
- });
20
- res.on('end', () => {
21
- try {
22
- const json = JSON.parse(data);
23
- if ((json === null || json === void 0 ? void 0 : json.isRemotion) !== true) {
24
- return resolve({ type: 'not-remotion' });
25
- }
26
- // Normalize paths for comparison to avoid issues with different separators or casing on Windows
27
- const normalize = (p) => p.replace(/\\/g, '/').toLowerCase();
28
- if (normalize(json.cwd) === normalize(cwd)) {
29
- return resolve({ type: 'match' });
30
- }
31
- return resolve({ type: 'mismatch' });
32
- }
33
- catch (_a) {
34
- resolve({ type: 'not-remotion' });
35
- }
36
- });
37
- });
38
- req.on('error', () => resolve({ type: 'not-remotion' }));
39
- req.on('timeout', () => {
40
- req.destroy();
41
- resolve({ type: 'not-remotion' });
42
- });
43
- });
44
- };
45
- exports.detectRemotionServer = detectRemotionServer;
@@ -1 +0,0 @@
1
- export declare const isPortOpen: (port: number) => Promise<boolean>;
@@ -1,24 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isPortOpen = void 0;
4
- const net_1 = require("net");
5
- const isPortOpen = (port) => {
6
- return new Promise((resolve, reject) => {
7
- const server = (0, net_1.createServer)();
8
- server.once('error', (err) => {
9
- if (err.code === 'EADDRINUSE') {
10
- resolve(false);
11
- }
12
- else {
13
- reject(err);
14
- }
15
- });
16
- server.once('listening', () => {
17
- server.close(() => {
18
- resolve(true);
19
- });
20
- });
21
- server.listen(port);
22
- });
23
- };
24
- exports.isPortOpen = isPortOpen;