@remotion/renderer 3.2.29 → 3.2.31
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/extract-frame-from-video.d.ts +0 -1
- package/dist/find-closest-package-json.d.ts +2 -0
- package/dist/find-closest-package-json.js +34 -0
- package/dist/index.d.ts +9 -7
- package/dist/last-frame-from-video-cache.d.ts +0 -1
- package/dist/prores-profile.d.ts +4 -1
- package/dist/prores-profile.js +6 -6
- package/dist/render-frames.d.ts +1 -1
- package/dist/render-frames.js +3 -1
- package/dist/render-media.d.ts +7 -2
- package/dist/render-media.js +35 -2
- package/dist/stitch-frames-to-video.js +5 -0
- package/dist/validate-puppeteer-timeout.js +1 -1
- package/package.json +3 -3
- package/dist/ffmpeg-args-hook.d.ts +0 -4
- package/dist/ffmpeg-args-hook.js +0 -2
- package/dist/make-assets-download-dir.d.ts +0 -1
- package/dist/make-assets-download-dir.js +0 -13
- package/dist/validate-ffmpeg-args-hook.d.ts +0 -2
- package/dist/validate-ffmpeg-args-hook.js +0 -12
- package/dist/validate-ffmpeg-override-fn.d.ts +0 -2
- package/dist/validate-ffmpeg-override-fn.js +0 -12
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.findRemotionRoot = exports.findClosestPackageJson = void 0;
|
|
7
|
+
const fs_1 = __importDefault(require("fs"));
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const recursionLimit = 5;
|
|
10
|
+
const findClosestPackageJson = () => {
|
|
11
|
+
let currentDir = process.cwd();
|
|
12
|
+
let possiblePackageJson = '';
|
|
13
|
+
for (let i = 0; i < recursionLimit; i++) {
|
|
14
|
+
possiblePackageJson = path_1.default.join(currentDir, 'package.json');
|
|
15
|
+
const exists = fs_1.default.existsSync(possiblePackageJson);
|
|
16
|
+
if (exists) {
|
|
17
|
+
return possiblePackageJson;
|
|
18
|
+
}
|
|
19
|
+
currentDir = path_1.default.dirname(currentDir);
|
|
20
|
+
}
|
|
21
|
+
return null;
|
|
22
|
+
};
|
|
23
|
+
exports.findClosestPackageJson = findClosestPackageJson;
|
|
24
|
+
const findRemotionRoot = () => {
|
|
25
|
+
const closestPackageJson = (0, exports.findClosestPackageJson)();
|
|
26
|
+
if (closestPackageJson === null) {
|
|
27
|
+
console.error('Could not find a package.json in the current directory or any of the ' +
|
|
28
|
+
recursionLimit +
|
|
29
|
+
' parent directories. Is this a Remotion project?');
|
|
30
|
+
process.exit(1);
|
|
31
|
+
}
|
|
32
|
+
return path_1.default.dirname(closestPackageJson);
|
|
33
|
+
};
|
|
34
|
+
exports.findRemotionRoot = findRemotionRoot;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
1
|
import execa from 'execa';
|
|
3
2
|
import { SymbolicateableError } from './error-handling/symbolicateable-error';
|
|
4
3
|
import { mimeContentType, mimeLookup } from './mime-types';
|
|
@@ -25,7 +24,7 @@ export type { ChromiumOptions } from './open-browser';
|
|
|
25
24
|
export { PixelFormat } from './pixel-format';
|
|
26
25
|
export { ProResProfile } from './prores-profile';
|
|
27
26
|
export { renderFrames } from './render-frames';
|
|
28
|
-
export { renderMedia, RenderMediaOnProgress, RenderMediaOptions, StitchingState, } from './render-media';
|
|
27
|
+
export { OnSlowestFrames, renderMedia, RenderMediaOnProgress, RenderMediaOptions, SlowFrame, StitchingState, } from './render-media';
|
|
29
28
|
export { renderStill, RenderStillOptions } from './render-still';
|
|
30
29
|
export { StitcherOptions, stitchFramesToVideo } from './stitch-frames-to-video';
|
|
31
30
|
export { SymbolicatedStackFrame } from './symbolicate-stacktrace';
|
|
@@ -69,7 +68,7 @@ export declare const RenderInternals: {
|
|
|
69
68
|
task: Promise<Buffer | null>;
|
|
70
69
|
getLogs: () => string;
|
|
71
70
|
}>;
|
|
72
|
-
getFileExtensionFromCodec: (codec: "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif", type: "chunk" | "final") => "mp3" | "aac" | "wav" | "gif" | "
|
|
71
|
+
getFileExtensionFromCodec: (codec: "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif", type: "chunk" | "final") => "mp3" | "aac" | "wav" | "gif" | "mp4" | "mkv" | "mov" | "webm";
|
|
73
72
|
tmpDir: (str: string) => string;
|
|
74
73
|
deleteDirectory: (directory: string) => Promise<void>;
|
|
75
74
|
isServeUrl: (potentialUrl: string) => boolean;
|
|
@@ -124,8 +123,8 @@ export declare const RenderInternals: {
|
|
|
124
123
|
validPixelFormats: readonly ["yuv420p", "yuva420p", "yuv422p", "yuv444p", "yuv420p10le", "yuv422p10le", "yuv444p10le", "yuva444p10le"];
|
|
125
124
|
DEFAULT_BROWSER: import("./browser").Browser;
|
|
126
125
|
validateFrameRange: (frameRange: import("./frame-range").FrameRange | null) => void;
|
|
127
|
-
DEFAULT_OPENGL_RENDERER: "
|
|
128
|
-
validateOpenGlRenderer: (option: "
|
|
126
|
+
DEFAULT_OPENGL_RENDERER: "swangle" | "angle" | "egl" | "swiftshader" | null;
|
|
127
|
+
validateOpenGlRenderer: (option: "swangle" | "angle" | "egl" | "swiftshader" | null) => "swangle" | "angle" | "egl" | "swiftshader" | null;
|
|
129
128
|
getDefaultCrfForCodec: (codec: "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif") => number;
|
|
130
129
|
validateSelectedCrfAndCodecCombination: (crf: unknown, codec: "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif") => void;
|
|
131
130
|
validImageFormats: readonly ["png", "jpeg", "none"];
|
|
@@ -136,8 +135,11 @@ export declare const RenderInternals: {
|
|
|
136
135
|
DEFAULT_TIMEOUT: number;
|
|
137
136
|
getValidCrfRanges: (codec: "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif") => [number, number];
|
|
138
137
|
validateSelectedPixelFormatAndCodecCombination: (pixelFormat: "yuv420p" | "yuva420p" | "yuv422p" | "yuv444p" | "yuv420p10le" | "yuv422p10le" | "yuv444p10le" | "yuva444p10le", codec: "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif") => void;
|
|
139
|
-
validateSelectedCodecAndProResCombination: (
|
|
140
|
-
|
|
138
|
+
validateSelectedCodecAndProResCombination: ({ codec, proResProfile, }: {
|
|
139
|
+
codec: "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif";
|
|
140
|
+
proResProfile: "4444-xq" | "4444" | "hq" | "standard" | "light" | "proxy" | undefined;
|
|
141
|
+
}) => void;
|
|
142
|
+
validateSelectedPixelFormatAndImageFormatCombination: (pixelFormat: "yuv420p" | "yuva420p" | "yuv422p" | "yuv444p" | "yuv420p10le" | "yuv422p10le" | "yuv444p10le" | "yuva444p10le", imageFormat: "png" | "jpeg" | "none") => "none" | "valid";
|
|
141
143
|
DEFAULT_CODEC: "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif";
|
|
142
144
|
isAudioCodec: (codec: "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif" | undefined) => boolean;
|
|
143
145
|
logLevels: readonly ["verbose", "info", "warn", "error"];
|
package/dist/prores-profile.d.ts
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import type { Codec } from './codec';
|
|
2
2
|
declare const proResProfileOptions: readonly ["4444-xq", "4444", "hq", "standard", "light", "proxy"];
|
|
3
3
|
export declare type ProResProfile = typeof proResProfileOptions[number];
|
|
4
|
-
export declare const validateSelectedCodecAndProResCombination: (
|
|
4
|
+
export declare const validateSelectedCodecAndProResCombination: ({ codec, proResProfile, }: {
|
|
5
|
+
codec: Codec;
|
|
6
|
+
proResProfile: ProResProfile | undefined;
|
|
7
|
+
}) => void;
|
|
5
8
|
export {};
|
package/dist/prores-profile.js
CHANGED
|
@@ -9,13 +9,13 @@ const proResProfileOptions = [
|
|
|
9
9
|
'light',
|
|
10
10
|
'proxy',
|
|
11
11
|
];
|
|
12
|
-
const validateSelectedCodecAndProResCombination = (
|
|
13
|
-
if (typeof
|
|
14
|
-
throw new TypeError(
|
|
12
|
+
const validateSelectedCodecAndProResCombination = ({ codec, proResProfile, }) => {
|
|
13
|
+
if (typeof proResProfile !== 'undefined' && codec !== 'prores') {
|
|
14
|
+
throw new TypeError(`You have set a ProRes profile but the codec is "${codec}". Set the codec to "prores" or remove the ProRes profile.`);
|
|
15
15
|
}
|
|
16
|
-
if (
|
|
17
|
-
!proResProfileOptions.includes(
|
|
18
|
-
throw new TypeError(`The ProRes profile "${
|
|
16
|
+
if (proResProfile !== undefined &&
|
|
17
|
+
!proResProfileOptions.includes(proResProfile)) {
|
|
18
|
+
throw new TypeError(`The ProRes profile "${proResProfile}" is not valid. Valid options are ${proResProfileOptions
|
|
19
19
|
.map((p) => `"${p}"`)
|
|
20
20
|
.join(', ')}`);
|
|
21
21
|
}
|
package/dist/render-frames.d.ts
CHANGED
|
@@ -30,7 +30,7 @@ declare type ConcurrencyOrParallelism = {
|
|
|
30
30
|
};
|
|
31
31
|
declare type RenderFramesOptions = {
|
|
32
32
|
onStart: (data: OnStartData) => void;
|
|
33
|
-
onFrameUpdate: (framesRendered: number, frameIndex: number) => void;
|
|
33
|
+
onFrameUpdate: (framesRendered: number, frameIndex: number, timeToRenderInMilliseconds: number) => void;
|
|
34
34
|
outputDir: string | null;
|
|
35
35
|
inputProps: unknown;
|
|
36
36
|
envVariables?: Record<string, string>;
|
package/dist/render-frames.js
CHANGED
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.renderFrames = void 0;
|
|
7
7
|
const fs_1 = __importDefault(require("fs"));
|
|
8
8
|
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const perf_hooks_1 = require("perf_hooks");
|
|
9
10
|
const remotion_1 = require("remotion");
|
|
10
11
|
const download_and_map_assets_to_file_1 = require("./assets/download-and-map-assets-to-file");
|
|
11
12
|
const download_map_1 = require("./assets/download-map");
|
|
@@ -150,6 +151,7 @@ const innerRenderFrames = ({ onFrameUpdate, outputDir, onStart, inputProps, qual
|
|
|
150
151
|
if (stopped) {
|
|
151
152
|
throw new Error('Render was stopped');
|
|
152
153
|
}
|
|
154
|
+
const startTime = perf_hooks_1.performance.now();
|
|
153
155
|
const errorCallbackOnFrame = (err) => {
|
|
154
156
|
onError(err);
|
|
155
157
|
};
|
|
@@ -219,7 +221,7 @@ const innerRenderFrames = ({ onFrameUpdate, outputDir, onStart, inputProps, qual
|
|
|
219
221
|
});
|
|
220
222
|
pool.release(freePage);
|
|
221
223
|
framesRendered++;
|
|
222
|
-
onFrameUpdate(framesRendered, frame);
|
|
224
|
+
onFrameUpdate(framesRendered, frame, perf_hooks_1.performance.now() - startTime);
|
|
223
225
|
cleanupPageError();
|
|
224
226
|
freePage.off('error', errorCallbackOnFrame);
|
|
225
227
|
return compressedAssets;
|
package/dist/render-media.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
1
|
import type { SmallTCompMetadata } from 'remotion';
|
|
3
2
|
import type { RenderMediaOnDownload } from './assets/download-and-map-assets-to-file';
|
|
4
3
|
import type { DownloadMap } from './assets/download-map';
|
|
@@ -16,6 +15,11 @@ import type { PixelFormat } from './pixel-format';
|
|
|
16
15
|
import type { ProResProfile } from './prores-profile';
|
|
17
16
|
import type { OnStartData } from './types';
|
|
18
17
|
export declare type StitchingState = 'encoding' | 'muxing';
|
|
18
|
+
export declare type SlowFrame = {
|
|
19
|
+
frame: number;
|
|
20
|
+
time: number;
|
|
21
|
+
};
|
|
22
|
+
export declare type OnSlowestFrames = (frames: SlowFrame[]) => void;
|
|
19
23
|
export declare type RenderMediaOnProgress = (progress: {
|
|
20
24
|
renderedFrames: number;
|
|
21
25
|
encodedFrames: number;
|
|
@@ -61,6 +65,7 @@ export declare type RenderMediaOptions = {
|
|
|
61
65
|
muted?: boolean;
|
|
62
66
|
enforceAudioTrack?: boolean;
|
|
63
67
|
ffmpegOverride?: FfmpegOverrideFn;
|
|
68
|
+
onSlowestFrames?: OnSlowestFrames;
|
|
64
69
|
disallowParallelEncoding?: boolean;
|
|
65
70
|
} & ServeUrlOrWebpackBundle & ConcurrencyOrParallelism;
|
|
66
71
|
declare type ConcurrencyOrParallelism = {
|
|
@@ -76,5 +81,5 @@ declare type ConcurrencyOrParallelism = {
|
|
|
76
81
|
* @description Render a video from a composition
|
|
77
82
|
* @link https://www.remotion.dev/docs/renderer/render-media
|
|
78
83
|
*/
|
|
79
|
-
export declare const renderMedia: ({ proResProfile, crf, composition, ffmpegExecutable, ffprobeExecutable, inputProps, pixelFormat, codec, envVariables, frameRange, puppeteerInstance, outputLocation, onProgress, overwrite, onDownload, dumpBrowserLogs, onBrowserLog, onStart, timeoutInMilliseconds, chromiumOptions, scale, browserExecutable, port, cancelSignal, muted, enforceAudioTrack, ffmpegOverride, ...options }: RenderMediaOptions) => Promise<Buffer | null>;
|
|
84
|
+
export declare const renderMedia: ({ proResProfile, crf, composition, ffmpegExecutable, ffprobeExecutable, inputProps, pixelFormat, codec, envVariables, frameRange, puppeteerInstance, outputLocation, onProgress, overwrite, onDownload, dumpBrowserLogs, onBrowserLog, onStart, timeoutInMilliseconds, chromiumOptions, scale, browserExecutable, port, cancelSignal, muted, enforceAudioTrack, ffmpegOverride, onSlowestFrames, ...options }: RenderMediaOptions) => Promise<Buffer | null>;
|
|
80
85
|
export {};
|
package/dist/render-media.js
CHANGED
|
@@ -26,6 +26,7 @@ const overwrite_1 = require("./overwrite");
|
|
|
26
26
|
const perf_1 = require("./perf");
|
|
27
27
|
const prespawn_ffmpeg_1 = require("./prespawn-ffmpeg");
|
|
28
28
|
const prestitcher_memory_usage_1 = require("./prestitcher-memory-usage");
|
|
29
|
+
const prores_profile_1 = require("./prores-profile");
|
|
29
30
|
const quality_1 = require("./quality");
|
|
30
31
|
const render_frames_1 = require("./render-frames");
|
|
31
32
|
const stitch_frames_to_video_1 = require("./stitch-frames-to-video");
|
|
@@ -33,6 +34,7 @@ const validate_even_dimensions_with_codec_1 = require("./validate-even-dimension
|
|
|
33
34
|
const validate_ffmpeg_override_1 = require("./validate-ffmpeg-override");
|
|
34
35
|
const validate_output_filename_1 = require("./validate-output-filename");
|
|
35
36
|
const validate_scale_1 = require("./validate-scale");
|
|
37
|
+
const SLOWEST_FRAME_COUNT = 10;
|
|
36
38
|
const getConcurrency = (others) => {
|
|
37
39
|
if ('concurrency' in others) {
|
|
38
40
|
return others.concurrency;
|
|
@@ -47,12 +49,16 @@ const getConcurrency = (others) => {
|
|
|
47
49
|
* @description Render a video from a composition
|
|
48
50
|
* @link https://www.remotion.dev/docs/renderer/render-media
|
|
49
51
|
*/
|
|
50
|
-
const renderMedia = ({ proResProfile, crf, composition, ffmpegExecutable, ffprobeExecutable, inputProps, pixelFormat, codec, envVariables, frameRange, puppeteerInstance, outputLocation, onProgress, overwrite, onDownload, dumpBrowserLogs, onBrowserLog, onStart, timeoutInMilliseconds, chromiumOptions, scale, browserExecutable, port, cancelSignal, muted, enforceAudioTrack, ffmpegOverride, ...options }) => {
|
|
52
|
+
const renderMedia = ({ proResProfile, crf, composition, ffmpegExecutable, ffprobeExecutable, inputProps, pixelFormat, codec, envVariables, frameRange, puppeteerInstance, outputLocation, onProgress, overwrite, onDownload, dumpBrowserLogs, onBrowserLog, onStart, timeoutInMilliseconds, chromiumOptions, scale, browserExecutable, port, cancelSignal, muted, enforceAudioTrack, ffmpegOverride, onSlowestFrames, ...options }) => {
|
|
51
53
|
var _a, _b, _c, _d;
|
|
52
54
|
(0, quality_1.validateQuality)(options.quality);
|
|
53
55
|
if (typeof crf !== 'undefined' && crf !== null) {
|
|
54
56
|
(0, crf_1.validateSelectedCrfAndCodecCombination)(crf, codec);
|
|
55
57
|
}
|
|
58
|
+
(0, prores_profile_1.validateSelectedCodecAndProResCombination)({
|
|
59
|
+
codec,
|
|
60
|
+
proResProfile,
|
|
61
|
+
});
|
|
56
62
|
if (outputLocation) {
|
|
57
63
|
(0, validate_output_filename_1.validateOutputFilename)(codec, (0, get_extension_of_filename_1.getExtensionOfFilename)(outputLocation));
|
|
58
64
|
}
|
|
@@ -171,13 +177,38 @@ const renderMedia = ({ proResProfile, crf, composition, ffmpegExecutable, ffprob
|
|
|
171
177
|
};
|
|
172
178
|
const mediaSupport = (0, codec_supports_media_1.codecSupportsMedia)(codec);
|
|
173
179
|
const disableAudio = !mediaSupport.audio || muted;
|
|
180
|
+
const slowestFrames = [];
|
|
181
|
+
let maxTime = 0;
|
|
182
|
+
let minTime = 0;
|
|
183
|
+
const recordFrameTime = (frameIndex, time) => {
|
|
184
|
+
var _a, _b;
|
|
185
|
+
const frameTime = { frame: frameIndex, time };
|
|
186
|
+
if (time < minTime && slowestFrames.length === SLOWEST_FRAME_COUNT) {
|
|
187
|
+
return;
|
|
188
|
+
}
|
|
189
|
+
if (time > maxTime) {
|
|
190
|
+
// add at starting;
|
|
191
|
+
slowestFrames.unshift(frameTime);
|
|
192
|
+
maxTime = time;
|
|
193
|
+
}
|
|
194
|
+
else {
|
|
195
|
+
// add frame at appropriate position
|
|
196
|
+
const index = slowestFrames.findIndex(({ time: indexTime }) => indexTime < time);
|
|
197
|
+
slowestFrames.splice(index, 0, frameTime);
|
|
198
|
+
}
|
|
199
|
+
if (slowestFrames.length > SLOWEST_FRAME_COUNT) {
|
|
200
|
+
slowestFrames.pop();
|
|
201
|
+
}
|
|
202
|
+
minTime = (_b = (_a = slowestFrames[slowestFrames.length - 1]) === null || _a === void 0 ? void 0 : _a.time) !== null && _b !== void 0 ? _b : minTime;
|
|
203
|
+
};
|
|
174
204
|
const happyPath = createPrestitcherIfNecessary()
|
|
175
205
|
.then(() => {
|
|
176
206
|
const renderFramesProc = (0, render_frames_1.renderFrames)({
|
|
177
207
|
config: composition,
|
|
178
|
-
onFrameUpdate: (frame) => {
|
|
208
|
+
onFrameUpdate: (frame, frameIndex, timeToRenderInMilliseconds) => {
|
|
179
209
|
renderedFrames = frame;
|
|
180
210
|
callUpdate();
|
|
211
|
+
recordFrameTime(frameIndex, timeToRenderInMilliseconds);
|
|
181
212
|
},
|
|
182
213
|
concurrency,
|
|
183
214
|
outputDir,
|
|
@@ -272,6 +303,8 @@ const renderMedia = ({ proResProfile, crf, composition, ffmpegExecutable, ffprob
|
|
|
272
303
|
encodedFrames = (0, get_duration_from_frame_range_1.getFramesToRender)(realFrameRange, everyNthFrame).length;
|
|
273
304
|
encodedDoneIn = Date.now() - stitchStart;
|
|
274
305
|
callUpdate();
|
|
306
|
+
slowestFrames.sort((a, b) => b.time - a.time);
|
|
307
|
+
onSlowestFrames === null || onSlowestFrames === void 0 ? void 0 : onSlowestFrames(slowestFrames);
|
|
275
308
|
return buffer;
|
|
276
309
|
})
|
|
277
310
|
.catch((err) => {
|
|
@@ -25,6 +25,7 @@ const merge_audio_track_1 = require("./merge-audio-track");
|
|
|
25
25
|
const parse_ffmpeg_progress_1 = require("./parse-ffmpeg-progress");
|
|
26
26
|
const pixel_format_1 = require("./pixel-format");
|
|
27
27
|
const preprocess_audio_track_1 = require("./preprocess-audio-track");
|
|
28
|
+
const prores_profile_1 = require("./prores-profile");
|
|
28
29
|
const truthy_1 = require("./truthy");
|
|
29
30
|
const validate_even_dimensions_with_codec_1 = require("./validate-even-dimensions-with-codec");
|
|
30
31
|
const validate_ffmpeg_1 = require("./validate-ffmpeg");
|
|
@@ -88,6 +89,10 @@ const spawnFfmpeg = async (options) => {
|
|
|
88
89
|
codec,
|
|
89
90
|
scale: 1,
|
|
90
91
|
});
|
|
92
|
+
(0, prores_profile_1.validateSelectedCodecAndProResCombination)({
|
|
93
|
+
codec,
|
|
94
|
+
proResProfile: options.proResProfile,
|
|
95
|
+
});
|
|
91
96
|
remotion_1.Internals.validateFps(options.fps, 'in `stitchFramesToVideo()`', false);
|
|
92
97
|
const crf = (_b = options.crf) !== null && _b !== void 0 ? _b : (0, crf_1.getDefaultCrfForCodec)(codec);
|
|
93
98
|
const pixelFormat = (_c = options.pixelFormat) !== null && _c !== void 0 ? _c : pixel_format_1.DEFAULT_PIXEL_FORMAT;
|
|
@@ -8,7 +8,7 @@ const validatePuppeteerTimeout = (timeoutInMilliseconds) => {
|
|
|
8
8
|
if (typeof timeoutInMilliseconds !== 'number') {
|
|
9
9
|
throw new TypeError(`'timeoutInMilliseconds' should be a number, but is: ${JSON.stringify(timeoutInMilliseconds)}`);
|
|
10
10
|
}
|
|
11
|
-
if (timeoutInMilliseconds < 7000) {
|
|
11
|
+
if (timeoutInMilliseconds < 7000 && process.env.NODE_ENV !== 'test') {
|
|
12
12
|
throw new TypeError(`'timeoutInMilliseconds' should be bigger or equal than 7000, but is ${timeoutInMilliseconds}`);
|
|
13
13
|
}
|
|
14
14
|
if (Number.isNaN(timeoutInMilliseconds)) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@remotion/renderer",
|
|
3
|
-
"version": "3.2.
|
|
3
|
+
"version": "3.2.31",
|
|
4
4
|
"description": "Renderer for Remotion",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"dependencies": {
|
|
23
23
|
"execa": "5.1.1",
|
|
24
24
|
"extract-zip": "2.0.1",
|
|
25
|
-
"remotion": "3.2.
|
|
25
|
+
"remotion": "3.2.31",
|
|
26
26
|
"source-map": "^0.8.0-beta.0",
|
|
27
27
|
"ws": "8.7.0"
|
|
28
28
|
},
|
|
@@ -57,5 +57,5 @@
|
|
|
57
57
|
"publishConfig": {
|
|
58
58
|
"access": "public"
|
|
59
59
|
},
|
|
60
|
-
"gitHead": "
|
|
60
|
+
"gitHead": "f011b454d78903e548c32f548d8fef642c5ff7a6"
|
|
61
61
|
}
|
package/dist/ffmpeg-args-hook.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const makeAssetsDownloadTmpDir: () => string;
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.makeAssetsDownloadTmpDir = void 0;
|
|
4
|
-
const tmp_dir_1 = require("./tmp-dir");
|
|
5
|
-
let dir = null;
|
|
6
|
-
const makeAssetsDownloadTmpDir = () => {
|
|
7
|
-
if (dir) {
|
|
8
|
-
return dir;
|
|
9
|
-
}
|
|
10
|
-
dir = (0, tmp_dir_1.tmpDir)('remotion-assets-dir');
|
|
11
|
-
return dir;
|
|
12
|
-
};
|
|
13
|
-
exports.makeAssetsDownloadTmpDir = makeAssetsDownloadTmpDir;
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.validateFfmpegArgsHook = void 0;
|
|
4
|
-
const validateFfmpegArgsHook = (ffmpegArgsHook) => {
|
|
5
|
-
if (typeof ffmpegArgsHook === 'undefined') {
|
|
6
|
-
return;
|
|
7
|
-
}
|
|
8
|
-
if (ffmpegArgsHook && typeof ffmpegArgsHook !== 'function') {
|
|
9
|
-
throw new TypeError(`Argument passed for "ffmpegArgsHook" is not a function: ${ffmpegArgsHook}`);
|
|
10
|
-
}
|
|
11
|
-
};
|
|
12
|
-
exports.validateFfmpegArgsHook = validateFfmpegArgsHook;
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.validateFfmpegOverride = void 0;
|
|
4
|
-
const validateFfmpegOverride = (ffmpegArgsHook) => {
|
|
5
|
-
if (typeof ffmpegArgsHook === 'undefined') {
|
|
6
|
-
return;
|
|
7
|
-
}
|
|
8
|
-
if (ffmpegArgsHook && typeof ffmpegArgsHook !== 'function') {
|
|
9
|
-
throw new TypeError(`Argument passed for "ffmpegArgsHook" is not a function: ${ffmpegArgsHook}`);
|
|
10
|
-
}
|
|
11
|
-
};
|
|
12
|
-
exports.validateFfmpegOverride = validateFfmpegOverride;
|