@remotion/cli 3.3.38 → 3.3.40

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/dist/benchmark.js +1 -6
  2. package/dist/compositions.js +1 -6
  3. package/dist/config/index.js +69 -55
  4. package/dist/config/timeout.js +1 -1
  5. package/dist/editor/components/Modals.js +1 -1
  6. package/dist/editor/components/RenderButton.js +29 -8
  7. package/dist/editor/components/RenderModal/CrfSetting.d.ts +2 -2
  8. package/dist/editor/components/RenderModal/CrfSetting.js +11 -24
  9. package/dist/editor/components/RenderModal/EveryNthFrameSetting.d.ts +5 -0
  10. package/dist/editor/components/RenderModal/EveryNthFrameSetting.js +9 -0
  11. package/dist/editor/components/RenderModal/NumberOfLoopsSetting.d.ts +5 -0
  12. package/dist/editor/components/RenderModal/NumberOfLoopsSetting.js +26 -0
  13. package/dist/editor/components/RenderModal/NumberSetting.d.ts +9 -0
  14. package/dist/editor/components/RenderModal/NumberSetting.js +26 -0
  15. package/dist/editor/components/RenderModal/RenderModal.d.ts +19 -5
  16. package/dist/editor/components/RenderModal/RenderModal.js +225 -181
  17. package/dist/editor/components/RenderModal/RenderModalAdvanced.d.ts +11 -0
  18. package/dist/editor/components/RenderModal/RenderModalAdvanced.js +15 -0
  19. package/dist/editor/components/RenderModal/RenderModalAudio.d.ts +13 -0
  20. package/dist/editor/components/RenderModal/RenderModalAudio.js +22 -0
  21. package/dist/editor/components/RenderModal/RenderModalBasic.d.ts +22 -0
  22. package/dist/editor/components/RenderModal/RenderModalBasic.js +70 -0
  23. package/dist/editor/components/RenderModal/RenderModalGeneral.d.ts +0 -0
  24. package/dist/editor/components/RenderModal/RenderModalGeneral.js +1 -0
  25. package/dist/editor/components/RenderModal/RenderModalGif.d.ts +9 -0
  26. package/dist/editor/components/RenderModal/RenderModalGif.js +16 -0
  27. package/dist/editor/components/RenderModal/RenderModalHr.d.ts +2 -0
  28. package/dist/editor/components/RenderModal/RenderModalHr.js +18 -0
  29. package/dist/editor/components/RenderModal/RenderModalPicture.d.ts +28 -0
  30. package/dist/editor/components/RenderModal/RenderModalPicture.js +51 -0
  31. package/dist/editor/components/RenderModal/ScaleSetting.js +2 -18
  32. package/dist/editor/components/RenderModal/human-readable-codec.d.ts +2 -0
  33. package/dist/editor/components/RenderModal/human-readable-codec.js +36 -0
  34. package/dist/editor/components/RenderModal/layout.d.ts +1 -0
  35. package/dist/editor/components/RenderModal/layout.js +8 -2
  36. package/dist/editor/components/RenderQueue/RenderQueueRemoveItem.js +2 -1
  37. package/dist/editor/components/RenderQueue/actions.d.ts +15 -2
  38. package/dist/editor/components/RenderQueue/actions.js +14 -1
  39. package/dist/editor/components/RenderToolbarIcon.js +30 -8
  40. package/dist/editor/components/SegmentedControl.js +1 -1
  41. package/dist/editor/components/SidebarContent.js +2 -1
  42. package/dist/editor/icons/audio.d.ts +2 -0
  43. package/dist/editor/icons/audio.js +6 -0
  44. package/dist/editor/icons/file.d.ts +2 -0
  45. package/dist/editor/icons/file.js +6 -0
  46. package/dist/editor/icons/frame.d.ts +2 -0
  47. package/dist/editor/icons/frame.js +6 -0
  48. package/dist/editor/icons/gear.d.ts +2 -0
  49. package/dist/editor/icons/gear.js +6 -0
  50. package/dist/editor/icons/gif.d.ts +2 -0
  51. package/dist/editor/icons/gif.js +6 -0
  52. package/dist/entry-point.js +49 -6
  53. package/dist/get-env.js +1 -1
  54. package/dist/handle-common-errors.js +7 -1
  55. package/dist/index.d.ts +1 -0
  56. package/dist/index.js +2 -0
  57. package/dist/list-of-remotion-packages.js +1 -0
  58. package/dist/parse-command-line.js +32 -32
  59. package/dist/preview-server/render-queue/get-default-video-contexts.d.ts +1 -1
  60. package/dist/preview-server/render-queue/job.d.ts +27 -1
  61. package/dist/preview-server/render-queue/make-retry-payload.js +52 -10
  62. package/dist/preview-server/render-queue/process-video.js +16 -9
  63. package/dist/preview-server/routes/add-render.js +13 -0
  64. package/dist/preview.js +1 -2
  65. package/dist/render-flows/render.d.ts +14 -4
  66. package/dist/render-flows/render.js +40 -13
  67. package/dist/render.js +3 -6
  68. package/dist/still.js +2 -5
  69. package/dist/upgrade.js +9 -3
  70. package/package.json +7 -7
@@ -4,6 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.findEntryPoint = void 0;
7
+ const renderer_1 = require("@remotion/renderer");
7
8
  const fs_1 = require("fs");
8
9
  const path_1 = __importDefault(require("path"));
9
10
  const config_1 = require("./config");
@@ -20,12 +21,46 @@ const findCommonPath = (remotionRoot) => {
20
21
  return candidates.find((candidate) => (0, fs_1.existsSync)(path_1.default.resolve(remotionRoot, candidate)));
21
22
  };
22
23
  const findEntryPoint = (args, remotionRoot) => {
24
+ const result = findEntryPointInner(args, remotionRoot);
25
+ if (result.file === null) {
26
+ return result;
27
+ }
28
+ if (renderer_1.RenderInternals.isServeUrl(result.file)) {
29
+ return result;
30
+ }
31
+ if (!(0, fs_1.existsSync)(result.file)) {
32
+ throw new Error(`${result.file} was chosen as the entry point (reason = ${result.reason}) but it does not exist.`);
33
+ }
34
+ if ((0, fs_1.lstatSync)(result.file).isDirectory()) {
35
+ throw new Error(`${result.file} was chosen as the entry point (reason = ${result.reason}) but it is a directory - it needs to be a file.`);
36
+ }
37
+ return result;
38
+ };
39
+ exports.findEntryPoint = findEntryPoint;
40
+ const findEntryPointInner = (args, remotionRoot) => {
23
41
  // 1st priority: Explicitly passed entry point
24
42
  let file = args[0];
25
43
  if (file) {
26
44
  log_1.Log.verbose('Checking if', file, 'is the entry file');
27
- // Intentionally resolving CLI files to CWD, while resolving config file to remotionRoot
28
- if ((0, fs_1.existsSync)(path_1.default.resolve(process.cwd(), file))) {
45
+ const cwdResolution = path_1.default.resolve(process.cwd(), file);
46
+ const remotionRootResolution = path_1.default.resolve(remotionRoot, file);
47
+ // Checking if file was found in CWD
48
+ if ((0, fs_1.existsSync)(cwdResolution)) {
49
+ return {
50
+ file: cwdResolution,
51
+ remainingArgs: args.slice(1),
52
+ reason: 'argument passed - found in cwd',
53
+ };
54
+ }
55
+ // Checking if file was found in remotion root
56
+ if ((0, fs_1.existsSync)(remotionRootResolution)) {
57
+ return {
58
+ file: remotionRootResolution,
59
+ remainingArgs: args.slice(1),
60
+ reason: 'argument passed - found in root',
61
+ };
62
+ }
63
+ if (renderer_1.RenderInternals.isServeUrl(file)) {
29
64
  return { file, remainingArgs: args.slice(1), reason: 'argument passed' };
30
65
  }
31
66
  }
@@ -33,14 +68,22 @@ const findEntryPoint = (args, remotionRoot) => {
33
68
  file = config_1.ConfigInternals.getEntryPoint();
34
69
  if (file) {
35
70
  log_1.Log.verbose('Entry point from config file is', file);
36
- return { file, remainingArgs: args, reason: 'config file' };
71
+ return {
72
+ file: path_1.default.resolve(remotionRoot, file),
73
+ remainingArgs: args,
74
+ reason: 'config file',
75
+ };
37
76
  }
38
77
  // 3rd priority: Common paths
39
78
  const found = findCommonPath(remotionRoot);
40
79
  if (found) {
41
- log_1.Log.verbose('Selected', found, 'as the entry point because file exists and is a common entry point and no entry point was explicitly selected');
42
- return { file: found, remainingArgs: args, reason: 'common paths' };
80
+ const absolutePath = path_1.default.resolve(remotionRoot, found);
81
+ log_1.Log.verbose('Selected', absolutePath, 'as the entry point because file exists and is a common entry point and no entry point was explicitly selected');
82
+ return {
83
+ file: absolutePath,
84
+ remainingArgs: args,
85
+ reason: 'common paths',
86
+ };
43
87
  }
44
88
  return { file: null, remainingArgs: args, reason: 'none found' };
45
89
  };
46
- exports.findEntryPoint = findEntryPoint;
package/dist/get-env.js CHANGED
@@ -96,7 +96,7 @@ const getEnvironmentVariables = (onUpdate) => {
96
96
  if (configFileSetting) {
97
97
  const envFile = path_1.default.resolve(remotionRoot, configFileSetting);
98
98
  if (!fs_1.default.existsSync(envFile)) {
99
- log_1.Log.error('You specified a custom .env file using `Config.Rendering.setDotEnvLocation()` in the config file but it could not be found');
99
+ log_1.Log.error('You specified a custom .env file using `Config.setDotEnvLocation()` in the config file but it could not be found');
100
100
  log_1.Log.error('We looked for the file at:', envFile);
101
101
  log_1.Log.error('Check that your path is correct and try again.');
102
102
  process.exit(1);
@@ -10,7 +10,8 @@ const handleCommonError = async (err) => {
10
10
  log_1.Log.info();
11
11
  log_1.Log.info('💡 Get help for this issue at https://remotion.dev/docs/media-playback-error');
12
12
  }
13
- if (err.message.includes('A delayRender was called')) {
13
+ if (err.message.includes('A delayRender()') &&
14
+ err.message.includes('was called but not cleared after')) {
14
15
  log_1.Log.info();
15
16
  log_1.Log.info('💡 Get help for this issue at https://remotion.dev/docs/timeout');
16
17
  }
@@ -22,6 +23,11 @@ const handleCommonError = async (err) => {
22
23
  log_1.Log.info();
23
24
  log_1.Log.info('💡 Get help for this issue at https://remotion.dev/docs/enametoolong');
24
25
  }
26
+ if (err.message.includes('Error creating WebGL context')) {
27
+ log_1.Log.info();
28
+ log_1.Log.info('💡 You might need to set the OpenGL renderer to "angle"');
29
+ log_1.Log.info('💡 Get help for this issue at https://www.remotion.dev/docs/three');
30
+ }
25
31
  if (err.message.includes('The bucket does not allow ACLs')) {
26
32
  log_1.Log.info();
27
33
  log_1.Log.info(chalk_1.chalk.green('💡 Fix this issue https://remotion.dev/docs/lambda/troubleshooting/bucket-disallows-acl'));
package/dist/index.d.ts CHANGED
@@ -146,4 +146,5 @@ export declare const CliInternals: {
146
146
  };
147
147
  getImageFormat: (codec: import("@remotion/renderer").CodecOrUndefined) => "png" | "jpeg" | "none";
148
148
  printCompositions: (compositions: import("remotion").TCompMetadata[]) => void;
149
+ listOfRemotionPackages: string[];
149
150
  };
package/dist/index.js CHANGED
@@ -35,6 +35,7 @@ const image_formats_1 = require("./image-formats");
35
35
  const initialize_cli_1 = require("./initialize-cli");
36
36
  const install_1 = require("./install");
37
37
  const lambda_command_1 = require("./lambda-command");
38
+ const list_of_remotion_packages_1 = require("./list-of-remotion-packages");
38
39
  const log_1 = require("./log");
39
40
  const make_progress_bar_1 = require("./make-progress-bar");
40
41
  const parse_command_line_1 = require("./parse-command-line");
@@ -135,4 +136,5 @@ exports.CliInternals = {
135
136
  findEntryPoint: entry_point_1.findEntryPoint,
136
137
  getImageFormat: image_formats_1.getImageFormat,
137
138
  printCompositions: print_compositions_1.printCompositions,
139
+ listOfRemotionPackages: list_of_remotion_packages_1.listOfRemotionPackages,
138
140
  };
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.listOfRemotionPackages = void 0;
4
+ // Keep in sync with create-video
4
5
  exports.listOfRemotionPackages = [
5
6
  '@remotion/bundler',
6
7
  '@remotion/cli',
@@ -37,34 +37,34 @@ exports.parsedCli = (0, minimist_1.default)(process.argv.slice(2), {
37
37
  });
38
38
  const parseCommandLine = () => {
39
39
  if (exports.parsedCli['pixel-format']) {
40
- config_1.Config.Output.setPixelFormat(exports.parsedCli['pixel-format']);
40
+ config_1.Config.setPixelFormat(exports.parsedCli['pixel-format']);
41
41
  }
42
42
  if (exports.parsedCli['image-format']) {
43
- config_1.Config.Rendering.setImageFormat(exports.parsedCli['image-format']);
43
+ config_1.Config.setImageFormat(exports.parsedCli['image-format']);
44
44
  }
45
45
  if (exports.parsedCli['browser-executable']) {
46
- config_1.Config.Puppeteer.setBrowserExecutable(exports.parsedCli['browser-executable']);
46
+ config_1.Config.setBrowserExecutable(exports.parsedCli['browser-executable']);
47
47
  }
48
48
  if (exports.parsedCli['ffmpeg-executable']) {
49
- config_1.Config.Rendering.setFfmpegExecutable((0, path_1.resolve)(exports.parsedCli['ffmpeg-executable']));
49
+ config_1.Config.setFfmpegExecutable((0, path_1.resolve)(exports.parsedCli['ffmpeg-executable']));
50
50
  }
51
51
  if (exports.parsedCli['number-of-gif-loops']) {
52
- config_1.Config.Rendering.setNumberOfGifLoops(exports.parsedCli['number-of-gif-loops']);
52
+ config_1.Config.setNumberOfGifLoops(exports.parsedCli['number-of-gif-loops']);
53
53
  }
54
54
  if (exports.parsedCli['ffprobe-executable']) {
55
- config_1.Config.Rendering.setFfprobeExecutable((0, path_1.resolve)(exports.parsedCli['ffprobe-executable']));
55
+ config_1.Config.setFfprobeExecutable((0, path_1.resolve)(exports.parsedCli['ffprobe-executable']));
56
56
  }
57
57
  if (typeof exports.parsedCli['bundle-cache'] !== 'undefined') {
58
- config_1.Config.Bundling.setCachingEnabled(exports.parsedCli['bundle-cache'] !== 'false');
58
+ config_1.Config.setCachingEnabled(exports.parsedCli['bundle-cache'] !== 'false');
59
59
  }
60
60
  if (exports.parsedCli['disable-web-security']) {
61
- config_1.Config.Puppeteer.setChromiumDisableWebSecurity(true);
61
+ config_1.Config.setChromiumDisableWebSecurity(true);
62
62
  }
63
63
  if (exports.parsedCli['ignore-certificate-errors']) {
64
- config_1.Config.Puppeteer.setChromiumIgnoreCertificateErrors(true);
64
+ config_1.Config.setChromiumIgnoreCertificateErrors(true);
65
65
  }
66
66
  if (exports.parsedCli['disable-headless']) {
67
- config_1.Config.Puppeteer.setChromiumHeadlessMode(false);
67
+ config_1.Config.setChromiumHeadlessMode(false);
68
68
  }
69
69
  if (exports.parsedCli.log) {
70
70
  if (!renderer_1.RenderInternals.isValidLogLevel(exports.parsedCli.log)) {
@@ -77,16 +77,16 @@ const parseCommandLine = () => {
77
77
  config_1.ConfigInternals.Logging.setLogLevel(exports.parsedCli.log);
78
78
  }
79
79
  if (exports.parsedCli.concurrency) {
80
- config_1.Config.Rendering.setConcurrency(exports.parsedCli.concurrency);
80
+ config_1.Config.setConcurrency(exports.parsedCli.concurrency);
81
81
  }
82
82
  if (exports.parsedCli.timeout) {
83
- config_1.Config.Puppeteer.setTimeoutInMilliseconds(exports.parsedCli.timeout);
83
+ config_1.Config.setTimeoutInMilliseconds(exports.parsedCli.timeout);
84
84
  }
85
85
  if (exports.parsedCli.height) {
86
- config_1.Config.Output.overrideHeight(exports.parsedCli.height);
86
+ config_1.Config.overrideHeight(exports.parsedCli.height);
87
87
  }
88
88
  if (exports.parsedCli.width) {
89
- config_1.Config.Output.overrideWidth(exports.parsedCli.width);
89
+ config_1.Config.overrideWidth(exports.parsedCli.width);
90
90
  }
91
91
  if (exports.parsedCli.frames) {
92
92
  config_1.ConfigInternals.setFrameRangeFromCli(exports.parsedCli.frames);
@@ -96,56 +96,56 @@ const parseCommandLine = () => {
96
96
  }
97
97
  if (exports.parsedCli.png) {
98
98
  log_1.Log.warn('The --png flag has been deprecrated. Use --sequence --image-format=png from now on.');
99
- config_1.Config.Output.setImageSequence(true);
100
- config_1.Config.Rendering.setImageFormat('png');
99
+ config_1.Config.setImageSequence(true);
100
+ config_1.Config.setImageFormat('png');
101
101
  }
102
102
  if (exports.parsedCli.sequence) {
103
- config_1.Config.Output.setImageSequence(true);
103
+ config_1.Config.setImageSequence(true);
104
104
  }
105
105
  if (typeof exports.parsedCli.crf !== 'undefined') {
106
- config_1.Config.Output.setCrf(exports.parsedCli.crf);
106
+ config_1.Config.setCrf(exports.parsedCli.crf);
107
107
  }
108
108
  if (exports.parsedCli['every-nth-frame']) {
109
- config_1.Config.Rendering.setEveryNthFrame(exports.parsedCli['every-nth-frame']);
109
+ config_1.Config.setEveryNthFrame(exports.parsedCli['every-nth-frame']);
110
110
  }
111
111
  if (exports.parsedCli.gl) {
112
- config_1.Config.Puppeteer.setChromiumOpenGlRenderer(exports.parsedCli.gl);
112
+ config_1.Config.setChromiumOpenGlRenderer(exports.parsedCli.gl);
113
113
  }
114
114
  if (exports.parsedCli['prores-profile']) {
115
- config_1.Config.Output.setProResProfile(String(exports.parsedCli['prores-profile']));
115
+ config_1.Config.setProResProfile(String(exports.parsedCli['prores-profile']));
116
116
  }
117
117
  if (exports.parsedCli.overwrite) {
118
- config_1.Config.Output.setOverwriteOutput(exports.parsedCli.overwrite);
118
+ config_1.Config.setOverwriteOutput(exports.parsedCli.overwrite);
119
119
  }
120
120
  if (typeof exports.parsedCli.quality !== 'undefined') {
121
- config_1.Config.Rendering.setQuality(exports.parsedCli.quality);
121
+ config_1.Config.setQuality(exports.parsedCli.quality);
122
122
  }
123
123
  if (typeof exports.parsedCli.scale !== 'undefined') {
124
- config_1.Config.Rendering.setScale(exports.parsedCli.scale);
124
+ config_1.Config.setScale(exports.parsedCli.scale);
125
125
  }
126
126
  if (typeof exports.parsedCli.port !== 'undefined') {
127
- config_1.Config.Bundling.setPort(exports.parsedCli.port);
127
+ config_1.Config.setPort(exports.parsedCli.port);
128
128
  }
129
129
  if (typeof exports.parsedCli.muted !== 'undefined') {
130
- config_1.Config.Rendering.setMuted(exports.parsedCli.muted);
130
+ config_1.Config.setMuted(exports.parsedCli.muted);
131
131
  }
132
132
  if (typeof exports.parsedCli['disable-keyboard-shortcuts'] !== 'undefined') {
133
- config_1.Config.Preview.setKeyboardShortcutsEnabled(!exports.parsedCli['disable-keyboard-shortcuts']);
133
+ config_1.Config.setKeyboardShortcutsEnabled(!exports.parsedCli['disable-keyboard-shortcuts']);
134
134
  }
135
135
  if (typeof exports.parsedCli['enforce-audio-track'] !== 'undefined') {
136
- config_1.Config.Rendering.setEnforceAudioTrack(exports.parsedCli['enforce-audio-track']);
136
+ config_1.Config.setEnforceAudioTrack(exports.parsedCli['enforce-audio-track']);
137
137
  }
138
138
  if (typeof exports.parsedCli['public-dir'] !== 'undefined') {
139
- config_1.Config.Bundling.setPublicDir(exports.parsedCli['public-dir']);
139
+ config_1.Config.setPublicDir(exports.parsedCli['public-dir']);
140
140
  }
141
141
  if (typeof exports.parsedCli['webpack-poll'] !== 'undefined') {
142
- config_1.Config.Preview.setWebpackPollingInMilliseconds(exports.parsedCli['webpack-poll']);
142
+ config_1.Config.setWebpackPollingInMilliseconds(exports.parsedCli['webpack-poll']);
143
143
  }
144
144
  if (typeof exports.parsedCli['audio-bitrate'] !== 'undefined') {
145
- config_1.Config.Output.setAudioBitrate(exports.parsedCli['audio-bitrate']);
145
+ config_1.Config.setAudioBitrate(exports.parsedCli['audio-bitrate']);
146
146
  }
147
147
  if (typeof exports.parsedCli['video-bitrate'] !== 'undefined') {
148
- config_1.Config.Output.setVideoBitrate(exports.parsedCli['video-bitrate']);
148
+ config_1.Config.setVideoBitrate(exports.parsedCli['video-bitrate']);
149
149
  }
150
150
  };
151
151
  exports.parseCommandLine = parseCommandLine;
@@ -1,5 +1,5 @@
1
1
  import type { Codec } from '@remotion/renderer';
2
- import type { RenderType } from '../../editor/components/RenderModal/RenderModal';
2
+ import type { RenderType } from '../../editor/components/RenderModal/RenderModalAdvanced';
3
3
  export declare const getDefaultCodecs: ({ defaultCodec, isStill, }: {
4
4
  defaultCodec: Codec;
5
5
  isStill: boolean;
@@ -1,4 +1,4 @@
1
- import type { Codec, makeCancelSignal, StillImageFormat } from '@remotion/renderer';
1
+ import type { Codec, makeCancelSignal, PixelFormat, ProResProfile, StillImageFormat } from '@remotion/renderer';
2
2
  declare type RenderJobDynamicStatus = {
3
3
  status: 'done';
4
4
  } | {
@@ -30,6 +30,19 @@ declare type RenderJobDynamicFields = {
30
30
  quality: number | null;
31
31
  scale: number;
32
32
  codec: Codec;
33
+ concurrency: number;
34
+ crf: number | null;
35
+ startFrame: number;
36
+ endFrame: number;
37
+ muted: boolean;
38
+ enforceAudioTrack: boolean;
39
+ proResProfile: ProResProfile | null;
40
+ pixelFormat: PixelFormat;
41
+ audioBitrate: string | null;
42
+ videoBitrate: string | null;
43
+ everyNthFrame: number;
44
+ numberOfGifLoops: number | null;
45
+ delayRenderTimeout: number;
33
46
  };
34
47
  export declare type RenderJob = {
35
48
  startedAt: number;
@@ -57,6 +70,19 @@ declare type AddRenderRequestDynamicFields = {
57
70
  quality: number | null;
58
71
  scale: number;
59
72
  verbose: boolean;
73
+ concurrency: number;
74
+ crf: number | null;
75
+ startFrame: number;
76
+ endFrame: number;
77
+ muted: boolean;
78
+ enforceAudioTrack: boolean;
79
+ proResProfile: ProResProfile | null;
80
+ pixelFormat: PixelFormat;
81
+ audioBitrate: string | null;
82
+ videoBitrate: string | null;
83
+ everyNthFrame: number;
84
+ numberOfGifLoops: number | null;
85
+ delayRenderTimeout: number;
60
86
  };
61
87
  export declare type CancelRenderRequest = {
62
88
  jobId: string;
@@ -1,35 +1,77 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.makeRetryPayload = void 0;
4
+ const get_default_video_contexts_1 = require("./get-default-video-contexts");
4
5
  const makeRetryPayload = (job) => {
6
+ var _a, _b, _c;
7
+ const defaults = window.remotion_renderDefaults;
8
+ if (!defaults) {
9
+ throw new Error('defaults not set');
10
+ }
5
11
  if (job.type === 'still') {
12
+ const { initialAudioCodec, initialRenderType, initialVideoCodec } = (0, get_default_video_contexts_1.getDefaultCodecs)({
13
+ defaultCodec: defaults.codec,
14
+ isStill: true,
15
+ });
6
16
  return {
7
17
  type: 'render',
8
18
  compositionId: job.compositionId,
9
19
  initialFrame: job.frame,
10
- initialImageFormat: job.imageFormat,
11
- initialQuality: job.quality,
20
+ initialStillImageFormat: job.imageFormat,
21
+ // TODO: Take from config
22
+ initialVideoImageFormat: 'jpeg',
23
+ initialQuality: (_a = job.quality) !== null && _a !== void 0 ? _a : defaults.quality,
12
24
  initialOutName: job.outName,
13
25
  initialScale: job.scale,
14
26
  initialVerbose: job.verbose,
15
- initialRenderType: 'still',
16
- // TODO: take initial codec from config file
17
- initialCodec: 'h264',
27
+ initialAudioCodec,
28
+ initialRenderType,
29
+ initialVideoCodec,
30
+ initialConcurrency: defaults.concurrency,
31
+ maxConcurrency: defaults.maxConcurrency,
32
+ minConcurrency: defaults.minConcurrency,
33
+ initialMuted: defaults.muted,
34
+ initialEnforceAudioTrack: defaults.enforceAudioTrack,
35
+ initialProResProfile: defaults.proResProfile,
36
+ initialPixelFormat: defaults.pixelFormat,
37
+ initialAudioBitrate: defaults.audioBitrate,
38
+ initialVideoBitrate: defaults.videoBitrate,
39
+ initialEveryNthFrame: defaults.everyNthFrame,
40
+ initialNumberOfGifLoops: defaults.numberOfGifLoops,
41
+ initialDelayRenderTimeout: defaults.delayRenderTimeout,
18
42
  };
19
43
  }
20
44
  if (job.type === 'video') {
21
- // TODO: Implement correct retry mechanism for video
45
+ const { initialAudioCodec, initialRenderType, initialVideoCodec } = (0, get_default_video_contexts_1.getDefaultCodecs)({
46
+ defaultCodec: defaults.codec,
47
+ isStill: false,
48
+ });
22
49
  return {
23
50
  type: 'render',
24
51
  compositionId: job.compositionId,
25
- initialImageFormat: job.imageFormat,
26
- initialQuality: job.quality,
52
+ // TODO: Take from config
53
+ initialStillImageFormat: 'png',
54
+ initialVideoImageFormat: job.imageFormat,
55
+ initialQuality: (_b = job.quality) !== null && _b !== void 0 ? _b : defaults.quality,
27
56
  initialOutName: job.outName,
28
57
  initialScale: job.scale,
29
58
  initialVerbose: job.verbose,
30
59
  initialFrame: 0,
31
- initialRenderType: 'video',
32
- initialCodec: job.codec,
60
+ initialConcurrency: job.concurrency,
61
+ maxConcurrency: defaults.maxConcurrency,
62
+ minConcurrency: defaults.minConcurrency,
63
+ initialMuted: job.muted,
64
+ initialAudioCodec,
65
+ initialEnforceAudioTrack: job.enforceAudioTrack,
66
+ initialRenderType,
67
+ initialVideoCodec,
68
+ initialProResProfile: (_c = job.proResProfile) !== null && _c !== void 0 ? _c : defaults.proResProfile,
69
+ initialPixelFormat: job.pixelFormat,
70
+ initialAudioBitrate: job.audioBitrate,
71
+ initialVideoBitrate: job.videoBitrate,
72
+ initialEveryNthFrame: job.everyNthFrame,
73
+ initialNumberOfGifLoops: job.numberOfGifLoops,
74
+ initialDelayRenderTimeout: job.delayRenderTimeout,
33
75
  };
34
76
  }
35
77
  throw new Error(`Job ${JSON.stringify(job)} Not implemented`);
@@ -5,11 +5,12 @@ const convert_entry_point_to_serve_url_1 = require("../../convert-entry-point-to
5
5
  const get_cli_options_1 = require("../../get-cli-options");
6
6
  const render_1 = require("../../render-flows/render");
7
7
  const processVideoJob = async ({ job, remotionRoot, entryPoint, onProgress, addCleanupCallback, }) => {
8
- var _a;
8
+ var _a, _b;
9
9
  if (job.type !== 'video') {
10
10
  throw new Error('Expected video job');
11
11
  }
12
- const { publicDir, browserExecutable, ffmpegExecutable, ffprobeExecutable, chromiumOptions, envVariables, inputProps, port, browser, puppeteerTimeout, } = await (0, get_cli_options_1.getCliOptions)({
12
+ // TODO: Change until none can be derived from UI
13
+ const { publicDir, browserExecutable, ffmpegExecutable, ffprobeExecutable, chromiumOptions, envVariables, inputProps, port, browser, ffmpegOverride, } = await (0, get_cli_options_1.getCliOptions)({
13
14
  isLambda: false,
14
15
  type: 'still',
15
16
  remotionRoot,
@@ -30,7 +31,7 @@ const processVideoJob = async ({ job, remotionRoot, entryPoint, onProgress, addC
30
31
  overwrite: true,
31
32
  port,
32
33
  publicDir,
33
- puppeteerTimeout,
34
+ puppeteerTimeout: job.delayRenderTimeout,
34
35
  quality: (_a = job.quality) !== null && _a !== void 0 ? _a : undefined,
35
36
  remainingArgs: [],
36
37
  scale: job.scale,
@@ -40,12 +41,9 @@ const processVideoJob = async ({ job, remotionRoot, entryPoint, onProgress, addC
40
41
  logLevel: job.verbose ? 'verbose' : 'info',
41
42
  onProgress,
42
43
  indent: true,
43
- // TODO: Make configurable
44
- concurrency: null,
45
- // TODO: Make configurable
46
- everyNthFrame: 1,
47
- // TODO: Make configurable
48
- frameRange: null,
44
+ concurrency: job.concurrency,
45
+ everyNthFrame: job.everyNthFrame,
46
+ frameRange: [job.startFrame, job.endFrame],
49
47
  quiet: false,
50
48
  shouldOutputImageSequence: false,
51
49
  addCleanupCallback,
@@ -53,6 +51,15 @@ const processVideoJob = async ({ job, remotionRoot, entryPoint, onProgress, addC
53
51
  uiCodec: job.codec,
54
52
  uiImageFormat: job.imageFormat,
55
53
  cancelSignal: job.cancelToken.cancelSignal,
54
+ crf: job.crf,
55
+ ffmpegOverride,
56
+ audioBitrate: job.audioBitrate,
57
+ muted: job.muted,
58
+ enforceAudioTrack: job.enforceAudioTrack,
59
+ proResProfile: (_b = job.proResProfile) !== null && _b !== void 0 ? _b : undefined,
60
+ pixelFormat: job.pixelFormat,
61
+ videoBitrate: job.videoBitrate,
62
+ numberOfGifLoops: job.numberOfGifLoops,
56
63
  });
57
64
  // TODO: Accept CLI options
58
65
  };
@@ -24,6 +24,19 @@ const handleAddRender = ({ input, entryPoint, remotionRoot, }) => {
24
24
  startedAt: Date.now(),
25
25
  verbose: input.verbose,
26
26
  cancelToken: (0, renderer_1.makeCancelSignal)(),
27
+ concurrency: input.concurrency,
28
+ crf: input.crf,
29
+ endFrame: input.endFrame,
30
+ startFrame: input.startFrame,
31
+ muted: input.muted,
32
+ enforceAudioTrack: input.enforceAudioTrack,
33
+ proResProfile: input.proResProfile,
34
+ pixelFormat: input.pixelFormat,
35
+ audioBitrate: input.audioBitrate,
36
+ videoBitrate: input.videoBitrate,
37
+ everyNthFrame: input.everyNthFrame,
38
+ numberOfGifLoops: input.numberOfGifLoops,
39
+ delayRenderTimeout: input.delayRenderTimeout,
27
40
  },
28
41
  });
29
42
  }
package/dist/preview.js CHANGED
@@ -73,7 +73,6 @@ const previewCommand = async (remotionRoot, args) => {
73
73
  process.exit(1);
74
74
  }
75
75
  const desiredPort = getPort();
76
- const fullPath = path_1.default.join(process.cwd(), file);
77
76
  let inputProps = (0, get_input_props_1.getInputProps)((newProps) => {
78
77
  waitForLiveEventsListener().then((listener) => {
79
78
  inputProps = newProps;
@@ -113,7 +112,7 @@ const previewCommand = async (remotionRoot, args) => {
113
112
  });
114
113
  const { port, liveEventsServer } = await (0, start_server_1.startServer)({
115
114
  entry: path_1.default.resolve(__dirname, 'previewEntry.js'),
116
- userDefinedComponent: fullPath,
115
+ userDefinedComponent: file,
117
116
  getCurrentInputProps: () => inputProps,
118
117
  getEnvVariables: () => envVariables,
119
118
  port: desiredPort,
@@ -1,6 +1,7 @@
1
- import type { Browser, BrowserExecutable, CancelSignal, ChromiumOptions, Codec, FfmpegExecutable, FrameRange, ImageFormat, LogLevel } from '@remotion/renderer';
1
+ import type { Browser, BrowserExecutable, CancelSignal, ChromiumOptions, Codec, Crf, FfmpegExecutable, FfmpegOverrideFn, FrameRange, ImageFormat, LogLevel, PixelFormat, ProResProfile } from '@remotion/renderer';
2
+ import type { Loop } from '../config/number-of-gif-loops';
2
3
  import type { JobProgressCallback } from '../preview-server/render-queue/job';
3
- export declare const renderCompFlow: ({ remotionRoot, fullEntryPoint, ffmpegExecutable, ffprobeExecutable, indent, logLevel, browserExecutable, browser, chromiumOptions, scale, shouldOutputImageSequence, publicDir, inputProps, envVariables, puppeteerTimeout, port, height, width, remainingArgs, compositionIdFromUi, entryPointReason, overwrite, quiet, concurrency, frameRange, everyNthFrame, configFileImageFormat, outputLocationFromUI, quality, onProgress, addCleanupCallback, uiCodec, uiImageFormat, cancelSignal, }: {
4
+ export declare const renderCompFlow: ({ remotionRoot, fullEntryPoint, ffmpegExecutable, ffprobeExecutable, indent, logLevel, browserExecutable, browser, chromiumOptions, scale, shouldOutputImageSequence, publicDir, inputProps, envVariables, puppeteerTimeout, port, height, width, remainingArgs, compositionIdFromUi, entryPointReason, overwrite, quiet, concurrency, frameRange, everyNthFrame, configFileImageFormat, outputLocationFromUI, quality, onProgress, addCleanupCallback, cancelSignal, crf, uiCodec, uiImageFormat, ffmpegOverride, audioBitrate, muted, enforceAudioTrack, proResProfile, pixelFormat, videoBitrate, numberOfGifLoops, }: {
4
5
  remotionRoot: string;
5
6
  fullEntryPoint: string;
6
7
  entryPointReason: string;
@@ -32,7 +33,16 @@ export declare const renderCompFlow: ({ remotionRoot, fullEntryPoint, ffmpegExec
32
33
  quality: number | undefined;
33
34
  onProgress: JobProgressCallback;
34
35
  addCleanupCallback: (cb: () => Promise<void>) => void;
35
- uiCodec: Codec | null;
36
- uiImageFormat: ImageFormat | null;
36
+ crf: Crf | null;
37
37
  cancelSignal: CancelSignal | null;
38
+ uiCodec: Codec | null;
39
+ uiImageFormat: 'png' | 'jpeg' | 'none' | null;
40
+ ffmpegOverride: FfmpegOverrideFn;
41
+ audioBitrate: string | null;
42
+ videoBitrate: string | null;
43
+ muted: boolean;
44
+ enforceAudioTrack: boolean;
45
+ proResProfile: ProResProfile | undefined;
46
+ pixelFormat: PixelFormat;
47
+ numberOfGifLoops: Loop;
38
48
  }) => Promise<void>;