@remotion/cli 4.0.77 → 4.0.81

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 (100) hide show
  1. package/dist/benchmark.js +3 -1
  2. package/dist/cloudrun-command.js +3 -4
  3. package/dist/config/bitrate.d.ts +4 -0
  4. package/dist/config/bitrate.js +22 -1
  5. package/dist/config/image-format.d.ts +1 -1
  6. package/dist/config/index.d.ts +12 -2
  7. package/dist/config/index.js +7 -4
  8. package/dist/download-progress.d.ts +1 -1
  9. package/dist/download-progress.js +2 -2
  10. package/dist/editor/components/Modals.js +1 -1
  11. package/dist/editor/components/RenderButton.js +3 -0
  12. package/dist/editor/components/RenderModal/CrfSetting.d.ts +3 -2
  13. package/dist/editor/components/RenderModal/EnforceAudioTrackSetting.d.ts +0 -2
  14. package/dist/editor/components/RenderModal/EnforceAudioTrackSetting.js +3 -4
  15. package/dist/editor/components/RenderModal/JpegQualitySetting.js +1 -2
  16. package/dist/editor/components/RenderModal/MutedSetting.d.ts +0 -2
  17. package/dist/editor/components/RenderModal/MutedSetting.js +3 -4
  18. package/dist/editor/components/RenderModal/NumberSetting.d.ts +2 -2
  19. package/dist/editor/components/RenderModal/NumberSetting.js +2 -3
  20. package/dist/editor/components/RenderModal/OptionExplainerBubble.d.ts +5 -0
  21. package/dist/editor/components/RenderModal/OptionExplainerBubble.js +12 -0
  22. package/dist/editor/components/RenderModal/RenderModal.d.ts +3 -0
  23. package/dist/editor/components/RenderModal/RenderModal.js +15 -4
  24. package/dist/editor/components/RenderModal/RenderModalAdvanced.d.ts +2 -0
  25. package/dist/editor/components/RenderModal/RenderModalAdvanced.js +19 -5
  26. package/dist/editor/components/RenderModal/RenderModalAudio.js +4 -4
  27. package/dist/editor/components/RenderModal/RenderModalBasic.js +2 -3
  28. package/dist/editor/components/RenderModal/RenderModalPicture.d.ts +4 -0
  29. package/dist/editor/components/RenderModal/RenderModalPicture.js +19 -5
  30. package/dist/editor/components/RenderModal/ScaleSetting.js +1 -2
  31. package/dist/editor/components/RenderModal/SchemaEditor/SchemaLabel.d.ts +1 -0
  32. package/dist/editor/components/RenderModal/SchemaEditor/SchemaLabel.js +19 -4
  33. package/dist/editor/components/RenderModal/SchemaEditor/SchemaSeparationLine.d.ts +8 -0
  34. package/dist/editor/components/RenderModal/SchemaEditor/SchemaSeparationLine.js +70 -2
  35. package/dist/editor/components/RenderModal/SchemaEditor/SchemaVerticalGuide.d.ts +1 -1
  36. package/dist/editor/components/RenderModal/SchemaEditor/SchemaVerticalGuide.js +23 -5
  37. package/dist/editor/components/RenderModal/SchemaEditor/ZodArrayEditor.js +12 -22
  38. package/dist/editor/components/RenderModal/SchemaEditor/ZodArrayItemEditor.js +6 -1
  39. package/dist/editor/components/RenderModal/SchemaEditor/ZodBooleanEditor.js +1 -1
  40. package/dist/editor/components/RenderModal/SchemaEditor/ZodColorEditor.js +1 -1
  41. package/dist/editor/components/RenderModal/SchemaEditor/ZodDateEditor.js +1 -1
  42. package/dist/editor/components/RenderModal/SchemaEditor/ZodDiscriminatedUnionEditor.js +1 -1
  43. package/dist/editor/components/RenderModal/SchemaEditor/ZodEnumEditor.js +1 -1
  44. package/dist/editor/components/RenderModal/SchemaEditor/ZodNonEditableValue.js +1 -1
  45. package/dist/editor/components/RenderModal/SchemaEditor/ZodNumberEditor.js +1 -1
  46. package/dist/editor/components/RenderModal/SchemaEditor/ZodObjectEditor.js +13 -5
  47. package/dist/editor/components/RenderModal/SchemaEditor/ZodOrNullishEditor.js +1 -1
  48. package/dist/editor/components/RenderModal/SchemaEditor/ZodStaticFileEditor.js +1 -1
  49. package/dist/editor/components/RenderModal/SchemaEditor/ZodStringEditor.js +1 -1
  50. package/dist/editor/components/RenderModal/SchemaEditor/ZodTextareaEditor.js +1 -1
  51. package/dist/editor/components/RenderModal/layout.d.ts +1 -0
  52. package/dist/editor/components/RenderModal/layout.js +6 -3
  53. package/dist/editor/components/RenderQueue/actions.d.ts +3 -1
  54. package/dist/editor/components/RenderQueue/actions.js +3 -1
  55. package/dist/editor/components/SidebarRenderButton.js +3 -0
  56. package/dist/editor/helpers/colors.d.ts +1 -0
  57. package/dist/editor/helpers/colors.js +2 -1
  58. package/dist/editor/helpers/render-modal-sections.d.ts +0 -1
  59. package/dist/editor/state/modals.d.ts +3 -0
  60. package/dist/get-cli-options.d.ts +4 -2
  61. package/dist/get-cli-options.js +4 -0
  62. package/dist/get-composition-id.js +2 -2
  63. package/dist/get-env.js +2 -2
  64. package/dist/get-render-defaults.d.ts +2 -0
  65. package/dist/get-render-defaults.js +71 -0
  66. package/dist/index.d.ts +13 -9
  67. package/dist/index.js +4 -4
  68. package/dist/lambda-command.js +3 -4
  69. package/dist/list-of-remotion-packages.js +1 -0
  70. package/dist/make-on-download.d.ts +1 -1
  71. package/dist/make-on-download.js +4 -2
  72. package/dist/parse-command-line.d.ts +6 -2
  73. package/dist/parse-command-line.js +6 -0
  74. package/dist/preview-server/render-queue/job.d.ts +4 -0
  75. package/dist/preview-server/render-queue/make-retry-payload.js +9 -0
  76. package/dist/preview-server/render-queue/process-video.js +2 -0
  77. package/dist/preview-server/routes/add-render.js +2 -0
  78. package/dist/preview-server/routes.d.ts +0 -1
  79. package/dist/preview-server/routes.js +6 -0
  80. package/dist/progress-bar.d.ts +1 -9
  81. package/dist/progress-bar.js +3 -4
  82. package/dist/progress-types.d.ts +1 -31
  83. package/dist/render-flows/render.d.ts +4 -2
  84. package/dist/render-flows/render.js +3 -1
  85. package/dist/render-flows/still.d.ts +1 -1
  86. package/dist/render-queue/process-still.d.ts +8 -0
  87. package/dist/render-queue/process-still.js +49 -0
  88. package/dist/render-queue/process-video.d.ts +10 -0
  89. package/dist/render-queue/process-video.js +70 -0
  90. package/dist/render-queue/queue.d.ts +11 -0
  91. package/dist/render-queue/queue.js +220 -0
  92. package/dist/render.js +3 -1
  93. package/dist/setup-cache.d.ts +1 -1
  94. package/dist/studio.js +30 -102
  95. package/dist/upgrade.js +4 -5
  96. package/dist/user-passed-output-location.js +2 -2
  97. package/package.json +10 -14
  98. package/styles/styles.css +0 -123
  99. package/types/global.d.ts +0 -4
  100. package/web/favicon.png +0 -0
@@ -29,6 +29,6 @@ const ZodStringEditor = ({ jsonPath, value, setValue, showSaveButton, defaultVal
29
29
  const save = (0, react_1.useCallback)(() => {
30
30
  onSave(() => value, false, false);
31
31
  }, [onSave, value]);
32
- return ((0, jsx_runtime_1.jsxs)(Fieldset_1.Fieldset, { shouldPad: mayPad, success: false, children: [(0, jsx_runtime_1.jsx)(SchemaLabel_1.SchemaLabel, { isDefaultValue: localValue.value === defaultValue, jsonPath: jsonPath, onReset: reset, onSave: save, showSaveButton: showSaveButton, onRemove: onRemove, saving: saving, valid: localValue.zodValidation.success, saveDisabledByParent: saveDisabledByParent, suffix: null }), (0, jsx_runtime_1.jsxs)("div", { style: fullWidth, children: [(0, jsx_runtime_1.jsx)(RemInput_1.RemotionInput, { value: localValue.value, status: localValue.zodValidation ? 'ok' : 'error', placeholder: jsonPath.join('.'), onChange: onChange, rightAlign: false, name: jsonPath.join('.') }), (0, jsx_runtime_1.jsx)(ZodFieldValidation_1.ZodFieldValidation, { path: jsonPath, localValue: localValue })] })] }));
32
+ return ((0, jsx_runtime_1.jsxs)(Fieldset_1.Fieldset, { shouldPad: mayPad, success: false, children: [(0, jsx_runtime_1.jsx)(SchemaLabel_1.SchemaLabel, { handleClick: null, isDefaultValue: localValue.value === defaultValue, jsonPath: jsonPath, onReset: reset, onSave: save, showSaveButton: showSaveButton, onRemove: onRemove, saving: saving, valid: localValue.zodValidation.success, saveDisabledByParent: saveDisabledByParent, suffix: null }), (0, jsx_runtime_1.jsxs)("div", { style: fullWidth, children: [(0, jsx_runtime_1.jsx)(RemInput_1.RemotionInput, { value: localValue.value, status: localValue.zodValidation ? 'ok' : 'error', placeholder: jsonPath.join('.'), onChange: onChange, rightAlign: false, name: jsonPath.join('.') }), (0, jsx_runtime_1.jsx)(ZodFieldValidation_1.ZodFieldValidation, { path: jsonPath, localValue: localValue })] })] }));
33
33
  };
34
34
  exports.ZodStringEditor = ZodStringEditor;
@@ -37,6 +37,6 @@ const ZodTextareaEditor = ({ jsonPath, value, setValue, showSaveButton, defaultV
37
37
  const save = (0, react_1.useCallback)(() => {
38
38
  onSave(() => value, false, false);
39
39
  }, [onSave, value]);
40
- return ((0, jsx_runtime_1.jsxs)(Fieldset_1.Fieldset, { shouldPad: mayPad, success: localValue.zodValidation.success, children: [(0, jsx_runtime_1.jsx)(SchemaLabel_1.SchemaLabel, { isDefaultValue: localValue.value === defaultValue, jsonPath: jsonPath, onReset: reset, onSave: save, showSaveButton: showSaveButton, onRemove: onRemove, saving: saving, valid: localValue.zodValidation.success, saveDisabledByParent: saveDisabledByParent, suffix: null }), (0, jsx_runtime_1.jsxs)("div", { style: fullWidth, children: [(0, jsx_runtime_1.jsx)(RemTextarea_1.RemTextarea, { onChange: onChange, value: localValue.value, status: localValue.zodValidation ? 'ok' : 'error', placeholder: jsonPath.join('.'), name: jsonPath.join('.'), style: textareaStyle }), (0, jsx_runtime_1.jsx)(ZodFieldValidation_1.ZodFieldValidation, { path: jsonPath, localValue: localValue })] })] }));
40
+ return ((0, jsx_runtime_1.jsxs)(Fieldset_1.Fieldset, { shouldPad: mayPad, success: localValue.zodValidation.success, children: [(0, jsx_runtime_1.jsx)(SchemaLabel_1.SchemaLabel, { handleClick: null, isDefaultValue: localValue.value === defaultValue, jsonPath: jsonPath, onReset: reset, onSave: save, showSaveButton: showSaveButton, onRemove: onRemove, saving: saving, valid: localValue.zodValidation.success, saveDisabledByParent: saveDisabledByParent, suffix: null }), (0, jsx_runtime_1.jsxs)("div", { style: fullWidth, children: [(0, jsx_runtime_1.jsx)(RemTextarea_1.RemTextarea, { onChange: onChange, value: localValue.value, status: localValue.zodValidation ? 'ok' : 'error', placeholder: jsonPath.join('.'), name: jsonPath.join('.'), style: textareaStyle }), (0, jsx_runtime_1.jsx)(ZodFieldValidation_1.ZodFieldValidation, { path: jsonPath, localValue: localValue })] })] }));
41
41
  };
42
42
  exports.ZodTextareaEditor = ZodTextareaEditor;
@@ -3,4 +3,5 @@ export declare const optionRow: React.CSSProperties;
3
3
  export declare const label: React.CSSProperties;
4
4
  export declare const rightRow: React.CSSProperties;
5
5
  export declare const input: React.CSSProperties;
6
+ export declare const fieldSetText: React.CSSProperties;
6
7
  export declare const fieldsetLabel: React.CSSProperties;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.fieldsetLabel = exports.input = exports.rightRow = exports.label = exports.optionRow = void 0;
3
+ exports.fieldsetLabel = exports.fieldSetText = exports.input = exports.rightRow = exports.label = exports.optionRow = void 0;
4
4
  const colors_1 = require("../../helpers/colors");
5
5
  exports.optionRow = {
6
6
  display: 'flex',
@@ -31,12 +31,15 @@ exports.rightRow = {
31
31
  exports.input = {
32
32
  minWidth: 250,
33
33
  };
34
- exports.fieldsetLabel = {
34
+ exports.fieldSetText = {
35
35
  color: colors_1.LIGHT_TEXT,
36
36
  fontSize: 14,
37
+ fontFamily: 'monospace',
38
+ };
39
+ exports.fieldsetLabel = {
40
+ ...exports.fieldSetText,
37
41
  display: 'flex',
38
42
  flexDirection: 'row',
39
- fontFamily: 'monospace',
40
43
  alignItems: 'center',
41
44
  width: '100%',
42
45
  };
@@ -35,7 +35,7 @@ export declare const addSequenceRenderJob: ({ compositionId, outName, imageForma
35
35
  disallowParallelEncoding: boolean;
36
36
  multiProcessOnLinux: boolean;
37
37
  }) => Promise<undefined>;
38
- export declare const addVideoRenderJob: ({ compositionId, outName, imageFormat, jpegQuality, scale, logLevel, codec, concurrency, crf, startFrame, endFrame, muted, enforceAudioTrack, proResProfile, x264Preset, pixelFormat, audioBitrate, videoBitrate, everyNthFrame, numberOfGifLoops, delayRenderTimeout, audioCodec, disallowParallelEncoding, chromiumOptions, envVariables, inputProps, offthreadVideoCacheSizeInBytes, colorSpace, multiProcessOnLinux, }: {
38
+ export declare const addVideoRenderJob: ({ compositionId, outName, imageFormat, jpegQuality, scale, logLevel, codec, concurrency, crf, startFrame, endFrame, muted, enforceAudioTrack, proResProfile, x264Preset, pixelFormat, audioBitrate, videoBitrate, everyNthFrame, numberOfGifLoops, delayRenderTimeout, audioCodec, disallowParallelEncoding, chromiumOptions, envVariables, inputProps, offthreadVideoCacheSizeInBytes, colorSpace, multiProcessOnLinux, encodingMaxRate, encodingBufferSize, }: {
39
39
  compositionId: string;
40
40
  outName: string;
41
41
  imageFormat: VideoImageFormat;
@@ -65,6 +65,8 @@ export declare const addVideoRenderJob: ({ compositionId, outName, imageFormat,
65
65
  offthreadVideoCacheSizeInBytes: number | null;
66
66
  colorSpace: ColorSpace;
67
67
  multiProcessOnLinux: boolean;
68
+ encodingMaxRate: string | null;
69
+ encodingBufferSize: string | null;
68
70
  }) => Promise<undefined>;
69
71
  export declare const unsubscribeFromFileExistenceWatcher: ({ file, clientId, }: {
70
72
  file: string;
@@ -75,7 +75,7 @@ const addSequenceRenderJob = ({ compositionId, outName, imageFormat, startFrame,
75
75
  });
76
76
  };
77
77
  exports.addSequenceRenderJob = addSequenceRenderJob;
78
- const addVideoRenderJob = ({ compositionId, outName, imageFormat, jpegQuality, scale, logLevel, codec, concurrency, crf, startFrame, endFrame, muted, enforceAudioTrack, proResProfile, x264Preset, pixelFormat, audioBitrate, videoBitrate, everyNthFrame, numberOfGifLoops, delayRenderTimeout, audioCodec, disallowParallelEncoding, chromiumOptions, envVariables, inputProps, offthreadVideoCacheSizeInBytes, colorSpace, multiProcessOnLinux, }) => {
78
+ const addVideoRenderJob = ({ compositionId, outName, imageFormat, jpegQuality, scale, logLevel, codec, concurrency, crf, startFrame, endFrame, muted, enforceAudioTrack, proResProfile, x264Preset, pixelFormat, audioBitrate, videoBitrate, everyNthFrame, numberOfGifLoops, delayRenderTimeout, audioCodec, disallowParallelEncoding, chromiumOptions, envVariables, inputProps, offthreadVideoCacheSizeInBytes, colorSpace, multiProcessOnLinux, encodingMaxRate, encodingBufferSize, }) => {
79
79
  return callApi('/api/render', {
80
80
  compositionId,
81
81
  type: 'video',
@@ -111,6 +111,8 @@ const addVideoRenderJob = ({ compositionId, outName, imageFormat, jpegQuality, s
111
111
  offthreadVideoCacheSizeInBytes,
112
112
  colorSpace,
113
113
  multiProcessOnLinux,
114
+ encodingBufferSize,
115
+ encodingMaxRate,
114
116
  });
115
117
  };
116
118
  exports.addVideoRenderJob = addVideoRenderJob;
@@ -61,6 +61,9 @@ const SidebarRenderButton = ({ composition, visible }) => {
61
61
  initialColorSpace: defaults.colorSpace,
62
62
  initialMultiProcessOnLinux: defaults.multiProcessOnLinux,
63
63
  defaultConfigurationVideoCodec: defaults.codec,
64
+ initialEncodingBufferSize: defaults.encodingBufferSize,
65
+ initialEncodingMaxRate: defaults.encodingMaxRate,
66
+ initialUserAgent: defaults.userAgent,
64
67
  });
65
68
  }, [composition.defaultProps, composition.id, props, setSelectedModal]);
66
69
  const renderAction = (0, react_1.useCallback)((color) => {
@@ -18,6 +18,7 @@ export declare const BLUE_DISABLED = "#284f73";
18
18
  export declare const LIGHT_TRANSPARENT = "rgba(255, 255, 255, 0.7)";
19
19
  export declare const UNSELECTED_GUIDE = "#7e1219";
20
20
  export declare const SELECTED_GUIDE = "#d22d3a";
21
+ export declare const LINE_COLOR = "#363A3E";
21
22
  export declare const getBackgroundFromHoverState: ({ selected, hovered, }: {
22
23
  selected: boolean;
23
24
  hovered: boolean;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getBackgroundFromHoverState = exports.SELECTED_GUIDE = exports.UNSELECTED_GUIDE = exports.LIGHT_TRANSPARENT = exports.BLUE_DISABLED = exports.BLUE = exports.WARNING_COLOR = exports.FAIL_COLOR = exports.TIMELINE_BACKGROUND = exports.INPUT_BORDER_COLOR_HOVERED = exports.INPUT_BORDER_COLOR_UNHOVERED = exports.CLEAR_HOVER = exports.VERY_LIGHT_TEXT = exports.RULER_COLOR = exports.LIGHT_TEXT = exports.SELECTED_BACKGROUND = exports.LIGHT_COLOR = exports.BORDER_COLOR = exports.INPUT_BACKGROUND = exports.BACKGROUND__TRANSPARENT = exports.BACKGROUND = void 0;
3
+ exports.getBackgroundFromHoverState = exports.LINE_COLOR = exports.SELECTED_GUIDE = exports.UNSELECTED_GUIDE = exports.LIGHT_TRANSPARENT = exports.BLUE_DISABLED = exports.BLUE = exports.WARNING_COLOR = exports.FAIL_COLOR = exports.TIMELINE_BACKGROUND = exports.INPUT_BORDER_COLOR_HOVERED = exports.INPUT_BORDER_COLOR_UNHOVERED = exports.CLEAR_HOVER = exports.VERY_LIGHT_TEXT = exports.RULER_COLOR = exports.LIGHT_TEXT = exports.SELECTED_BACKGROUND = exports.LIGHT_COLOR = exports.BORDER_COLOR = exports.INPUT_BACKGROUND = exports.BACKGROUND__TRANSPARENT = exports.BACKGROUND = void 0;
4
4
  exports.BACKGROUND = 'rgb(31,36,40)';
5
5
  exports.BACKGROUND__TRANSPARENT = 'rgba(31,36,40, 0)';
6
6
  exports.INPUT_BACKGROUND = '#2f363d';
@@ -22,6 +22,7 @@ exports.BLUE_DISABLED = '#284f73';
22
22
  exports.LIGHT_TRANSPARENT = 'rgba(255, 255, 255, 0.7)';
23
23
  exports.UNSELECTED_GUIDE = '#7e1219';
24
24
  exports.SELECTED_GUIDE = '#d22d3a';
25
+ exports.LINE_COLOR = '#363A3E';
25
26
  const getBackgroundFromHoverState = ({ selected, hovered, }) => {
26
27
  if (selected) {
27
28
  if (hovered) {
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import type { Codec } from '@remotion/renderer';
3
2
  import type { RenderType } from '../components/RenderModal/RenderModalAdvanced';
4
3
  type Section = 'general' | 'picture' | 'advanced' | 'data' | 'gif' | 'audio';
@@ -31,6 +31,9 @@ export type RenderModalState = {
31
31
  initialOffthreadVideoCacheSizeInBytes: number | null;
32
32
  initialColorSpace: ColorSpace;
33
33
  initialMultiProcessOnLinux: boolean;
34
+ initialUserAgent: string | null;
35
+ initialEncodingMaxRate: string | null;
36
+ initialEncodingBufferSize: string | null;
34
37
  minConcurrency: number;
35
38
  maxConcurrency: number;
36
39
  defaultProps: Record<string, unknown>;
@@ -17,7 +17,7 @@ export declare const getCliOptions: (options: {
17
17
  crf: import("@remotion/renderer").Crf | null;
18
18
  pixelFormat: "yuv420p" | "yuva420p" | "yuv422p" | "yuv444p" | "yuv420p10le" | "yuv422p10le" | "yuv444p10le" | "yuva444p10le";
19
19
  proResProfile: "4444-xq" | "4444" | "hq" | "standard" | "light" | "proxy" | undefined;
20
- x264Preset: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo" | undefined;
20
+ x264Preset: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | undefined;
21
21
  everyNthFrame: number;
22
22
  numberOfGifLoops: import("./config/number-of-gif-loops").Loop;
23
23
  stillFrame: number;
@@ -32,9 +32,11 @@ export declare const getCliOptions: (options: {
32
32
  ffmpegOverride: import("@remotion/renderer").FfmpegOverrideFn;
33
33
  audioBitrate: string | null;
34
34
  videoBitrate: string | null;
35
+ encodingBufferSize: string | null;
36
+ encodingMaxRate: string | null;
35
37
  height: number | null;
36
38
  width: number | null;
37
- configFileImageFormat: "none" | "png" | "jpeg" | undefined;
39
+ configFileImageFormat: "png" | "jpeg" | "none" | undefined;
38
40
  offthreadVideoCacheSizeInBytes: number | null;
39
41
  deleteAfter: ("1-day" | "3-days" | "7-days" | "30-days") | null;
40
42
  colorSpace: "default" | "bt709";
@@ -77,6 +77,8 @@ const getCliOptions = async (options) => {
77
77
  });
78
78
  const crf = getCrf(shouldOutputImageSequence);
79
79
  const videoBitrate = config_1.ConfigInternals.getVideoBitrate();
80
+ const encodingBufferSize = config_1.ConfigInternals.getEncodingBufferSize();
81
+ const encodingMaxRate = config_1.ConfigInternals.getEncodingMaxRate();
80
82
  const pixelFormat = config_1.ConfigInternals.getPixelFormat();
81
83
  const proResProfile = getProResProfile();
82
84
  const x264Preset = getx264Preset();
@@ -131,6 +133,8 @@ const getCliOptions = async (options) => {
131
133
  ffmpegOverride: config_1.ConfigInternals.getFfmpegOverrideFunction(),
132
134
  audioBitrate: config_1.ConfigInternals.getAudioBitrate(),
133
135
  videoBitrate,
136
+ encodingBufferSize,
137
+ encodingMaxRate,
134
138
  height,
135
139
  width,
136
140
  configFileImageFormat: config_1.ConfigInternals.getUserPreferredVideoImageFormat(),
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getCompositionId = void 0;
4
4
  const renderer_1 = require("@remotion/renderer");
5
- const format_bytes_1 = require("./format-bytes");
5
+ const studio_1 = require("@remotion/studio");
6
6
  const log_1 = require("./log");
7
7
  const show_compositions_picker_1 = require("./show-compositions-picker");
8
8
  const getCompName = ({ cliArgs, compositionIdFromUi, }) => {
@@ -42,7 +42,7 @@ const getCompositionId = async ({ args, compositionIdFromUi, serializedInputProp
42
42
  log_1.Log.warn({
43
43
  indent,
44
44
  logLevel,
45
- }, `The props of your composition are large (${(0, format_bytes_1.formatBytes)(propsSize)}). This may cause slowdown.`);
45
+ }, `The props of your composition are large (${studio_1.StudioInternals.formatBytes(propsSize)}). This may cause slowdown.`);
46
46
  }
47
47
  if (!config) {
48
48
  throw new Error(`Cannot find composition with ID "${compName}"`);
package/dist/get-env.js CHANGED
@@ -28,12 +28,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
29
  exports.getEnvironmentVariables = void 0;
30
30
  const renderer_1 = require("@remotion/renderer");
31
+ const studio_1 = require("@remotion/studio");
31
32
  const dotenv_1 = __importDefault(require("dotenv"));
32
33
  const node_fs_1 = __importStar(require("node:fs"));
33
34
  const node_path_1 = __importDefault(require("node:path"));
34
35
  const chalk_1 = require("./chalk");
35
36
  const config_1 = require("./config");
36
- const file_watcher_1 = require("./file-watcher");
37
37
  const log_1 = require("./log");
38
38
  const parse_command_line_1 = require("./parse-command-line");
39
39
  function getProcessEnv() {
@@ -52,7 +52,7 @@ const watchEnvFile = ({ processEnv, envFile, onUpdate, logLevel, }) => {
52
52
  ...dotenv_1.default.parse(file),
53
53
  });
54
54
  };
55
- const { unwatch } = (0, file_watcher_1.installFileWatcher)({
55
+ const { unwatch } = studio_1.StudioInternals.installFileWatcher({
56
56
  file: envFile,
57
57
  onChange: async (type) => {
58
58
  try {
@@ -0,0 +1,2 @@
1
+ import type { RenderDefaults } from '@remotion/bundler';
2
+ export declare const getRenderDefaults: () => RenderDefaults;
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getRenderDefaults = void 0;
4
+ const renderer_1 = require("@remotion/renderer");
5
+ const config_1 = require("./config");
6
+ const getRenderDefaults = () => {
7
+ var _a, _b;
8
+ const defaultJpegQuality = config_1.ConfigInternals.getJpegQuality();
9
+ const defaultScale = config_1.ConfigInternals.getScale();
10
+ const logLevel = config_1.ConfigInternals.Logging.getLogLevel();
11
+ const defaultCodec = config_1.ConfigInternals.getOutputCodecOrUndefined();
12
+ const concurrency = renderer_1.RenderInternals.getActualConcurrency(config_1.ConfigInternals.getConcurrency());
13
+ const muted = config_1.ConfigInternals.getMuted();
14
+ const enforceAudioTrack = config_1.ConfigInternals.getEnforceAudioTrack();
15
+ const pixelFormat = config_1.ConfigInternals.getPixelFormat();
16
+ const proResProfile = (_a = config_1.ConfigInternals.getProResProfile()) !== null && _a !== void 0 ? _a : 'hq';
17
+ const x264Preset = (_b = config_1.ConfigInternals.getPresetProfile()) !== null && _b !== void 0 ? _b : 'medium';
18
+ const audioBitrate = config_1.ConfigInternals.getAudioBitrate();
19
+ const videoBitrate = config_1.ConfigInternals.getVideoBitrate();
20
+ const encodingBufferSize = config_1.ConfigInternals.getEncodingBufferSize();
21
+ const encodingMaxRate = config_1.ConfigInternals.getEncodingMaxRate();
22
+ const everyNthFrame = config_1.ConfigInternals.getEveryNthFrame();
23
+ const numberOfGifLoops = config_1.ConfigInternals.getNumberOfGifLoops();
24
+ const delayRenderTimeout = config_1.ConfigInternals.getCurrentPuppeteerTimeout();
25
+ const audioCodec = config_1.ConfigInternals.getAudioCodec();
26
+ const stillImageFormat = config_1.ConfigInternals.getUserPreferredStillImageFormat();
27
+ const videoImageFormat = config_1.ConfigInternals.getUserPreferredVideoImageFormat();
28
+ const disableWebSecurity = config_1.ConfigInternals.getChromiumDisableWebSecurity();
29
+ const headless = config_1.ConfigInternals.getChromiumHeadlessMode();
30
+ const ignoreCertificateErrors = config_1.ConfigInternals.getIgnoreCertificateErrors();
31
+ const openGlRenderer = config_1.ConfigInternals.getChromiumOpenGlRenderer();
32
+ const offthreadVideoCacheSizeInBytes = config_1.ConfigInternals.getOffthreadVideoCacheSizeInBytes();
33
+ const colorSpace = config_1.ConfigInternals.getColorSpace();
34
+ const userAgent = config_1.ConfigInternals.getChromiumUserAgent();
35
+ const maxConcurrency = renderer_1.RenderInternals.getMaxConcurrency();
36
+ const minConcurrency = renderer_1.RenderInternals.getMinConcurrency();
37
+ const multiProcessOnLinux = config_1.ConfigInternals.getChromiumMultiProcessOnLinux();
38
+ return {
39
+ jpegQuality: defaultJpegQuality !== null && defaultJpegQuality !== void 0 ? defaultJpegQuality : renderer_1.RenderInternals.DEFAULT_JPEG_QUALITY,
40
+ scale: defaultScale !== null && defaultScale !== void 0 ? defaultScale : 1,
41
+ logLevel,
42
+ codec: defaultCodec !== null && defaultCodec !== void 0 ? defaultCodec : 'h264',
43
+ concurrency,
44
+ maxConcurrency,
45
+ minConcurrency,
46
+ stillImageFormat: stillImageFormat !== null && stillImageFormat !== void 0 ? stillImageFormat : renderer_1.RenderInternals.DEFAULT_STILL_IMAGE_FORMAT,
47
+ videoImageFormat: videoImageFormat !== null && videoImageFormat !== void 0 ? videoImageFormat : renderer_1.RenderInternals.DEFAULT_VIDEO_IMAGE_FORMAT,
48
+ muted,
49
+ enforceAudioTrack,
50
+ proResProfile,
51
+ x264Preset,
52
+ pixelFormat,
53
+ audioBitrate,
54
+ videoBitrate,
55
+ encodingBufferSize,
56
+ encodingMaxRate,
57
+ everyNthFrame,
58
+ numberOfGifLoops,
59
+ delayRenderTimeout,
60
+ audioCodec,
61
+ disableWebSecurity,
62
+ headless,
63
+ ignoreCertificateErrors,
64
+ openGlRenderer,
65
+ offthreadVideoCacheSizeInBytes,
66
+ colorSpace,
67
+ multiProcessOnLinux,
68
+ userAgent,
69
+ };
70
+ };
71
+ exports.getRenderDefaults = getRenderDefaults;
package/dist/index.d.ts CHANGED
@@ -87,7 +87,7 @@ export declare const CliInternals: {
87
87
  crf: import("@remotion/renderer").Crf | null;
88
88
  pixelFormat: "yuv420p" | "yuva420p" | "yuv422p" | "yuv444p" | "yuv420p10le" | "yuv422p10le" | "yuv444p10le" | "yuva444p10le";
89
89
  proResProfile: "4444-xq" | "4444" | "hq" | "standard" | "light" | "proxy" | undefined;
90
- x264Preset: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo" | undefined;
90
+ x264Preset: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | undefined;
91
91
  everyNthFrame: number;
92
92
  numberOfGifLoops: import("./config/number-of-gif-loops").Loop;
93
93
  stillFrame: number;
@@ -102,9 +102,11 @@ export declare const CliInternals: {
102
102
  ffmpegOverride: import("@remotion/renderer").FfmpegOverrideFn;
103
103
  audioBitrate: string | null;
104
104
  videoBitrate: string | null;
105
+ encodingBufferSize: string | null;
106
+ encodingMaxRate: string | null;
105
107
  height: number | null;
106
108
  width: number | null;
107
- configFileImageFormat: "none" | "png" | "jpeg" | undefined;
109
+ configFileImageFormat: "png" | "jpeg" | "none" | undefined;
108
110
  offthreadVideoCacheSizeInBytes: number | null;
109
111
  deleteAfter: ("1-day" | "3-days" | "7-days" | "30-days") | null;
110
112
  colorSpace: "default" | "bt709";
@@ -116,9 +118,9 @@ export declare const CliInternals: {
116
118
  parsedCli: {
117
119
  "browser-executable": import("@remotion/renderer").BrowserExecutable;
118
120
  "pixel-format": "yuv420p" | "yuva420p" | "yuv422p" | "yuv444p" | "yuv420p10le" | "yuv422p10le" | "yuv444p10le" | "yuva444p10le";
119
- "image-format": "none" | "png" | "jpeg" | "pdf" | "webp";
121
+ "image-format": "png" | "jpeg" | "pdf" | "webp" | "none";
120
122
  "prores-profile": "4444-xq" | "4444" | "hq" | "standard" | "light" | "proxy";
121
- "x264-preset": "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo";
123
+ "x264-preset": "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo";
122
124
  "bundle-cache": string;
123
125
  "env-file": string;
124
126
  "ignore-certificate-errors": string;
@@ -169,6 +171,8 @@ export declare const CliInternals: {
169
171
  "user-agent": string;
170
172
  "offthreadvideo-cache-size-in-bytes": number | null;
171
173
  "color-space": "default" | "bt709";
174
+ "buffer-size": string | null;
175
+ "max-rate": string | null;
172
176
  "delete-after": string | undefined;
173
177
  "enable-folder-expiry": boolean | undefined;
174
178
  "enable-multiprocess-on-linux": boolean;
@@ -176,18 +180,18 @@ export declare const CliInternals: {
176
180
  _: string[];
177
181
  };
178
182
  printError: (err: Error, logLevel: "verbose" | "info" | "warn" | "error") => Promise<void>;
179
- formatBytes: (number: number, options?: Intl.NumberFormatOptions & {
183
+ formatBytes: (number: number, options?: (Intl.NumberFormatOptions & {
180
184
  locale: string;
181
185
  bits?: boolean | undefined;
182
186
  binary?: boolean | undefined;
183
187
  signed: boolean;
184
- }) => string;
188
+ }) | undefined) => string;
185
189
  getFileSizeDownloadBar: (downloaded: number) => string;
186
190
  determineFinalStillImageFormat: ({ downloadName, outName, configImageFormat, cliFlag, isLambda, fromUi, }: {
187
191
  downloadName: string | null;
188
192
  outName: string | null;
189
193
  configImageFormat: "png" | "jpeg" | "pdf" | "webp" | null;
190
- cliFlag: "none" | "png" | "jpeg" | "pdf" | "webp" | null;
194
+ cliFlag: "png" | "jpeg" | "pdf" | "webp" | "none" | null;
191
195
  isLambda: boolean;
192
196
  fromUi: "png" | "jpeg" | "pdf" | "webp" | null;
193
197
  }) => {
@@ -202,8 +206,8 @@ export declare const CliInternals: {
202
206
  };
203
207
  getVideoImageFormat: ({ codec, uiImageFormat, }: {
204
208
  codec: import("@remotion/renderer").CodecOrUndefined;
205
- uiImageFormat: "none" | "png" | "jpeg" | null;
206
- }) => "none" | "png" | "jpeg";
209
+ uiImageFormat: "png" | "jpeg" | "none" | null;
210
+ }) => "png" | "jpeg" | "none";
207
211
  printCompositions: (compositions: import("remotion").VideoConfig[]) => void;
208
212
  getFinalOutputCodec: ({ cliFlag, configFile, downloadName, outName, uiCodec, compositionCodec, }: {
209
213
  cliFlag: import("@remotion/renderer").CodecOrUndefined;
package/dist/index.js CHANGED
@@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.CliInternals = exports.cli = void 0;
7
7
  const renderer_1 = require("@remotion/renderer");
8
+ const studio_1 = require("@remotion/studio");
8
9
  const minimist_1 = __importDefault(require("minimist"));
9
10
  const benchmark_1 = require("./benchmark");
10
11
  const chalk_1 = require("./chalk");
@@ -16,7 +17,6 @@ const determine_image_format_1 = require("./determine-image-format");
16
17
  const download_progress_1 = require("./download-progress");
17
18
  const entry_point_1 = require("./entry-point");
18
19
  const ffmpeg_1 = require("./ffmpeg");
19
- const format_bytes_1 = require("./format-bytes");
20
20
  const get_cli_options_1 = require("./get-cli-options");
21
21
  const get_composition_with_dimension_override_1 = require("./get-composition-with-dimension-override");
22
22
  const get_config_file_name_1 = require("./get-config-file-name");
@@ -36,7 +36,7 @@ const progress_bar_1 = require("./progress-bar");
36
36
  const render_1 = require("./render");
37
37
  const should_use_non_overlaying_logger_1 = require("./should-use-non-overlaying-logger");
38
38
  const still_1 = require("./still");
39
- const studio_1 = require("./studio");
39
+ const studio_2 = require("./studio");
40
40
  const upgrade_1 = require("./upgrade");
41
41
  const versions_1 = require("./versions");
42
42
  const cli = async () => {
@@ -73,7 +73,7 @@ const cli = async () => {
73
73
  await (0, compositions_1.listCompositionsCommand)(remotionRoot, args, logLevel);
74
74
  }
75
75
  else if (isStudio) {
76
- await (0, studio_1.studioCommand)(remotionRoot, args, logLevel);
76
+ await (0, studio_2.studioCommand)(remotionRoot, args, logLevel);
77
77
  }
78
78
  else if (command === 'lambda') {
79
79
  await (0, lambda_command_1.lambdaCommand)(remotionRoot, args, logLevel);
@@ -141,7 +141,7 @@ exports.CliInternals = {
141
141
  quietFlagProvided: parse_command_line_1.quietFlagProvided,
142
142
  parsedCli: parse_command_line_1.parsedCli,
143
143
  printError: print_error_1.printError,
144
- formatBytes: format_bytes_1.formatBytes,
144
+ formatBytes: studio_1.StudioInternals.formatBytes,
145
145
  getFileSizeDownloadBar: download_progress_1.getFileSizeDownloadBar,
146
146
  determineFinalStillImageFormat: determine_image_format_1.determineFinalStillImageFormat,
147
147
  minimist: minimist_1.default,
@@ -1,9 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.lambdaCommand = void 0;
4
+ const studio_1 = require("@remotion/studio");
4
5
  const log_1 = require("./log");
5
- const get_package_manager_1 = require("./preview-server/get-package-manager");
6
- const update_available_1 = require("./preview-server/update-available");
7
6
  const lambdaCommand = async (remotionRoot, args, logLevel) => {
8
7
  try {
9
8
  const path = require.resolve('@remotion/lambda', {
@@ -14,13 +13,13 @@ const lambdaCommand = async (remotionRoot, args, logLevel) => {
14
13
  process.exit(0);
15
14
  }
16
15
  catch (err) {
17
- const manager = (0, get_package_manager_1.getPackageManager)(remotionRoot, undefined);
16
+ const manager = studio_1.StudioInternals.getPackageManager(remotionRoot, undefined);
18
17
  const installCommand = manager === 'unknown' ? 'npm i' : manager.installCommand;
19
18
  log_1.Log.error(err);
20
19
  log_1.Log.error('Remotion Lambda is not installed.');
21
20
  log_1.Log.info('');
22
21
  log_1.Log.info('You can install it using:');
23
- log_1.Log.info(`${installCommand} @remotion/lambda@${(0, update_available_1.getRemotionVersion)()}`);
22
+ log_1.Log.info(`${installCommand} @remotion/lambda@${studio_1.StudioInternals.getRemotionVersion()}`);
24
23
  process.exit(1);
25
24
  }
26
25
  };
@@ -25,6 +25,7 @@ exports.listOfRemotionPackages = [
25
25
  '@remotion/rive',
26
26
  '@remotion/gif',
27
27
  '@remotion/shapes',
28
+ '@remotion/studio',
28
29
  '@remotion/zod-types',
29
30
  '@remotion/tailwind',
30
31
  '@remotion/transitions',
@@ -1,5 +1,5 @@
1
1
  import type { LogLevel, RenderMediaOnDownload } from '@remotion/renderer';
2
- import type { DownloadProgress } from './progress-types';
2
+ import type { DownloadProgress } from '@remotion/studio';
3
3
  export declare const makeOnDownload: ({ indent, logLevel, updatesDontOverwrite, downloads, updateRenderProgress, isUsingParallelEncoding, }: {
4
4
  indent: boolean;
5
5
  logLevel: LogLevel;
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.makeOnDownload = void 0;
4
- const format_bytes_1 = require("./format-bytes");
4
+ const studio_1 = require("@remotion/studio");
5
5
  const log_1 = require("./log");
6
6
  const makeOnDownload = ({ indent, logLevel, updatesDontOverwrite, downloads, updateRenderProgress, isUsingParallelEncoding, }) => {
7
7
  return (src) => {
@@ -30,7 +30,9 @@ const makeOnDownload = ({ indent, logLevel, updatesDontOverwrite, downloads, upd
30
30
  return;
31
31
  }
32
32
  lastUpdate = Date.now();
33
- log_1.Log.verbose({ indent, logLevel }, `Download [${nextDownloadIndex}]:`, percent ? `${(percent * 100).toFixed(1)}%` : (0, format_bytes_1.formatBytes)(downloaded));
33
+ log_1.Log.verbose({ indent, logLevel }, `Download [${nextDownloadIndex}]:`, percent
34
+ ? `${(percent * 100).toFixed(1)}%`
35
+ : studio_1.StudioInternals.formatBytes(downloaded));
34
36
  updateRenderProgress({
35
37
  newline: false,
36
38
  printToConsole: !updatesDontOverwrite,
@@ -13,8 +13,8 @@ type CommandLineOptions = {
13
13
  ['every-nth-frame']: number;
14
14
  ['number-of-gif-loops']: number;
15
15
  ['number-of-shared-audio-tags']: number;
16
- [BrowserSafeApis.options.offthreadVideoCacheSizeInBytesOption
17
- .cliFlag]: typeof BrowserSafeApis.options.offthreadVideoCacheSizeInBytesOption.type;
16
+ [BrowserSafeApis.options.offthreadVideoCacheSizeInBytes
17
+ .cliFlag]: typeof BrowserSafeApis.options.offthreadVideoCacheSizeInBytes.type;
18
18
  [BrowserSafeApis.options.colorSpaceOption
19
19
  .cliFlag]: typeof BrowserSafeApis.options.colorSpaceOption.type;
20
20
  version: string;
@@ -25,6 +25,10 @@ type CommandLineOptions = {
25
25
  ['public-dir']: string;
26
26
  ['audio-bitrate']: string;
27
27
  ['video-bitrate']: string;
28
+ [BrowserSafeApis.options.encodingBufferSizeOption
29
+ .cliFlag]: typeof BrowserSafeApis.options.encodingBufferSizeOption.type;
30
+ [BrowserSafeApis.options.encodingMaxRateOption
31
+ .cliFlag]: typeof BrowserSafeApis.options.encodingMaxRateOption.type;
28
32
  ['audio-codec']: AudioCodec;
29
33
  crf: number;
30
34
  force: boolean;
@@ -144,6 +144,12 @@ const parseCommandLine = () => {
144
144
  if (typeof exports.parsedCli['video-bitrate'] !== 'undefined') {
145
145
  config_1.Config.setVideoBitrate(exports.parsedCli['video-bitrate']);
146
146
  }
147
+ if (typeof exports.parsedCli['buffer-size'] !== 'undefined') {
148
+ config_1.Config.setEncodingBufferSize(exports.parsedCli['buffer-size']);
149
+ }
150
+ if (typeof exports.parsedCli['max-rate'] !== 'undefined') {
151
+ config_1.Config.setEncodingMaxRate(exports.parsedCli['max-rate']);
152
+ }
147
153
  if (typeof exports.parsedCli['offthreadvideo-cache-size-in-bytes'] !== 'undefined') {
148
154
  config_1.Config.setOffthreadVideoCacheSizeInBytes(exports.parsedCli['offthreadvideo-cache-size-in-bytes']);
149
155
  }
@@ -57,6 +57,8 @@ type RenderJobDynamicFields = ({
57
57
  pixelFormat: PixelFormat;
58
58
  audioBitrate: string | null;
59
59
  videoBitrate: string | null;
60
+ encodingBufferSize: string | null;
61
+ encodingMaxRate: string | null;
60
62
  everyNthFrame: number;
61
63
  numberOfGifLoops: number | null;
62
64
  disallowParallelEncoding: boolean;
@@ -116,6 +118,8 @@ type AddRenderRequestDynamicFields = {
116
118
  pixelFormat: PixelFormat;
117
119
  audioBitrate: string | null;
118
120
  videoBitrate: string | null;
121
+ encodingBufferSize: string | null;
122
+ encodingMaxRate: string | null;
119
123
  everyNthFrame: number;
120
124
  numberOfGifLoops: number | null;
121
125
  disallowParallelEncoding: boolean;
@@ -44,6 +44,9 @@ const makeRetryPayload = (job) => {
44
44
  initialColorSpace: defaults.colorSpace,
45
45
  initialMultiProcessOnLinux: job.multiProcessOnLinux,
46
46
  defaultConfigurationVideoCodec: defaults.codec,
47
+ initialEncodingBufferSize: defaults.encodingBufferSize,
48
+ initialEncodingMaxRate: defaults.encodingMaxRate,
49
+ initialUserAgent: job.chromiumOptions.userAgent,
47
50
  };
48
51
  }
49
52
  if (job.type === 'sequence') {
@@ -82,6 +85,9 @@ const makeRetryPayload = (job) => {
82
85
  initialMultiProcessOnLinux: job.multiProcessOnLinux,
83
86
  defaultConfigurationVideoCodec: defaults.codec,
84
87
  defaultConfigurationAudioCodec: defaults.audioCodec,
88
+ initialEncodingBufferSize: defaults.encodingBufferSize,
89
+ initialEncodingMaxRate: defaults.encodingMaxRate,
90
+ initialUserAgent: job.chromiumOptions.userAgent,
85
91
  };
86
92
  }
87
93
  if (job.type === 'video') {
@@ -120,6 +126,9 @@ const makeRetryPayload = (job) => {
120
126
  initialMultiProcessOnLinux: job.multiProcessOnLinux,
121
127
  defaultConfigurationVideoCodec: job.codec,
122
128
  defaultConfigurationAudioCodec: job.audioCodec,
129
+ initialEncodingBufferSize: job.encodingBufferSize,
130
+ initialEncodingMaxRate: job.encodingMaxRate,
131
+ initialUserAgent: job.chromiumOptions.userAgent,
123
132
  };
124
133
  }
125
134
  throw new Error(`Job ${JSON.stringify(job)} Not implemented`);
@@ -58,6 +58,8 @@ const processVideoJob = async ({ job, remotionRoot, entryPoint, onProgress, addC
58
58
  x264Preset: job.type === 'video' ? (_c = job.x264Preset) !== null && _c !== void 0 ? _c : undefined : undefined,
59
59
  pixelFormat: job.type === 'video' ? job.pixelFormat : 'yuv420p',
60
60
  videoBitrate: job.type === 'video' ? job.videoBitrate : null,
61
+ encodingBufferSize: job.type === 'video' ? job.encodingBufferSize : null,
62
+ encodingMaxRate: job.type === 'video' ? job.encodingMaxRate : null,
61
63
  numberOfGifLoops: job.type === 'video' ? job.numberOfGifLoops : null,
62
64
  audioCodec: job.type === 'video' ? job.audioCodec : null,
63
65
  disallowParallelEncoding: job.type === 'video' ? job.disallowParallelEncoding : false,
@@ -36,6 +36,8 @@ const handleAddRender = ({ input, entryPoint, remotionRoot, logLevel, }) => {
36
36
  pixelFormat: input.pixelFormat,
37
37
  audioBitrate: input.audioBitrate,
38
38
  videoBitrate: input.videoBitrate,
39
+ encodingMaxRate: input.encodingMaxRate,
40
+ encodingBufferSize: input.encodingBufferSize,
39
41
  everyNthFrame: input.everyNthFrame,
40
42
  numberOfGifLoops: input.numberOfGifLoops,
41
43
  delayRenderTimeout: input.delayRenderTimeout,
@@ -1,4 +1,3 @@
1
- /// <reference types="node" />
2
1
  import type { LogLevel } from '@remotion/renderer';
3
2
  import type { IncomingMessage, ServerResponse } from 'node:http';
4
3
  import type { LiveEventsServer } from './live-events';