@remotion/cli 4.0.74 → 4.0.75
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/config/image-format.d.ts +2 -2
- package/dist/config/index.d.ts +3 -3
- package/dist/config/log.d.ts +1 -1
- package/dist/editor/components/CompositionSelectorItem.js +6 -1
- package/dist/editor/components/NewComposition/RemInput.d.ts +1 -1
- package/dist/editor/components/PlayPause.js +2 -1
- package/dist/editor/components/RenderModal/RenderModal.js +28 -2
- package/dist/editor/components/RenderModal/RenderModalPicture.d.ts +2 -1
- package/dist/editor/components/RenderModal/RenderModalPicture.js +1 -17
- package/dist/editor/helpers/checkerboard-background.d.ts +1 -1
- package/dist/editor/helpers/colors.d.ts +1 -1
- package/dist/get-cli-options.d.ts +3 -3
- package/dist/index.d.ts +17 -17
- package/dist/preview-server/dev-middleware/range-parser.d.ts +1 -1
- package/dist/preview-server/render-queue/make-retry-payload.js +1 -1
- package/package.json +8 -8
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
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
|
-
export declare const getUserPreferredStillImageFormat: () => "
|
|
5
|
-
export declare const getUserPreferredVideoImageFormat: () => "
|
|
4
|
+
export declare const getUserPreferredStillImageFormat: () => "jpeg" | "png" | "pdf" | "webp" | undefined;
|
|
5
|
+
export declare const getUserPreferredVideoImageFormat: () => "none" | "jpeg" | "png" | undefined;
|
package/dist/config/index.d.ts
CHANGED
|
@@ -306,7 +306,7 @@ export declare const ConfigInternals: {
|
|
|
306
306
|
getOutputCodecOrUndefined: () => CodecOrUndefined;
|
|
307
307
|
getBrowser: () => null;
|
|
308
308
|
getPixelFormat: () => "yuv420p" | "yuva420p" | "yuv422p" | "yuv444p" | "yuv420p10le" | "yuv422p10le" | "yuv444p10le" | "yuva444p10le";
|
|
309
|
-
getProResProfile: () => "4444-xq" | "4444" | "hq" | "standard" | "
|
|
309
|
+
getProResProfile: () => "light" | "4444-xq" | "4444" | "hq" | "standard" | "proxy" | undefined;
|
|
310
310
|
getPresetProfile: () => "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo" | undefined;
|
|
311
311
|
getShouldOverwrite: ({ defaultValue, }: {
|
|
312
312
|
defaultValue: boolean;
|
|
@@ -328,8 +328,8 @@ export declare const ConfigInternals: {
|
|
|
328
328
|
getStillFrame: () => number;
|
|
329
329
|
getShouldOutputImageSequence: (frameRange: FrameRange | null) => boolean;
|
|
330
330
|
getDotEnvLocation: () => string | null;
|
|
331
|
-
getUserPreferredStillImageFormat: () => "
|
|
332
|
-
getUserPreferredVideoImageFormat: () => "
|
|
331
|
+
getUserPreferredStillImageFormat: () => "jpeg" | "png" | "pdf" | "webp" | undefined;
|
|
332
|
+
getUserPreferredVideoImageFormat: () => "none" | "jpeg" | "png" | undefined;
|
|
333
333
|
getWebpackOverrideFn: () => WebpackOverrideFn;
|
|
334
334
|
getWebpackCaching: () => boolean;
|
|
335
335
|
getOutputLocation: () => string | null;
|
package/dist/config/log.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const getLogLevel: () => "
|
|
1
|
+
export declare const getLogLevel: () => "error" | "verbose" | "info" | "warn", setLogLevel: (newLogLevel: "error" | "verbose" | "info" | "warn") => void;
|
|
@@ -80,6 +80,11 @@ const CompositionSelectorItem = ({ item, level, currentComposition, tabIndex, se
|
|
|
80
80
|
toggleFolder(item.folderName, item.parentName);
|
|
81
81
|
}
|
|
82
82
|
}, [item, selectComposition, toggleFolder]);
|
|
83
|
+
const onKeyPress = (0, react_1.useCallback)((evt) => {
|
|
84
|
+
if (evt.key === 'Enter') {
|
|
85
|
+
onClick(evt);
|
|
86
|
+
}
|
|
87
|
+
}, [onClick]);
|
|
83
88
|
const contextMenu = (0, react_1.useMemo)(() => {
|
|
84
89
|
if (item.type === 'composition') {
|
|
85
90
|
return [
|
|
@@ -126,6 +131,6 @@ const CompositionSelectorItem = ({ item, level, currentComposition, tabIndex, se
|
|
|
126
131
|
})
|
|
127
132
|
: null] }));
|
|
128
133
|
}
|
|
129
|
-
return ((0, jsx_runtime_1.jsx)(ContextMenu_1.ContextMenu, { values: contextMenu, children: (0, jsx_runtime_1.jsx)(layout_1.Row, { align: "center", children: (0, jsx_runtime_1.jsxs)("
|
|
134
|
+
return ((0, jsx_runtime_1.jsx)(ContextMenu_1.ContextMenu, { values: contextMenu, children: (0, jsx_runtime_1.jsx)(layout_1.Row, { align: "center", children: (0, jsx_runtime_1.jsxs)("a", { style: style, onPointerEnter: onPointerEnter, onPointerLeave: onPointerLeave, tabIndex: tabIndex, onClick: onClick, onKeyPress: onKeyPress, type: "button", title: item.composition.id, className: "__remotion-composition", "data-compname": item.composition.id, children: [(0, is_composition_still_1.isCompositionStill)(item.composition) ? ((0, jsx_runtime_1.jsx)(still_1.StillIcon, { color: hovered || selected ? 'white' : colors_1.LIGHT_TEXT, style: iconStyle })) : ((0, jsx_runtime_1.jsx)(video_1.FilmIcon, { color: hovered || selected ? 'white' : colors_1.LIGHT_TEXT, style: iconStyle })), (0, jsx_runtime_1.jsx)(layout_1.Spacing, { x: 1 }), (0, jsx_runtime_1.jsx)("div", { style: label, children: item.composition.id }), (0, jsx_runtime_1.jsx)(layout_1.Spacing, { x: 0.5 }), (0, jsx_runtime_1.jsx)("div", { children: (0, jsx_runtime_1.jsx)(SidebarRenderButton_1.SidebarRenderButton, { visible: hovered, composition: item.composition }) })] }) }) }));
|
|
130
135
|
};
|
|
131
136
|
exports.CompositionSelectorItem = CompositionSelectorItem;
|
|
@@ -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
|
+
}) => "rgba(255, 255, 255, 0.05)" | "rgba(0, 0, 0, 0.6)" | "hsla(0, 0%, 100%, 0.15)" | "#ff3232" | "#f1c40f";
|
|
16
16
|
export declare const RemotionInput: React.ForwardRefExoticComponent<Pick<Props, "status" | "key" | "rightAlign" | keyof React.InputHTMLAttributes<HTMLInputElement>> & React.RefAttributes<HTMLInputElement>>;
|
|
17
17
|
export {};
|
|
@@ -27,14 +27,15 @@ const forwardBackStyle = {
|
|
|
27
27
|
const PlayPause = ({ playbackRate, loop }) => {
|
|
28
28
|
const { inFrame, outFrame } = (0, in_out_1.useTimelineInOutFramePosition)();
|
|
29
29
|
const videoConfig = remotion_1.Internals.useUnsafeVideoConfig();
|
|
30
|
+
const { playing, play, pause, pauseAndReturnToPlayStart, frameBack, seek, frameForward, isLastFrame, isFirstFrame, remotionInternal_currentFrameRef, } = player_1.PlayerInternals.usePlayer();
|
|
30
31
|
player_1.PlayerInternals.usePlayback({
|
|
31
32
|
loop,
|
|
32
33
|
playbackRate,
|
|
33
34
|
moveToBeginningWhenEnded: true,
|
|
34
35
|
inFrame,
|
|
35
36
|
outFrame,
|
|
37
|
+
frameRef: remotionInternal_currentFrameRef,
|
|
36
38
|
});
|
|
37
|
-
const { playing, play, pause, pauseAndReturnToPlayStart, frameBack, seek, frameForward, isLastFrame, isFirstFrame, } = player_1.PlayerInternals.usePlayer();
|
|
38
39
|
const isStill = (0, is_current_selected_still_1.useIsStill)();
|
|
39
40
|
(0, react_1.useEffect)(() => {
|
|
40
41
|
if (isStill) {
|
|
@@ -19,6 +19,7 @@ const gif_1 = require("../../icons/gif");
|
|
|
19
19
|
const get_default_out_name_1 = require("../../../get-default-out-name");
|
|
20
20
|
const get_default_video_contexts_1 = require("../../../preview-server/render-queue/get-default-video-contexts");
|
|
21
21
|
const colors_1 = require("../../helpers/colors");
|
|
22
|
+
const Checkmark_1 = require("../../icons/Checkmark");
|
|
22
23
|
const modals_1 = require("../../state/modals");
|
|
23
24
|
const sidebar_1 = require("../../state/sidebar");
|
|
24
25
|
const layout_1 = require("../layout");
|
|
@@ -186,7 +187,7 @@ const RenderModal = ({ initialFrame, initialVideoImageFormat, initialStillImageF
|
|
|
186
187
|
const [startFrameOrNull, setStartFrame] = (0, react_1.useState)(() => inFrameMark !== null && inFrameMark !== void 0 ? inFrameMark : null);
|
|
187
188
|
const [proResProfileSetting, setProResProfile] = (0, react_1.useState)(() => initialProResProfile);
|
|
188
189
|
const [x264PresetSetting, setx264Preset] = (0, react_1.useState)(() => initialx264Preset);
|
|
189
|
-
const [
|
|
190
|
+
const [userPreferredPixelFormat, setPixelFormat] = (0, react_1.useState)(() => initialPixelFormat);
|
|
190
191
|
const [preferredQualityControlType, setQualityControl] = (0, react_1.useState)(() => initialVideoBitrate === null ? 'crf' : 'bitrate');
|
|
191
192
|
const [shouldHaveCustomTargetAudioBitrate, setShouldHaveCustomTargetAudioBitrate,] = (0, react_1.useState)(() => initialAudioBitrate !== null);
|
|
192
193
|
const [customTargetAudioBitrate, setCustomTargetAudioBitrateValue] = (0, react_1.useState)(() => initialAudioBitrate !== null && initialAudioBitrate !== void 0 ? initialAudioBitrate : '320K');
|
|
@@ -413,6 +414,15 @@ const RenderModal = ({ initialFrame, initialVideoImageFormat, initialStillImageF
|
|
|
413
414
|
return 1;
|
|
414
415
|
}, [codec, everyNthFrameSetting]);
|
|
415
416
|
const audioCodec = deriveFinalAudioCodec(codec, userSelectedAudioCodec);
|
|
417
|
+
const availablePixelFormats = (0, react_1.useMemo)(() => {
|
|
418
|
+
return client_1.BrowserSafeApis.validPixelFormatsForCodec(codec);
|
|
419
|
+
}, [codec]);
|
|
420
|
+
const pixelFormat = (0, react_1.useMemo)(() => {
|
|
421
|
+
if (availablePixelFormats.includes(userPreferredPixelFormat)) {
|
|
422
|
+
return userPreferredPixelFormat;
|
|
423
|
+
}
|
|
424
|
+
return availablePixelFormats[0];
|
|
425
|
+
}, [availablePixelFormats, userPreferredPixelFormat]);
|
|
416
426
|
const onClickVideo = (0, react_1.useCallback)(() => {
|
|
417
427
|
var _a;
|
|
418
428
|
setSidebarCollapsedState({ left: null, right: 'expanded' });
|
|
@@ -734,10 +744,26 @@ const RenderModal = ({ initialFrame, initialVideoImageFormat, initialStillImageF
|
|
|
734
744
|
enter.unregister();
|
|
735
745
|
};
|
|
736
746
|
}, [registerKeybinding, trigger]);
|
|
747
|
+
const pixelFormatOptions = (0, react_1.useMemo)(() => {
|
|
748
|
+
return availablePixelFormats.map((option) => {
|
|
749
|
+
return {
|
|
750
|
+
label: option,
|
|
751
|
+
onClick: () => setPixelFormat(option),
|
|
752
|
+
key: option,
|
|
753
|
+
id: option,
|
|
754
|
+
keyHint: null,
|
|
755
|
+
leftItem: pixelFormat === option ? (0, jsx_runtime_1.jsx)(Checkmark_1.Checkmark, {}) : null,
|
|
756
|
+
quickSwitcherLabel: null,
|
|
757
|
+
subMenu: null,
|
|
758
|
+
type: 'item',
|
|
759
|
+
value: option,
|
|
760
|
+
};
|
|
761
|
+
});
|
|
762
|
+
}, [availablePixelFormats, pixelFormat]);
|
|
737
763
|
return ((0, jsx_runtime_1.jsxs)("div", { style: outer, children: [(0, jsx_runtime_1.jsx)(ModalHeader_1.NewCompHeader, { title: `Render ${resolvedComposition.id}` }), (0, jsx_runtime_1.jsxs)("div", { style: container, children: [(0, jsx_runtime_1.jsx)(SegmentedControl_1.SegmentedControl, { items: renderTabOptions, needsWrapping: false }), (0, jsx_runtime_1.jsx)("div", { style: flexer }), (0, jsx_runtime_1.jsxs)(Button_1.Button, { autoFocus: true, onClick: trigger, disabled: renderDisabled, style: {
|
|
738
764
|
...buttonStyle,
|
|
739
765
|
backgroundColor: outnameValidation.valid ? colors_1.BLUE : colors_1.BLUE_DISABLED,
|
|
740
|
-
}, children: [state.type === 'idle' ? `Render ${renderMode}` : 'Rendering...', (0, jsx_runtime_1.jsx)(ShortcutHint_1.ShortcutHint, { keyToPress: "\u21B5", cmdOrCtrl: true })] })] }), (0, jsx_runtime_1.jsxs)("div", { style: horizontalLayout, children: [(0, jsx_runtime_1.jsxs)("div", { style: leftSidebar, children: [shownTabs.includes('general') ? ((0, jsx_runtime_1.jsxs)(vertical_1.VerticalTab, { style: horizontalTab, selected: tab === 'general', onClick: () => setTab('general'), children: [(0, jsx_runtime_1.jsx)("div", { style: iconContainer, children: (0, jsx_runtime_1.jsx)(file_1.FileIcon, { style: icon }) }), "General"] })) : null, shownTabs.includes('data') ? ((0, jsx_runtime_1.jsxs)(vertical_1.VerticalTab, { style: horizontalTab, selected: tab === 'data', onClick: () => setTab('data'), children: [(0, jsx_runtime_1.jsx)("div", { style: iconContainer, children: (0, jsx_runtime_1.jsx)(data_1.DataIcon, { style: icon }) }), "Input Props"] })) : null, shownTabs.includes('picture') ? ((0, jsx_runtime_1.jsxs)(vertical_1.VerticalTab, { style: horizontalTab, selected: tab === 'picture', onClick: () => setTab('picture'), children: [(0, jsx_runtime_1.jsx)("div", { style: iconContainer, children: (0, jsx_runtime_1.jsx)(frame_1.PicIcon, { style: icon }) }), "Picture"] })) : null, shownTabs.includes('audio') ? ((0, jsx_runtime_1.jsxs)(vertical_1.VerticalTab, { style: horizontalTab, selected: tab === 'audio', onClick: () => setTab('audio'), children: [(0, jsx_runtime_1.jsx)("div", { style: iconContainer, children: (0, jsx_runtime_1.jsx)(audio_1.AudioIcon, { style: icon }) }), "Audio"] })) : null, shownTabs.includes('gif') ? ((0, jsx_runtime_1.jsxs)(vertical_1.VerticalTab, { style: horizontalTab, selected: tab === 'gif', onClick: () => setTab('gif'), children: [(0, jsx_runtime_1.jsx)("div", { style: iconContainer, children: (0, jsx_runtime_1.jsx)(gif_1.GifIcon, { style: icon }) }), "GIF"] })) : null, shownTabs.includes('advanced') ? ((0, jsx_runtime_1.jsxs)(vertical_1.VerticalTab, { style: horizontalTab, selected: tab === 'advanced', onClick: () => setTab('advanced'), children: [(0, jsx_runtime_1.jsx)("div", { style: iconContainer, children: (0, jsx_runtime_1.jsx)(gear_1.GearIcon, { style: icon }) }), "Other"] })) : null] }), (0, jsx_runtime_1.jsx)("div", { style: optionsPanel, className: is_menu_item_1.VERTICAL_SCROLLBAR_CLASSNAME, children: tab === 'general' ? ((0, jsx_runtime_1.jsx)(RenderModalBasic_1.RenderModalBasic, { codec: codec, resolvedComposition: resolvedComposition, frame: frame, imageFormatOptions: imageFormatOptions, outName: outName, proResProfile: proResProfile, renderMode: renderMode, setVideoCodec: setCodec, setFrame: setFrame, setOutName: setOutName, setProResProfile: setProResProfile, endFrame: endFrame, setEndFrame: setEndFrame, setStartFrame: setStartFrame, startFrame: startFrame, validationMessage: outnameValidation.valid ? null : outnameValidation.error.message })) : tab === 'picture' ? ((0, jsx_runtime_1.jsx)(RenderModalPicture_1.RenderModalPicture, { renderMode: renderMode, scale: scale, setScale: setScale, pixelFormat: pixelFormat,
|
|
766
|
+
}, children: [state.type === 'idle' ? `Render ${renderMode}` : 'Rendering...', (0, jsx_runtime_1.jsx)(ShortcutHint_1.ShortcutHint, { keyToPress: "\u21B5", cmdOrCtrl: true })] })] }), (0, jsx_runtime_1.jsxs)("div", { style: horizontalLayout, children: [(0, jsx_runtime_1.jsxs)("div", { style: leftSidebar, children: [shownTabs.includes('general') ? ((0, jsx_runtime_1.jsxs)(vertical_1.VerticalTab, { style: horizontalTab, selected: tab === 'general', onClick: () => setTab('general'), children: [(0, jsx_runtime_1.jsx)("div", { style: iconContainer, children: (0, jsx_runtime_1.jsx)(file_1.FileIcon, { style: icon }) }), "General"] })) : null, shownTabs.includes('data') ? ((0, jsx_runtime_1.jsxs)(vertical_1.VerticalTab, { style: horizontalTab, selected: tab === 'data', onClick: () => setTab('data'), children: [(0, jsx_runtime_1.jsx)("div", { style: iconContainer, children: (0, jsx_runtime_1.jsx)(data_1.DataIcon, { style: icon }) }), "Input Props"] })) : null, shownTabs.includes('picture') ? ((0, jsx_runtime_1.jsxs)(vertical_1.VerticalTab, { style: horizontalTab, selected: tab === 'picture', onClick: () => setTab('picture'), children: [(0, jsx_runtime_1.jsx)("div", { style: iconContainer, children: (0, jsx_runtime_1.jsx)(frame_1.PicIcon, { style: icon }) }), "Picture"] })) : null, shownTabs.includes('audio') ? ((0, jsx_runtime_1.jsxs)(vertical_1.VerticalTab, { style: horizontalTab, selected: tab === 'audio', onClick: () => setTab('audio'), children: [(0, jsx_runtime_1.jsx)("div", { style: iconContainer, children: (0, jsx_runtime_1.jsx)(audio_1.AudioIcon, { style: icon }) }), "Audio"] })) : null, shownTabs.includes('gif') ? ((0, jsx_runtime_1.jsxs)(vertical_1.VerticalTab, { style: horizontalTab, selected: tab === 'gif', onClick: () => setTab('gif'), children: [(0, jsx_runtime_1.jsx)("div", { style: iconContainer, children: (0, jsx_runtime_1.jsx)(gif_1.GifIcon, { style: icon }) }), "GIF"] })) : null, shownTabs.includes('advanced') ? ((0, jsx_runtime_1.jsxs)(vertical_1.VerticalTab, { style: horizontalTab, selected: tab === 'advanced', onClick: () => setTab('advanced'), children: [(0, jsx_runtime_1.jsx)("div", { style: iconContainer, children: (0, jsx_runtime_1.jsx)(gear_1.GearIcon, { style: icon }) }), "Other"] })) : null] }), (0, jsx_runtime_1.jsx)("div", { style: optionsPanel, className: is_menu_item_1.VERTICAL_SCROLLBAR_CLASSNAME, children: tab === 'general' ? ((0, jsx_runtime_1.jsx)(RenderModalBasic_1.RenderModalBasic, { codec: codec, resolvedComposition: resolvedComposition, frame: frame, imageFormatOptions: imageFormatOptions, outName: outName, proResProfile: proResProfile, renderMode: renderMode, setVideoCodec: setCodec, setFrame: setFrame, setOutName: setOutName, setProResProfile: setProResProfile, endFrame: endFrame, setEndFrame: setEndFrame, setStartFrame: setStartFrame, startFrame: startFrame, validationMessage: outnameValidation.valid ? null : outnameValidation.error.message })) : tab === 'picture' ? ((0, jsx_runtime_1.jsx)(RenderModalPicture_1.RenderModalPicture, { renderMode: renderMode, scale: scale, setScale: setScale, pixelFormat: pixelFormat, pixelFormatOptions: pixelFormatOptions, imageFormatOptions: imageFormatOptions, crf: crf, setCrf: setCrf, customTargetVideoBitrate: customTargetVideoBitrate, maxCrf: maxCrf, minCrf: minCrf, jpegQuality: jpegQuality, qualityControlType: qualityControlType, setJpegQuality: setJpegQuality, setColorSpace: setColorSpace, colorSpace: colorSpace, setCustomTargetVideoBitrateValue: setCustomTargetVideoBitrateValue, setQualityControl: setQualityControl, videoImageFormat: videoImageFormat, stillImageFormat: stillImageFormat, shouldDisplayQualityControlPicker: supportsBothQualityControls })) : tab === 'audio' ? ((0, jsx_runtime_1.jsx)(RenderModalAudio_1.RenderModalAudio, { muted: muted, renderMode: renderMode, setMuted: setMuted, codec: codec, audioCodec: audioCodec, setAudioCodec: setAudioCodec, enforceAudioTrack: enforceAudioTrack, setEnforceAudioTrackState: setEnforceAudioTrackState, customTargetAudioBitrate: customTargetAudioBitrate, setCustomTargetAudioBitrateValue: setCustomTargetAudioBitrateValue, setShouldHaveCustomTargetAudioBitrate: setShouldHaveCustomTargetAudioBitrate, shouldHaveCustomTargetAudioBitrate: shouldHaveCustomTargetAudioBitrate })) : tab === 'gif' ? ((0, jsx_runtime_1.jsx)(RenderModalGif_1.RenderModalGif, { everyNthFrame: everyNthFrame, limitNumberOfGifLoops: limitNumberOfGifLoops, numberOfGifLoopsSetting: numberOfGifLoopsSetting, setEveryNthFrameSetting: setEveryNthFrameSetting, setLimitNumberOfGifLoops: setLimitNumberOfGifLoops, setNumberOfGifLoopsSetting: setNumberOfGifLoopsSetting })) : tab === 'data' ? ((0, jsx_runtime_1.jsx)(DataEditor_1.DataEditor, { inputProps: inputProps, setInputProps: setInputProps, unresolvedComposition: unresolvedComposition, mayShowSaveButton: false, propsEditType: "input-props", saving: saving, setSaving: setSaving })) : ((0, jsx_runtime_1.jsx)(RenderModalAdvanced_1.RenderModalAdvanced, { x264Preset: x264Preset, setx264Preset: setx264Preset, concurrency: concurrency, maxConcurrency: maxConcurrency, minConcurrency: minConcurrency, renderMode: renderMode, setConcurrency: setConcurrency, setVerboseLogging: setLogLevel, logLevel: logLevel, delayRenderTimeout: delayRenderTimeout, setDelayRenderTimeout: setDelayRenderTimeout, disallowParallelEncoding: disallowParallelEncoding, setDisallowParallelEncoding: setDisallowParallelEncoding, setDisableWebSecurity: setDisableWebSecurity, setIgnoreCertificateErrors: setIgnoreCertificateErrors, setHeadless: setHeadless, headless: headless, ignoreCertificateErrors: ignoreCertificateErrors, disableWebSecurity: disableWebSecurity, openGlOption: openGlOption, setOpenGlOption: setOpenGlOption, setEnvVariables: setEnvVariables, envVariables: envVariables, offthreadVideoCacheSizeInBytes: offthreadVideoCacheSizeInBytes, setOffthreadVideoCacheSizeInBytes: setOffthreadVideoCacheSizeInBytes, enableMultiProcessOnLinux: multiProcessOnLinux, setChromiumMultiProcessOnLinux: setChromiumMultiProcessOnLinux, codec: codec })) })] })] }));
|
|
741
767
|
};
|
|
742
768
|
const RenderModalWithLoader = (props) => {
|
|
743
769
|
const { setSelectedModal } = (0, react_1.useContext)(modals_1.ModalsContext);
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { ColorSpace, PixelFormat, StillImageFormat, VideoImageFormat } from '@remotion/renderer';
|
|
2
2
|
import React from 'react';
|
|
3
|
+
import type { ComboboxValue } from '../NewComposition/ComboBox';
|
|
3
4
|
import type { SegmentedControlItem } from '../SegmentedControl';
|
|
4
5
|
import type { RenderType } from './RenderModalAdvanced';
|
|
5
6
|
declare const qualityControlModes: readonly ["crf", "bitrate"];
|
|
@@ -9,7 +10,6 @@ export declare const RenderModalPicture: React.FC<{
|
|
|
9
10
|
scale: number;
|
|
10
11
|
setScale: React.Dispatch<React.SetStateAction<number>>;
|
|
11
12
|
pixelFormat: PixelFormat;
|
|
12
|
-
setPixelFormat: React.Dispatch<React.SetStateAction<PixelFormat>>;
|
|
13
13
|
colorSpace: ColorSpace;
|
|
14
14
|
setColorSpace: React.Dispatch<React.SetStateAction<ColorSpace>>;
|
|
15
15
|
imageFormatOptions: SegmentedControlItem[];
|
|
@@ -26,5 +26,6 @@ export declare const RenderModalPicture: React.FC<{
|
|
|
26
26
|
crf: number;
|
|
27
27
|
customTargetVideoBitrate: string;
|
|
28
28
|
shouldDisplayQualityControlPicker: boolean;
|
|
29
|
+
pixelFormatOptions: ComboboxValue[];
|
|
29
30
|
}>;
|
|
30
31
|
export {};
|
|
@@ -20,23 +20,7 @@ const qualityControlModes = ['crf', 'bitrate'];
|
|
|
20
20
|
const container = {
|
|
21
21
|
flex: 1,
|
|
22
22
|
};
|
|
23
|
-
const RenderModalPicture = ({ renderMode, scale, setScale, pixelFormat,
|
|
24
|
-
const pixelFormatOptions = (0, react_1.useMemo)(() => {
|
|
25
|
-
return client_1.BrowserSafeApis.validPixelFormats.map((option) => {
|
|
26
|
-
return {
|
|
27
|
-
label: option,
|
|
28
|
-
onClick: () => setPixelFormat(option),
|
|
29
|
-
key: option,
|
|
30
|
-
id: option,
|
|
31
|
-
keyHint: null,
|
|
32
|
-
leftItem: pixelFormat === option ? (0, jsx_runtime_1.jsx)(Checkmark_1.Checkmark, {}) : null,
|
|
33
|
-
quickSwitcherLabel: null,
|
|
34
|
-
subMenu: null,
|
|
35
|
-
type: 'item',
|
|
36
|
-
value: option,
|
|
37
|
-
};
|
|
38
|
-
});
|
|
39
|
-
}, [pixelFormat, setPixelFormat]);
|
|
23
|
+
const RenderModalPicture = ({ renderMode, scale, setScale, pixelFormat, imageFormatOptions, setQualityControl, qualityControlType, videoImageFormat, setJpegQuality, jpegQuality, maxCrf, minCrf, setCrf, shouldDisplayQualityControlPicker, setCustomTargetVideoBitrateValue, crf, customTargetVideoBitrate, stillImageFormat, colorSpace, setColorSpace, pixelFormatOptions, }) => {
|
|
40
24
|
const colorSpaceOptions = (0, react_1.useMemo)(() => {
|
|
41
25
|
return client_1.BrowserSafeApis.validColorSpaces.map((option) => {
|
|
42
26
|
return {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export declare const getCheckerboardBackgroundSize: (size: number) => string;
|
|
2
2
|
export declare const getCheckerboardBackgroundPos: (size: number) => string;
|
|
3
|
-
export declare const checkerboardBackgroundColor: (checkerboard: boolean) => "
|
|
3
|
+
export declare const checkerboardBackgroundColor: (checkerboard: boolean) => "white" | "black";
|
|
4
4
|
export declare const checkerboardBackgroundImage: (checkerboard: boolean) => "\n linear-gradient(\n 45deg,\n rgba(0, 0, 0, 0.1) 25%,\n transparent 25%\n ),\n linear-gradient(135deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%),\n linear-gradient(45deg, transparent 75%, rgba(0, 0, 0, 0.1) 75%),\n linear-gradient(135deg, transparent 75%, rgba(0, 0, 0, 0.1) 75%)\n " | undefined;
|
|
@@ -21,4 +21,4 @@ export declare const SELECTED_GUIDE = "#d22d3a";
|
|
|
21
21
|
export declare const getBackgroundFromHoverState: ({ selected, hovered, }: {
|
|
22
22
|
selected: boolean;
|
|
23
23
|
hovered: boolean;
|
|
24
|
-
}) => "transparent" | "hsla(0, 0%, 100%, 0.15)" | "
|
|
24
|
+
}) => "transparent" | "hsla(0, 0%, 100%, 0.15)" | "rgba(255, 255, 255, 0.06)" | "hsla(0, 0%, 100%, 0.25)";
|
|
@@ -16,13 +16,13 @@ export declare const getCliOptions: (options: {
|
|
|
16
16
|
browser: "chrome";
|
|
17
17
|
crf: import("@remotion/renderer").Crf | null;
|
|
18
18
|
pixelFormat: "yuv420p" | "yuva420p" | "yuv422p" | "yuv444p" | "yuv420p10le" | "yuv422p10le" | "yuv444p10le" | "yuva444p10le";
|
|
19
|
-
proResProfile: "4444-xq" | "4444" | "hq" | "standard" | "
|
|
19
|
+
proResProfile: "light" | "4444-xq" | "4444" | "hq" | "standard" | "proxy" | undefined;
|
|
20
20
|
x264Preset: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo" | undefined;
|
|
21
21
|
everyNthFrame: number;
|
|
22
22
|
numberOfGifLoops: import("./config/number-of-gif-loops").Loop;
|
|
23
23
|
stillFrame: number;
|
|
24
24
|
browserExecutable: BrowserExecutable;
|
|
25
|
-
logLevel: "
|
|
25
|
+
logLevel: "error" | "verbose" | "info" | "warn";
|
|
26
26
|
scale: number;
|
|
27
27
|
chromiumOptions: ChromiumOptions;
|
|
28
28
|
overwrite: boolean;
|
|
@@ -34,7 +34,7 @@ export declare const getCliOptions: (options: {
|
|
|
34
34
|
videoBitrate: string | null;
|
|
35
35
|
height: number | null;
|
|
36
36
|
width: number | null;
|
|
37
|
-
configFileImageFormat: "
|
|
37
|
+
configFileImageFormat: "none" | "jpeg" | "png" | undefined;
|
|
38
38
|
offthreadVideoCacheSizeInBytes: number | null;
|
|
39
39
|
deleteAfter: ("1-day" | "3-days" | "7-days" | "30-days") | null;
|
|
40
40
|
colorSpace: "default" | "bt709";
|
package/dist/index.d.ts
CHANGED
|
@@ -74,7 +74,7 @@ export declare const CliInternals: {
|
|
|
74
74
|
isLambda: boolean;
|
|
75
75
|
type: "still" | "series" | "get-compositions";
|
|
76
76
|
remotionRoot: string;
|
|
77
|
-
logLevel: "
|
|
77
|
+
logLevel: "error" | "verbose" | "info" | "warn";
|
|
78
78
|
}) => Promise<{
|
|
79
79
|
puppeteerTimeout: number;
|
|
80
80
|
concurrency: string | number | null;
|
|
@@ -86,13 +86,13 @@ export declare const CliInternals: {
|
|
|
86
86
|
browser: "chrome";
|
|
87
87
|
crf: import("@remotion/renderer").Crf | null;
|
|
88
88
|
pixelFormat: "yuv420p" | "yuva420p" | "yuv422p" | "yuv444p" | "yuv420p10le" | "yuv422p10le" | "yuv444p10le" | "yuva444p10le";
|
|
89
|
-
proResProfile: "4444-xq" | "4444" | "hq" | "standard" | "
|
|
89
|
+
proResProfile: "light" | "4444-xq" | "4444" | "hq" | "standard" | "proxy" | undefined;
|
|
90
90
|
x264Preset: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo" | undefined;
|
|
91
91
|
everyNthFrame: number;
|
|
92
92
|
numberOfGifLoops: import("./config/number-of-gif-loops").Loop;
|
|
93
93
|
stillFrame: number;
|
|
94
94
|
browserExecutable: import("@remotion/renderer").BrowserExecutable;
|
|
95
|
-
logLevel: "
|
|
95
|
+
logLevel: "error" | "verbose" | "info" | "warn";
|
|
96
96
|
scale: number;
|
|
97
97
|
chromiumOptions: import("@remotion/renderer").ChromiumOptions;
|
|
98
98
|
overwrite: boolean;
|
|
@@ -104,20 +104,20 @@ export declare const CliInternals: {
|
|
|
104
104
|
videoBitrate: string | null;
|
|
105
105
|
height: number | null;
|
|
106
106
|
width: number | null;
|
|
107
|
-
configFileImageFormat: "
|
|
107
|
+
configFileImageFormat: "none" | "jpeg" | "png" | undefined;
|
|
108
108
|
offthreadVideoCacheSizeInBytes: number | null;
|
|
109
109
|
deleteAfter: ("1-day" | "3-days" | "7-days" | "30-days") | null;
|
|
110
110
|
colorSpace: "default" | "bt709";
|
|
111
111
|
}>;
|
|
112
112
|
loadConfig: (remotionRoot: string) => Promise<string | null>;
|
|
113
|
-
initializeCli: (remotionRoot: string) => Promise<"
|
|
113
|
+
initializeCli: (remotionRoot: string) => Promise<"error" | "verbose" | "info" | "warn">;
|
|
114
114
|
BooleanFlags: string[];
|
|
115
115
|
quietFlagProvided: () => boolean;
|
|
116
116
|
parsedCli: {
|
|
117
117
|
"browser-executable": import("@remotion/renderer").BrowserExecutable;
|
|
118
118
|
"pixel-format": "yuv420p" | "yuva420p" | "yuv422p" | "yuv444p" | "yuv420p10le" | "yuv422p10le" | "yuv444p10le" | "yuva444p10le";
|
|
119
|
-
"image-format": "
|
|
120
|
-
"prores-profile": "4444-xq" | "4444" | "hq" | "standard" | "
|
|
119
|
+
"image-format": "none" | "jpeg" | "png" | "pdf" | "webp";
|
|
120
|
+
"prores-profile": "light" | "4444-xq" | "4444" | "hq" | "standard" | "proxy";
|
|
121
121
|
"x264-preset": "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo";
|
|
122
122
|
"bundle-cache": string;
|
|
123
123
|
"env-file": string;
|
|
@@ -175,7 +175,7 @@ export declare const CliInternals: {
|
|
|
175
175
|
} & {
|
|
176
176
|
_: string[];
|
|
177
177
|
};
|
|
178
|
-
printError: (err: Error, logLevel: "
|
|
178
|
+
printError: (err: Error, logLevel: "error" | "verbose" | "info" | "warn") => Promise<void>;
|
|
179
179
|
formatBytes: (number: number, options?: Intl.NumberFormatOptions & {
|
|
180
180
|
locale: string;
|
|
181
181
|
bits?: boolean | undefined;
|
|
@@ -186,24 +186,24 @@ export declare const CliInternals: {
|
|
|
186
186
|
determineFinalStillImageFormat: ({ downloadName, outName, configImageFormat, cliFlag, isLambda, fromUi, }: {
|
|
187
187
|
downloadName: string | null;
|
|
188
188
|
outName: string | null;
|
|
189
|
-
configImageFormat: "
|
|
190
|
-
cliFlag: "
|
|
189
|
+
configImageFormat: "jpeg" | "png" | "pdf" | "webp" | null;
|
|
190
|
+
cliFlag: "none" | "jpeg" | "png" | "pdf" | "webp" | null;
|
|
191
191
|
isLambda: boolean;
|
|
192
|
-
fromUi: "
|
|
192
|
+
fromUi: "jpeg" | "png" | "pdf" | "webp" | null;
|
|
193
193
|
}) => {
|
|
194
|
-
format: "
|
|
194
|
+
format: "jpeg" | "png" | "pdf" | "webp";
|
|
195
195
|
source: string;
|
|
196
196
|
};
|
|
197
197
|
minimist: typeof minimist;
|
|
198
|
-
findEntryPoint: (args: string[], remotionRoot: string, logLevel: "
|
|
198
|
+
findEntryPoint: (args: string[], remotionRoot: string, logLevel: "error" | "verbose" | "info" | "warn") => {
|
|
199
199
|
file: string | null;
|
|
200
200
|
remainingArgs: string[];
|
|
201
201
|
reason: string;
|
|
202
202
|
};
|
|
203
203
|
getVideoImageFormat: ({ codec, uiImageFormat, }: {
|
|
204
204
|
codec: import("@remotion/renderer").CodecOrUndefined;
|
|
205
|
-
uiImageFormat: "
|
|
206
|
-
}) => "
|
|
205
|
+
uiImageFormat: "none" | "jpeg" | "png" | null;
|
|
206
|
+
}) => "none" | "jpeg" | "png";
|
|
207
207
|
printCompositions: (compositions: import("remotion").VideoConfig[]) => void;
|
|
208
208
|
getFinalOutputCodec: ({ cliFlag, configFile, downloadName, outName, uiCodec, compositionCodec, }: {
|
|
209
209
|
cliFlag: import("@remotion/renderer").CodecOrUndefined;
|
|
@@ -218,7 +218,7 @@ export declare const CliInternals: {
|
|
|
218
218
|
};
|
|
219
219
|
listOfRemotionPackages: string[];
|
|
220
220
|
shouldUseNonOverlayingLogger: ({ logLevel, }: {
|
|
221
|
-
logLevel: "
|
|
221
|
+
logLevel: "error" | "verbose" | "info" | "warn";
|
|
222
222
|
}) => boolean;
|
|
223
223
|
getCompositionWithDimensionOverride: ({ height, width, args, compositionIdFromUi, chromiumOptions, envVariables, port, puppeteerInstance, timeoutInMilliseconds, browserExecutable, serveUrlOrWebpackUrl, indent, serializedInputPropsWithCustomSchema, logLevel, server, offthreadVideoCacheSizeInBytes, }: {
|
|
224
224
|
height: number | null;
|
|
@@ -233,7 +233,7 @@ export declare const CliInternals: {
|
|
|
233
233
|
browserExecutable: import("@remotion/renderer").BrowserExecutable;
|
|
234
234
|
serveUrlOrWebpackUrl: string;
|
|
235
235
|
indent: boolean;
|
|
236
|
-
logLevel: "
|
|
236
|
+
logLevel: "error" | "verbose" | "info" | "warn";
|
|
237
237
|
serializedInputPropsWithCustomSchema: string;
|
|
238
238
|
server: import("@remotion/renderer").RemotionServer;
|
|
239
239
|
offthreadVideoCacheSizeInBytes: number | null;
|
|
@@ -11,5 +11,5 @@ type Range = {
|
|
|
11
11
|
type Ranges = Range[] & {
|
|
12
12
|
type?: string;
|
|
13
13
|
};
|
|
14
|
-
export declare function parseRange(size: number, str: string | string[]): -1 |
|
|
14
|
+
export declare function parseRange(size: number, str: string | string[]): -1 | -2 | Ranges;
|
|
15
15
|
export {};
|
|
@@ -118,7 +118,7 @@ const makeRetryPayload = (job) => {
|
|
|
118
118
|
initialOffthreadVideoCacheSizeInBytes: job.offthreadVideoCacheSizeInBytes,
|
|
119
119
|
initialColorSpace: job.colorSpace,
|
|
120
120
|
initialMultiProcessOnLinux: job.multiProcessOnLinux,
|
|
121
|
-
defaultConfigurationVideoCodec:
|
|
121
|
+
defaultConfigurationVideoCodec: job.codec,
|
|
122
122
|
defaultConfigurationAudioCodec: job.audioCodec,
|
|
123
123
|
};
|
|
124
124
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@remotion/cli",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.75",
|
|
4
4
|
"description": "CLI for Remotion",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -35,11 +35,11 @@
|
|
|
35
35
|
"prompts": "2.4.1",
|
|
36
36
|
"semver": "7.5.3",
|
|
37
37
|
"source-map": "0.6.1",
|
|
38
|
-
"@remotion/bundler": "4.0.
|
|
39
|
-
"@remotion/
|
|
40
|
-
"@remotion/
|
|
41
|
-
"@remotion/
|
|
42
|
-
"remotion": "4.0.
|
|
38
|
+
"@remotion/bundler": "4.0.75",
|
|
39
|
+
"@remotion/player": "4.0.75",
|
|
40
|
+
"@remotion/renderer": "4.0.75",
|
|
41
|
+
"@remotion/media-utils": "4.0.75",
|
|
42
|
+
"remotion": "4.0.75"
|
|
43
43
|
},
|
|
44
44
|
"peerDependencies": {
|
|
45
45
|
"react": ">=16.8.0",
|
|
@@ -65,8 +65,8 @@
|
|
|
65
65
|
"react-dom": "18.2.0",
|
|
66
66
|
"vitest": "0.31.1",
|
|
67
67
|
"zod": "^3.22.3",
|
|
68
|
-
"@remotion/zod-types": "4.0.
|
|
69
|
-
"@remotion/tailwind": "4.0.
|
|
68
|
+
"@remotion/zod-types": "4.0.75",
|
|
69
|
+
"@remotion/tailwind": "4.0.75"
|
|
70
70
|
},
|
|
71
71
|
"keywords": [
|
|
72
72
|
"remotion",
|