@remotion/cli 4.0.79 → 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.
- package/dist/cloudrun-command.js +3 -4
- package/dist/config/image-format.d.ts +1 -1
- package/dist/config/index.d.ts +2 -2
- package/dist/config/index.js +3 -4
- package/dist/download-progress.d.ts +1 -1
- package/dist/download-progress.js +2 -2
- package/dist/editor/components/NewComposition/RemInput.d.ts +1 -1
- package/dist/editor/components/RenderModal/SchemaEditor/ZodArrayEditor.js +2 -1
- package/dist/editor/helpers/colors.d.ts +1 -1
- package/dist/get-cli-options.d.ts +2 -2
- package/dist/get-composition-id.js +2 -2
- package/dist/get-env.js +2 -2
- package/dist/get-render-defaults.d.ts +2 -0
- package/dist/get-render-defaults.js +71 -0
- package/dist/index.d.ts +9 -9
- package/dist/index.js +4 -4
- package/dist/lambda-command.js +3 -4
- package/dist/list-of-remotion-packages.js +1 -0
- package/dist/make-on-download.d.ts +1 -1
- package/dist/make-on-download.js +4 -2
- package/dist/progress-bar.d.ts +1 -9
- package/dist/progress-bar.js +3 -4
- package/dist/progress-types.d.ts +1 -31
- package/dist/render-flows/render.d.ts +1 -1
- package/dist/render-flows/still.d.ts +1 -1
- package/dist/render-queue/process-still.d.ts +8 -0
- package/dist/render-queue/process-still.js +49 -0
- package/dist/render-queue/process-video.d.ts +10 -0
- package/dist/render-queue/process-video.js +70 -0
- package/dist/render-queue/queue.d.ts +11 -0
- package/dist/render-queue/queue.js +220 -0
- package/dist/setup-cache.d.ts +1 -1
- package/dist/studio.js +30 -102
- package/dist/upgrade.js +4 -5
- package/dist/user-passed-output-location.js +2 -2
- package/package.json +10 -14
- package/styles/styles.css +0 -123
- package/types/global.d.ts +0 -4
- package/web/favicon.png +0 -0
package/dist/cloudrun-command.js
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.cloudrunCommand = 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 cloudrunCommand = async (remotionRoot, args, logLevel) => {
|
|
8
7
|
try {
|
|
9
8
|
const path = require.resolve('@remotion/cloudrun', {
|
|
@@ -14,13 +13,13 @@ const cloudrunCommand = async (remotionRoot, args, logLevel) => {
|
|
|
14
13
|
process.exit(0);
|
|
15
14
|
}
|
|
16
15
|
catch (err) {
|
|
17
|
-
const manager =
|
|
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 Cloud Run is not installed.');
|
|
21
20
|
log_1.Log.infoAdvanced({ indent: false, logLevel }, '');
|
|
22
21
|
log_1.Log.infoAdvanced({ indent: false, logLevel }, 'You can install it using:');
|
|
23
|
-
log_1.Log.infoAdvanced({ indent: false, logLevel }, `${installCommand} @remotion/cloudrun@${
|
|
22
|
+
log_1.Log.infoAdvanced({ indent: false, logLevel }, `${installCommand} @remotion/cloudrun@${studio_1.StudioInternals.getRemotionVersion()}`);
|
|
24
23
|
process.exit(1);
|
|
25
24
|
}
|
|
26
25
|
};
|
|
@@ -2,4 +2,4 @@ import type { StillImageFormat, VideoImageFormat } from '@remotion/renderer';
|
|
|
2
2
|
export declare const setStillImageFormat: (format: StillImageFormat) => void;
|
|
3
3
|
export declare const setVideoImageFormat: (format: VideoImageFormat) => void;
|
|
4
4
|
export declare const getUserPreferredStillImageFormat: () => "png" | "jpeg" | "pdf" | "webp" | undefined;
|
|
5
|
-
export declare const getUserPreferredVideoImageFormat: () => "
|
|
5
|
+
export declare const getUserPreferredVideoImageFormat: () => "png" | "jpeg" | "none" | undefined;
|
package/dist/config/index.d.ts
CHANGED
|
@@ -315,7 +315,7 @@ export declare const ConfigInternals: {
|
|
|
315
315
|
getBrowser: () => null;
|
|
316
316
|
getPixelFormat: () => "yuv420p" | "yuva420p" | "yuv422p" | "yuv444p" | "yuv420p10le" | "yuv422p10le" | "yuv444p10le" | "yuva444p10le";
|
|
317
317
|
getProResProfile: () => "4444-xq" | "4444" | "hq" | "standard" | "light" | "proxy" | undefined;
|
|
318
|
-
getPresetProfile: () => "
|
|
318
|
+
getPresetProfile: () => "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | undefined;
|
|
319
319
|
getShouldOverwrite: ({ defaultValue, }: {
|
|
320
320
|
defaultValue: boolean;
|
|
321
321
|
}) => boolean;
|
|
@@ -337,7 +337,7 @@ export declare const ConfigInternals: {
|
|
|
337
337
|
getShouldOutputImageSequence: (frameRange: FrameRange | null) => boolean;
|
|
338
338
|
getDotEnvLocation: () => string | null;
|
|
339
339
|
getUserPreferredStillImageFormat: () => "png" | "jpeg" | "pdf" | "webp" | undefined;
|
|
340
|
-
getUserPreferredVideoImageFormat: () => "
|
|
340
|
+
getUserPreferredVideoImageFormat: () => "png" | "jpeg" | "none" | undefined;
|
|
341
341
|
getWebpackOverrideFn: () => WebpackOverrideFn;
|
|
342
342
|
getWebpackCaching: () => boolean;
|
|
343
343
|
getOutputLocation: () => string | null;
|
package/dist/config/index.js
CHANGED
|
@@ -36,7 +36,6 @@ const image_format_1 = require("./image-format");
|
|
|
36
36
|
const image_sequence_1 = require("./image-sequence");
|
|
37
37
|
const jpeg_quality_1 = require("./jpeg-quality");
|
|
38
38
|
const Logging = __importStar(require("./log"));
|
|
39
|
-
const max_timeline_tracks_1 = require("./max-timeline-tracks");
|
|
40
39
|
const output_location_1 = require("./output-location");
|
|
41
40
|
const override_webpack_1 = require("./override-webpack");
|
|
42
41
|
const overwrite_1 = require("./overwrite");
|
|
@@ -49,6 +48,7 @@ const still_frame_1 = require("./still-frame");
|
|
|
49
48
|
const timeout_1 = require("./timeout");
|
|
50
49
|
const webpack_caching_1 = require("./webpack-caching");
|
|
51
50
|
const x264_preset_1 = require("./x264-preset");
|
|
51
|
+
const studio_1 = require("@remotion/studio");
|
|
52
52
|
const audio_codec_1 = require("./audio-codec");
|
|
53
53
|
const bitrate_1 = require("./bitrate");
|
|
54
54
|
const browser_executable_2 = require("./browser-executable");
|
|
@@ -68,7 +68,6 @@ const image_sequence_2 = require("./image-sequence");
|
|
|
68
68
|
const jpeg_quality_2 = require("./jpeg-quality");
|
|
69
69
|
const keyboard_shortcuts_1 = require("./keyboard-shortcuts");
|
|
70
70
|
const log_1 = require("./log");
|
|
71
|
-
const max_timeline_tracks_2 = require("./max-timeline-tracks");
|
|
72
71
|
const muted_1 = require("./muted");
|
|
73
72
|
const number_of_gif_loops_1 = require("./number-of-gif-loops");
|
|
74
73
|
const number_of_shared_audio_tags_1 = require("./number-of-shared-audio-tags");
|
|
@@ -107,7 +106,7 @@ exports.Config = {
|
|
|
107
106
|
get Puppeteer() {
|
|
108
107
|
throw new Error('The config format has changed. Change `Config.Puppeteer.*()` calls to `Config.*()` in your config file.');
|
|
109
108
|
},
|
|
110
|
-
setMaxTimelineTracks:
|
|
109
|
+
setMaxTimelineTracks: studio_1.StudioInternals.setMaxTimelineTracks,
|
|
111
110
|
setKeyboardShortcutsEnabled: keyboard_shortcuts_1.setKeyboardShortcutsEnabled,
|
|
112
111
|
setNumberOfSharedAudioTags: number_of_shared_audio_tags_1.setNumberOfSharedAudioTags,
|
|
113
112
|
setWebpackPollingInMilliseconds: webpack_poll_1.setWebpackPollingInMilliseconds,
|
|
@@ -200,7 +199,7 @@ exports.ConfigInternals = {
|
|
|
200
199
|
Logging,
|
|
201
200
|
setFrameRangeFromCli: frame_range_1.setFrameRangeFromCli,
|
|
202
201
|
setStillFrame: still_frame_1.setStillFrame,
|
|
203
|
-
getMaxTimelineTracks:
|
|
202
|
+
getMaxTimelineTracks: studio_1.StudioInternals.getMaxTimelineTracks,
|
|
204
203
|
defaultOverrideFunction: override_webpack_1.defaultOverrideFunction,
|
|
205
204
|
setMuted: muted_1.setMuted,
|
|
206
205
|
getMuted: muted_1.getMuted,
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type { DownloadProgress } from '
|
|
1
|
+
import type { DownloadProgress } from '@remotion/studio';
|
|
2
2
|
export declare const getFileSizeDownloadBar: (downloaded: number) => string;
|
|
3
3
|
export declare const makeMultiDownloadProgress: (progresses: DownloadProgress[]) => string | null;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.makeMultiDownloadProgress = exports.getFileSizeDownloadBar = void 0;
|
|
4
|
-
const
|
|
4
|
+
const studio_1 = require("@remotion/studio");
|
|
5
5
|
const make_progress_bar_1 = require("./make-progress-bar");
|
|
6
6
|
const truthy_1 = require("./truthy");
|
|
7
7
|
const getFileSizeDownloadBar = (downloaded) => {
|
|
8
8
|
const desiredLength = (0, make_progress_bar_1.makeProgressBar)(0).length;
|
|
9
|
-
return `[${
|
|
9
|
+
return `[${studio_1.StudioInternals.formatBytes(downloaded).padEnd(desiredLength - 2, ' ')}]`;
|
|
10
10
|
};
|
|
11
11
|
exports.getFileSizeDownloadBar = getFileSizeDownloadBar;
|
|
12
12
|
const makeMultiDownloadProgress = (progresses) => {
|
|
@@ -12,6 +12,6 @@ export declare const getInputBorderColor: ({ status, isFocused, isHovered, }: {
|
|
|
12
12
|
status: 'error' | 'warning' | 'ok';
|
|
13
13
|
isFocused: boolean;
|
|
14
14
|
isHovered: boolean;
|
|
15
|
-
}) => "
|
|
15
|
+
}) => "hsla(0, 0%, 100%, 0.15)" | "rgba(0, 0, 0, 0.6)" | "rgba(255, 255, 255, 0.05)" | "#ff3232" | "#f1c40f";
|
|
16
16
|
export declare const RemotionInput: React.ForwardRefExoticComponent<Pick<Props, "key" | keyof React.InputHTMLAttributes<HTMLInputElement> | "status" | "rightAlign"> & React.RefAttributes<HTMLInputElement>>;
|
|
17
17
|
export {};
|
|
@@ -64,9 +64,10 @@ const ZodArrayEditor = ({ schema, jsonPath, setValue, defaultValue, value, onSav
|
|
|
64
64
|
}, children: (0, jsx_runtime_1.jsx)(SchemaLabel_1.SchemaLabel, { onReset: reset, isDefaultValue: isDefaultValue, jsonPath: jsonPath, onRemove: onRemove, suffix: suffix, onSave: () => {
|
|
65
65
|
onSave(() => localValue.value, false, false);
|
|
66
66
|
}, saveDisabledByParent: saveDisabledByParent, saving: saving, showSaveButton: showSaveButton, valid: localValue.zodValidation.success, handleClick: () => setExpanded(!expanded) }) }), expanded ? ((0, jsx_runtime_1.jsx)(RevisionContextProvider, { children: (0, jsx_runtime_1.jsx)(SchemaVerticalGuide_1.SchemaVerticalGuide, { isRoot: false, children: localValue.value.map((child, i) => {
|
|
67
|
+
var _a;
|
|
67
68
|
return (
|
|
68
69
|
// eslint-disable-next-line react/no-array-index-key
|
|
69
|
-
(0, jsx_runtime_1.jsxs)(react_1.default.Fragment, { children: [(0, jsx_runtime_1.jsx)(ZodArrayItemEditor_1.ZodArrayItemEditor, { onChange: onChange, value: child, def: def, index: i, jsonPath: jsonPath, defaultValue: defaultValue[i], onSave: onSave, showSaveButton: showSaveButton, saving: saving, saveDisabledByParent: saveDisabledByParent, mayPad: mayPad }), (0, jsx_runtime_1.jsx)(SchemaSeparationLine_1.SchemaArrayItemSeparationLine, { schema: schema, index: i, onChange: onChange, isLast: i === localValue.value.length - 1 })] }, `${i}${localValue.keyStabilityRevision}`));
|
|
70
|
+
(0, jsx_runtime_1.jsxs)(react_1.default.Fragment, { children: [(0, jsx_runtime_1.jsx)(ZodArrayItemEditor_1.ZodArrayItemEditor, { onChange: onChange, value: child, def: def, index: i, jsonPath: jsonPath, defaultValue: (_a = defaultValue[i]) !== null && _a !== void 0 ? _a : child, onSave: onSave, showSaveButton: showSaveButton, saving: saving, saveDisabledByParent: saveDisabledByParent, mayPad: mayPad }), (0, jsx_runtime_1.jsx)(SchemaSeparationLine_1.SchemaArrayItemSeparationLine, { schema: schema, index: i, onChange: onChange, isLast: i === localValue.value.length - 1 })] }, `${i}${localValue.keyStabilityRevision}`));
|
|
70
71
|
}) }) })) : null, (0, jsx_runtime_1.jsx)(ZodFieldValidation_1.ZodFieldValidation, { path: jsonPath, localValue: localValue })] }));
|
|
71
72
|
};
|
|
72
73
|
exports.ZodArrayEditor = ZodArrayEditor;
|
|
@@ -22,4 +22,4 @@ export declare const LINE_COLOR = "#363A3E";
|
|
|
22
22
|
export declare const getBackgroundFromHoverState: ({ selected, hovered, }: {
|
|
23
23
|
selected: boolean;
|
|
24
24
|
hovered: boolean;
|
|
25
|
-
}) => "transparent" | "hsla(0, 0%, 100%, 0.
|
|
25
|
+
}) => "transparent" | "hsla(0, 0%, 100%, 0.15)" | "hsla(0, 0%, 100%, 0.25)" | "rgba(255, 255, 255, 0.06)";
|
|
@@ -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: "
|
|
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;
|
|
@@ -36,7 +36,7 @@ export declare const getCliOptions: (options: {
|
|
|
36
36
|
encodingMaxRate: string | null;
|
|
37
37
|
height: number | null;
|
|
38
38
|
width: number | null;
|
|
39
|
-
configFileImageFormat: "
|
|
39
|
+
configFileImageFormat: "png" | "jpeg" | "none" | undefined;
|
|
40
40
|
offthreadVideoCacheSizeInBytes: number | null;
|
|
41
41
|
deleteAfter: ("1-day" | "3-days" | "7-days" | "30-days") | null;
|
|
42
42
|
colorSpace: "default" | "bt709";
|
|
@@ -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
|
|
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 (${
|
|
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 } =
|
|
55
|
+
const { unwatch } = studio_1.StudioInternals.installFileWatcher({
|
|
56
56
|
file: envFile,
|
|
57
57
|
onChange: async (type) => {
|
|
58
58
|
try {
|
|
@@ -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: "
|
|
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;
|
|
@@ -106,7 +106,7 @@ export declare const CliInternals: {
|
|
|
106
106
|
encodingMaxRate: string | null;
|
|
107
107
|
height: number | null;
|
|
108
108
|
width: number | null;
|
|
109
|
-
configFileImageFormat: "
|
|
109
|
+
configFileImageFormat: "png" | "jpeg" | "none" | undefined;
|
|
110
110
|
offthreadVideoCacheSizeInBytes: number | null;
|
|
111
111
|
deleteAfter: ("1-day" | "3-days" | "7-days" | "30-days") | null;
|
|
112
112
|
colorSpace: "default" | "bt709";
|
|
@@ -118,9 +118,9 @@ export declare const CliInternals: {
|
|
|
118
118
|
parsedCli: {
|
|
119
119
|
"browser-executable": import("@remotion/renderer").BrowserExecutable;
|
|
120
120
|
"pixel-format": "yuv420p" | "yuva420p" | "yuv422p" | "yuv444p" | "yuv420p10le" | "yuv422p10le" | "yuv444p10le" | "yuva444p10le";
|
|
121
|
-
"image-format": "
|
|
121
|
+
"image-format": "png" | "jpeg" | "pdf" | "webp" | "none";
|
|
122
122
|
"prores-profile": "4444-xq" | "4444" | "hq" | "standard" | "light" | "proxy";
|
|
123
|
-
"x264-preset": "
|
|
123
|
+
"x264-preset": "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo";
|
|
124
124
|
"bundle-cache": string;
|
|
125
125
|
"env-file": string;
|
|
126
126
|
"ignore-certificate-errors": string;
|
|
@@ -180,18 +180,18 @@ export declare const CliInternals: {
|
|
|
180
180
|
_: string[];
|
|
181
181
|
};
|
|
182
182
|
printError: (err: Error, logLevel: "verbose" | "info" | "warn" | "error") => Promise<void>;
|
|
183
|
-
formatBytes: (number: number, options?: Intl.NumberFormatOptions & {
|
|
183
|
+
formatBytes: (number: number, options?: (Intl.NumberFormatOptions & {
|
|
184
184
|
locale: string;
|
|
185
185
|
bits?: boolean | undefined;
|
|
186
186
|
binary?: boolean | undefined;
|
|
187
187
|
signed: boolean;
|
|
188
|
-
}) => string;
|
|
188
|
+
}) | undefined) => string;
|
|
189
189
|
getFileSizeDownloadBar: (downloaded: number) => string;
|
|
190
190
|
determineFinalStillImageFormat: ({ downloadName, outName, configImageFormat, cliFlag, isLambda, fromUi, }: {
|
|
191
191
|
downloadName: string | null;
|
|
192
192
|
outName: string | null;
|
|
193
193
|
configImageFormat: "png" | "jpeg" | "pdf" | "webp" | null;
|
|
194
|
-
cliFlag: "
|
|
194
|
+
cliFlag: "png" | "jpeg" | "pdf" | "webp" | "none" | null;
|
|
195
195
|
isLambda: boolean;
|
|
196
196
|
fromUi: "png" | "jpeg" | "pdf" | "webp" | null;
|
|
197
197
|
}) => {
|
|
@@ -206,8 +206,8 @@ export declare const CliInternals: {
|
|
|
206
206
|
};
|
|
207
207
|
getVideoImageFormat: ({ codec, uiImageFormat, }: {
|
|
208
208
|
codec: import("@remotion/renderer").CodecOrUndefined;
|
|
209
|
-
uiImageFormat: "
|
|
210
|
-
}) => "
|
|
209
|
+
uiImageFormat: "png" | "jpeg" | "none" | null;
|
|
210
|
+
}) => "png" | "jpeg" | "none";
|
|
211
211
|
printCompositions: (compositions: import("remotion").VideoConfig[]) => void;
|
|
212
212
|
getFinalOutputCodec: ({ cliFlag, configFile, downloadName, outName, uiCodec, compositionCodec, }: {
|
|
213
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
|
|
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,
|
|
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:
|
|
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,
|
package/dist/lambda-command.js
CHANGED
|
@@ -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 =
|
|
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@${
|
|
22
|
+
log_1.Log.info(`${installCommand} @remotion/lambda@${studio_1.StudioInternals.getRemotionVersion()}`);
|
|
24
23
|
process.exit(1);
|
|
25
24
|
}
|
|
26
25
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { LogLevel, RenderMediaOnDownload } from '@remotion/renderer';
|
|
2
|
-
import type { DownloadProgress } from '
|
|
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;
|
package/dist/make-on-download.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.makeOnDownload = void 0;
|
|
4
|
-
const
|
|
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
|
|
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,
|
package/dist/progress-bar.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { CancelSignal } from '@remotion/renderer';
|
|
2
|
-
import type { AggregateRenderProgress } from '
|
|
2
|
+
import type { AggregateRenderProgress, BundlingState, CopyingState } from '@remotion/studio';
|
|
3
3
|
export type OverwriteableCliOutput = {
|
|
4
4
|
update: (up: string, newline: boolean) => boolean;
|
|
5
5
|
};
|
|
@@ -9,14 +9,6 @@ export declare const createOverwriteableCliOutput: (options: {
|
|
|
9
9
|
updatesDontOverwrite: boolean;
|
|
10
10
|
indent: boolean;
|
|
11
11
|
}) => OverwriteableCliOutput;
|
|
12
|
-
export type CopyingState = {
|
|
13
|
-
bytes: number;
|
|
14
|
-
doneIn: number | null;
|
|
15
|
-
};
|
|
16
|
-
export type BundlingState = {
|
|
17
|
-
progress: number;
|
|
18
|
-
doneIn: number | null;
|
|
19
|
-
};
|
|
20
12
|
export type SymbolicLinksState = {
|
|
21
13
|
symlinks: string[];
|
|
22
14
|
};
|
package/dist/progress-bar.js
CHANGED
|
@@ -2,10 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.makeRenderingAndStitchingProgress = exports.makeBundlingAndCopyProgress = exports.createOverwriteableCliOutput = void 0;
|
|
4
4
|
const renderer_1 = require("@remotion/renderer");
|
|
5
|
-
const
|
|
5
|
+
const studio_1 = require("@remotion/studio");
|
|
6
6
|
const chalk_1 = require("./chalk");
|
|
7
7
|
const download_progress_1 = require("./download-progress");
|
|
8
|
-
const format_bytes_1 = require("./format-bytes");
|
|
9
8
|
const make_progress_bar_1 = require("./make-progress-bar");
|
|
10
9
|
const truthy_1 = require("./truthy");
|
|
11
10
|
const createOverwriteableCliOutput = (options) => {
|
|
@@ -34,7 +33,7 @@ const createOverwriteableCliOutput = (options) => {
|
|
|
34
33
|
},
|
|
35
34
|
};
|
|
36
35
|
}
|
|
37
|
-
const diff = new
|
|
36
|
+
const diff = new studio_1.StudioInternals.AnsiDiff();
|
|
38
37
|
(_a = options.cancelSignal) === null || _a === void 0 ? void 0 : _a.call(options, () => {
|
|
39
38
|
process.stdout.write(diff.finish());
|
|
40
39
|
});
|
|
@@ -173,7 +172,7 @@ const getGuiProgressSubtitle = (progress) => {
|
|
|
173
172
|
return `Bundling ${Math.round(progress.bundling.progress * 100)}%`;
|
|
174
173
|
}
|
|
175
174
|
if (progress.copyingState.doneIn === null) {
|
|
176
|
-
return `Copying public dir ${
|
|
175
|
+
return `Copying public dir ${studio_1.StudioInternals.formatBytes(progress.copyingState.bytes)}`;
|
|
177
176
|
}
|
|
178
177
|
if (!progress.rendering) {
|
|
179
178
|
return `Getting compositions`;
|
package/dist/progress-types.d.ts
CHANGED
|
@@ -1,32 +1,2 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type { BundlingState, CopyingState } from './progress-bar';
|
|
3
|
-
import type { RenderStep } from './step';
|
|
4
|
-
export type DownloadProgress = {
|
|
5
|
-
name: string;
|
|
6
|
-
id: number;
|
|
7
|
-
progress: number | null;
|
|
8
|
-
totalBytes: number | null;
|
|
9
|
-
downloaded: number;
|
|
10
|
-
};
|
|
11
|
-
export type RenderingProgressInput = {
|
|
12
|
-
frames: number;
|
|
13
|
-
totalFrames: number;
|
|
14
|
-
steps: RenderStep[];
|
|
15
|
-
concurrency: number;
|
|
16
|
-
doneIn: number | null;
|
|
17
|
-
};
|
|
18
|
-
export type StitchingProgressInput = {
|
|
19
|
-
frames: number;
|
|
20
|
-
totalFrames: number;
|
|
21
|
-
doneIn: number | null;
|
|
22
|
-
stage: StitchingState;
|
|
23
|
-
codec: Codec;
|
|
24
|
-
};
|
|
25
|
-
export type AggregateRenderProgress = {
|
|
26
|
-
rendering: RenderingProgressInput | null;
|
|
27
|
-
stitching: StitchingProgressInput | null;
|
|
28
|
-
downloads: DownloadProgress[];
|
|
29
|
-
bundling: BundlingState;
|
|
30
|
-
copyingState: CopyingState;
|
|
31
|
-
};
|
|
1
|
+
import type { AggregateRenderProgress } from '@remotion/studio';
|
|
32
2
|
export declare const initialAggregateRenderProgress: () => AggregateRenderProgress;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { AudioCodec, Browser, BrowserExecutable, CancelSignal, ChromiumOptions, Codec, ColorSpace, Crf, FfmpegOverrideFn, FrameRange, LogLevel, PixelFormat, ProResProfile, VideoImageFormat, X264Preset } from '@remotion/renderer';
|
|
2
|
+
import type { JobProgressCallback } from '@remotion/studio';
|
|
2
3
|
import type { Loop } from '../config/number-of-gif-loops';
|
|
3
|
-
import type { JobProgressCallback } from '../preview-server/render-queue/job';
|
|
4
4
|
export declare const renderVideoFlow: ({ remotionRoot, fullEntryPoint, indent, logLevel, browserExecutable, browser, chromiumOptions, scale, shouldOutputImageSequence, publicDir, envVariables, puppeteerTimeout, port, height, width, remainingArgs, compositionIdFromUi, entryPointReason, overwrite, quiet, concurrency, frameRange, everyNthFrame, outputLocationFromUI, jpegQuality, onProgress, addCleanupCallback, cancelSignal, crf, uiCodec, uiImageFormat, ffmpegOverride, audioBitrate, muted, enforceAudioTrack, proResProfile, x264Preset, pixelFormat, videoBitrate, encodingMaxRate, encodingBufferSize, numberOfGifLoops, audioCodec, serializedInputPropsWithCustomSchema, disallowParallelEncoding, offthreadVideoCacheSizeInBytes, colorSpace, }: {
|
|
5
5
|
remotionRoot: string;
|
|
6
6
|
fullEntryPoint: string;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Browser, BrowserExecutable, CancelSignal, ChromiumOptions, LogLevel, StillImageFormat } from '@remotion/renderer';
|
|
2
|
-
import type { JobProgressCallback } from '
|
|
2
|
+
import type { JobProgressCallback } from '@remotion/studio';
|
|
3
3
|
export declare const renderStillFlow: ({ remotionRoot, fullEntryPoint, entryPointReason, remainingArgs, browser, browserExecutable, chromiumOptions, envVariables, height, serializedInputPropsWithCustomSchema, overwrite, port, publicDir, puppeteerTimeout, jpegQuality, scale, stillFrame, width, compositionIdFromUi, imageFormatFromUi, logLevel, onProgress, indent, addCleanupCallback, cancelSignal, outputLocationFromUi, offthreadVideoCacheSizeInBytes, }: {
|
|
4
4
|
remotionRoot: string;
|
|
5
5
|
fullEntryPoint: string;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { JobProgressCallback, RenderJob } from '@remotion/studio';
|
|
2
|
+
export declare const processStill: ({ job, remotionRoot, entryPoint, onProgress, addCleanupCallback, }: {
|
|
3
|
+
job: RenderJob;
|
|
4
|
+
remotionRoot: string;
|
|
5
|
+
entryPoint: string;
|
|
6
|
+
onProgress: JobProgressCallback;
|
|
7
|
+
addCleanupCallback: (cb: () => void) => void;
|
|
8
|
+
}) => Promise<void>;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.processStill = void 0;
|
|
4
|
+
const preview_server_1 = require("../config/preview-server");
|
|
5
|
+
const convert_entry_point_to_serve_url_1 = require("../convert-entry-point-to-serve-url");
|
|
6
|
+
const get_cli_options_1 = require("../get-cli-options");
|
|
7
|
+
const still_1 = require("../render-flows/still");
|
|
8
|
+
const processStill = async ({ job, remotionRoot, entryPoint, onProgress, addCleanupCallback, }) => {
|
|
9
|
+
if (job.type !== 'still') {
|
|
10
|
+
throw new Error('Expected still job');
|
|
11
|
+
}
|
|
12
|
+
const { publicDir, browserExecutable, browser, puppeteerTimeout } = await (0, get_cli_options_1.getCliOptions)({
|
|
13
|
+
isLambda: false,
|
|
14
|
+
type: 'still',
|
|
15
|
+
remotionRoot,
|
|
16
|
+
logLevel: job.logLevel,
|
|
17
|
+
});
|
|
18
|
+
const fullEntryPoint = (0, convert_entry_point_to_serve_url_1.convertEntryPointToServeUrl)(entryPoint);
|
|
19
|
+
await (0, still_1.renderStillFlow)({
|
|
20
|
+
remotionRoot,
|
|
21
|
+
browser,
|
|
22
|
+
browserExecutable,
|
|
23
|
+
chromiumOptions: job.chromiumOptions,
|
|
24
|
+
entryPointReason: 'same as Studio',
|
|
25
|
+
envVariables: job.envVariables,
|
|
26
|
+
height: null,
|
|
27
|
+
fullEntryPoint,
|
|
28
|
+
serializedInputPropsWithCustomSchema: job.serializedInputPropsWithCustomSchema,
|
|
29
|
+
overwrite: true,
|
|
30
|
+
port: (0, preview_server_1.getRendererPortFromConfigFile)(),
|
|
31
|
+
publicDir,
|
|
32
|
+
puppeteerTimeout,
|
|
33
|
+
jpegQuality: job.jpegQuality,
|
|
34
|
+
remainingArgs: [],
|
|
35
|
+
scale: job.scale,
|
|
36
|
+
stillFrame: job.frame,
|
|
37
|
+
width: null,
|
|
38
|
+
compositionIdFromUi: job.compositionId,
|
|
39
|
+
imageFormatFromUi: job.imageFormat,
|
|
40
|
+
logLevel: job.logLevel,
|
|
41
|
+
onProgress,
|
|
42
|
+
indent: true,
|
|
43
|
+
addCleanupCallback,
|
|
44
|
+
cancelSignal: job.cancelToken.cancelSignal,
|
|
45
|
+
outputLocationFromUi: job.outName,
|
|
46
|
+
offthreadVideoCacheSizeInBytes: job.offthreadVideoCacheSizeInBytes,
|
|
47
|
+
});
|
|
48
|
+
};
|
|
49
|
+
exports.processStill = processStill;
|