@remotion/cli 4.0.119 → 4.0.120

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 should_use_non_overlaying_logger_1 = require("./should-use-non-overlaying-
21
21
  const show_compositions_picker_1 = require("./show-compositions-picker");
22
22
  const truthy_1 = require("./truthy");
23
23
  const DEFAULT_RUNS = 3;
24
- const { audioBitrateOption, x264Option, offthreadVideoCacheSizeInBytesOption, scaleOption, crfOption, jpegQualityOption, videoBitrateOption, enforceAudioOption, mutedOption, videoCodecOption, colorSpaceOption, enableMultiprocessOnLinuxOption, glOption, numberOfGifLoopsOption, encodingMaxRateOption, encodingBufferSizeOption, delayRenderTimeoutInMillisecondsOption, headlessOption, overwriteOption, } = client_1.BrowserSafeApis.options;
24
+ const { audioBitrateOption, x264Option, offthreadVideoCacheSizeInBytesOption, scaleOption, crfOption, jpegQualityOption, videoBitrateOption, enforceAudioOption, mutedOption, videoCodecOption, colorSpaceOption, enableMultiprocessOnLinuxOption, glOption, numberOfGifLoopsOption, encodingMaxRateOption, encodingBufferSizeOption, delayRenderTimeoutInMillisecondsOption, headlessOption, overwriteOption, binariesDirectoryOption, } = client_1.BrowserSafeApis.options;
25
25
  const getValidConcurrency = (cliConcurrency) => {
26
26
  const { concurrencies } = parse_command_line_1.parsedCli;
27
27
  if (!concurrencies) {
@@ -171,6 +171,9 @@ const benchmarkCommand = async (remotionRoot, args, logLevel) => {
171
171
  offthreadVideoCacheSizeInBytes: offthreadVideoCacheSizeInBytesOption.getValue({
172
172
  commandLine: parse_command_line_1.parsedCli,
173
173
  }).value,
174
+ binariesDirectory: binariesDirectoryOption.getValue({
175
+ commandLine: parse_command_line_1.parsedCli,
176
+ }).value,
174
177
  });
175
178
  const ids = (remainingArgs[0]
176
179
  ? remainingArgs[0]
@@ -302,6 +305,9 @@ const benchmarkCommand = async (remotionRoot, args, logLevel) => {
302
305
  commandLine: parse_command_line_1.parsedCli,
303
306
  }).value,
304
307
  repro: false,
308
+ binariesDirectory: binariesDirectoryOption.getValue({
309
+ commandLine: parse_command_line_1.parsedCli,
310
+ }).value,
305
311
  finishRenderProgress: () => undefined,
306
312
  }, (run, progress) => {
307
313
  benchmarkProgress.update(makeBenchmarkProgressBar({
@@ -12,7 +12,7 @@ const log_1 = require("./log");
12
12
  const parse_command_line_1 = require("./parse-command-line");
13
13
  const print_compositions_1 = require("./print-compositions");
14
14
  const setup_cache_1 = require("./setup-cache");
15
- const { enableMultiprocessOnLinuxOption, offthreadVideoCacheSizeInBytesOption, glOption, headlessOption, delayRenderTimeoutInMillisecondsOption, } = client_1.BrowserSafeApis.options;
15
+ const { enableMultiprocessOnLinuxOption, offthreadVideoCacheSizeInBytesOption, glOption, headlessOption, delayRenderTimeoutInMillisecondsOption, binariesDirectoryOption, } = client_1.BrowserSafeApis.options;
16
16
  const listCompositionsCommand = async (remotionRoot, args, logLevel) => {
17
17
  const { file, reason } = (0, entry_point_1.findEntryPoint)(args, remotionRoot, logLevel);
18
18
  if (!file) {
@@ -79,6 +79,9 @@ const listCompositionsCommand = async (remotionRoot, args, logLevel) => {
79
79
  offthreadVideoCacheSizeInBytes: offthreadVideoCacheSizeInBytesOption.getValue({
80
80
  commandLine: parse_command_line_1.parsedCli,
81
81
  }).value,
82
+ binariesDirectory: binariesDirectoryOption.getValue({
83
+ commandLine: parse_command_line_1.parsedCli,
84
+ }).value,
82
85
  });
83
86
  (0, print_compositions_1.printCompositions)(compositions, logLevel);
84
87
  };
@@ -275,6 +275,11 @@ declare global {
275
275
  * Collect information that you can submit to Remotion if asked for a reproduction.
276
276
  */
277
277
  readonly setRepro: (enableRepro: boolean) => void;
278
+ /**
279
+ * The directory where the platform-specific binaries and libraries needed
280
+ for Remotion are located.
281
+ */
282
+ readonly setBinariesDirectory: (directory: string | null) => void;
278
283
  }
279
284
  }
280
285
  type FlatConfig = RemotionConfigObject & RemotionBundlingOptions & {
@@ -43,7 +43,7 @@ const user_agent_1 = require("./user-agent");
43
43
  const webpack_caching_2 = require("./webpack-caching");
44
44
  const webpack_poll_1 = require("./webpack-poll");
45
45
  const width_1 = require("./width");
46
- const { offthreadVideoCacheSizeInBytesOption, x264Option, audioBitrateOption, videoBitrateOption, scaleOption, crfOption, jpegQualityOption, enforceAudioOption, overwriteOption, mutedOption, videoCodecOption, colorSpaceOption, deleteAfterOption, folderExpiryOption, enableMultiprocessOnLinuxOption, glOption, headlessOption, numberOfGifLoopsOption, beepOnFinishOption, encodingMaxRateOption, encodingBufferSizeOption, reproOption, enableLambdaInsights, logLevelOption, delayRenderTimeoutInMillisecondsOption, } = client_1.BrowserSafeApis.options;
46
+ const { offthreadVideoCacheSizeInBytesOption, x264Option, audioBitrateOption, videoBitrateOption, scaleOption, crfOption, jpegQualityOption, enforceAudioOption, overwriteOption, mutedOption, videoCodecOption, colorSpaceOption, deleteAfterOption, folderExpiryOption, enableMultiprocessOnLinuxOption, glOption, headlessOption, numberOfGifLoopsOption, beepOnFinishOption, encodingMaxRateOption, encodingBufferSizeOption, reproOption, enableLambdaInsights, logLevelOption, delayRenderTimeoutInMillisecondsOption, binariesDirectoryOption, } = client_1.BrowserSafeApis.options;
47
47
  exports.Config = {
48
48
  get Bundling() {
49
49
  throw new Error('The config format has changed. Change `Config.Bundling.*()` calls to `Config.*()` in your config file.');
@@ -128,6 +128,7 @@ exports.Config = {
128
128
  setEnableFolderExpiry: folderExpiryOption.setConfig,
129
129
  setRepro: reproOption.setConfig,
130
130
  setLambdaInsights: enableLambdaInsights.setConfig,
131
+ setBinariesDirectory: binariesDirectoryOption.setConfig,
131
132
  };
132
133
  exports.ConfigInternals = {
133
134
  getRange: frame_range_1.getRange,
package/dist/ffmpeg.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type { LogLevel } from '@remotion/renderer';
2
- export declare const dynamicLibEnv: (indent: boolean, logLevel: LogLevel) => {
2
+ export declare const dynamicLibEnv: (indent: boolean, logLevel: LogLevel, binariesDirectory: string | null) => {
3
3
  DYLD_LIBRARY_PATH: string;
4
4
  RUST_BACKTRACE: string;
5
5
  } | {
package/dist/ffmpeg.js CHANGED
@@ -5,11 +5,18 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.ffprobeCommand = exports.ffmpegCommand = exports.dynamicLibEnv = void 0;
7
7
  const renderer_1 = require("@remotion/renderer");
8
+ const client_1 = require("@remotion/renderer/client");
8
9
  const node_child_process_1 = require("node:child_process");
9
10
  const node_fs_1 = require("node:fs");
10
11
  const node_path_1 = __importDefault(require("node:path"));
11
- const dynamicLibEnv = (indent, logLevel) => {
12
- const lib = node_path_1.default.dirname(renderer_1.RenderInternals.getExecutablePath('compositor', indent, logLevel));
12
+ const parse_command_line_1 = require("./parse-command-line");
13
+ const dynamicLibEnv = (indent, logLevel, binariesDirectory) => {
14
+ const lib = node_path_1.default.dirname(renderer_1.RenderInternals.getExecutablePath({
15
+ type: 'compositor',
16
+ indent,
17
+ logLevel,
18
+ binariesDirectory,
19
+ }));
13
20
  return {
14
21
  RUST_BACKTRACE: 'full',
15
22
  ...(process.platform === 'darwin'
@@ -27,26 +34,42 @@ const dynamicLibEnv = (indent, logLevel) => {
27
34
  };
28
35
  exports.dynamicLibEnv = dynamicLibEnv;
29
36
  const ffmpegCommand = (_root, args, logLevel) => {
30
- const binary = renderer_1.RenderInternals.getExecutablePath('ffmpeg', false, logLevel);
37
+ const { value: binariesDirectory } = client_1.BrowserSafeApis.options.binariesDirectoryOption.getValue({
38
+ commandLine: parse_command_line_1.parsedCli,
39
+ });
40
+ const binary = renderer_1.RenderInternals.getExecutablePath({
41
+ type: 'ffmpeg',
42
+ indent: false,
43
+ logLevel,
44
+ binariesDirectory,
45
+ });
31
46
  if (!process.env.READ_ONLY_FS) {
32
47
  (0, node_fs_1.chmodSync)(binary, 0o755);
33
48
  }
34
49
  const done = (0, node_child_process_1.spawnSync)(binary, args, {
35
50
  stdio: 'inherit',
36
- env: (0, exports.dynamicLibEnv)(false, logLevel),
51
+ env: (0, exports.dynamicLibEnv)(false, logLevel, binariesDirectory),
37
52
  });
38
53
  process.exit(done.status);
39
54
  };
40
55
  exports.ffmpegCommand = ffmpegCommand;
41
56
  const ffprobeCommand = (_root, args, logLevel) => {
42
- const binary = renderer_1.RenderInternals.getExecutablePath('ffprobe', false, logLevel);
57
+ const { value: binariesDirectory } = client_1.BrowserSafeApis.options.binariesDirectoryOption.getValue({
58
+ commandLine: parse_command_line_1.parsedCli,
59
+ });
60
+ const binary = renderer_1.RenderInternals.getExecutablePath({
61
+ type: 'ffprobe',
62
+ indent: false,
63
+ logLevel,
64
+ binariesDirectory,
65
+ });
43
66
  if (!process.env.READ_ONLY_FS) {
44
67
  (0, node_fs_1.chmodSync)(binary, 0o755);
45
68
  }
46
69
  const done = (0, node_child_process_1.spawnSync)(binary, args, {
47
70
  cwd: node_path_1.default.dirname(binary),
48
71
  stdio: 'inherit',
49
- env: (0, exports.dynamicLibEnv)(false, logLevel),
72
+ env: (0, exports.dynamicLibEnv)(false, logLevel, binariesDirectory),
50
73
  });
51
74
  process.exit(done.status);
52
75
  };
@@ -1,6 +1,6 @@
1
1
  import type { BrowserExecutable, ChromiumOptions, HeadlessBrowser, LogLevel, RemotionServer } from '@remotion/renderer';
2
2
  import type { VideoConfig } from 'remotion';
3
- export declare const getCompositionId: ({ args, compositionIdFromUi, serializedInputPropsWithCustomSchema, puppeteerInstance, envVariables, timeoutInMilliseconds, chromiumOptions, port, browserExecutable, serveUrlOrWebpackUrl, logLevel, indent, server, offthreadVideoCacheSizeInBytes, }: {
3
+ export declare const getCompositionId: ({ args, compositionIdFromUi, serializedInputPropsWithCustomSchema, puppeteerInstance, envVariables, timeoutInMilliseconds, chromiumOptions, port, browserExecutable, serveUrlOrWebpackUrl, logLevel, indent, server, offthreadVideoCacheSizeInBytes, binariesDirectory, }: {
4
4
  args: string[];
5
5
  compositionIdFromUi: string | null;
6
6
  serializedInputPropsWithCustomSchema: string;
@@ -15,6 +15,7 @@ export declare const getCompositionId: ({ args, compositionIdFromUi, serializedI
15
15
  indent: boolean;
16
16
  server: RemotionServer;
17
17
  offthreadVideoCacheSizeInBytes: number | null;
18
+ binariesDirectory: string | null;
18
19
  }) => Promise<{
19
20
  compositionId: string;
20
21
  reason: string;
@@ -16,7 +16,7 @@ const getCompName = ({ cliArgs, compositionIdFromUi, }) => {
16
16
  const [compName, ...remainingArgs] = cliArgs;
17
17
  return { compName, remainingArgs, reason: 'Passed as argument' };
18
18
  };
19
- const getCompositionId = async ({ args, compositionIdFromUi, serializedInputPropsWithCustomSchema, puppeteerInstance, envVariables, timeoutInMilliseconds, chromiumOptions, port, browserExecutable, serveUrlOrWebpackUrl, logLevel, indent, server, offthreadVideoCacheSizeInBytes, }) => {
19
+ const getCompositionId = async ({ args, compositionIdFromUi, serializedInputPropsWithCustomSchema, puppeteerInstance, envVariables, timeoutInMilliseconds, chromiumOptions, port, browserExecutable, serveUrlOrWebpackUrl, logLevel, indent, server, offthreadVideoCacheSizeInBytes, binariesDirectory, }) => {
20
20
  const { compName, remainingArgs, reason: compReason, } = getCompName({
21
21
  cliArgs: args,
22
22
  compositionIdFromUi,
@@ -37,6 +37,7 @@ const getCompositionId = async ({ args, compositionIdFromUi, serializedInputProp
37
37
  indent,
38
38
  onBrowserLog: null,
39
39
  offthreadVideoCacheSizeInBytes,
40
+ binariesDirectory,
40
41
  });
41
42
  if (propsSize > 10000000) {
42
43
  log_1.Log.warn({
@@ -69,6 +70,7 @@ const getCompositionId = async ({ args, compositionIdFromUi, serializedInputProp
69
70
  onBrowserLog: null,
70
71
  serializedInputPropsWithCustomSchema,
71
72
  offthreadVideoCacheSizeInBytes,
73
+ binariesDirectory,
72
74
  });
73
75
  const { compositionId, reason } = await (0, show_compositions_picker_1.showSingleCompositionsPicker)(comps, logLevel);
74
76
  if (compositionId && typeof compositionId === 'string') {
@@ -1,6 +1,6 @@
1
1
  import type { BrowserExecutable, ChromiumOptions, HeadlessBrowser, LogLevel, RemotionServer } from '@remotion/renderer';
2
2
  import type { VideoConfig } from 'remotion';
3
- export declare const getCompositionWithDimensionOverride: ({ height, width, args, compositionIdFromUi, chromiumOptions, envVariables, port, puppeteerInstance, timeoutInMilliseconds, browserExecutable, serveUrlOrWebpackUrl, indent, serializedInputPropsWithCustomSchema, logLevel, server, offthreadVideoCacheSizeInBytes, }: {
3
+ export declare const getCompositionWithDimensionOverride: ({ height, width, args, compositionIdFromUi, chromiumOptions, envVariables, port, puppeteerInstance, timeoutInMilliseconds, browserExecutable, serveUrlOrWebpackUrl, indent, serializedInputPropsWithCustomSchema, logLevel, server, offthreadVideoCacheSizeInBytes, binariesDirectory, }: {
4
4
  height: number | null;
5
5
  width: number | null;
6
6
  args: string[];
@@ -17,6 +17,7 @@ export declare const getCompositionWithDimensionOverride: ({ height, width, args
17
17
  serializedInputPropsWithCustomSchema: string;
18
18
  server: RemotionServer;
19
19
  offthreadVideoCacheSizeInBytes: number | null;
20
+ binariesDirectory: string | null;
20
21
  }) => Promise<{
21
22
  compositionId: string;
22
23
  reason: string;
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getCompositionWithDimensionOverride = void 0;
4
4
  const get_composition_id_1 = require("./get-composition-id");
5
- const getCompositionWithDimensionOverride = async ({ height, width, args, compositionIdFromUi, chromiumOptions, envVariables, port, puppeteerInstance, timeoutInMilliseconds, browserExecutable, serveUrlOrWebpackUrl, indent, serializedInputPropsWithCustomSchema, logLevel, server, offthreadVideoCacheSizeInBytes, }) => {
5
+ const getCompositionWithDimensionOverride = async ({ height, width, args, compositionIdFromUi, chromiumOptions, envVariables, port, puppeteerInstance, timeoutInMilliseconds, browserExecutable, serveUrlOrWebpackUrl, indent, serializedInputPropsWithCustomSchema, logLevel, server, offthreadVideoCacheSizeInBytes, binariesDirectory, }) => {
6
6
  const returnValue = await (0, get_composition_id_1.getCompositionId)({
7
7
  args,
8
8
  compositionIdFromUi,
@@ -18,6 +18,7 @@ const getCompositionWithDimensionOverride = async ({ height, width, args, compos
18
18
  timeoutInMilliseconds,
19
19
  server,
20
20
  offthreadVideoCacheSizeInBytes,
21
+ binariesDirectory,
21
22
  });
22
23
  return {
23
24
  ...returnValue,
package/dist/index.d.ts CHANGED
@@ -196,7 +196,7 @@ export declare const CliInternals: {
196
196
  shouldUseNonOverlayingLogger: ({ logLevel, }: {
197
197
  logLevel: "verbose" | "info" | "warn" | "error";
198
198
  }) => boolean;
199
- getCompositionWithDimensionOverride: ({ height, width, args, compositionIdFromUi, chromiumOptions, envVariables, port, puppeteerInstance, timeoutInMilliseconds, browserExecutable, serveUrlOrWebpackUrl, indent, serializedInputPropsWithCustomSchema, logLevel, server, offthreadVideoCacheSizeInBytes, }: {
199
+ getCompositionWithDimensionOverride: ({ height, width, args, compositionIdFromUi, chromiumOptions, envVariables, port, puppeteerInstance, timeoutInMilliseconds, browserExecutable, serveUrlOrWebpackUrl, indent, serializedInputPropsWithCustomSchema, logLevel, server, offthreadVideoCacheSizeInBytes, binariesDirectory, }: {
200
200
  height: number | null;
201
201
  width: number | null;
202
202
  args: string[];
@@ -213,6 +213,7 @@ export declare const CliInternals: {
213
213
  serializedInputPropsWithCustomSchema: string;
214
214
  server: import("@remotion/renderer").RemotionServer;
215
215
  offthreadVideoCacheSizeInBytes: number | null;
216
+ binariesDirectory: string | null;
216
217
  }) => Promise<{
217
218
  compositionId: string;
218
219
  reason: string;
@@ -1,6 +1,6 @@
1
1
  import type { AudioCodec, Browser, BrowserExecutable, CancelSignal, ChromiumOptions, Codec, ColorSpace, Crf, FfmpegOverrideFn, FrameRange, LogLevel, NumberOfGifLoops, PixelFormat, ProResProfile, VideoImageFormat, X264Preset } 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, 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, colorSpace, repro, }: {
3
+ export declare const renderVideoFlow: ({ remotionRoot, fullEntryPoint, indent, logLevel, browserExecutable, browser, chromiumOptions, scale, shouldOutputImageSequence, publicDir, envVariables, puppeteerTimeout, port, height, width, remainingArgs, compositionIdFromUi, entryPointReason, overwrite, quiet, concurrency, frameRange, everyNthFrame, outputLocationFromUI, jpegQuality, onProgress, addCleanupCallback, cancelSignal, crf, uiCodec, uiImageFormat, ffmpegOverride, audioBitrate, muted, enforceAudioTrack, proResProfile, x264Preset, pixelFormat, videoBitrate, encodingMaxRate, encodingBufferSize, numberOfGifLoops, audioCodec, serializedInputPropsWithCustomSchema, disallowParallelEncoding, offthreadVideoCacheSizeInBytes, colorSpace, repro, binariesDirectory, }: {
4
4
  remotionRoot: string;
5
5
  fullEntryPoint: string;
6
6
  entryPointReason: string;
@@ -49,4 +49,5 @@ export declare const renderVideoFlow: ({ remotionRoot, fullEntryPoint, indent, l
49
49
  offthreadVideoCacheSizeInBytes: number | null;
50
50
  colorSpace: ColorSpace;
51
51
  repro: boolean;
52
+ binariesDirectory: string | null;
52
53
  }) => Promise<void>;
@@ -47,7 +47,7 @@ const setup_cache_1 = require("../setup-cache");
47
47
  const should_use_non_overlaying_logger_1 = require("../should-use-non-overlaying-logger");
48
48
  const truthy_1 = require("../truthy");
49
49
  const user_passed_output_location_1 = require("../user-passed-output-location");
50
- const renderVideoFlow = async ({ remotionRoot, fullEntryPoint, indent, logLevel, browserExecutable, browser, chromiumOptions, scale, shouldOutputImageSequence, publicDir, envVariables, puppeteerTimeout, port, height, width, remainingArgs, compositionIdFromUi, entryPointReason, overwrite, quiet, concurrency, frameRange, everyNthFrame, outputLocationFromUI, jpegQuality, onProgress, addCleanupCallback, cancelSignal, crf, uiCodec, uiImageFormat, ffmpegOverride, audioBitrate, muted, enforceAudioTrack, proResProfile, x264Preset, pixelFormat, videoBitrate, encodingMaxRate, encodingBufferSize, numberOfGifLoops, audioCodec, serializedInputPropsWithCustomSchema, disallowParallelEncoding, offthreadVideoCacheSizeInBytes, colorSpace, repro, }) => {
50
+ const renderVideoFlow = async ({ remotionRoot, fullEntryPoint, indent, logLevel, browserExecutable, browser, chromiumOptions, scale, shouldOutputImageSequence, publicDir, envVariables, puppeteerTimeout, port, height, width, remainingArgs, compositionIdFromUi, entryPointReason, overwrite, quiet, concurrency, frameRange, everyNthFrame, outputLocationFromUI, jpegQuality, onProgress, addCleanupCallback, cancelSignal, crf, uiCodec, uiImageFormat, ffmpegOverride, audioBitrate, muted, enforceAudioTrack, proResProfile, x264Preset, pixelFormat, videoBitrate, encodingMaxRate, encodingBufferSize, numberOfGifLoops, audioCodec, serializedInputPropsWithCustomSchema, disallowParallelEncoding, offthreadVideoCacheSizeInBytes, colorSpace, repro, binariesDirectory, }) => {
51
51
  var _a;
52
52
  const downloads = [];
53
53
  const browserInstance = renderer_1.RenderInternals.internalOpenBrowser({
@@ -145,6 +145,7 @@ const renderVideoFlow = async ({ remotionRoot, fullEntryPoint, indent, logLevel,
145
145
  logLevel,
146
146
  webpackConfigOrServeUrl: urlOrBundle,
147
147
  offthreadVideoCacheSizeInBytes,
148
+ binariesDirectory,
148
149
  });
149
150
  addCleanupCallback(() => server.closeServer(false));
150
151
  const { compositionId, config, reason, argsAfterComposition } = await (0, get_composition_with_dimension_override_1.getCompositionWithDimensionOverride)({
@@ -164,6 +165,7 @@ const renderVideoFlow = async ({ remotionRoot, fullEntryPoint, indent, logLevel,
164
165
  logLevel,
165
166
  server,
166
167
  offthreadVideoCacheSizeInBytes,
168
+ binariesDirectory,
167
169
  });
168
170
  const { value: codec, source: codecReason } = client_1.BrowserSafeApis.options.videoCodecOption.getValue({
169
171
  commandLine: parse_command_line_1.parsedCli,
@@ -257,6 +259,7 @@ const renderVideoFlow = async ({ remotionRoot, fullEntryPoint, indent, logLevel,
257
259
  }).serializedString,
258
260
  offthreadVideoCacheSizeInBytes,
259
261
  parallelEncodingEnabled: isUsingParallelEncoding,
262
+ binariesDirectory,
260
263
  });
261
264
  updateRenderProgress({ newline: true, printToConsole: true });
262
265
  log_1.Log.info({ indent, logLevel }, chalk_1.chalk.blue(`▶ ${absoluteOutputFile}`));
@@ -338,6 +341,7 @@ const renderVideoFlow = async ({ remotionRoot, fullEntryPoint, indent, logLevel,
338
341
  finishRenderProgress: () => {
339
342
  updateRenderProgress({ newline: true, printToConsole: true });
340
343
  },
344
+ binariesDirectory,
341
345
  });
342
346
  log_1.Log.info({ indent, logLevel }, chalk_1.chalk.blue(`${exists ? '○' : '+'} ${absoluteOutputFile}`));
343
347
  log_1.Log.verbose({ indent, logLevel }, `Slowest frames:`);
@@ -1,6 +1,6 @@
1
1
  import type { Browser, BrowserExecutable, CancelSignal, ChromiumOptions, LogLevel, StillImageFormat } from '@remotion/renderer';
2
2
  import type { JobProgressCallback } from '@remotion/studio-server';
3
- export declare const renderStillFlow: ({ remotionRoot, fullEntryPoint, entryPointReason, remainingArgs, browser, browserExecutable, chromiumOptions, envVariables, height, serializedInputPropsWithCustomSchema, overwrite, port, publicDir, puppeteerTimeout, jpegQuality, scale, stillFrame, width, compositionIdFromUi, imageFormatFromUi, logLevel, onProgress, indent, addCleanupCallback, cancelSignal, outputLocationFromUi, offthreadVideoCacheSizeInBytes, }: {
3
+ export declare const renderStillFlow: ({ remotionRoot, fullEntryPoint, entryPointReason, remainingArgs, browser, browserExecutable, chromiumOptions, envVariables, height, serializedInputPropsWithCustomSchema, overwrite, port, publicDir, puppeteerTimeout, jpegQuality, scale, stillFrame, width, compositionIdFromUi, imageFormatFromUi, logLevel, onProgress, indent, addCleanupCallback, cancelSignal, outputLocationFromUi, offthreadVideoCacheSizeInBytes, binariesDirectory, }: {
4
4
  remotionRoot: string;
5
5
  fullEntryPoint: string;
6
6
  entryPointReason: string;
@@ -28,4 +28,5 @@ export declare const renderStillFlow: ({ remotionRoot, fullEntryPoint, entryPoin
28
28
  cancelSignal: CancelSignal | null;
29
29
  outputLocationFromUi: string | null;
30
30
  offthreadVideoCacheSizeInBytes: number | null;
31
+ binariesDirectory: string | null;
31
32
  }) => Promise<void>;
@@ -24,7 +24,7 @@ const setup_cache_1 = require("../setup-cache");
24
24
  const should_use_non_overlaying_logger_1 = require("../should-use-non-overlaying-logger");
25
25
  const truthy_1 = require("../truthy");
26
26
  const user_passed_output_location_1 = require("../user-passed-output-location");
27
- const renderStillFlow = async ({ remotionRoot, fullEntryPoint, entryPointReason, remainingArgs, browser, browserExecutable, chromiumOptions, envVariables, height, serializedInputPropsWithCustomSchema, overwrite, port, publicDir, puppeteerTimeout, jpegQuality, scale, stillFrame, width, compositionIdFromUi, imageFormatFromUi, logLevel, onProgress, indent, addCleanupCallback, cancelSignal, outputLocationFromUi, offthreadVideoCacheSizeInBytes, }) => {
27
+ const renderStillFlow = async ({ remotionRoot, fullEntryPoint, entryPointReason, remainingArgs, browser, browserExecutable, chromiumOptions, envVariables, height, serializedInputPropsWithCustomSchema, overwrite, port, publicDir, puppeteerTimeout, jpegQuality, scale, stillFrame, width, compositionIdFromUi, imageFormatFromUi, logLevel, onProgress, indent, addCleanupCallback, cancelSignal, outputLocationFromUi, offthreadVideoCacheSizeInBytes, binariesDirectory, }) => {
28
28
  var _a, _b;
29
29
  const aggregate = (0, progress_types_1.initialAggregateRenderProgress)();
30
30
  const updatesDontOverwrite = (0, should_use_non_overlaying_logger_1.shouldUseNonOverlayingLogger)({ logLevel });
@@ -97,6 +97,7 @@ const renderStillFlow = async ({ remotionRoot, fullEntryPoint, entryPointReason,
97
97
  logLevel,
98
98
  webpackConfigOrServeUrl: urlOrBundle,
99
99
  offthreadVideoCacheSizeInBytes,
100
+ binariesDirectory,
100
101
  });
101
102
  addCleanupCallback(() => server.closeServer(false));
102
103
  addCleanupCallback(() => cleanupBundle());
@@ -119,6 +120,7 @@ const renderStillFlow = async ({ remotionRoot, fullEntryPoint, entryPointReason,
119
120
  logLevel,
120
121
  server,
121
122
  offthreadVideoCacheSizeInBytes,
123
+ binariesDirectory,
122
124
  });
123
125
  const { format: imageFormat, source } = (0, determine_image_format_1.determineFinalStillImageFormat)({
124
126
  cliFlag: (_a = parse_command_line_1.parsedCli['image-format']) !== null && _a !== void 0 ? _a : null,
@@ -191,6 +193,7 @@ const renderStillFlow = async ({ remotionRoot, fullEntryPoint, entryPointReason,
191
193
  data: config.props,
192
194
  }).serializedString,
193
195
  offthreadVideoCacheSizeInBytes,
196
+ binariesDirectory,
194
197
  });
195
198
  aggregate.rendering = {
196
199
  frames: 1,
@@ -42,6 +42,7 @@ const processStill = async ({ job, remotionRoot, entryPoint, onProgress, addClea
42
42
  cancelSignal: job.cancelToken.cancelSignal,
43
43
  outputLocationFromUi: job.outName,
44
44
  offthreadVideoCacheSizeInBytes: job.offthreadVideoCacheSizeInBytes,
45
+ binariesDirectory: job.binariesDirectory,
45
46
  });
46
47
  };
47
48
  exports.processStill = processStill;
@@ -64,6 +64,7 @@ const processVideoJob = async ({ job, remotionRoot, entryPoint, onProgress, addC
64
64
  offthreadVideoCacheSizeInBytes: job.offthreadVideoCacheSizeInBytes,
65
65
  colorSpace: job.type === 'video' ? job.colorSpace : 'default',
66
66
  repro: job.repro,
67
+ binariesDirectory: job.binariesDirectory,
67
68
  });
68
69
  };
69
70
  exports.processVideoJob = processVideoJob;
package/dist/render.js CHANGED
@@ -12,7 +12,7 @@ const get_cli_options_1 = require("./get-cli-options");
12
12
  const log_1 = require("./log");
13
13
  const parse_command_line_1 = require("./parse-command-line");
14
14
  const render_1 = require("./render-flows/render");
15
- const { x264Option, audioBitrateOption, offthreadVideoCacheSizeInBytesOption, scaleOption, crfOption, jpegQualityOption, videoBitrateOption, enforceAudioOption, mutedOption, colorSpaceOption, enableMultiprocessOnLinuxOption, glOption, numberOfGifLoopsOption, encodingMaxRateOption, encodingBufferSizeOption, reproOption, delayRenderTimeoutInMillisecondsOption, headlessOption, overwriteOption, } = client_1.BrowserSafeApis.options;
15
+ const { x264Option, audioBitrateOption, offthreadVideoCacheSizeInBytesOption, scaleOption, crfOption, jpegQualityOption, videoBitrateOption, enforceAudioOption, mutedOption, colorSpaceOption, enableMultiprocessOnLinuxOption, glOption, numberOfGifLoopsOption, encodingMaxRateOption, encodingBufferSizeOption, reproOption, delayRenderTimeoutInMillisecondsOption, headlessOption, overwriteOption, binariesDirectoryOption, } = client_1.BrowserSafeApis.options;
16
16
  const render = async (remotionRoot, args, logLevel) => {
17
17
  var _a;
18
18
  const { file, remainingArgs, reason: entryPointReason, } = (0, entry_point_1.findEntryPoint)(args, remotionRoot, logLevel);
@@ -78,6 +78,9 @@ const render = async (remotionRoot, args, logLevel) => {
78
78
  const overwrite = overwriteOption.getValue({
79
79
  commandLine: parse_command_line_1.parsedCli,
80
80
  }, true).value;
81
+ const binariesDirectory = binariesDirectoryOption.getValue({
82
+ commandLine: parse_command_line_1.parsedCli,
83
+ }).value;
81
84
  const chromiumOptions = {
82
85
  disableWebSecurity,
83
86
  enableMultiProcessOnLinux,
@@ -142,6 +145,7 @@ const render = async (remotionRoot, args, logLevel) => {
142
145
  offthreadVideoCacheSizeInBytes,
143
146
  colorSpace,
144
147
  repro,
148
+ binariesDirectory,
145
149
  });
146
150
  };
147
151
  exports.render = render;
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 parse_command_line_1 = require("./parse-command-line");
13
13
  const still_1 = require("./render-flows/still");
14
- const { offthreadVideoCacheSizeInBytesOption, scaleOption, jpegQualityOption, enableMultiprocessOnLinuxOption, glOption, delayRenderTimeoutInMillisecondsOption, headlessOption, overwriteOption, } = client_1.BrowserSafeApis.options;
14
+ const { offthreadVideoCacheSizeInBytesOption, scaleOption, jpegQualityOption, enableMultiprocessOnLinuxOption, glOption, delayRenderTimeoutInMillisecondsOption, headlessOption, overwriteOption, binariesDirectoryOption, } = 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);
17
17
  if (!file) {
@@ -49,6 +49,9 @@ const still = async (remotionRoot, args, logLevel) => {
49
49
  const overwrite = overwriteOption.getValue({
50
50
  commandLine: parse_command_line_1.parsedCli,
51
51
  }, true).value;
52
+ const binariesDirectory = binariesDirectoryOption.getValue({
53
+ commandLine: parse_command_line_1.parsedCli,
54
+ }).value;
52
55
  const chromiumOptions = {
53
56
  disableWebSecurity,
54
57
  enableMultiProcessOnLinux,
@@ -91,6 +94,7 @@ const still = async (remotionRoot, args, logLevel) => {
91
94
  cancelSignal: null,
92
95
  outputLocationFromUi: null,
93
96
  offthreadVideoCacheSizeInBytes,
97
+ binariesDirectory,
94
98
  });
95
99
  };
96
100
  exports.still = still;
package/dist/studio.js CHANGED
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.studioCommand = void 0;
4
+ const client_1 = require("@remotion/renderer/client");
4
5
  const studio_server_1 = require("@remotion/studio-server");
5
6
  const config_1 = require("./config");
6
7
  const number_of_shared_audio_tags_1 = require("./config/number-of-shared-audio-tags");
@@ -55,6 +56,9 @@ const studioCommand = async (remotionRoot, args, logLevel) => {
55
56
  }, logLevel, false);
56
57
  const keyboardShortcutsEnabled = config_1.ConfigInternals.getKeyboardShortcutsEnabled();
57
58
  const gitSource = (0, get_github_repository_1.getGitSource)(remotionRoot);
59
+ const binariesDirectory = client_1.BrowserSafeApis.options.binariesDirectoryOption.getValue({
60
+ commandLine: parse_command_line_1.parsedCli,
61
+ }).value;
58
62
  await studio_server_1.StudioServerInternals.startStudio({
59
63
  previewEntry: require.resolve('@remotion/studio/entry'),
60
64
  browserArgs: parse_command_line_1.parsedCli['browser-args'],
@@ -84,6 +88,7 @@ const studioCommand = async (remotionRoot, args, logLevel) => {
84
88
  parsedCliOpen: parse_command_line_1.parsedCli.open,
85
89
  gitSource,
86
90
  bufferStateDelayInMilliseconds: config_1.ConfigInternals.getBufferStateDelayInMilliseconds(),
91
+ binariesDirectory,
87
92
  });
88
93
  };
89
94
  exports.studioCommand = studioCommand;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@remotion/cli",
3
- "version": "4.0.119",
3
+ "version": "4.0.120",
4
4
  "description": "CLI for Remotion",
5
5
  "main": "dist/index.js",
6
6
  "sideEffects": false,
@@ -32,13 +32,13 @@
32
32
  "dotenv": "9.0.2",
33
33
  "minimist": "1.2.6",
34
34
  "prompts": "2.4.2",
35
- "@remotion/bundler": "4.0.119",
36
- "@remotion/media-utils": "4.0.119",
37
- "@remotion/studio": "4.0.119",
38
- "@remotion/renderer": "4.0.119",
39
- "@remotion/player": "4.0.119",
40
- "remotion": "4.0.119",
41
- "@remotion/studio-server": "4.0.119"
35
+ "@remotion/bundler": "4.0.120",
36
+ "@remotion/media-utils": "4.0.120",
37
+ "@remotion/studio-server": "4.0.120",
38
+ "@remotion/player": "4.0.120",
39
+ "@remotion/studio": "4.0.120",
40
+ "remotion": "4.0.120",
41
+ "@remotion/renderer": "4.0.120"
42
42
  },
43
43
  "peerDependencies": {
44
44
  "react": ">=16.8.0",
@@ -63,8 +63,8 @@
63
63
  "react-dom": "18.2.0",
64
64
  "vitest": "0.31.1",
65
65
  "zod": "^3.22.3",
66
- "@remotion/zod-types": "4.0.119",
67
- "@remotion/tailwind": "4.0.119"
66
+ "@remotion/zod-types": "4.0.120",
67
+ "@remotion/tailwind": "4.0.120"
68
68
  },
69
69
  "keywords": [
70
70
  "remotion",