@remotion/renderer 4.0.464 → 4.0.466
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/client.d.ts +64 -0
- package/dist/esm/client.mjs +513 -467
- package/dist/esm/index.mjs +32 -4
- package/dist/ffmpeg-args.d.ts +2 -1
- package/dist/ffmpeg-args.js +6 -2
- package/dist/options/gop-size.d.ts +17 -0
- package/dist/options/gop-size.js +41 -0
- package/dist/options/index.d.ts +16 -0
- package/dist/options/index.js +2 -0
- package/dist/options/options-map.d.ts +48 -0
- package/dist/options/options-map.js +4 -0
- package/dist/prespawn-ffmpeg.d.ts +1 -0
- package/dist/prespawn-ffmpeg.js +1 -0
- package/dist/render-media.d.ts +1 -1
- package/dist/render-media.js +7 -2
- package/dist/stitch-frames-to-video.d.ts +3 -1
- package/dist/stitch-frames-to-video.js +6 -2
- package/package.json +13 -13
package/dist/esm/index.mjs
CHANGED
|
@@ -21442,8 +21442,19 @@ var validV5ColorSpaces = ["bt601", "bt709", "bt2020-ncl"];
|
|
|
21442
21442
|
var validColorSpaces = NoReactInternals13.ENABLE_V5_BREAKING_CHANGES ? validV5ColorSpaces : validV4ColorSpaces;
|
|
21443
21443
|
var DEFAULT_COLOR_SPACE = NoReactInternals13.ENABLE_V5_BREAKING_CHANGES ? "bt709" : "default";
|
|
21444
21444
|
|
|
21445
|
-
// src/options/
|
|
21445
|
+
// src/options/gop-size.tsx
|
|
21446
21446
|
import { jsx as jsx5, jsxs as jsxs5, Fragment as Fragment5 } from "react/jsx-runtime";
|
|
21447
|
+
var validateGopSize = (value) => {
|
|
21448
|
+
if (value === null) {
|
|
21449
|
+
return;
|
|
21450
|
+
}
|
|
21451
|
+
if (typeof value !== "number" || !Number.isFinite(value) || !Number.isInteger(value) || value <= 0) {
|
|
21452
|
+
throw new TypeError("The GOP size must be an integer greater than 0 or null.");
|
|
21453
|
+
}
|
|
21454
|
+
};
|
|
21455
|
+
|
|
21456
|
+
// src/options/x264-preset.tsx
|
|
21457
|
+
import { jsx as jsx6, jsxs as jsxs6, Fragment as Fragment6 } from "react/jsx-runtime";
|
|
21447
21458
|
var x264PresetOptions = [
|
|
21448
21459
|
"ultrafast",
|
|
21449
21460
|
"superfast",
|
|
@@ -21570,6 +21581,7 @@ var firstEncodingStepOnly = ({
|
|
|
21570
21581
|
proResProfileName,
|
|
21571
21582
|
pixelFormat,
|
|
21572
21583
|
x264Preset,
|
|
21584
|
+
gopSize,
|
|
21573
21585
|
codec,
|
|
21574
21586
|
crf,
|
|
21575
21587
|
videoBitrate,
|
|
@@ -21580,11 +21592,13 @@ var firstEncodingStepOnly = ({
|
|
|
21580
21592
|
if (hasPreencoded || codec === "gif") {
|
|
21581
21593
|
return [];
|
|
21582
21594
|
}
|
|
21595
|
+
validateGopSize(gopSize);
|
|
21583
21596
|
return [
|
|
21584
21597
|
proResProfileName ? ["-profile:v", proResProfileName] : null,
|
|
21585
21598
|
["-pix_fmt", pixelFormat],
|
|
21586
21599
|
pixelFormat === "yuva420p" ? ["-auto-alt-ref", "0"] : null,
|
|
21587
21600
|
x264Preset ? ["-preset", x264Preset] : null,
|
|
21601
|
+
gopSize === null ? null : ["-g", String(gopSize)],
|
|
21588
21602
|
["-video_track_timescale", "90000"],
|
|
21589
21603
|
validateQualitySettings({
|
|
21590
21604
|
crf,
|
|
@@ -21601,6 +21615,7 @@ var generateFfmpegArgs = ({
|
|
|
21601
21615
|
proResProfileName,
|
|
21602
21616
|
pixelFormat,
|
|
21603
21617
|
x264Preset,
|
|
21618
|
+
gopSize,
|
|
21604
21619
|
codec,
|
|
21605
21620
|
crf,
|
|
21606
21621
|
videoBitrate,
|
|
@@ -21659,6 +21674,7 @@ var generateFfmpegArgs = ({
|
|
|
21659
21674
|
encodingMaxRate,
|
|
21660
21675
|
encodingBufferSize,
|
|
21661
21676
|
x264Preset,
|
|
21677
|
+
gopSize,
|
|
21662
21678
|
hardwareAcceleration
|
|
21663
21679
|
})
|
|
21664
21680
|
].filter(truthy);
|
|
@@ -21760,6 +21776,7 @@ var prespawnFfmpeg = (options2) => {
|
|
|
21760
21776
|
proResProfileName,
|
|
21761
21777
|
pixelFormat,
|
|
21762
21778
|
x264Preset: options2.x264Preset,
|
|
21779
|
+
gopSize: options2.gopSize,
|
|
21763
21780
|
codec,
|
|
21764
21781
|
crf: options2.crf,
|
|
21765
21782
|
videoBitrate: options2.videoBitrate,
|
|
@@ -22854,6 +22871,7 @@ var innerStitchFramesToVideo = async ({
|
|
|
22854
22871
|
cancelSignal,
|
|
22855
22872
|
codec,
|
|
22856
22873
|
crf,
|
|
22874
|
+
gopSize,
|
|
22857
22875
|
enforceAudioTrack,
|
|
22858
22876
|
ffmpegOverride,
|
|
22859
22877
|
force,
|
|
@@ -22901,6 +22919,7 @@ var innerStitchFramesToVideo = async ({
|
|
|
22901
22919
|
validateBitrate(videoBitrate, "videoBitrate");
|
|
22902
22920
|
validateBitrate(maxRate, "maxRate");
|
|
22903
22921
|
validateBitrate(bufferSize, "bufferSize");
|
|
22922
|
+
validateGopSize(gopSize);
|
|
22904
22923
|
validateFps(fps, "in `stitchFramesToVideo()`", false);
|
|
22905
22924
|
assetsInfo.downloadMap.preventCleanup();
|
|
22906
22925
|
const proResProfileName = getProResProfileName(codec, proResProfile);
|
|
@@ -23035,6 +23054,7 @@ var innerStitchFramesToVideo = async ({
|
|
|
23035
23054
|
proResProfileName,
|
|
23036
23055
|
pixelFormat,
|
|
23037
23056
|
x264Preset,
|
|
23057
|
+
gopSize,
|
|
23038
23058
|
colorSpace,
|
|
23039
23059
|
hardwareAcceleration,
|
|
23040
23060
|
indent,
|
|
@@ -23138,6 +23158,7 @@ var stitchFramesToVideo = ({
|
|
|
23138
23158
|
cancelSignal,
|
|
23139
23159
|
codec,
|
|
23140
23160
|
crf,
|
|
23161
|
+
gopSize,
|
|
23141
23162
|
enforceAudioTrack,
|
|
23142
23163
|
ffmpegOverride,
|
|
23143
23164
|
muted,
|
|
@@ -23168,6 +23189,7 @@ var stitchFramesToVideo = ({
|
|
|
23168
23189
|
cancelSignal: cancelSignal ?? null,
|
|
23169
23190
|
codec: codec ?? DEFAULT_CODEC,
|
|
23170
23191
|
crf: crf ?? null,
|
|
23192
|
+
gopSize: gopSize ?? null,
|
|
23171
23193
|
enforceAudioTrack: enforceAudioTrack ?? false,
|
|
23172
23194
|
ffmpegOverride: ffmpegOverride ?? null,
|
|
23173
23195
|
force: force ?? true,
|
|
@@ -23316,6 +23338,7 @@ var MAX_RECENT_FRAME_TIMINGS = 150;
|
|
|
23316
23338
|
var internalRenderMediaRaw = ({
|
|
23317
23339
|
proResProfile,
|
|
23318
23340
|
x264Preset,
|
|
23341
|
+
gopSize,
|
|
23319
23342
|
crf,
|
|
23320
23343
|
composition: compositionWithPossibleUnevenDimensions,
|
|
23321
23344
|
serializedInputPropsWithCustomSchema,
|
|
@@ -23396,6 +23419,7 @@ var internalRenderMediaRaw = ({
|
|
|
23396
23419
|
encodingBufferSize,
|
|
23397
23420
|
hardwareAcceleration
|
|
23398
23421
|
});
|
|
23422
|
+
validateGopSize(gopSize);
|
|
23399
23423
|
validateBitrate(audioBitrate, "audioBitrate");
|
|
23400
23424
|
validateBitrate(videoBitrate, "videoBitrate");
|
|
23401
23425
|
validateBitrate(encodingMaxRate, "encodingMaxRate");
|
|
@@ -23553,6 +23577,7 @@ var internalRenderMediaRaw = ({
|
|
|
23553
23577
|
encodingBufferSize,
|
|
23554
23578
|
indent,
|
|
23555
23579
|
x264Preset: x264Preset ?? null,
|
|
23580
|
+
gopSize,
|
|
23556
23581
|
colorSpace,
|
|
23557
23582
|
binariesDirectory,
|
|
23558
23583
|
hardwareAcceleration
|
|
@@ -23717,6 +23742,7 @@ var internalRenderMediaRaw = ({
|
|
|
23717
23742
|
codec,
|
|
23718
23743
|
proResProfile,
|
|
23719
23744
|
crf,
|
|
23745
|
+
gopSize,
|
|
23720
23746
|
assetsInfo,
|
|
23721
23747
|
onProgress: (frame) => {
|
|
23722
23748
|
if (preEncodedFileLocation) {
|
|
@@ -23834,6 +23860,7 @@ var internalRenderMedia = wrapWithErrorHandling(internalRenderMediaRaw);
|
|
|
23834
23860
|
var renderMedia = ({
|
|
23835
23861
|
proResProfile,
|
|
23836
23862
|
x264Preset,
|
|
23863
|
+
gopSize,
|
|
23837
23864
|
crf,
|
|
23838
23865
|
composition,
|
|
23839
23866
|
inputProps,
|
|
@@ -23902,6 +23929,7 @@ var renderMedia = ({
|
|
|
23902
23929
|
return internalRenderMedia({
|
|
23903
23930
|
proResProfile: proResProfile ?? undefined,
|
|
23904
23931
|
x264Preset: x264Preset ?? null,
|
|
23932
|
+
gopSize: gopSize ?? null,
|
|
23905
23933
|
codec,
|
|
23906
23934
|
composition,
|
|
23907
23935
|
serveUrl,
|
|
@@ -25121,11 +25149,11 @@ var getVideoMetadata = async (videoSource, options2) => {
|
|
|
25121
25149
|
return JSON.parse(new TextDecoder("utf-8").decode(metadataResponse));
|
|
25122
25150
|
};
|
|
25123
25151
|
// src/options/chrome-mode.tsx
|
|
25124
|
-
import { jsx as jsx6, jsxs as jsxs6, Fragment as Fragment6 } from "react/jsx-runtime";
|
|
25125
|
-
// src/options/number-of-gif-loops.tsx
|
|
25126
25152
|
import { jsx as jsx7, jsxs as jsxs7, Fragment as Fragment7 } from "react/jsx-runtime";
|
|
25127
|
-
// src/options/
|
|
25153
|
+
// src/options/number-of-gif-loops.tsx
|
|
25128
25154
|
import { jsx as jsx8, jsxs as jsxs8, Fragment as Fragment8 } from "react/jsx-runtime";
|
|
25155
|
+
// src/options/on-browser-download.tsx
|
|
25156
|
+
import { jsx as jsx9, jsxs as jsxs9, Fragment as Fragment9 } from "react/jsx-runtime";
|
|
25129
25157
|
// src/index.ts
|
|
25130
25158
|
var RenderInternals = {
|
|
25131
25159
|
resolveConcurrency,
|
package/dist/ffmpeg-args.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
export declare const generateFfmpegArgs: ({ hasPreencoded, proResProfileName, pixelFormat, x264Preset, codec, crf, videoBitrate, encodingMaxRate, encodingBufferSize, colorSpace, hardwareAcceleration, indent, logLevel, }: {
|
|
1
|
+
export declare const generateFfmpegArgs: ({ hasPreencoded, proResProfileName, pixelFormat, x264Preset, gopSize, codec, crf, videoBitrate, encodingMaxRate, encodingBufferSize, colorSpace, hardwareAcceleration, indent, logLevel, }: {
|
|
2
2
|
hasPreencoded: boolean;
|
|
3
3
|
proResProfileName: string | null;
|
|
4
4
|
pixelFormat: "yuv420p" | "yuv420p10le" | "yuv422p" | "yuv422p10le" | "yuv444p" | "yuv444p10le" | "yuva420p" | "yuva444p10le";
|
|
5
5
|
x264Preset: "fast" | "faster" | "medium" | "placebo" | "slow" | "slower" | "superfast" | "ultrafast" | "veryfast" | "veryslow" | null;
|
|
6
|
+
gopSize: number | null;
|
|
6
7
|
crf: unknown;
|
|
7
8
|
codec: "aac" | "av1" | "gif" | "h264" | "h264-mkv" | "h264-ts" | "h265" | "mp3" | "prores" | "vp8" | "vp9" | "wav";
|
|
8
9
|
videoBitrate: string | null;
|
package/dist/ffmpeg-args.js
CHANGED
|
@@ -5,11 +5,13 @@ const crf_1 = require("./crf");
|
|
|
5
5
|
const get_codec_name_1 = require("./get-codec-name");
|
|
6
6
|
const logger_1 = require("./logger");
|
|
7
7
|
const color_space_1 = require("./options/color-space");
|
|
8
|
+
const gop_size_1 = require("./options/gop-size");
|
|
8
9
|
const truthy_1 = require("./truthy");
|
|
9
|
-
const firstEncodingStepOnly = ({ hasPreencoded, proResProfileName, pixelFormat, x264Preset, codec, crf, videoBitrate, encodingMaxRate, encodingBufferSize, hardwareAcceleration, }) => {
|
|
10
|
+
const firstEncodingStepOnly = ({ hasPreencoded, proResProfileName, pixelFormat, x264Preset, gopSize, codec, crf, videoBitrate, encodingMaxRate, encodingBufferSize, hardwareAcceleration, }) => {
|
|
10
11
|
if (hasPreencoded || codec === 'gif') {
|
|
11
12
|
return [];
|
|
12
13
|
}
|
|
14
|
+
(0, gop_size_1.validateGopSize)(gopSize);
|
|
13
15
|
return [
|
|
14
16
|
proResProfileName ? ['-profile:v', proResProfileName] : null,
|
|
15
17
|
['-pix_fmt', pixelFormat],
|
|
@@ -17,6 +19,7 @@ const firstEncodingStepOnly = ({ hasPreencoded, proResProfileName, pixelFormat,
|
|
|
17
19
|
// transparent WebM generation doesn't work
|
|
18
20
|
pixelFormat === 'yuva420p' ? ['-auto-alt-ref', '0'] : null,
|
|
19
21
|
x264Preset ? ['-preset', x264Preset] : null,
|
|
22
|
+
gopSize === null ? null : ['-g', String(gopSize)],
|
|
20
23
|
// Apply a fixed a timescale across all environments:
|
|
21
24
|
// https://discord.com/channels/809501355504959528/817306238811111454/1437471619089170613
|
|
22
25
|
['-video_track_timescale', '90000'],
|
|
@@ -30,7 +33,7 @@ const firstEncodingStepOnly = ({ hasPreencoded, proResProfileName, pixelFormat,
|
|
|
30
33
|
}),
|
|
31
34
|
].filter(truthy_1.truthy);
|
|
32
35
|
};
|
|
33
|
-
const generateFfmpegArgs = ({ hasPreencoded, proResProfileName, pixelFormat, x264Preset, codec, crf, videoBitrate, encodingMaxRate, encodingBufferSize, colorSpace, hardwareAcceleration, indent, logLevel, }) => {
|
|
36
|
+
const generateFfmpegArgs = ({ hasPreencoded, proResProfileName, pixelFormat, x264Preset, gopSize, codec, crf, videoBitrate, encodingMaxRate, encodingBufferSize, colorSpace, hardwareAcceleration, indent, logLevel, }) => {
|
|
34
37
|
const encoderSettings = (0, get_codec_name_1.getCodecName)({
|
|
35
38
|
codec,
|
|
36
39
|
encodingMaxRate,
|
|
@@ -92,6 +95,7 @@ const generateFfmpegArgs = ({ hasPreencoded, proResProfileName, pixelFormat, x26
|
|
|
92
95
|
encodingMaxRate,
|
|
93
96
|
encodingBufferSize,
|
|
94
97
|
x264Preset,
|
|
98
|
+
gopSize,
|
|
95
99
|
hardwareAcceleration,
|
|
96
100
|
}),
|
|
97
101
|
].filter(truthy_1.truthy);
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare const validateGopSize: (value: number | null) => void;
|
|
2
|
+
export declare const gopSizeOption: {
|
|
3
|
+
name: string;
|
|
4
|
+
cliFlag: "gop";
|
|
5
|
+
description: () => import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
ssrName: string;
|
|
7
|
+
docLink: string;
|
|
8
|
+
type: number | null;
|
|
9
|
+
getValue: ({ commandLine }: {
|
|
10
|
+
commandLine: Record<string, unknown>;
|
|
11
|
+
}) => {
|
|
12
|
+
value: number | null;
|
|
13
|
+
source: string;
|
|
14
|
+
};
|
|
15
|
+
setConfig: (value: number | null) => void;
|
|
16
|
+
id: "gop";
|
|
17
|
+
};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.gopSizeOption = exports.validateGopSize = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
let gopSize = null;
|
|
6
|
+
const validateGopSize = (value) => {
|
|
7
|
+
if (value === null) {
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
10
|
+
if (typeof value !== 'number' ||
|
|
11
|
+
!Number.isFinite(value) ||
|
|
12
|
+
!Number.isInteger(value) ||
|
|
13
|
+
value <= 0) {
|
|
14
|
+
throw new TypeError('The GOP size must be an integer greater than 0 or null.');
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
exports.validateGopSize = validateGopSize;
|
|
18
|
+
const cliFlag = 'gop';
|
|
19
|
+
exports.gopSizeOption = {
|
|
20
|
+
name: 'GOP size',
|
|
21
|
+
cliFlag,
|
|
22
|
+
description: () => (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: ["Set the maximum number of frames between two keyframes. This maps to FFmpeg's ",
|
|
23
|
+
jsx_runtime_1.jsx("code", { children: "-g" }),
|
|
24
|
+
" option. Default: Let the encoder decide."] })),
|
|
25
|
+
ssrName: 'gopSize',
|
|
26
|
+
docLink: 'https://www.remotion.dev/docs/config#setgopsize',
|
|
27
|
+
type: null,
|
|
28
|
+
getValue: ({ commandLine }) => {
|
|
29
|
+
const value = commandLine[cliFlag];
|
|
30
|
+
if (value !== undefined) {
|
|
31
|
+
(0, exports.validateGopSize)(value);
|
|
32
|
+
return { value: value, source: 'cli' };
|
|
33
|
+
}
|
|
34
|
+
return { value: gopSize, source: gopSize === null ? 'default' : 'config' };
|
|
35
|
+
},
|
|
36
|
+
setConfig: (value) => {
|
|
37
|
+
(0, exports.validateGopSize)(value);
|
|
38
|
+
gopSize = value;
|
|
39
|
+
},
|
|
40
|
+
id: cliFlag,
|
|
41
|
+
};
|
package/dist/options/index.d.ts
CHANGED
|
@@ -409,6 +409,22 @@ export declare const allOptions: {
|
|
|
409
409
|
setConfig: (value: "angle" | "angle-egl" | "egl" | "swangle" | "swiftshader" | "vulkan" | null) => void;
|
|
410
410
|
id: "gl";
|
|
411
411
|
};
|
|
412
|
+
gopSizeOption: {
|
|
413
|
+
name: string;
|
|
414
|
+
cliFlag: "gop";
|
|
415
|
+
description: () => import("react/jsx-runtime").JSX.Element;
|
|
416
|
+
ssrName: string;
|
|
417
|
+
docLink: string;
|
|
418
|
+
type: number | null;
|
|
419
|
+
getValue: ({ commandLine }: {
|
|
420
|
+
commandLine: Record<string, unknown>;
|
|
421
|
+
}) => {
|
|
422
|
+
value: number | null;
|
|
423
|
+
source: string;
|
|
424
|
+
};
|
|
425
|
+
setConfig: (value: number | null) => void;
|
|
426
|
+
id: "gop";
|
|
427
|
+
};
|
|
412
428
|
enableLambdaInsights: {
|
|
413
429
|
name: string;
|
|
414
430
|
cliFlag: "enable-lambda-insights";
|
package/dist/options/index.js
CHANGED
|
@@ -36,6 +36,7 @@ const for_seamless_aac_concatenation_1 = require("./for-seamless-aac-concatenati
|
|
|
36
36
|
const force_new_studio_1 = require("./force-new-studio");
|
|
37
37
|
const frames_1 = require("./frames");
|
|
38
38
|
const gl_1 = require("./gl");
|
|
39
|
+
const gop_size_1 = require("./gop-size");
|
|
39
40
|
const hardware_acceleration_1 = require("./hardware-acceleration");
|
|
40
41
|
const headless_1 = require("./headless");
|
|
41
42
|
const ignore_certificate_errors_1 = require("./ignore-certificate-errors");
|
|
@@ -115,6 +116,7 @@ exports.allOptions = {
|
|
|
115
116
|
folderExpiryOption: folder_expiry_1.folderExpiryOption,
|
|
116
117
|
enableMultiprocessOnLinuxOption: enable_multiprocess_on_linux_1.enableMultiprocessOnLinuxOption,
|
|
117
118
|
glOption: gl_1.glOption,
|
|
119
|
+
gopSizeOption: gop_size_1.gopSizeOption,
|
|
118
120
|
enableLambdaInsights: enable_lambda_insights_1.enableLambdaInsights,
|
|
119
121
|
encodingMaxRateOption: encoding_max_rate_1.encodingMaxRateOption,
|
|
120
122
|
encodingBufferSizeOption: encoding_buffer_size_1.encodingBufferSizeOption,
|
|
@@ -127,6 +127,22 @@ export declare const optionsMap: {
|
|
|
127
127
|
setConfig: (profile: "fast" | "faster" | "medium" | "placebo" | "slow" | "slower" | "superfast" | "ultrafast" | "veryfast" | "veryslow" | null) => void;
|
|
128
128
|
id: "x264-preset";
|
|
129
129
|
};
|
|
130
|
+
readonly gopSize: {
|
|
131
|
+
name: string;
|
|
132
|
+
cliFlag: "gop";
|
|
133
|
+
description: () => import("react/jsx-runtime").JSX.Element;
|
|
134
|
+
ssrName: string;
|
|
135
|
+
docLink: string;
|
|
136
|
+
type: number | null;
|
|
137
|
+
getValue: ({ commandLine }: {
|
|
138
|
+
commandLine: Record<string, unknown>;
|
|
139
|
+
}) => {
|
|
140
|
+
value: number | null;
|
|
141
|
+
source: string;
|
|
142
|
+
};
|
|
143
|
+
setConfig: (value: number | null) => void;
|
|
144
|
+
id: "gop";
|
|
145
|
+
};
|
|
130
146
|
readonly audioBitrate: {
|
|
131
147
|
name: string;
|
|
132
148
|
cliFlag: "audio-bitrate";
|
|
@@ -1308,6 +1324,22 @@ export declare const optionsMap: {
|
|
|
1308
1324
|
setConfig: (profile: "fast" | "faster" | "medium" | "placebo" | "slow" | "slower" | "superfast" | "ultrafast" | "veryfast" | "veryslow" | null) => void;
|
|
1309
1325
|
id: "x264-preset";
|
|
1310
1326
|
};
|
|
1327
|
+
readonly gopSize: {
|
|
1328
|
+
name: string;
|
|
1329
|
+
cliFlag: "gop";
|
|
1330
|
+
description: () => import("react/jsx-runtime").JSX.Element;
|
|
1331
|
+
ssrName: string;
|
|
1332
|
+
docLink: string;
|
|
1333
|
+
type: number | null;
|
|
1334
|
+
getValue: ({ commandLine }: {
|
|
1335
|
+
commandLine: Record<string, unknown>;
|
|
1336
|
+
}) => {
|
|
1337
|
+
value: number | null;
|
|
1338
|
+
source: string;
|
|
1339
|
+
};
|
|
1340
|
+
setConfig: (value: number | null) => void;
|
|
1341
|
+
id: "gop";
|
|
1342
|
+
};
|
|
1311
1343
|
readonly encodingMaxRate: {
|
|
1312
1344
|
name: string;
|
|
1313
1345
|
cliFlag: "max-rate";
|
|
@@ -1871,6 +1903,22 @@ export declare const optionsMap: {
|
|
|
1871
1903
|
setConfig: (profile: "fast" | "faster" | "medium" | "placebo" | "slow" | "slower" | "superfast" | "ultrafast" | "veryfast" | "veryslow" | null) => void;
|
|
1872
1904
|
id: "x264-preset";
|
|
1873
1905
|
};
|
|
1906
|
+
readonly gopSize: {
|
|
1907
|
+
name: string;
|
|
1908
|
+
cliFlag: "gop";
|
|
1909
|
+
description: () => import("react/jsx-runtime").JSX.Element;
|
|
1910
|
+
ssrName: string;
|
|
1911
|
+
docLink: string;
|
|
1912
|
+
type: number | null;
|
|
1913
|
+
getValue: ({ commandLine }: {
|
|
1914
|
+
commandLine: Record<string, unknown>;
|
|
1915
|
+
}) => {
|
|
1916
|
+
value: number | null;
|
|
1917
|
+
source: string;
|
|
1918
|
+
};
|
|
1919
|
+
setConfig: (value: number | null) => void;
|
|
1920
|
+
id: "gop";
|
|
1921
|
+
};
|
|
1874
1922
|
readonly encodingMaxRate: {
|
|
1875
1923
|
name: string;
|
|
1876
1924
|
cliFlag: "max-rate";
|
|
@@ -14,6 +14,7 @@ const encoding_buffer_size_1 = require("./encoding-buffer-size");
|
|
|
14
14
|
const encoding_max_rate_1 = require("./encoding-max-rate");
|
|
15
15
|
const enforce_audio_1 = require("./enforce-audio");
|
|
16
16
|
const for_seamless_aac_concatenation_1 = require("./for-seamless-aac-concatenation");
|
|
17
|
+
const gop_size_1 = require("./gop-size");
|
|
17
18
|
const hardware_acceleration_1 = require("./hardware-acceleration");
|
|
18
19
|
const image_sequence_pattern_1 = require("./image-sequence-pattern");
|
|
19
20
|
const jpeg_quality_1 = require("./jpeg-quality");
|
|
@@ -44,6 +45,7 @@ exports.optionsMap = {
|
|
|
44
45
|
numberOfGifLoops: number_of_gif_loops_1.numberOfGifLoopsOption,
|
|
45
46
|
repro: repro_1.reproOption,
|
|
46
47
|
x264Preset: x264_preset_1.x264Option,
|
|
48
|
+
gopSize: gop_size_1.gopSizeOption,
|
|
47
49
|
audioBitrate: audio_bitrate_1.audioBitrateOption,
|
|
48
50
|
colorSpace: color_space_1.colorSpaceOption,
|
|
49
51
|
codec: video_codec_1.videoCodecOption,
|
|
@@ -125,6 +127,7 @@ exports.optionsMap = {
|
|
|
125
127
|
audioBitrate: audio_bitrate_1.audioBitrateOption,
|
|
126
128
|
deleteAfter: delete_after_1.deleteAfterOption,
|
|
127
129
|
x264Preset: x264_preset_1.x264Option,
|
|
130
|
+
gopSize: gop_size_1.gopSizeOption,
|
|
128
131
|
encodingMaxRate: encoding_max_rate_1.encodingMaxRateOption,
|
|
129
132
|
encodingBufferSize: encoding_buffer_size_1.encodingBufferSizeOption,
|
|
130
133
|
colorSpace: color_space_1.colorSpaceOption,
|
|
@@ -163,6 +166,7 @@ exports.optionsMap = {
|
|
|
163
166
|
audioBitrate: audio_bitrate_1.audioBitrateOption,
|
|
164
167
|
videoBitrate: video_bitrate_1.videoBitrateOption,
|
|
165
168
|
x264Preset: x264_preset_1.x264Option,
|
|
169
|
+
gopSize: gop_size_1.gopSizeOption,
|
|
166
170
|
encodingMaxRate: encoding_max_rate_1.encodingMaxRateOption,
|
|
167
171
|
encodingBufferSize: encoding_buffer_size_1.encodingBufferSizeOption,
|
|
168
172
|
muted: mute_1.mutedOption,
|
|
@@ -28,6 +28,7 @@ type PreStitcherOptions = {
|
|
|
28
28
|
codec: Codec | undefined;
|
|
29
29
|
crf: number | null | undefined;
|
|
30
30
|
x264Preset: X264Preset | null;
|
|
31
|
+
gopSize: number | null;
|
|
31
32
|
onProgress: (progress: number) => void;
|
|
32
33
|
proResProfile: _InternalTypes['ProResProfile'] | undefined;
|
|
33
34
|
logLevel: LogLevel;
|
package/dist/prespawn-ffmpeg.js
CHANGED
package/dist/render-media.d.ts
CHANGED
|
@@ -148,5 +148,5 @@ type RenderMediaResult = {
|
|
|
148
148
|
contentType: string;
|
|
149
149
|
};
|
|
150
150
|
export declare const internalRenderMedia: (args_0: InternalRenderMediaOptions) => Promise<RenderMediaResult>;
|
|
151
|
-
export declare const renderMedia: ({ proResProfile, x264Preset, crf, composition, inputProps, pixelFormat, codec, envVariables, frameRange, puppeteerInstance, outputLocation, onProgress, overwrite, onDownload, onBrowserLog, onStart, timeoutInMilliseconds, chromiumOptions, scale, browserExecutable, port, cancelSignal, muted, enforceAudioTrack, ffmpegOverride, audioBitrate, videoBitrate, encodingMaxRate, encodingBufferSize, audioCodec, jpegQuality, concurrency, serveUrl, disallowParallelEncoding, everyNthFrame, imageFormat, numberOfGifLoops, dumpBrowserLogs, preferLossless, verbose, quality, logLevel: passedLogLevel, offthreadVideoCacheSizeInBytes, colorSpace, repro, binariesDirectory, separateAudioTo, forSeamlessAacConcatenation, onBrowserDownload, onArtifact, metadata, hardwareAcceleration, chromeMode, offthreadVideoThreads, compositionStart, mediaCacheSizeInBytes, isProduction, sampleRate, ...apiKeyOrLicenseKey }: RenderMediaOptions) => Promise<RenderMediaResult>;
|
|
151
|
+
export declare const renderMedia: ({ proResProfile, x264Preset, gopSize, crf, composition, inputProps, pixelFormat, codec, envVariables, frameRange, puppeteerInstance, outputLocation, onProgress, overwrite, onDownload, onBrowserLog, onStart, timeoutInMilliseconds, chromiumOptions, scale, browserExecutable, port, cancelSignal, muted, enforceAudioTrack, ffmpegOverride, audioBitrate, videoBitrate, encodingMaxRate, encodingBufferSize, audioCodec, jpegQuality, concurrency, serveUrl, disallowParallelEncoding, everyNthFrame, imageFormat, numberOfGifLoops, dumpBrowserLogs, preferLossless, verbose, quality, logLevel: passedLogLevel, offthreadVideoCacheSizeInBytes, colorSpace, repro, binariesDirectory, separateAudioTo, forSeamlessAacConcatenation, onBrowserDownload, onArtifact, metadata, hardwareAcceleration, chromeMode, offthreadVideoThreads, compositionStart, mediaCacheSizeInBytes, isProduction, sampleRate, ...apiKeyOrLicenseKey }: RenderMediaOptions) => Promise<RenderMediaResult>;
|
|
152
152
|
export {};
|
package/dist/render-media.js
CHANGED
|
@@ -31,6 +31,7 @@ const logger_1 = require("./logger");
|
|
|
31
31
|
const make_cancel_signal_1 = require("./make-cancel-signal");
|
|
32
32
|
const mime_types_1 = require("./mime-types");
|
|
33
33
|
const color_space_1 = require("./options/color-space");
|
|
34
|
+
const gop_size_1 = require("./options/gop-size");
|
|
34
35
|
const offthreadvideo_threads_1 = require("./options/offthreadvideo-threads");
|
|
35
36
|
const x264_preset_1 = require("./options/x264-preset");
|
|
36
37
|
const overwrite_1 = require("./overwrite");
|
|
@@ -55,7 +56,7 @@ const validate_videobitrate_1 = require("./validate-videobitrate");
|
|
|
55
56
|
const wrap_with_error_handling_1 = require("./wrap-with-error-handling");
|
|
56
57
|
const SLOWEST_FRAME_COUNT = 10;
|
|
57
58
|
const MAX_RECENT_FRAME_TIMINGS = 150;
|
|
58
|
-
const internalRenderMediaRaw = ({ proResProfile, x264Preset, crf, composition: compositionWithPossibleUnevenDimensions, serializedInputPropsWithCustomSchema, pixelFormat: userPixelFormat, codec, envVariables, frameRange, puppeteerInstance, outputLocation, onProgress, overwrite, onDownload, onBrowserLog, onStart, timeoutInMilliseconds, chromiumOptions, scale, browserExecutable, port, cancelSignal, muted, enforceAudioTrack, ffmpegOverride, audioBitrate, videoBitrate, encodingMaxRate, encodingBufferSize, audioCodec, concurrency, disallowParallelEncoding, everyNthFrame, imageFormat: provisionalImageFormat, indent, jpegQuality, numberOfGifLoops, onCtrlCExit, preferLossless, serveUrl, server: reusedServer, logLevel, serializedResolvedPropsWithCustomSchema, offthreadVideoCacheSizeInBytes, colorSpace, repro, binariesDirectory, separateAudioTo, forSeamlessAacConcatenation, compositionStart, onBrowserDownload, onArtifact, metadata, hardwareAcceleration, chromeMode, offthreadVideoThreads, mediaCacheSizeInBytes, onLog, licenseKey, isProduction, sampleRate, }) => {
|
|
59
|
+
const internalRenderMediaRaw = ({ proResProfile, x264Preset, gopSize, crf, composition: compositionWithPossibleUnevenDimensions, serializedInputPropsWithCustomSchema, pixelFormat: userPixelFormat, codec, envVariables, frameRange, puppeteerInstance, outputLocation, onProgress, overwrite, onDownload, onBrowserLog, onStart, timeoutInMilliseconds, chromiumOptions, scale, browserExecutable, port, cancelSignal, muted, enforceAudioTrack, ffmpegOverride, audioBitrate, videoBitrate, encodingMaxRate, encodingBufferSize, audioCodec, concurrency, disallowParallelEncoding, everyNthFrame, imageFormat: provisionalImageFormat, indent, jpegQuality, numberOfGifLoops, onCtrlCExit, preferLossless, serveUrl, server: reusedServer, logLevel, serializedResolvedPropsWithCustomSchema, offthreadVideoCacheSizeInBytes, colorSpace, repro, binariesDirectory, separateAudioTo, forSeamlessAacConcatenation, compositionStart, onBrowserDownload, onArtifact, metadata, hardwareAcceleration, chromeMode, offthreadVideoThreads, mediaCacheSizeInBytes, onLog, licenseKey, isProduction, sampleRate, }) => {
|
|
59
60
|
var _a, _b;
|
|
60
61
|
const pixelFormat = (_a = userPixelFormat !== null && userPixelFormat !== void 0 ? userPixelFormat : compositionWithPossibleUnevenDimensions.defaultPixelFormat) !== null && _a !== void 0 ? _a : pixel_format_1.DEFAULT_PIXEL_FORMAT;
|
|
61
62
|
if (repro) {
|
|
@@ -78,6 +79,7 @@ const internalRenderMediaRaw = ({ proResProfile, x264Preset, crf, composition: c
|
|
|
78
79
|
encodingBufferSize,
|
|
79
80
|
hardwareAcceleration,
|
|
80
81
|
});
|
|
82
|
+
(0, gop_size_1.validateGopSize)(gopSize);
|
|
81
83
|
(0, validate_videobitrate_1.validateBitrate)(audioBitrate, 'audioBitrate');
|
|
82
84
|
(0, validate_videobitrate_1.validateBitrate)(videoBitrate, 'videoBitrate');
|
|
83
85
|
(0, validate_videobitrate_1.validateBitrate)(encodingMaxRate, 'encodingMaxRate');
|
|
@@ -245,6 +247,7 @@ const internalRenderMediaRaw = ({ proResProfile, x264Preset, crf, composition: c
|
|
|
245
247
|
encodingBufferSize,
|
|
246
248
|
indent,
|
|
247
249
|
x264Preset: x264Preset !== null && x264Preset !== void 0 ? x264Preset : null,
|
|
250
|
+
gopSize,
|
|
248
251
|
colorSpace,
|
|
249
252
|
binariesDirectory,
|
|
250
253
|
hardwareAcceleration,
|
|
@@ -426,6 +429,7 @@ const internalRenderMediaRaw = ({ proResProfile, x264Preset, crf, composition: c
|
|
|
426
429
|
codec,
|
|
427
430
|
proResProfile,
|
|
428
431
|
crf,
|
|
432
|
+
gopSize,
|
|
429
433
|
assetsInfo,
|
|
430
434
|
onProgress: (frame) => {
|
|
431
435
|
// With seamless AAC concatenation, the amount of rendered frames
|
|
@@ -570,7 +574,7 @@ exports.internalRenderMedia = (0, wrap_with_error_handling_1.wrapWithErrorHandli
|
|
|
570
574
|
* @description Render a video or an audio programmatically.
|
|
571
575
|
* @see [Documentation](https://www.remotion.dev/docs/renderer/render-media)
|
|
572
576
|
*/
|
|
573
|
-
const renderMedia = ({ proResProfile, x264Preset, crf, composition, inputProps, pixelFormat, codec, envVariables, frameRange, puppeteerInstance, outputLocation, onProgress, overwrite, onDownload, onBrowserLog, onStart, timeoutInMilliseconds, chromiumOptions, scale, browserExecutable, port, cancelSignal, muted, enforceAudioTrack, ffmpegOverride, audioBitrate, videoBitrate, encodingMaxRate, encodingBufferSize, audioCodec, jpegQuality, concurrency, serveUrl, disallowParallelEncoding, everyNthFrame, imageFormat, numberOfGifLoops, dumpBrowserLogs, preferLossless, verbose, quality, logLevel: passedLogLevel, offthreadVideoCacheSizeInBytes, colorSpace, repro, binariesDirectory, separateAudioTo, forSeamlessAacConcatenation, onBrowserDownload, onArtifact, metadata, hardwareAcceleration, chromeMode, offthreadVideoThreads, compositionStart, mediaCacheSizeInBytes, isProduction, sampleRate, ...apiKeyOrLicenseKey }) => {
|
|
577
|
+
const renderMedia = ({ proResProfile, x264Preset, gopSize, crf, composition, inputProps, pixelFormat, codec, envVariables, frameRange, puppeteerInstance, outputLocation, onProgress, overwrite, onDownload, onBrowserLog, onStart, timeoutInMilliseconds, chromiumOptions, scale, browserExecutable, port, cancelSignal, muted, enforceAudioTrack, ffmpegOverride, audioBitrate, videoBitrate, encodingMaxRate, encodingBufferSize, audioCodec, jpegQuality, concurrency, serveUrl, disallowParallelEncoding, everyNthFrame, imageFormat, numberOfGifLoops, dumpBrowserLogs, preferLossless, verbose, quality, logLevel: passedLogLevel, offthreadVideoCacheSizeInBytes, colorSpace, repro, binariesDirectory, separateAudioTo, forSeamlessAacConcatenation, onBrowserDownload, onArtifact, metadata, hardwareAcceleration, chromeMode, offthreadVideoThreads, compositionStart, mediaCacheSizeInBytes, isProduction, sampleRate, ...apiKeyOrLicenseKey }) => {
|
|
574
578
|
var _a, _b, _c, _d;
|
|
575
579
|
const indent = false;
|
|
576
580
|
const logLevel = verbose || dumpBrowserLogs ? 'verbose' : (passedLogLevel !== null && passedLogLevel !== void 0 ? passedLogLevel : 'info');
|
|
@@ -582,6 +586,7 @@ const renderMedia = ({ proResProfile, x264Preset, crf, composition, inputProps,
|
|
|
582
586
|
return (0, exports.internalRenderMedia)({
|
|
583
587
|
proResProfile: proResProfile !== null && proResProfile !== void 0 ? proResProfile : undefined,
|
|
584
588
|
x264Preset: x264Preset !== null && x264Preset !== void 0 ? x264Preset : null,
|
|
589
|
+
gopSize: gopSize !== null && gopSize !== void 0 ? gopSize : null,
|
|
585
590
|
codec,
|
|
586
591
|
composition,
|
|
587
592
|
serveUrl,
|
|
@@ -27,6 +27,7 @@ type InternalStitchFramesToVideoOptions = {
|
|
|
27
27
|
codec: Codec;
|
|
28
28
|
audioCodec: AudioCodec | null;
|
|
29
29
|
crf: number | null;
|
|
30
|
+
gopSize: number | null;
|
|
30
31
|
onProgress?: null | ((progress: number) => void);
|
|
31
32
|
onDownload: undefined | RenderMediaOnDownload;
|
|
32
33
|
proResProfile: undefined | _InternalTypes['ProResProfile'];
|
|
@@ -60,6 +61,7 @@ export type StitchFramesToVideoOptions = {
|
|
|
60
61
|
codec?: Codec;
|
|
61
62
|
audioCodec?: AudioCodec | null;
|
|
62
63
|
crf?: number | null;
|
|
64
|
+
gopSize?: number | null;
|
|
63
65
|
onProgress?: (progress: number) => void;
|
|
64
66
|
onDownload?: RenderMediaOnDownload;
|
|
65
67
|
proResProfile?: _InternalTypes['ProResProfile'];
|
|
@@ -75,5 +77,5 @@ export type StitchFramesToVideoOptions = {
|
|
|
75
77
|
sampleRate?: number;
|
|
76
78
|
} & Partial<ToOptions<typeof optionsMap.stitchFramesToVideo>>;
|
|
77
79
|
export declare const internalStitchFramesToVideo: (options: InternalStitchFramesToVideoOptions) => Promise<Buffer | null>;
|
|
78
|
-
export declare const stitchFramesToVideo: ({ assetsInfo, force, fps, height, width, audioBitrate, audioCodec, cancelSignal, codec, crf, enforceAudioTrack, ffmpegOverride, muted, numberOfGifLoops, onDownload, onProgress, outputLocation, pixelFormat, proResProfile, verbose, videoBitrate, maxRate, bufferSize, x264Preset, colorSpace, binariesDirectory, separateAudioTo, metadata, hardwareAcceleration, sampleRate, }: StitchFramesToVideoOptions) => Promise<Buffer | null>;
|
|
80
|
+
export declare const stitchFramesToVideo: ({ assetsInfo, force, fps, height, width, audioBitrate, audioCodec, cancelSignal, codec, crf, gopSize, enforceAudioTrack, ffmpegOverride, muted, numberOfGifLoops, onDownload, onProgress, outputLocation, pixelFormat, proResProfile, verbose, videoBitrate, maxRate, bufferSize, x264Preset, colorSpace, binariesDirectory, separateAudioTo, metadata, hardwareAcceleration, sampleRate, }: StitchFramesToVideoOptions) => Promise<Buffer | null>;
|
|
79
81
|
export {};
|
|
@@ -23,6 +23,7 @@ const make_cancel_signal_1 = require("./make-cancel-signal");
|
|
|
23
23
|
const make_metadata_args_1 = require("./make-metadata-args");
|
|
24
24
|
const audio_codec_1 = require("./options/audio-codec");
|
|
25
25
|
const color_space_1 = require("./options/color-space");
|
|
26
|
+
const gop_size_1 = require("./options/gop-size");
|
|
26
27
|
const parse_ffmpeg_progress_1 = require("./parse-ffmpeg-progress");
|
|
27
28
|
const pixel_format_1 = require("./pixel-format");
|
|
28
29
|
const prores_profile_1 = require("./prores-profile");
|
|
@@ -30,7 +31,7 @@ const render_has_audio_1 = require("./render-has-audio");
|
|
|
30
31
|
const validate_1 = require("./validate");
|
|
31
32
|
const validate_even_dimensions_with_codec_1 = require("./validate-even-dimensions-with-codec");
|
|
32
33
|
const validate_videobitrate_1 = require("./validate-videobitrate");
|
|
33
|
-
const innerStitchFramesToVideo = async ({ assetsInfo, audioBitrate, audioCodec: audioCodecSetting, cancelSignal, codec, crf, enforceAudioTrack, ffmpegOverride, force, fps, height, indent, muted, onDownload, outputLocation, pixelFormat, preEncodedFileLocation, preferLossless, proResProfile, logLevel, videoBitrate, maxRate, bufferSize, width, numberOfGifLoops, onProgress, x264Preset, colorSpace, binariesDirectory, separateAudioTo, metadata, hardwareAcceleration, sampleRate, }, remotionRoot) => {
|
|
34
|
+
const innerStitchFramesToVideo = async ({ assetsInfo, audioBitrate, audioCodec: audioCodecSetting, cancelSignal, codec, crf, gopSize, enforceAudioTrack, ffmpegOverride, force, fps, height, indent, muted, onDownload, outputLocation, pixelFormat, preEncodedFileLocation, preferLossless, proResProfile, logLevel, videoBitrate, maxRate, bufferSize, width, numberOfGifLoops, onProgress, x264Preset, colorSpace, binariesDirectory, separateAudioTo, metadata, hardwareAcceleration, sampleRate, }, remotionRoot) => {
|
|
34
35
|
var _a;
|
|
35
36
|
(0, validate_1.validateDimension)(height, 'height', 'passed to `stitchFramesToVideo()`');
|
|
36
37
|
(0, validate_1.validateDimension)(width, 'width', 'passed to `stitchFramesToVideo()`');
|
|
@@ -52,6 +53,7 @@ const innerStitchFramesToVideo = async ({ assetsInfo, audioBitrate, audioCodec:
|
|
|
52
53
|
(0, validate_videobitrate_1.validateBitrate)(maxRate, 'maxRate');
|
|
53
54
|
// bufferSize is not a bitrate but need to be validated using the same format
|
|
54
55
|
(0, validate_videobitrate_1.validateBitrate)(bufferSize, 'bufferSize');
|
|
56
|
+
(0, gop_size_1.validateGopSize)(gopSize);
|
|
55
57
|
(0, validate_1.validateFps)(fps, 'in `stitchFramesToVideo()`', false);
|
|
56
58
|
assetsInfo.downloadMap.preventCleanup();
|
|
57
59
|
const proResProfileName = (0, get_prores_profile_name_1.getProResProfileName)(codec, proResProfile);
|
|
@@ -201,6 +203,7 @@ const innerStitchFramesToVideo = async ({ assetsInfo, audioBitrate, audioCodec:
|
|
|
201
203
|
proResProfileName,
|
|
202
204
|
pixelFormat,
|
|
203
205
|
x264Preset,
|
|
206
|
+
gopSize,
|
|
204
207
|
colorSpace,
|
|
205
208
|
hardwareAcceleration,
|
|
206
209
|
indent,
|
|
@@ -312,7 +315,7 @@ exports.internalStitchFramesToVideo = internalStitchFramesToVideo;
|
|
|
312
315
|
* @description Takes a series of images and audio information generated by renderFrames() and encodes it to a video.
|
|
313
316
|
* @see [Documentation](https://www.remotion.dev/docs/renderer/stitch-frames-to-video)
|
|
314
317
|
*/
|
|
315
|
-
const stitchFramesToVideo = ({ assetsInfo, force, fps, height, width, audioBitrate, audioCodec, cancelSignal, codec, crf, enforceAudioTrack, ffmpegOverride, muted, numberOfGifLoops, onDownload, onProgress, outputLocation, pixelFormat, proResProfile, verbose, videoBitrate, maxRate, bufferSize, x264Preset, colorSpace, binariesDirectory, separateAudioTo, metadata, hardwareAcceleration, sampleRate, }) => {
|
|
318
|
+
const stitchFramesToVideo = ({ assetsInfo, force, fps, height, width, audioBitrate, audioCodec, cancelSignal, codec, crf, gopSize, enforceAudioTrack, ffmpegOverride, muted, numberOfGifLoops, onDownload, onProgress, outputLocation, pixelFormat, proResProfile, verbose, videoBitrate, maxRate, bufferSize, x264Preset, colorSpace, binariesDirectory, separateAudioTo, metadata, hardwareAcceleration, sampleRate, }) => {
|
|
316
319
|
return (0, exports.internalStitchFramesToVideo)({
|
|
317
320
|
assetsInfo,
|
|
318
321
|
audioBitrate: audioBitrate !== null && audioBitrate !== void 0 ? audioBitrate : null,
|
|
@@ -322,6 +325,7 @@ const stitchFramesToVideo = ({ assetsInfo, force, fps, height, width, audioBitra
|
|
|
322
325
|
cancelSignal: cancelSignal !== null && cancelSignal !== void 0 ? cancelSignal : null,
|
|
323
326
|
codec: codec !== null && codec !== void 0 ? codec : codec_1.DEFAULT_CODEC,
|
|
324
327
|
crf: crf !== null && crf !== void 0 ? crf : null,
|
|
328
|
+
gopSize: gopSize !== null && gopSize !== void 0 ? gopSize : null,
|
|
325
329
|
enforceAudioTrack: enforceAudioTrack !== null && enforceAudioTrack !== void 0 ? enforceAudioTrack : false,
|
|
326
330
|
ffmpegOverride: ffmpegOverride !== null && ffmpegOverride !== void 0 ? ffmpegOverride : null,
|
|
327
331
|
force: force !== null && force !== void 0 ? force : true,
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"url": "https://github.com/remotion-dev/remotion/tree/main/packages/renderer"
|
|
4
4
|
},
|
|
5
5
|
"name": "@remotion/renderer",
|
|
6
|
-
"version": "4.0.
|
|
6
|
+
"version": "4.0.466",
|
|
7
7
|
"description": "Render Remotion videos using Node.js or Bun",
|
|
8
8
|
"main": "dist/index.js",
|
|
9
9
|
"types": "dist/index.d.ts",
|
|
@@ -22,11 +22,11 @@
|
|
|
22
22
|
},
|
|
23
23
|
"dependencies": {
|
|
24
24
|
"execa": "5.1.1",
|
|
25
|
-
"remotion": "4.0.
|
|
26
|
-
"@remotion/streaming": "4.0.
|
|
25
|
+
"remotion": "4.0.466",
|
|
26
|
+
"@remotion/streaming": "4.0.466",
|
|
27
27
|
"source-map": "0.8.0-beta.0",
|
|
28
28
|
"ws": "8.20.1",
|
|
29
|
-
"@remotion/licensing": "4.0.
|
|
29
|
+
"@remotion/licensing": "4.0.466"
|
|
30
30
|
},
|
|
31
31
|
"peerDependencies": {
|
|
32
32
|
"react": ">=16.8.0",
|
|
@@ -40,19 +40,19 @@
|
|
|
40
40
|
"react-dom": "19.2.3",
|
|
41
41
|
"@typescript/native-preview": "7.0.0-dev.20260217.1",
|
|
42
42
|
"@types/ws": "8.5.10",
|
|
43
|
-
"@remotion/example-videos": "4.0.
|
|
44
|
-
"@remotion/eslint-config-internal": "4.0.
|
|
43
|
+
"@remotion/example-videos": "4.0.466",
|
|
44
|
+
"@remotion/eslint-config-internal": "4.0.466",
|
|
45
45
|
"eslint": "9.19.0",
|
|
46
46
|
"@types/node": "20.12.14"
|
|
47
47
|
},
|
|
48
48
|
"optionalDependencies": {
|
|
49
|
-
"@remotion/compositor-darwin-arm64": "4.0.
|
|
50
|
-
"@remotion/compositor-darwin-x64": "4.0.
|
|
51
|
-
"@remotion/compositor-linux-arm64-gnu": "4.0.
|
|
52
|
-
"@remotion/compositor-linux-arm64-musl": "4.0.
|
|
53
|
-
"@remotion/compositor-linux-x64-gnu": "4.0.
|
|
54
|
-
"@remotion/compositor-linux-x64-musl": "4.0.
|
|
55
|
-
"@remotion/compositor-win32-x64-msvc": "4.0.
|
|
49
|
+
"@remotion/compositor-darwin-arm64": "4.0.466",
|
|
50
|
+
"@remotion/compositor-darwin-x64": "4.0.466",
|
|
51
|
+
"@remotion/compositor-linux-arm64-gnu": "4.0.466",
|
|
52
|
+
"@remotion/compositor-linux-arm64-musl": "4.0.466",
|
|
53
|
+
"@remotion/compositor-linux-x64-gnu": "4.0.466",
|
|
54
|
+
"@remotion/compositor-linux-x64-musl": "4.0.466",
|
|
55
|
+
"@remotion/compositor-win32-x64-msvc": "4.0.466"
|
|
56
56
|
},
|
|
57
57
|
"keywords": [
|
|
58
58
|
"remotion",
|