@remotion/cli 4.0.74 → 4.0.76
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 +1 -1
- package/dist/config/index.d.ts +1 -1
- package/dist/editor/components/CompositionSelectorItem.js +6 -1
- package/dist/editor/components/NewComposition/RemInput.d.ts +2 -2
- package/dist/editor/components/NewComposition/RemInputTypeColor.d.ts +1 -1
- package/dist/editor/components/NewComposition/RemTextarea.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/components/RenderModal/human-readable-codec.d.ts +1 -1
- package/dist/editor/helpers/colors.d.ts +1 -1
- package/dist/editor/helpers/render-modal-sections.d.ts +0 -1
- package/dist/get-cli-options.d.ts +1 -1
- package/dist/index.d.ts +5 -5
- 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/dist/preview-server/routes.d.ts +0 -1
- package/package.json +8 -8
|
@@ -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: () => "none" | "png" | "jpeg" | undefined;
|
package/dist/config/index.d.ts
CHANGED
|
@@ -329,7 +329,7 @@ export declare const ConfigInternals: {
|
|
|
329
329
|
getShouldOutputImageSequence: (frameRange: FrameRange | null) => boolean;
|
|
330
330
|
getDotEnvLocation: () => string | null;
|
|
331
331
|
getUserPreferredStillImageFormat: () => "png" | "jpeg" | "pdf" | "webp" | undefined;
|
|
332
|
-
getUserPreferredVideoImageFormat: () => "
|
|
332
|
+
getUserPreferredVideoImageFormat: () => "none" | "png" | "jpeg" | undefined;
|
|
333
333
|
getWebpackOverrideFn: () => WebpackOverrideFn;
|
|
334
334
|
getWebpackCaching: () => boolean;
|
|
335
335
|
getOutputLocation: () => string | null;
|
|
@@ -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
|
-
}) => "hsla(0, 0%, 100%, 0.15)" | "rgba(
|
|
16
|
-
export declare const RemotionInput: React.ForwardRefExoticComponent<Pick<Props, "
|
|
15
|
+
}) => "#ff3232" | "hsla(0, 0%, 100%, 0.15)" | "#f1c40f" | "rgba(255, 255, 255, 0.05)" | "rgba(0, 0, 0, 0.6)";
|
|
16
|
+
export declare const RemotionInput: React.ForwardRefExoticComponent<Pick<Props, "key" | keyof React.InputHTMLAttributes<HTMLInputElement> | "status" | "rightAlign"> & React.RefAttributes<HTMLInputElement>>;
|
|
17
17
|
export {};
|
|
@@ -4,5 +4,5 @@ type Props = React.DetailedHTMLProps<React.InputHTMLAttributes<HTMLInputElement>
|
|
|
4
4
|
status: RemInputStatus;
|
|
5
5
|
name: string;
|
|
6
6
|
};
|
|
7
|
-
export declare const RemInputTypeColor: React.ForwardRefExoticComponent<Pick<Props, "
|
|
7
|
+
export declare const RemInputTypeColor: React.ForwardRefExoticComponent<Pick<Props, "key" | keyof React.InputHTMLAttributes<HTMLInputElement> | "status"> & React.RefAttributes<HTMLInputElement>>;
|
|
8
8
|
export {};
|
|
@@ -3,5 +3,5 @@ type Props = React.DetailedHTMLProps<React.InputHTMLAttributes<HTMLTextAreaEleme
|
|
|
3
3
|
status: 'error' | 'warning' | 'ok';
|
|
4
4
|
};
|
|
5
5
|
export declare const inputBaseStyle: React.CSSProperties;
|
|
6
|
-
export declare const RemTextarea: React.ForwardRefExoticComponent<Pick<Props, "
|
|
6
|
+
export declare const RemTextarea: React.ForwardRefExoticComponent<Pick<Props, "key" | "status" | keyof React.InputHTMLAttributes<HTMLTextAreaElement>> & React.RefAttributes<HTMLTextAreaElement>>;
|
|
7
7
|
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,2 +1,2 @@
|
|
|
1
1
|
import type { Codec } from '@remotion/renderer';
|
|
2
|
-
export declare const humanReadableCodec: (codec: Codec) => "
|
|
2
|
+
export declare const humanReadableCodec: (codec: Codec) => "AAC" | "MP3" | "GIF" | "H.264" | "H.264 Matroska" | "H.265" | "ProRes" | "WebM VP8" | "WebM VP9" | "Waveform" | 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.
|
|
24
|
+
}) => "transparent" | "hsla(0, 0%, 100%, 0.25)" | "hsla(0, 0%, 100%, 0.15)" | "rgba(255, 255, 255, 0.06)";
|
|
@@ -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" | "png" | "jpeg" | 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
|
@@ -104,7 +104,7 @@ export declare const CliInternals: {
|
|
|
104
104
|
videoBitrate: string | null;
|
|
105
105
|
height: number | null;
|
|
106
106
|
width: number | null;
|
|
107
|
-
configFileImageFormat: "
|
|
107
|
+
configFileImageFormat: "none" | "png" | "jpeg" | undefined;
|
|
108
108
|
offthreadVideoCacheSizeInBytes: number | null;
|
|
109
109
|
deleteAfter: ("1-day" | "3-days" | "7-days" | "30-days") | null;
|
|
110
110
|
colorSpace: "default" | "bt709";
|
|
@@ -116,7 +116,7 @@ export declare const CliInternals: {
|
|
|
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": "
|
|
119
|
+
"image-format": "none" | "png" | "jpeg" | "pdf" | "webp";
|
|
120
120
|
"prores-profile": "4444-xq" | "4444" | "hq" | "standard" | "light" | "proxy";
|
|
121
121
|
"x264-preset": "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo";
|
|
122
122
|
"bundle-cache": string;
|
|
@@ -187,7 +187,7 @@ export declare const CliInternals: {
|
|
|
187
187
|
downloadName: string | null;
|
|
188
188
|
outName: string | null;
|
|
189
189
|
configImageFormat: "png" | "jpeg" | "pdf" | "webp" | null;
|
|
190
|
-
cliFlag: "
|
|
190
|
+
cliFlag: "none" | "png" | "jpeg" | "pdf" | "webp" | null;
|
|
191
191
|
isLambda: boolean;
|
|
192
192
|
fromUi: "png" | "jpeg" | "pdf" | "webp" | null;
|
|
193
193
|
}) => {
|
|
@@ -202,8 +202,8 @@ export declare const CliInternals: {
|
|
|
202
202
|
};
|
|
203
203
|
getVideoImageFormat: ({ codec, uiImageFormat, }: {
|
|
204
204
|
codec: import("@remotion/renderer").CodecOrUndefined;
|
|
205
|
-
uiImageFormat: "
|
|
206
|
-
}) => "
|
|
205
|
+
uiImageFormat: "none" | "png" | "jpeg" | null;
|
|
206
|
+
}) => "none" | "png" | "jpeg";
|
|
207
207
|
printCompositions: (compositions: import("remotion").VideoConfig[]) => void;
|
|
208
208
|
getFinalOutputCodec: ({ cliFlag, configFile, downloadName, outName, uiCodec, compositionCodec, }: {
|
|
209
209
|
cliFlag: import("@remotion/renderer").CodecOrUndefined;
|
|
@@ -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.76",
|
|
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/
|
|
39
|
-
"@remotion/
|
|
40
|
-
"@remotion/
|
|
41
|
-
"
|
|
42
|
-
"remotion": "4.0.
|
|
38
|
+
"@remotion/media-utils": "4.0.76",
|
|
39
|
+
"@remotion/renderer": "4.0.76",
|
|
40
|
+
"@remotion/bundler": "4.0.76",
|
|
41
|
+
"remotion": "4.0.76",
|
|
42
|
+
"@remotion/player": "4.0.76"
|
|
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/
|
|
69
|
-
"@remotion/
|
|
68
|
+
"@remotion/tailwind": "4.0.76",
|
|
69
|
+
"@remotion/zod-types": "4.0.76"
|
|
70
70
|
},
|
|
71
71
|
"keywords": [
|
|
72
72
|
"remotion",
|