@remotion/cli 3.3.78 → 3.3.80
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/better-opn/index.d.ts +6 -0
- package/dist/better-opn/index.js +202 -0
- package/dist/codemods/update-default-props.d.ts +5 -0
- package/dist/codemods/update-default-props.js +98 -0
- package/dist/editor/components/Checkbox.js +1 -0
- package/dist/editor/components/CollapsedSidebarExpander.d.ts +5 -0
- package/dist/editor/components/CollapsedSidebarExpander.js +40 -0
- package/dist/editor/components/CurrentCompositionSideEffects.js +11 -2
- package/dist/editor/components/InlineAction.js +1 -1
- package/dist/editor/components/Modals.js +3 -3
- package/dist/editor/components/NewComposition/RemTextarea.d.ts +7 -0
- package/dist/editor/components/NewComposition/RemTextarea.js +90 -0
- package/dist/editor/components/RenderButton.d.ts +2 -2
- package/dist/editor/components/RenderButton.js +5 -0
- package/dist/editor/components/RenderModal/CliCopyButton.d.ts +4 -0
- package/dist/editor/components/RenderModal/CliCopyButton.js +22 -0
- package/dist/editor/components/RenderModal/CrfSetting.d.ts +2 -1
- package/dist/editor/components/RenderModal/CrfSetting.js +2 -2
- package/dist/editor/components/RenderModal/EnforceAudioTrackSetting.d.ts +2 -0
- package/dist/editor/components/RenderModal/EnforceAudioTrackSetting.js +4 -2
- package/dist/editor/components/RenderModal/EnvInput.d.ts +10 -0
- package/dist/editor/components/RenderModal/EnvInput.js +54 -0
- package/dist/editor/components/RenderModal/FrameRangeSetting.js +1 -1
- package/dist/editor/components/RenderModal/{RenderErrorModal.d.ts → GuiRenderStatus.d.ts} +1 -1
- package/dist/editor/components/RenderModal/GuiRenderStatus.js +78 -0
- package/dist/editor/components/RenderModal/InfoBubble.js +16 -12
- package/dist/editor/components/RenderModal/InfoTooltip.d.ts +1 -0
- package/dist/editor/components/RenderModal/InfoTooltip.js +25 -16
- package/dist/editor/components/RenderModal/InlineEyeIcon.d.ts +5 -0
- package/dist/editor/components/RenderModal/InlineEyeIcon.js +38 -0
- package/dist/editor/components/RenderModal/InlineRemoveButton.d.ts +4 -0
- package/dist/editor/components/RenderModal/InlineRemoveButton.js +14 -0
- package/dist/editor/components/RenderModal/JpegQualitySetting.d.ts +5 -0
- package/dist/editor/components/RenderModal/JpegQualitySetting.js +12 -0
- package/dist/editor/components/RenderModal/MutedSetting.d.ts +2 -0
- package/dist/editor/components/RenderModal/MutedSetting.js +4 -2
- package/dist/editor/components/RenderModal/NumberOfLoopsSetting.js +1 -1
- package/dist/editor/components/RenderModal/NumberSetting.js +1 -1
- package/dist/editor/components/RenderModal/OptionExplainer.d.ts +1 -1
- package/dist/editor/components/RenderModal/OptionExplainer.js +26 -2
- package/dist/editor/components/RenderModal/RenderModal.d.ts +6 -1
- package/dist/editor/components/RenderModal/RenderModal.js +52 -9
- package/dist/editor/components/RenderModal/RenderModalAdvanced.d.ts +11 -0
- package/dist/editor/components/RenderModal/RenderModalAdvanced.js +34 -2
- package/dist/editor/components/RenderModal/RenderModalAudio.js +3 -1
- package/dist/editor/components/RenderModal/RenderModalBasic.d.ts +3 -2
- package/dist/editor/components/RenderModal/RenderModalBasic.js +5 -7
- package/dist/editor/components/RenderModal/RenderModalData.d.ts +10 -0
- package/dist/editor/components/RenderModal/RenderModalData.js +55 -0
- package/dist/editor/components/RenderModal/RenderModalEnvironmentVariables.d.ts +5 -0
- package/dist/editor/components/RenderModal/RenderModalEnvironmentVariables.js +52 -0
- package/dist/editor/components/RenderModal/RenderModalInput.d.ts +10 -0
- package/dist/editor/components/RenderModal/RenderModalInput.js +13 -0
- package/dist/editor/components/RenderModal/RenderModalJSONInputPropsEditor.d.ts +8 -0
- package/dist/editor/components/RenderModal/RenderModalJSONInputPropsEditor.js +87 -0
- package/dist/editor/components/RenderModal/RenderModalPicture.js +6 -4
- package/dist/editor/components/RenderModal/RenderStatusModal.d.ts +4 -0
- package/dist/editor/components/RenderModal/{RenderErrorModal.js → RenderStatusModal.js} +21 -14
- package/dist/editor/components/RenderModal/ScaleSetting.js +6 -3
- package/dist/editor/components/RenderModal/SchemaEditor/SchemaEditor.d.ts +12 -0
- package/dist/editor/components/RenderModal/SchemaEditor/SchemaEditor.js +36 -0
- package/dist/editor/components/RenderModal/SchemaEditor/SchemaLabel.d.ts +15 -0
- package/dist/editor/components/RenderModal/SchemaEditor/SchemaLabel.js +43 -0
- package/dist/editor/components/RenderModal/SchemaEditor/SchemaResetButton.d.ts +4 -0
- package/dist/editor/components/RenderModal/SchemaEditor/SchemaResetButton.js +12 -0
- package/dist/editor/components/RenderModal/SchemaEditor/SchemaSaveButton.d.ts +4 -0
- package/dist/editor/components/RenderModal/SchemaEditor/SchemaSaveButton.js +12 -0
- package/dist/editor/components/RenderModal/SchemaEditor/ZodArrayEditor.d.ts +14 -0
- package/dist/editor/components/RenderModal/SchemaEditor/ZodArrayEditor.js +70 -0
- package/dist/editor/components/RenderModal/SchemaEditor/ZodArrayItemEditor.d.ts +13 -0
- package/dist/editor/components/RenderModal/SchemaEditor/ZodArrayItemEditor.js +28 -0
- package/dist/editor/components/RenderModal/SchemaEditor/ZodBooleanEditor.d.ts +12 -0
- package/dist/editor/components/RenderModal/SchemaEditor/ZodBooleanEditor.js +27 -0
- package/dist/editor/components/RenderModal/SchemaEditor/ZodDateEditor.d.ts +14 -0
- package/dist/editor/components/RenderModal/SchemaEditor/ZodDateEditor.js +75 -0
- package/dist/editor/components/RenderModal/SchemaEditor/ZodEffectEditor.d.ts +14 -0
- package/dist/editor/components/RenderModal/SchemaEditor/ZodEffectEditor.js +51 -0
- package/dist/editor/components/RenderModal/SchemaEditor/ZodErrorMessages.d.ts +5 -0
- package/dist/editor/components/RenderModal/SchemaEditor/ZodErrorMessages.js +23 -0
- package/dist/editor/components/RenderModal/SchemaEditor/ZodNonEditableValue.d.ts +8 -0
- package/dist/editor/components/RenderModal/SchemaEditor/ZodNonEditableValue.js +23 -0
- package/dist/editor/components/RenderModal/SchemaEditor/ZodNumberEditor.d.ts +14 -0
- package/dist/editor/components/RenderModal/SchemaEditor/ZodNumberEditor.js +89 -0
- package/dist/editor/components/RenderModal/SchemaEditor/ZodObjectEditor.d.ts +14 -0
- package/dist/editor/components/RenderModal/SchemaEditor/ZodObjectEditor.js +57 -0
- package/dist/editor/components/RenderModal/SchemaEditor/ZodStringEditor.d.ts +14 -0
- package/dist/editor/components/RenderModal/SchemaEditor/ZodStringEditor.js +43 -0
- package/dist/editor/components/RenderModal/SchemaEditor/ZodSwitch.d.ts +14 -0
- package/dist/editor/components/RenderModal/SchemaEditor/ZodSwitch.js +56 -0
- package/dist/editor/components/RenderModal/SchemaEditor/date-serialization.d.ts +2 -0
- package/dist/editor/components/RenderModal/SchemaEditor/date-serialization.js +21 -0
- package/dist/editor/components/RenderModal/SchemaEditor/get-schema-label.d.ts +2 -0
- package/dist/editor/components/RenderModal/SchemaEditor/get-schema-label.js +15 -0
- package/dist/editor/components/RenderModal/SchemaEditor/zod-types.d.ts +1 -0
- package/dist/editor/components/RenderModal/SchemaEditor/zod-types.js +2 -0
- package/dist/editor/components/RenderModal/layout.d.ts +3 -1
- package/dist/editor/components/RenderModal/layout.js +19 -3
- package/dist/editor/components/RenderModal/out-name-checker.d.ts +15 -0
- package/dist/editor/components/RenderModal/out-name-checker.js +79 -0
- package/dist/editor/components/RenderQueue/RenderQueueError.js +3 -3
- package/dist/editor/components/RenderQueue/RenderQueueItemStatus.js +18 -2
- package/dist/editor/components/RenderQueue/RenderQueueOutputName.js +4 -2
- package/dist/editor/components/RenderQueue/RenderQueueProgressMessage.js +3 -4
- package/dist/editor/components/RenderQueue/RenderQueueRemoveItem.js +11 -1
- package/dist/editor/components/RenderQueue/SuccessIcon.d.ts +2 -0
- package/dist/editor/components/RenderQueue/SuccessIcon.js +14 -0
- package/dist/editor/components/RenderQueue/actions.d.ts +11 -2
- package/dist/editor/components/RenderQueue/actions.js +18 -3
- package/dist/editor/components/RenderToolbarIcon.js +5 -0
- package/dist/editor/components/RightPanel.d.ts +2 -0
- package/dist/editor/components/RightPanel.js +43 -0
- package/dist/editor/components/SidebarContent.js +1 -0
- package/dist/editor/helpers/convert-env-variables.d.ts +2 -0
- package/dist/editor/helpers/convert-env-variables.js +20 -0
- package/dist/editor/helpers/get-timeline-sequence-layout.js +1 -1
- package/dist/editor/helpers/render-modal-sections.d.ts +1 -1
- package/dist/editor/helpers/render-modal-sections.js +4 -4
- package/dist/editor/icons/data.d.ts +2 -0
- package/dist/editor/icons/data.js +8 -0
- package/dist/editor/icons/save.d.ts +2 -0
- package/dist/editor/icons/save.js +8 -0
- package/dist/handle-common-errors.js +16 -0
- package/dist/parse-command-line.d.ts +2 -0
- package/dist/preview-server/api-routes.js +2 -0
- package/dist/preview-server/api-types.d.ts +2 -1
- package/dist/preview-server/render-queue/job.d.ts +25 -12
- package/dist/preview-server/render-queue/make-retry-payload.js +11 -1
- package/dist/preview-server/render-queue/open-directory-in-finder.d.ts +1 -1
- package/dist/preview-server/render-queue/open-directory-in-finder.js +10 -1
- package/dist/preview-server/render-queue/process-still.js +4 -10
- package/dist/preview-server/render-queue/process-video.js +4 -10
- package/dist/preview-server/render-queue/queue.js +38 -16
- package/dist/preview-server/routes/add-render.js +7 -0
- package/dist/preview-server/routes/open-in-file-explorer.js +1 -7
- package/dist/preview-server/routes/update-default-props.d.ts +3 -0
- package/dist/preview-server/routes/update-default-props.js +22 -0
- package/dist/preview.js +8 -3
- package/dist/progress-types.d.ts +32 -0
- package/dist/progress-types.js +17 -0
- package/dist/render-flows/render.js +66 -52
- package/dist/render-flows/still.js +18 -18
- package/dist/required-chromium-options.d.ts +3 -0
- package/dist/required-chromium-options.js +2 -0
- package/package.json +7 -7
- package/dist/editor/components/RenderModal/QualitySetting.d.ts +0 -5
- package/dist/editor/components/RenderModal/QualitySetting.js +0 -27
- package/dist/gcp-command.d.ts +0 -1
- package/dist/gcp-command.js +0 -27
|
@@ -7,7 +7,9 @@ exports.processJobIfPossible = exports.cancelJob = exports.removeJob = exports.a
|
|
|
7
7
|
const path_1 = __importDefault(require("path"));
|
|
8
8
|
const chalk_1 = require("../../chalk");
|
|
9
9
|
const file_watcher_1 = require("../../file-watcher");
|
|
10
|
+
const handle_common_errors_1 = require("../../handle-common-errors");
|
|
10
11
|
const log_1 = require("../../log");
|
|
12
|
+
const progress_types_1 = require("../../progress-types");
|
|
11
13
|
const live_events_1 = require("../live-events");
|
|
12
14
|
const process_still_1 = require("./process-still");
|
|
13
15
|
const process_video_1 = require("./process-video");
|
|
@@ -105,28 +107,42 @@ const processJobIfPossible = async ({ remotionRoot, entryPoint, }) => {
|
|
|
105
107
|
return {
|
|
106
108
|
...job,
|
|
107
109
|
status: 'running',
|
|
108
|
-
progress:
|
|
109
|
-
|
|
110
|
+
progress: {
|
|
111
|
+
value: 0,
|
|
112
|
+
message: 'Starting job...',
|
|
113
|
+
...(0, progress_types_1.initialAggregateRenderProgress)(),
|
|
114
|
+
},
|
|
110
115
|
};
|
|
111
116
|
});
|
|
112
117
|
const startTime = Date.now();
|
|
113
118
|
log_1.Log.info(chalk_1.chalk.gray('╭─ Starting render '));
|
|
119
|
+
let lastProgress = null;
|
|
114
120
|
await (0, exports.processJob)({
|
|
115
121
|
job: nextJob,
|
|
116
122
|
entryPoint,
|
|
117
123
|
remotionRoot,
|
|
118
|
-
onProgress: (
|
|
124
|
+
onProgress: (progress) => {
|
|
119
125
|
updateJob(nextJob.id, (job) => {
|
|
126
|
+
lastProgress = progress;
|
|
120
127
|
// Ignore late callbacks of progress updates after cancelling
|
|
121
128
|
if (job.status === 'failed' || job.status === 'done') {
|
|
122
129
|
return job;
|
|
123
130
|
}
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
131
|
+
if (job.type === 'still') {
|
|
132
|
+
return {
|
|
133
|
+
...job,
|
|
134
|
+
status: 'running',
|
|
135
|
+
progress,
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
if (job.type === 'video') {
|
|
139
|
+
return {
|
|
140
|
+
...job,
|
|
141
|
+
status: 'running',
|
|
142
|
+
progress,
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
throw new Error('Unknown job type');
|
|
130
146
|
});
|
|
131
147
|
},
|
|
132
148
|
addCleanupCallback: (cleanup) => {
|
|
@@ -151,15 +167,20 @@ const processJobIfPossible = async ({ remotionRoot, entryPoint, }) => {
|
|
|
151
167
|
}
|
|
152
168
|
},
|
|
153
169
|
});
|
|
154
|
-
updateJob(nextJob.id, (job) =>
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
170
|
+
updateJob(nextJob.id, (job) => {
|
|
171
|
+
if (!lastProgress) {
|
|
172
|
+
throw new Error('expected progress');
|
|
173
|
+
}
|
|
174
|
+
return {
|
|
175
|
+
...job,
|
|
176
|
+
status: 'done',
|
|
177
|
+
cleanup: [...job.cleanup, unwatch],
|
|
178
|
+
progress: { message: 'Done', value: 1, ...lastProgress },
|
|
179
|
+
};
|
|
180
|
+
});
|
|
159
181
|
}
|
|
160
182
|
catch (err) {
|
|
161
|
-
|
|
162
|
-
log_1.Log.error(chalk_1.chalk.gray('╰─ Render failed:'), err);
|
|
183
|
+
log_1.Log.error(chalk_1.chalk.gray('╰─ '), chalk_1.chalk.red('Failed to render'));
|
|
163
184
|
updateJob(nextJob.id, (job) => {
|
|
164
185
|
return {
|
|
165
186
|
...job,
|
|
@@ -170,6 +191,7 @@ const processJobIfPossible = async ({ remotionRoot, entryPoint, }) => {
|
|
|
170
191
|
},
|
|
171
192
|
};
|
|
172
193
|
});
|
|
194
|
+
await (0, handle_common_errors_1.handleCommonError)(err);
|
|
173
195
|
(0, live_events_1.waitForLiveEventsListener)().then((listener) => {
|
|
174
196
|
listener.sendEventToClient({
|
|
175
197
|
type: 'render-job-failed',
|
|
@@ -39,6 +39,9 @@ const handleAddRender = ({ input, entryPoint, remotionRoot, }) => {
|
|
|
39
39
|
numberOfGifLoops: input.numberOfGifLoops,
|
|
40
40
|
delayRenderTimeout: input.delayRenderTimeout,
|
|
41
41
|
disallowParallelEncoding: input.disallowParallelEncoding,
|
|
42
|
+
chromiumOptions: input.chromiumOptions,
|
|
43
|
+
envVariables: input.envVariables,
|
|
44
|
+
inputProps: input.inputProps,
|
|
42
45
|
},
|
|
43
46
|
});
|
|
44
47
|
}
|
|
@@ -59,6 +62,10 @@ const handleAddRender = ({ input, entryPoint, remotionRoot, }) => {
|
|
|
59
62
|
deletedOutputLocation: false,
|
|
60
63
|
verbose: input.verbose,
|
|
61
64
|
cancelToken: (0, renderer_1.makeCancelSignal)(),
|
|
65
|
+
chromiumOptions: input.chromiumOptions,
|
|
66
|
+
delayRenderTimeout: input.delayRenderTimeout,
|
|
67
|
+
envVariables: input.envVariables,
|
|
68
|
+
inputProps: input.inputProps,
|
|
62
69
|
},
|
|
63
70
|
entryPoint,
|
|
64
71
|
remotionRoot,
|
|
@@ -1,14 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.handleOpenInFileExplorer = void 0;
|
|
7
|
-
const path_1 = __importDefault(require("path"));
|
|
8
4
|
const open_directory_in_finder_1 = require("../render-queue/open-directory-in-finder");
|
|
9
5
|
const handleOpenInFileExplorer = ({ input: { directory }, remotionRoot }) => {
|
|
10
|
-
|
|
11
|
-
// TODO: Disallow opening file that is not in Remotion CWD
|
|
12
|
-
return (0, open_directory_in_finder_1.openDirectoryInFinder)(actualDirectory);
|
|
6
|
+
return (0, open_directory_in_finder_1.openDirectoryInFinder)(directory, remotionRoot);
|
|
13
7
|
};
|
|
14
8
|
exports.handleOpenInFileExplorer = handleOpenInFileExplorer;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.updateDefaultPropsHandler = void 0;
|
|
4
|
+
const fs_1 = require("fs");
|
|
5
|
+
const update_default_props_1 = require("../../codemods/update-default-props");
|
|
6
|
+
const date_serialization_1 = require("../../editor/components/RenderModal/SchemaEditor/date-serialization");
|
|
7
|
+
const project_info_1 = require("../project-info");
|
|
8
|
+
const updateDefaultPropsHandler = async ({ input: { compositionId, defaultProps }, remotionRoot }) => {
|
|
9
|
+
const projectInfo = await (0, project_info_1.getProjectInfo)(remotionRoot);
|
|
10
|
+
// TODO: What happens if this error is thrown? Handle in frontend
|
|
11
|
+
if (!projectInfo.videoFile) {
|
|
12
|
+
throw new Error('Cannot find Roo.tsx file in project');
|
|
13
|
+
}
|
|
14
|
+
// TODO: Pass error to frontend
|
|
15
|
+
const updated = await (0, update_default_props_1.updateDefaultProps)({
|
|
16
|
+
compositionId,
|
|
17
|
+
input: (0, fs_1.readFileSync)(projectInfo.videoFile, 'utf-8'),
|
|
18
|
+
newDefaultProps: (0, date_serialization_1.deserializeJSONWithDate)(defaultProps),
|
|
19
|
+
});
|
|
20
|
+
(0, fs_1.writeFileSync)(projectInfo.videoFile, updated);
|
|
21
|
+
};
|
|
22
|
+
exports.updateDefaultPropsHandler = updateDefaultPropsHandler;
|
package/dist/preview.js
CHANGED
|
@@ -4,9 +4,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.previewCommand = void 0;
|
|
7
|
-
const better_opn_1 = __importDefault(require("better-opn"));
|
|
8
7
|
const crypto_1 = __importDefault(require("crypto"));
|
|
9
8
|
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const better_opn_1 = require("./better-opn");
|
|
10
10
|
const chalk_1 = require("./chalk");
|
|
11
11
|
const config_1 = require("./config");
|
|
12
12
|
const entry_point_1 = require("./entry-point");
|
|
@@ -36,13 +36,14 @@ const waitForLiveEventsListener = () => {
|
|
|
36
36
|
});
|
|
37
37
|
};
|
|
38
38
|
const getShouldOpenBrowser = () => {
|
|
39
|
+
var _a;
|
|
39
40
|
if (parse_command_line_1.parsedCli['no-open']) {
|
|
40
41
|
return {
|
|
41
42
|
shouldOpenBrowser: false,
|
|
42
43
|
reasonForBrowserDecision: '--no-open specified',
|
|
43
44
|
};
|
|
44
45
|
}
|
|
45
|
-
if (process.env.BROWSER === 'none') {
|
|
46
|
+
if (((_a = process.env.BROWSER) !== null && _a !== void 0 ? _a : '').toLowerCase() === 'none') {
|
|
46
47
|
return {
|
|
47
48
|
shouldOpenBrowser: false,
|
|
48
49
|
reasonForBrowserDecision: 'env BROWSER=none was set',
|
|
@@ -136,7 +137,11 @@ const previewCommand = async (remotionRoot, args) => {
|
|
|
136
137
|
}
|
|
137
138
|
const { reasonForBrowserDecision, shouldOpenBrowser } = getShouldOpenBrowser();
|
|
138
139
|
if (shouldOpenBrowser) {
|
|
139
|
-
(0, better_opn_1.
|
|
140
|
+
await (0, better_opn_1.openBrowser)({
|
|
141
|
+
url: `http://localhost:${port}`,
|
|
142
|
+
browserArgs: parse_command_line_1.parsedCli['browser-args'],
|
|
143
|
+
browserFlag: parse_command_line_1.parsedCli.browser,
|
|
144
|
+
});
|
|
140
145
|
}
|
|
141
146
|
else {
|
|
142
147
|
log_1.Log.verbose(`Not opening browser, reason: ${reasonForBrowserDecision}`);
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { Codec, StitchingState } from '@remotion/renderer';
|
|
2
|
+
import type { BundlingState, CopyingState } from './progress-bar';
|
|
3
|
+
import type { RenderStep } from './step';
|
|
4
|
+
export declare type DownloadProgress = {
|
|
5
|
+
name: string;
|
|
6
|
+
id: number;
|
|
7
|
+
progress: number | null;
|
|
8
|
+
totalBytes: number | null;
|
|
9
|
+
downloaded: number;
|
|
10
|
+
};
|
|
11
|
+
export declare type RenderingProgressInput = {
|
|
12
|
+
frames: number;
|
|
13
|
+
totalFrames: number;
|
|
14
|
+
steps: RenderStep[];
|
|
15
|
+
concurrency: number;
|
|
16
|
+
doneIn: number | null;
|
|
17
|
+
};
|
|
18
|
+
export declare type StitchingProgressInput = {
|
|
19
|
+
frames: number;
|
|
20
|
+
totalFrames: number;
|
|
21
|
+
doneIn: number | null;
|
|
22
|
+
stage: StitchingState;
|
|
23
|
+
codec: Codec;
|
|
24
|
+
};
|
|
25
|
+
export declare type AggregateRenderProgress = {
|
|
26
|
+
rendering: RenderingProgressInput | null;
|
|
27
|
+
stitching: StitchingProgressInput | null;
|
|
28
|
+
downloads: DownloadProgress[];
|
|
29
|
+
bundling: BundlingState;
|
|
30
|
+
copyingState: CopyingState;
|
|
31
|
+
};
|
|
32
|
+
export declare const initialAggregateRenderProgress: () => AggregateRenderProgress;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.initialAggregateRenderProgress = void 0;
|
|
4
|
+
const initialAggregateRenderProgress = () => ({
|
|
5
|
+
rendering: null,
|
|
6
|
+
downloads: [],
|
|
7
|
+
stitching: null,
|
|
8
|
+
bundling: {
|
|
9
|
+
progress: 0,
|
|
10
|
+
doneIn: null,
|
|
11
|
+
},
|
|
12
|
+
copyingState: {
|
|
13
|
+
bytes: 0,
|
|
14
|
+
doneIn: null,
|
|
15
|
+
},
|
|
16
|
+
});
|
|
17
|
+
exports.initialAggregateRenderProgress = initialAggregateRenderProgress;
|
|
@@ -37,20 +37,55 @@ const renderVideoFlow = async ({ remotionRoot, fullEntryPoint, indent, logLevel,
|
|
|
37
37
|
forceDeviceScaleFactor: scale,
|
|
38
38
|
indentationString: indent ? log_1.INDENT_TOKEN + ' ' : '',
|
|
39
39
|
});
|
|
40
|
+
const renderProgress = (0, progress_bar_1.createOverwriteableCliOutput)({
|
|
41
|
+
quiet,
|
|
42
|
+
cancelSignal,
|
|
43
|
+
});
|
|
40
44
|
const steps = [
|
|
41
45
|
renderer_1.RenderInternals.isServeUrl(fullEntryPoint) ? null : 'bundling',
|
|
42
46
|
'rendering',
|
|
43
47
|
shouldOutputImageSequence ? null : 'stitching',
|
|
44
48
|
].filter(truthy_1.truthy);
|
|
49
|
+
let bundlingProgress = {
|
|
50
|
+
doneIn: null,
|
|
51
|
+
progress: 0,
|
|
52
|
+
};
|
|
53
|
+
let renderingProgress = null;
|
|
54
|
+
let stitchingProgress = null;
|
|
55
|
+
let copyingState = {
|
|
56
|
+
bytes: 0,
|
|
57
|
+
doneIn: null,
|
|
58
|
+
};
|
|
59
|
+
const updateRenderProgress = () => {
|
|
60
|
+
const aggregateRenderProgress = {
|
|
61
|
+
rendering: renderingProgress,
|
|
62
|
+
stitching: shouldOutputImageSequence ? null : stitchingProgress,
|
|
63
|
+
downloads,
|
|
64
|
+
bundling: bundlingProgress,
|
|
65
|
+
copyingState,
|
|
66
|
+
};
|
|
67
|
+
const { output, message, progress } = (0, progress_bar_1.makeRenderingAndStitchingProgress)({
|
|
68
|
+
prog: aggregateRenderProgress,
|
|
69
|
+
indent,
|
|
70
|
+
steps: steps.length,
|
|
71
|
+
stitchingStep: steps.indexOf('bundling'),
|
|
72
|
+
});
|
|
73
|
+
onProgress({ message, value: progress, ...aggregateRenderProgress });
|
|
74
|
+
return renderProgress.update(output);
|
|
75
|
+
};
|
|
45
76
|
const { urlOrBundle, cleanup: cleanupBundle } = await (0, setup_cache_1.bundleOnCliOrTakeServeUrl)({
|
|
46
77
|
fullPath: fullEntryPoint,
|
|
47
78
|
remotionRoot,
|
|
48
|
-
steps,
|
|
49
79
|
publicDir,
|
|
50
|
-
|
|
51
|
-
|
|
80
|
+
onProgress: ({ bundling, copying }) => {
|
|
81
|
+
bundlingProgress = bundling;
|
|
82
|
+
copyingState = copying;
|
|
83
|
+
updateRenderProgress();
|
|
84
|
+
},
|
|
52
85
|
indentOutput: indent,
|
|
53
86
|
logLevel,
|
|
87
|
+
bundlingStep: steps.indexOf('bundling'),
|
|
88
|
+
steps: steps.length,
|
|
54
89
|
});
|
|
55
90
|
(0, cleanup_before_quit_1.registerCleanupJob)(() => cleanupBundle());
|
|
56
91
|
addCleanupCallback(() => cleanupBundle());
|
|
@@ -116,52 +151,15 @@ const renderVideoFlow = async ({ remotionRoot, fullEntryPoint, indent, logLevel,
|
|
|
116
151
|
});
|
|
117
152
|
log_1.Log.infoAdvanced({ indent, logLevel }, chalk_1.chalk.gray(`Entry point = ${fullEntryPoint} (${entryPointReason}), Composition = ${compositionId} (${reason}), Codec = ${codec} (${codecReason}), Output = ${relativeOutputLocation}`));
|
|
118
153
|
const absoluteOutputFile = (0, get_cli_options_1.getAndValidateAbsoluteOutputFile)(relativeOutputLocation, overwrite);
|
|
119
|
-
const outputDir = shouldOutputImageSequence
|
|
120
|
-
? absoluteOutputFile
|
|
121
|
-
: await fs_1.default.promises.mkdtemp(path_1.default.join(os_1.default.tmpdir(), 'react-motion-render'));
|
|
122
|
-
log_1.Log.verboseAdvanced({ indent, logLevel }, 'Output dir', outputDir);
|
|
123
|
-
const renderProgress = (0, progress_bar_1.createOverwriteableCliOutput)({
|
|
124
|
-
quiet,
|
|
125
|
-
cancelSignal,
|
|
126
|
-
});
|
|
127
154
|
const realFrameRange = renderer_1.RenderInternals.getRealFrameRange(config.durationInFrames, frameRange);
|
|
128
155
|
const totalFrames = renderer_1.RenderInternals.getFramesToRender(realFrameRange, everyNthFrame);
|
|
129
|
-
let encodedFrames = 0;
|
|
130
|
-
let renderedFrames = 0;
|
|
131
|
-
let encodedDoneIn = null;
|
|
132
|
-
let renderedDoneIn = null;
|
|
133
|
-
let stitchStage = 'encoding';
|
|
134
156
|
const actualConcurrency = renderer_1.RenderInternals.getActualConcurrency(concurrency);
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
frames: renderedFrames,
|
|
142
|
-
totalFrames: totalFrames.length,
|
|
143
|
-
concurrency: actualConcurrency,
|
|
144
|
-
doneIn: renderedDoneIn,
|
|
145
|
-
steps,
|
|
146
|
-
},
|
|
147
|
-
stitching: shouldOutputImageSequence
|
|
148
|
-
? null
|
|
149
|
-
: {
|
|
150
|
-
doneIn: encodedDoneIn,
|
|
151
|
-
frames: encodedFrames,
|
|
152
|
-
stage: stitchStage,
|
|
153
|
-
steps,
|
|
154
|
-
totalFrames: totalFrames.length,
|
|
155
|
-
codec,
|
|
156
|
-
},
|
|
157
|
-
downloads,
|
|
158
|
-
bundling: {
|
|
159
|
-
message: 'Bundled',
|
|
160
|
-
progress: 1,
|
|
161
|
-
},
|
|
162
|
-
}, indent);
|
|
163
|
-
onProgress({ progress, message });
|
|
164
|
-
return renderProgress.update(output);
|
|
157
|
+
renderingProgress = {
|
|
158
|
+
frames: 0,
|
|
159
|
+
totalFrames: totalFrames.length,
|
|
160
|
+
concurrency: actualConcurrency,
|
|
161
|
+
doneIn: null,
|
|
162
|
+
steps,
|
|
165
163
|
};
|
|
166
164
|
const imageFormat = (0, image_formats_1.getVideoImageFormat)({
|
|
167
165
|
codec: shouldOutputImageSequence ? undefined : codec,
|
|
@@ -174,11 +172,15 @@ const renderVideoFlow = async ({ remotionRoot, fullEntryPoint, indent, logLevel,
|
|
|
174
172
|
if (imageFormat === 'none') {
|
|
175
173
|
throw new Error(`Cannot render an image sequence with a codec that renders no images. codec = ${codec}, imageFormat = ${imageFormat}`);
|
|
176
174
|
}
|
|
175
|
+
const outputDir = shouldOutputImageSequence
|
|
176
|
+
? absoluteOutputFile
|
|
177
|
+
: await fs_1.default.promises.mkdtemp(path_1.default.join(os_1.default.tmpdir(), 'react-motion-render'));
|
|
178
|
+
log_1.Log.verboseAdvanced({ indent, logLevel }, 'Output dir', outputDir);
|
|
177
179
|
await (0, renderer_1.renderFrames)({
|
|
178
180
|
imageFormat,
|
|
179
181
|
inputProps,
|
|
180
182
|
onFrameUpdate: (rendered) => {
|
|
181
|
-
|
|
183
|
+
renderingProgress.frames = rendered;
|
|
182
184
|
updateRenderProgress();
|
|
183
185
|
},
|
|
184
186
|
onStart: () => undefined,
|
|
@@ -211,7 +213,15 @@ const renderVideoFlow = async ({ remotionRoot, fullEntryPoint, indent, logLevel,
|
|
|
211
213
|
updateRenderProgress();
|
|
212
214
|
process.stdout.write('\n');
|
|
213
215
|
log_1.Log.infoAdvanced({ indent, logLevel }, chalk_1.chalk.cyan(`▶ ${absoluteOutputFile}`));
|
|
216
|
+
return;
|
|
214
217
|
}
|
|
218
|
+
stitchingProgress = {
|
|
219
|
+
doneIn: null,
|
|
220
|
+
frames: 0,
|
|
221
|
+
stage: 'encoding',
|
|
222
|
+
totalFrames: totalFrames.length,
|
|
223
|
+
codec,
|
|
224
|
+
};
|
|
215
225
|
const { slowestFrames } = await (0, renderer_1.renderMedia)({
|
|
216
226
|
outputLocation: absoluteOutputFile,
|
|
217
227
|
composition: {
|
|
@@ -245,11 +255,15 @@ const renderVideoFlow = async ({ remotionRoot, fullEntryPoint, indent, logLevel,
|
|
|
245
255
|
audioBitrate,
|
|
246
256
|
videoBitrate,
|
|
247
257
|
onProgress: (update) => {
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
258
|
+
stitchingProgress.doneIn =
|
|
259
|
+
update.encodedDoneIn;
|
|
260
|
+
stitchingProgress.frames =
|
|
261
|
+
update.encodedFrames;
|
|
262
|
+
stitchingProgress.stage = update.stitchStage;
|
|
263
|
+
renderingProgress.doneIn =
|
|
264
|
+
update.renderedDoneIn;
|
|
265
|
+
renderingProgress.frames =
|
|
266
|
+
update.renderedFrames;
|
|
253
267
|
updateRenderProgress();
|
|
254
268
|
},
|
|
255
269
|
puppeteerInstance,
|
|
@@ -17,28 +17,30 @@ const get_composition_with_dimension_override_1 = require("../get-composition-wi
|
|
|
17
17
|
const log_1 = require("../log");
|
|
18
18
|
const parse_command_line_1 = require("../parse-command-line");
|
|
19
19
|
const progress_bar_1 = require("../progress-bar");
|
|
20
|
+
const progress_types_1 = require("../progress-types");
|
|
20
21
|
const setup_cache_1 = require("../setup-cache");
|
|
21
22
|
const truthy_1 = require("../truthy");
|
|
22
23
|
const user_passed_output_location_1 = require("../user-passed-output-location");
|
|
23
24
|
const renderStillFlow = async ({ remotionRoot, fullEntryPoint, entryPointReason, remainingArgs, browser, browserExecutable, chromiumOptions, envVariables, height, inputProps, overwrite, port, publicDir, puppeteerTimeout, quality, scale, stillFrame, width, compositionIdFromUi, imageFormatFromUi, logLevel, onProgress, indentOutput, addCleanupCallback, cancelSignal, }) => {
|
|
24
25
|
var _a, _b;
|
|
25
26
|
const downloads = [];
|
|
26
|
-
const aggregate =
|
|
27
|
-
rendering: null,
|
|
28
|
-
downloads,
|
|
29
|
-
stitching: null,
|
|
30
|
-
bundling: {
|
|
31
|
-
message: null,
|
|
32
|
-
progress: 0,
|
|
33
|
-
},
|
|
34
|
-
};
|
|
27
|
+
const aggregate = (0, progress_types_1.initialAggregateRenderProgress)();
|
|
35
28
|
let renderProgress = null;
|
|
29
|
+
const steps = [
|
|
30
|
+
renderer_1.RenderInternals.isServeUrl(fullEntryPoint) ? null : 'bundling',
|
|
31
|
+
'rendering',
|
|
32
|
+
].filter(truthy_1.truthy);
|
|
36
33
|
const updateProgress = () => {
|
|
37
|
-
const { output, progress, message } = (0, progress_bar_1.makeRenderingAndStitchingProgress)(
|
|
34
|
+
const { output, progress, message } = (0, progress_bar_1.makeRenderingAndStitchingProgress)({
|
|
35
|
+
prog: aggregate,
|
|
36
|
+
indent: indentOutput,
|
|
37
|
+
steps: steps.length,
|
|
38
|
+
stitchingStep: steps.indexOf('stitching'),
|
|
39
|
+
});
|
|
38
40
|
if (renderProgress) {
|
|
39
41
|
renderProgress.update(output);
|
|
40
42
|
}
|
|
41
|
-
onProgress({ progress,
|
|
43
|
+
onProgress({ message, value: progress, ...aggregate });
|
|
42
44
|
};
|
|
43
45
|
log_1.Log.verboseAdvanced({ indent: indentOutput, logLevel }, 'Browser executable: ', browserExecutable);
|
|
44
46
|
const shouldDumpIo = renderer_1.RenderInternals.isEqualOrBelowLogLevel(logLevel, 'verbose');
|
|
@@ -49,21 +51,19 @@ const renderStillFlow = async ({ remotionRoot, fullEntryPoint, entryPointReason,
|
|
|
49
51
|
forceDeviceScaleFactor: scale,
|
|
50
52
|
indentationString: indentOutput ? log_1.INDENT_TOKEN + ' ' : '',
|
|
51
53
|
});
|
|
52
|
-
const steps = [
|
|
53
|
-
renderer_1.RenderInternals.isServeUrl(fullEntryPoint) ? null : 'bundling',
|
|
54
|
-
'rendering',
|
|
55
|
-
].filter(truthy_1.truthy);
|
|
56
54
|
const { cleanup: cleanupBundle, urlOrBundle } = await (0, setup_cache_1.bundleOnCliOrTakeServeUrl)({
|
|
57
55
|
fullPath: fullEntryPoint,
|
|
58
56
|
remotionRoot,
|
|
59
|
-
steps,
|
|
57
|
+
steps: steps.length,
|
|
60
58
|
publicDir,
|
|
61
|
-
onProgress: (
|
|
62
|
-
aggregate.bundling =
|
|
59
|
+
onProgress: ({ copying, bundling }) => {
|
|
60
|
+
aggregate.bundling = bundling;
|
|
61
|
+
aggregate.copyingState = copying;
|
|
63
62
|
updateProgress();
|
|
64
63
|
},
|
|
65
64
|
indentOutput,
|
|
66
65
|
logLevel,
|
|
66
|
+
bundlingStep: steps.indexOf('bundling'),
|
|
67
67
|
});
|
|
68
68
|
(0, cleanup_before_quit_1.registerCleanupJob)(() => cleanupBundle());
|
|
69
69
|
addCleanupCallback(() => cleanupBundle());
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@remotion/cli",
|
|
3
|
-
"version": "3.3.
|
|
3
|
+
"version": "3.3.80",
|
|
4
4
|
"description": "CLI for Remotion",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -16,16 +16,16 @@
|
|
|
16
16
|
"author": "Jonny Burger <jonny@remotion.dev>",
|
|
17
17
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"@remotion/bundler": "3.3.
|
|
20
|
-
"@remotion/media-utils": "3.3.
|
|
21
|
-
"@remotion/player": "3.3.
|
|
22
|
-
"@remotion/renderer": "3.3.
|
|
23
|
-
"better-opn": "2.1.1",
|
|
19
|
+
"@remotion/bundler": "3.3.80",
|
|
20
|
+
"@remotion/media-utils": "3.3.80",
|
|
21
|
+
"@remotion/player": "3.3.80",
|
|
22
|
+
"@remotion/renderer": "3.3.80",
|
|
24
23
|
"dotenv": "9.0.2",
|
|
25
24
|
"memfs": "3.4.3",
|
|
26
25
|
"minimist": "1.2.6",
|
|
26
|
+
"open": "^8.4.2",
|
|
27
27
|
"prompts": "2.4.1",
|
|
28
|
-
"remotion": "3.3.
|
|
28
|
+
"remotion": "3.3.80",
|
|
29
29
|
"semver": "7.3.5",
|
|
30
30
|
"source-map": "0.6.1"
|
|
31
31
|
},
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.QualitySetting = void 0;
|
|
4
|
-
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
-
const react_1 = require("react");
|
|
6
|
-
const InputDragger_1 = require("../NewComposition/InputDragger");
|
|
7
|
-
const RemInput_1 = require("../NewComposition/RemInput");
|
|
8
|
-
const layout_1 = require("./layout");
|
|
9
|
-
const MIN_QUALITY = 1;
|
|
10
|
-
const MAX_QUALITY = 100;
|
|
11
|
-
const QualitySetting = ({ quality, setQuality }) => {
|
|
12
|
-
const onQualityChangedDirectly = (0, react_1.useCallback)((newQuality) => {
|
|
13
|
-
setQuality(newQuality);
|
|
14
|
-
}, [setQuality]);
|
|
15
|
-
const onQualityChanged = (0, react_1.useCallback)((e) => {
|
|
16
|
-
setQuality((q) => {
|
|
17
|
-
const newQuality = parseInt(e, 10);
|
|
18
|
-
if (Number.isNaN(newQuality)) {
|
|
19
|
-
return q;
|
|
20
|
-
}
|
|
21
|
-
const newQualityClamped = Math.min(MAX_QUALITY, Math.max(newQuality, MIN_QUALITY));
|
|
22
|
-
return newQualityClamped;
|
|
23
|
-
});
|
|
24
|
-
}, [setQuality]);
|
|
25
|
-
return ((0, jsx_runtime_1.jsxs)("div", { style: layout_1.optionRow, children: [(0, jsx_runtime_1.jsx)("div", { style: layout_1.label, children: "JPEG Quality" }), (0, jsx_runtime_1.jsx)("div", { style: layout_1.rightRow, children: (0, jsx_runtime_1.jsx)(RemInput_1.RightAlignInput, { children: (0, jsx_runtime_1.jsx)(InputDragger_1.InputDragger, { value: quality, onTextChange: onQualityChanged, placeholder: `${MIN_QUALITY}-${MAX_QUALITY}`, onValueChange: onQualityChangedDirectly, name: "quality", step: 1, min: MIN_QUALITY, max: MAX_QUALITY }) }) })] }));
|
|
26
|
-
};
|
|
27
|
-
exports.QualitySetting = QualitySetting;
|
package/dist/gcp-command.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const gcpCommand: (remotionRoot: string, args: string[]) => Promise<never>;
|
package/dist/gcp-command.js
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.gcpCommand = void 0;
|
|
4
|
-
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
|
-
const gcpCommand = async (remotionRoot, args) => {
|
|
8
|
-
try {
|
|
9
|
-
const path = require.resolve('@remotion/gcp', {
|
|
10
|
-
paths: [remotionRoot],
|
|
11
|
-
});
|
|
12
|
-
const { GCPInternals } = require(path);
|
|
13
|
-
await GCPInternals.executeCommand(args, remotionRoot);
|
|
14
|
-
process.exit(0);
|
|
15
|
-
}
|
|
16
|
-
catch (err) {
|
|
17
|
-
const manager = (0, get_package_manager_1.getPackageManager)(remotionRoot, undefined);
|
|
18
|
-
const installCommand = manager === 'unknown' ? 'npm i' : manager.installCommand;
|
|
19
|
-
log_1.Log.error(err);
|
|
20
|
-
log_1.Log.error('Remotion GCP is not installed.');
|
|
21
|
-
log_1.Log.info('');
|
|
22
|
-
log_1.Log.info('You can install it using:');
|
|
23
|
-
log_1.Log.info(`${installCommand} @remotion/gcp@${(0, update_available_1.getRemotionVersion)()}`);
|
|
24
|
-
process.exit(1);
|
|
25
|
-
}
|
|
26
|
-
};
|
|
27
|
-
exports.gcpCommand = gcpCommand;
|