@remotion/renderer 4.0.465 → 4.0.467
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 +37 -5
- 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
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
import { createRequire } from "node:module";
|
|
2
2
|
var __defProp = Object.defineProperty;
|
|
3
3
|
var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
|
|
4
|
+
var __returnValue = (v) => v;
|
|
5
|
+
function __exportSetter(name, newValue) {
|
|
6
|
+
this[name] = __returnValue.bind(null, newValue);
|
|
7
|
+
}
|
|
4
8
|
var __export = (target, all) => {
|
|
5
9
|
for (var name in all)
|
|
6
10
|
__defProp(target, name, {
|
|
7
11
|
get: all[name],
|
|
8
12
|
enumerable: true,
|
|
9
13
|
configurable: true,
|
|
10
|
-
set: (
|
|
14
|
+
set: __exportSetter.bind(all, name)
|
|
11
15
|
});
|
|
12
16
|
};
|
|
13
17
|
var __require = /* @__PURE__ */ createRequire(import.meta.url);
|
|
@@ -21442,8 +21446,19 @@ var validV5ColorSpaces = ["bt601", "bt709", "bt2020-ncl"];
|
|
|
21442
21446
|
var validColorSpaces = NoReactInternals13.ENABLE_V5_BREAKING_CHANGES ? validV5ColorSpaces : validV4ColorSpaces;
|
|
21443
21447
|
var DEFAULT_COLOR_SPACE = NoReactInternals13.ENABLE_V5_BREAKING_CHANGES ? "bt709" : "default";
|
|
21444
21448
|
|
|
21445
|
-
// src/options/
|
|
21449
|
+
// src/options/gop-size.tsx
|
|
21446
21450
|
import { jsx as jsx5, jsxs as jsxs5, Fragment as Fragment5 } from "react/jsx-runtime";
|
|
21451
|
+
var validateGopSize = (value) => {
|
|
21452
|
+
if (value === null) {
|
|
21453
|
+
return;
|
|
21454
|
+
}
|
|
21455
|
+
if (typeof value !== "number" || !Number.isFinite(value) || !Number.isInteger(value) || value <= 0) {
|
|
21456
|
+
throw new TypeError("The GOP size must be an integer greater than 0 or null.");
|
|
21457
|
+
}
|
|
21458
|
+
};
|
|
21459
|
+
|
|
21460
|
+
// src/options/x264-preset.tsx
|
|
21461
|
+
import { jsx as jsx6, jsxs as jsxs6, Fragment as Fragment6 } from "react/jsx-runtime";
|
|
21447
21462
|
var x264PresetOptions = [
|
|
21448
21463
|
"ultrafast",
|
|
21449
21464
|
"superfast",
|
|
@@ -21570,6 +21585,7 @@ var firstEncodingStepOnly = ({
|
|
|
21570
21585
|
proResProfileName,
|
|
21571
21586
|
pixelFormat,
|
|
21572
21587
|
x264Preset,
|
|
21588
|
+
gopSize,
|
|
21573
21589
|
codec,
|
|
21574
21590
|
crf,
|
|
21575
21591
|
videoBitrate,
|
|
@@ -21580,11 +21596,13 @@ var firstEncodingStepOnly = ({
|
|
|
21580
21596
|
if (hasPreencoded || codec === "gif") {
|
|
21581
21597
|
return [];
|
|
21582
21598
|
}
|
|
21599
|
+
validateGopSize(gopSize);
|
|
21583
21600
|
return [
|
|
21584
21601
|
proResProfileName ? ["-profile:v", proResProfileName] : null,
|
|
21585
21602
|
["-pix_fmt", pixelFormat],
|
|
21586
21603
|
pixelFormat === "yuva420p" ? ["-auto-alt-ref", "0"] : null,
|
|
21587
21604
|
x264Preset ? ["-preset", x264Preset] : null,
|
|
21605
|
+
gopSize === null ? null : ["-g", String(gopSize)],
|
|
21588
21606
|
["-video_track_timescale", "90000"],
|
|
21589
21607
|
validateQualitySettings({
|
|
21590
21608
|
crf,
|
|
@@ -21601,6 +21619,7 @@ var generateFfmpegArgs = ({
|
|
|
21601
21619
|
proResProfileName,
|
|
21602
21620
|
pixelFormat,
|
|
21603
21621
|
x264Preset,
|
|
21622
|
+
gopSize,
|
|
21604
21623
|
codec,
|
|
21605
21624
|
crf,
|
|
21606
21625
|
videoBitrate,
|
|
@@ -21659,6 +21678,7 @@ var generateFfmpegArgs = ({
|
|
|
21659
21678
|
encodingMaxRate,
|
|
21660
21679
|
encodingBufferSize,
|
|
21661
21680
|
x264Preset,
|
|
21681
|
+
gopSize,
|
|
21662
21682
|
hardwareAcceleration
|
|
21663
21683
|
})
|
|
21664
21684
|
].filter(truthy);
|
|
@@ -21760,6 +21780,7 @@ var prespawnFfmpeg = (options2) => {
|
|
|
21760
21780
|
proResProfileName,
|
|
21761
21781
|
pixelFormat,
|
|
21762
21782
|
x264Preset: options2.x264Preset,
|
|
21783
|
+
gopSize: options2.gopSize,
|
|
21763
21784
|
codec,
|
|
21764
21785
|
crf: options2.crf,
|
|
21765
21786
|
videoBitrate: options2.videoBitrate,
|
|
@@ -22854,6 +22875,7 @@ var innerStitchFramesToVideo = async ({
|
|
|
22854
22875
|
cancelSignal,
|
|
22855
22876
|
codec,
|
|
22856
22877
|
crf,
|
|
22878
|
+
gopSize,
|
|
22857
22879
|
enforceAudioTrack,
|
|
22858
22880
|
ffmpegOverride,
|
|
22859
22881
|
force,
|
|
@@ -22901,6 +22923,7 @@ var innerStitchFramesToVideo = async ({
|
|
|
22901
22923
|
validateBitrate(videoBitrate, "videoBitrate");
|
|
22902
22924
|
validateBitrate(maxRate, "maxRate");
|
|
22903
22925
|
validateBitrate(bufferSize, "bufferSize");
|
|
22926
|
+
validateGopSize(gopSize);
|
|
22904
22927
|
validateFps(fps, "in `stitchFramesToVideo()`", false);
|
|
22905
22928
|
assetsInfo.downloadMap.preventCleanup();
|
|
22906
22929
|
const proResProfileName = getProResProfileName(codec, proResProfile);
|
|
@@ -23035,6 +23058,7 @@ var innerStitchFramesToVideo = async ({
|
|
|
23035
23058
|
proResProfileName,
|
|
23036
23059
|
pixelFormat,
|
|
23037
23060
|
x264Preset,
|
|
23061
|
+
gopSize,
|
|
23038
23062
|
colorSpace,
|
|
23039
23063
|
hardwareAcceleration,
|
|
23040
23064
|
indent,
|
|
@@ -23138,6 +23162,7 @@ var stitchFramesToVideo = ({
|
|
|
23138
23162
|
cancelSignal,
|
|
23139
23163
|
codec,
|
|
23140
23164
|
crf,
|
|
23165
|
+
gopSize,
|
|
23141
23166
|
enforceAudioTrack,
|
|
23142
23167
|
ffmpegOverride,
|
|
23143
23168
|
muted,
|
|
@@ -23168,6 +23193,7 @@ var stitchFramesToVideo = ({
|
|
|
23168
23193
|
cancelSignal: cancelSignal ?? null,
|
|
23169
23194
|
codec: codec ?? DEFAULT_CODEC,
|
|
23170
23195
|
crf: crf ?? null,
|
|
23196
|
+
gopSize: gopSize ?? null,
|
|
23171
23197
|
enforceAudioTrack: enforceAudioTrack ?? false,
|
|
23172
23198
|
ffmpegOverride: ffmpegOverride ?? null,
|
|
23173
23199
|
force: force ?? true,
|
|
@@ -23316,6 +23342,7 @@ var MAX_RECENT_FRAME_TIMINGS = 150;
|
|
|
23316
23342
|
var internalRenderMediaRaw = ({
|
|
23317
23343
|
proResProfile,
|
|
23318
23344
|
x264Preset,
|
|
23345
|
+
gopSize,
|
|
23319
23346
|
crf,
|
|
23320
23347
|
composition: compositionWithPossibleUnevenDimensions,
|
|
23321
23348
|
serializedInputPropsWithCustomSchema,
|
|
@@ -23396,6 +23423,7 @@ var internalRenderMediaRaw = ({
|
|
|
23396
23423
|
encodingBufferSize,
|
|
23397
23424
|
hardwareAcceleration
|
|
23398
23425
|
});
|
|
23426
|
+
validateGopSize(gopSize);
|
|
23399
23427
|
validateBitrate(audioBitrate, "audioBitrate");
|
|
23400
23428
|
validateBitrate(videoBitrate, "videoBitrate");
|
|
23401
23429
|
validateBitrate(encodingMaxRate, "encodingMaxRate");
|
|
@@ -23553,6 +23581,7 @@ var internalRenderMediaRaw = ({
|
|
|
23553
23581
|
encodingBufferSize,
|
|
23554
23582
|
indent,
|
|
23555
23583
|
x264Preset: x264Preset ?? null,
|
|
23584
|
+
gopSize,
|
|
23556
23585
|
colorSpace,
|
|
23557
23586
|
binariesDirectory,
|
|
23558
23587
|
hardwareAcceleration
|
|
@@ -23717,6 +23746,7 @@ var internalRenderMediaRaw = ({
|
|
|
23717
23746
|
codec,
|
|
23718
23747
|
proResProfile,
|
|
23719
23748
|
crf,
|
|
23749
|
+
gopSize,
|
|
23720
23750
|
assetsInfo,
|
|
23721
23751
|
onProgress: (frame) => {
|
|
23722
23752
|
if (preEncodedFileLocation) {
|
|
@@ -23834,6 +23864,7 @@ var internalRenderMedia = wrapWithErrorHandling(internalRenderMediaRaw);
|
|
|
23834
23864
|
var renderMedia = ({
|
|
23835
23865
|
proResProfile,
|
|
23836
23866
|
x264Preset,
|
|
23867
|
+
gopSize,
|
|
23837
23868
|
crf,
|
|
23838
23869
|
composition,
|
|
23839
23870
|
inputProps,
|
|
@@ -23902,6 +23933,7 @@ var renderMedia = ({
|
|
|
23902
23933
|
return internalRenderMedia({
|
|
23903
23934
|
proResProfile: proResProfile ?? undefined,
|
|
23904
23935
|
x264Preset: x264Preset ?? null,
|
|
23936
|
+
gopSize: gopSize ?? null,
|
|
23905
23937
|
codec,
|
|
23906
23938
|
composition,
|
|
23907
23939
|
serveUrl,
|
|
@@ -25121,11 +25153,11 @@ var getVideoMetadata = async (videoSource, options2) => {
|
|
|
25121
25153
|
return JSON.parse(new TextDecoder("utf-8").decode(metadataResponse));
|
|
25122
25154
|
};
|
|
25123
25155
|
// 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
25156
|
import { jsx as jsx7, jsxs as jsxs7, Fragment as Fragment7 } from "react/jsx-runtime";
|
|
25127
|
-
// src/options/
|
|
25157
|
+
// src/options/number-of-gif-loops.tsx
|
|
25128
25158
|
import { jsx as jsx8, jsxs as jsxs8, Fragment as Fragment8 } from "react/jsx-runtime";
|
|
25159
|
+
// src/options/on-browser-download.tsx
|
|
25160
|
+
import { jsx as jsx9, jsxs as jsxs9, Fragment as Fragment9 } from "react/jsx-runtime";
|
|
25129
25161
|
// src/index.ts
|
|
25130
25162
|
var RenderInternals = {
|
|
25131
25163
|
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.467",
|
|
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.467",
|
|
26
|
+
"@remotion/streaming": "4.0.467",
|
|
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.467"
|
|
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.467",
|
|
44
|
+
"@remotion/eslint-config-internal": "4.0.467",
|
|
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.467",
|
|
50
|
+
"@remotion/compositor-darwin-x64": "4.0.467",
|
|
51
|
+
"@remotion/compositor-linux-arm64-gnu": "4.0.467",
|
|
52
|
+
"@remotion/compositor-linux-arm64-musl": "4.0.467",
|
|
53
|
+
"@remotion/compositor-linux-x64-gnu": "4.0.467",
|
|
54
|
+
"@remotion/compositor-linux-x64-musl": "4.0.467",
|
|
55
|
+
"@remotion/compositor-win32-x64-msvc": "4.0.467"
|
|
56
56
|
},
|
|
57
57
|
"keywords": [
|
|
58
58
|
"remotion",
|