@remotion/renderer 4.0.0-alpha17 → 4.0.0-alpha19
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/assets/download-file.d.ts +1 -1
- package/dist/assets/download-file.js +11 -4
- package/dist/browser/Browser.d.ts +7 -6
- package/dist/browser/Browser.js +12 -12
- package/dist/browser/BrowserPage.d.ts +13 -2
- package/dist/browser/BrowserPage.js +15 -8
- package/dist/browser/BrowserRunner.js +2 -2
- package/dist/browser/LaunchOptions.d.ts +2 -0
- package/dist/browser/Launcher.js +2 -1
- package/dist/browser/Target.d.ts +2 -1
- package/dist/browser/Target.js +3 -1
- package/dist/browser/should-log-message.js +8 -0
- package/dist/compositor/compositor.d.ts +3 -2
- package/dist/compositor/compositor.js +6 -5
- package/dist/create-ffmpeg-merge-filter.js +1 -2
- package/dist/cycle-browser-tabs.d.ts +2 -1
- package/dist/cycle-browser-tabs.js +2 -2
- package/dist/get-browser-instance.d.ts +3 -2
- package/dist/get-browser-instance.js +5 -5
- package/dist/get-compositions.d.ts +4 -3
- package/dist/get-compositions.js +6 -5
- package/dist/index.d.ts +24 -27
- package/dist/logger.d.ts +1 -2
- package/dist/logger.js +5 -10
- package/dist/offthread-video-server.d.ts +3 -2
- package/dist/offthread-video-server.js +4 -3
- package/dist/open-browser.d.ts +3 -2
- package/dist/open-browser.js +7 -5
- package/dist/perf.js +4 -2
- package/dist/prepare-server.d.ts +3 -2
- package/dist/prepare-server.js +4 -4
- package/dist/prespawn-ffmpeg.d.ts +13 -1
- package/dist/prespawn-ffmpeg.js +21 -31
- package/dist/render-frames.d.ts +11 -4
- package/dist/render-frames.js +15 -11
- package/dist/render-media.d.ts +11 -4
- package/dist/render-media.js +19 -14
- package/dist/render-still.d.ts +8 -2
- package/dist/render-still.js +8 -8
- package/dist/replace-browser.d.ts +2 -1
- package/dist/replace-browser.js +2 -2
- package/dist/select-composition.d.ts +2 -1
- package/dist/select-composition.js +8 -8
- package/dist/serve-static.d.ts +2 -1
- package/dist/serve-static.js +1 -1
- package/dist/set-props-and-env.js +1 -1
- package/dist/stitch-frames-to-video.d.ts +2 -1
- package/dist/stitch-frames-to-video.js +12 -22
- package/package.json +9 -9
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
1
|
import execa from 'execa';
|
|
3
2
|
import { HeadlessBrowser } from './browser/Browser';
|
|
4
3
|
import { SymbolicateableError } from './error-handling/symbolicateable-error';
|
|
@@ -43,7 +42,7 @@ export declare const RenderInternals: {
|
|
|
43
42
|
downloadMap: import("./assets/download-map").DownloadMap;
|
|
44
43
|
remotionRoot: string;
|
|
45
44
|
concurrency: number;
|
|
46
|
-
|
|
45
|
+
logLevel: "verbose" | "info" | "warn" | "error";
|
|
47
46
|
indent: boolean;
|
|
48
47
|
}) => Promise<{
|
|
49
48
|
port: number;
|
|
@@ -72,7 +71,7 @@ export declare const RenderInternals: {
|
|
|
72
71
|
downloaded: number;
|
|
73
72
|
totalSize: number | null;
|
|
74
73
|
}) => void) | undefined;
|
|
75
|
-
}, retries?: number) => Promise<{
|
|
74
|
+
}, retries?: number, attempt?: number) => Promise<{
|
|
76
75
|
sizeInBytes: number;
|
|
77
76
|
to: string;
|
|
78
77
|
}>;
|
|
@@ -114,8 +113,8 @@ export declare const RenderInternals: {
|
|
|
114
113
|
validPixelFormats: readonly ["yuv420p", "yuva420p", "yuv422p", "yuv444p", "yuv420p10le", "yuv422p10le", "yuv444p10le", "yuva444p10le"];
|
|
115
114
|
DEFAULT_BROWSER: import("./browser").Browser;
|
|
116
115
|
validateFrameRange: (frameRange: import("./frame-range").FrameRange | null) => void;
|
|
117
|
-
DEFAULT_OPENGL_RENDERER: "
|
|
118
|
-
validateOpenGlRenderer: (option: "
|
|
116
|
+
DEFAULT_OPENGL_RENDERER: "swangle" | "angle" | "egl" | "swiftshader" | null;
|
|
117
|
+
validateOpenGlRenderer: (option: "swangle" | "angle" | "egl" | "swiftshader" | null) => "swangle" | "angle" | "egl" | "swiftshader" | null;
|
|
119
118
|
validCodecs: readonly ["h264", "h265", "vp8", "vp9", "mp3", "aac", "wav", "prores", "h264-mkv", "gif"];
|
|
120
119
|
DEFAULT_PIXEL_FORMAT: "yuv420p" | "yuva420p" | "yuv422p" | "yuv444p" | "yuv420p10le" | "yuv422p10le" | "yuv444p10le" | "yuva444p10le";
|
|
121
120
|
validateJpegQuality: (q: number | undefined) => void;
|
|
@@ -123,7 +122,7 @@ export declare const RenderInternals: {
|
|
|
123
122
|
DEFAULT_CODEC: "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif";
|
|
124
123
|
isAudioCodec: (codec: "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif" | undefined) => boolean;
|
|
125
124
|
logLevels: readonly ["verbose", "info", "warn", "error"];
|
|
126
|
-
isEqualOrBelowLogLevel: (currentLevel: "verbose" | "
|
|
125
|
+
isEqualOrBelowLogLevel: (currentLevel: "verbose" | "info" | "warn" | "error", level: "verbose" | "info" | "warn" | "error") => boolean;
|
|
127
126
|
isValidLogLevel: (level: string) => boolean;
|
|
128
127
|
perf: typeof perf;
|
|
129
128
|
convertToPositiveFrameIndex: ({ frame, durationInFrames, }: {
|
|
@@ -300,8 +299,8 @@ export declare const RenderInternals: {
|
|
|
300
299
|
};
|
|
301
300
|
validStillImageFormats: readonly ["png", "jpeg", "pdf", "webp"];
|
|
302
301
|
validVideoImageFormats: readonly ["png", "jpeg", "none"];
|
|
303
|
-
DEFAULT_STILL_IMAGE_FORMAT: "
|
|
304
|
-
DEFAULT_VIDEO_IMAGE_FORMAT: "
|
|
302
|
+
DEFAULT_STILL_IMAGE_FORMAT: "png" | "jpeg" | "pdf" | "webp";
|
|
303
|
+
DEFAULT_VIDEO_IMAGE_FORMAT: "none" | "png" | "jpeg";
|
|
305
304
|
DEFAULT_JPEG_QUALITY: number;
|
|
306
305
|
chalk: {
|
|
307
306
|
enabled: boolean;
|
|
@@ -356,34 +355,33 @@ export declare const RenderInternals: {
|
|
|
356
355
|
verbose: (message?: any, ...optionalParams: any[]) => void;
|
|
357
356
|
verboseAdvanced: (options: {
|
|
358
357
|
indent: boolean;
|
|
359
|
-
logLevel: "verbose" | "
|
|
358
|
+
logLevel: "verbose" | "info" | "warn" | "error";
|
|
360
359
|
} & {
|
|
361
360
|
tag?: string | undefined;
|
|
362
|
-
secondTag?: string | undefined;
|
|
363
361
|
}, message?: any, ...optionalParams: any[]) => void;
|
|
364
362
|
info: (message?: any, ...optionalParams: any[]) => void;
|
|
365
363
|
infoAdvanced: (options: {
|
|
366
364
|
indent: boolean;
|
|
367
|
-
logLevel: "verbose" | "
|
|
365
|
+
logLevel: "verbose" | "info" | "warn" | "error";
|
|
368
366
|
}, message?: any, ...optionalParams: any[]) => void;
|
|
369
367
|
warn: (message?: any, ...optionalParams: any[]) => void;
|
|
370
368
|
warnAdvanced: (options: {
|
|
371
369
|
indent: boolean;
|
|
372
|
-
logLevel: "verbose" | "
|
|
370
|
+
logLevel: "verbose" | "info" | "warn" | "error";
|
|
373
371
|
}, message?: any, ...optionalParams: any[]) => void;
|
|
374
372
|
error: (message?: any, ...optionalParams: any[]) => void;
|
|
375
373
|
};
|
|
376
|
-
getLogLevel: () => "verbose" | "
|
|
377
|
-
setLogLevel: (newLogLevel: "verbose" | "
|
|
374
|
+
getLogLevel: () => "verbose" | "info" | "warn" | "error";
|
|
375
|
+
setLogLevel: (newLogLevel: "verbose" | "info" | "warn" | "error") => void;
|
|
378
376
|
INDENT_TOKEN: string;
|
|
379
377
|
isColorSupported: boolean;
|
|
380
378
|
HeadlessBrowser: typeof HeadlessBrowser;
|
|
381
|
-
prepareServer: ({ webpackConfigOrServeUrl, port, remotionRoot, concurrency,
|
|
379
|
+
prepareServer: ({ webpackConfigOrServeUrl, port, remotionRoot, concurrency, logLevel, indent, }: {
|
|
382
380
|
webpackConfigOrServeUrl: string;
|
|
383
381
|
port: number | null;
|
|
384
382
|
remotionRoot: string;
|
|
385
383
|
concurrency: number;
|
|
386
|
-
|
|
384
|
+
logLevel: "verbose" | "info" | "warn" | "error";
|
|
387
385
|
indent: boolean;
|
|
388
386
|
}) => Promise<import("./prepare-server").RemotionServer>;
|
|
389
387
|
makeOrReuseServer: (server: import("./prepare-server").RemotionServer | undefined, config: {
|
|
@@ -391,7 +389,7 @@ export declare const RenderInternals: {
|
|
|
391
389
|
port: number | null;
|
|
392
390
|
remotionRoot: string;
|
|
393
391
|
concurrency: number;
|
|
394
|
-
|
|
392
|
+
logLevel: "verbose" | "info" | "warn" | "error";
|
|
395
393
|
indent: boolean;
|
|
396
394
|
}, { onDownload, onError, }: {
|
|
397
395
|
onError: (err: Error) => void;
|
|
@@ -405,10 +403,9 @@ export declare const RenderInternals: {
|
|
|
405
403
|
output: string | null;
|
|
406
404
|
frame: number;
|
|
407
405
|
inputProps: Record<string, unknown>;
|
|
408
|
-
imageFormat: "
|
|
406
|
+
imageFormat: "png" | "jpeg" | "pdf" | "webp";
|
|
409
407
|
jpegQuality: number;
|
|
410
408
|
puppeteerInstance: HeadlessBrowser | null;
|
|
411
|
-
dumpBrowserLogs: boolean;
|
|
412
409
|
envVariables: Record<string, string>;
|
|
413
410
|
overwrite: boolean;
|
|
414
411
|
browserExecutable: import("./browser-executable").BrowserExecutable;
|
|
@@ -420,20 +417,20 @@ export declare const RenderInternals: {
|
|
|
420
417
|
cancelSignal: import("./make-cancel-signal").CancelSignal | null;
|
|
421
418
|
indent: boolean;
|
|
422
419
|
server: import("./prepare-server").RemotionServer | undefined;
|
|
423
|
-
|
|
420
|
+
logLevel: "verbose" | "info" | "warn" | "error";
|
|
424
421
|
serveUrl: string;
|
|
425
422
|
port: number | null;
|
|
426
423
|
}) => Promise<{
|
|
427
424
|
buffer: Buffer | null;
|
|
428
425
|
}>;
|
|
429
|
-
internalOpenBrowser: ({ browser, browserExecutable, chromiumOptions, forceDeviceScaleFactor, indent,
|
|
430
|
-
shouldDumpIo: boolean;
|
|
426
|
+
internalOpenBrowser: ({ browser, browserExecutable, chromiumOptions, forceDeviceScaleFactor, indent, viewport, logLevel, }: {
|
|
431
427
|
browserExecutable: string | null;
|
|
432
428
|
chromiumOptions: import("./open-browser").ChromiumOptions;
|
|
433
429
|
forceDeviceScaleFactor: number | undefined;
|
|
434
430
|
viewport: import("./browser/PuppeteerViewport").Viewport | null;
|
|
435
431
|
indent: boolean;
|
|
436
432
|
browser: import("./browser").Browser;
|
|
433
|
+
logLevel: "verbose" | "info" | "warn" | "error";
|
|
437
434
|
}) => Promise<HeadlessBrowser>;
|
|
438
435
|
internalSelectComposition: (options: {
|
|
439
436
|
inputProps: Record<string, unknown>;
|
|
@@ -446,11 +443,11 @@ export declare const RenderInternals: {
|
|
|
446
443
|
port: number | null;
|
|
447
444
|
indent: boolean;
|
|
448
445
|
server: import("./prepare-server").RemotionServer | undefined;
|
|
449
|
-
|
|
446
|
+
logLevel: "verbose" | "info" | "warn" | "error";
|
|
450
447
|
serveUrl: string;
|
|
451
448
|
id: string;
|
|
452
449
|
}) => Promise<import("remotion").AnyCompMetadata>;
|
|
453
|
-
internalGetCompositions: ({ browserExecutable, chromiumOptions, envVariables, indent, inputProps, onBrowserLog, port, puppeteerInstance, serveUrlOrWebpackUrl, server, timeoutInMilliseconds,
|
|
450
|
+
internalGetCompositions: ({ browserExecutable, chromiumOptions, envVariables, indent, inputProps, onBrowserLog, port, puppeteerInstance, serveUrlOrWebpackUrl, server, timeoutInMilliseconds, logLevel, }: {
|
|
454
451
|
inputProps: Record<string, unknown>;
|
|
455
452
|
envVariables: Record<string, string>;
|
|
456
453
|
puppeteerInstance: HeadlessBrowser | undefined;
|
|
@@ -461,11 +458,11 @@ export declare const RenderInternals: {
|
|
|
461
458
|
port: number | null;
|
|
462
459
|
server: import("./prepare-server").RemotionServer | undefined;
|
|
463
460
|
indent: boolean;
|
|
464
|
-
|
|
461
|
+
logLevel: "verbose" | "info" | "warn" | "error";
|
|
465
462
|
serveUrlOrWebpackUrl: string;
|
|
466
463
|
}) => Promise<import("remotion").AnyCompMetadata[]>;
|
|
467
|
-
internalRenderFrames: ({ browserExecutable, cancelSignal, chromiumOptions, composition, concurrency,
|
|
468
|
-
internalRenderMedia: ({ proResProfile, crf, composition, inputProps, pixelFormat, codec, envVariables, frameRange, puppeteerInstance, outputLocation, onProgress, overwrite, onDownload,
|
|
464
|
+
internalRenderFrames: ({ browserExecutable, cancelSignal, chromiumOptions, composition, concurrency, envVariables, everyNthFrame, frameRange, imageFormat, indent, inputProps, jpegQuality, muted, onBrowserLog, onDownload, onFrameBuffer, onFrameUpdate, onStart, outputDir, port, puppeteerInstance, scale, server, timeoutInMilliseconds, logLevel, webpackBundleOrServeUrl, }: import("./render-frames").InternalRenderFramesOptions) => Promise<import("./types").RenderFramesOutput>;
|
|
465
|
+
internalRenderMedia: ({ proResProfile, 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, audioCodec, concurrency, disallowParallelEncoding, everyNthFrame, imageFormat: provisionalImageFormat, indent, jpegQuality, numberOfGifLoops, onCtrlCExit, preferLossless, serveUrl, server: reusedServer, logLevel, }: import("./render-media").InternalRenderMediaOptions) => Promise<{
|
|
469
466
|
buffer: Buffer | null;
|
|
470
467
|
slowestFrames: import("./render-media").SlowFrame[];
|
|
471
468
|
}>;
|
package/dist/logger.d.ts
CHANGED
|
@@ -6,7 +6,6 @@ type LogOptions = {
|
|
|
6
6
|
};
|
|
7
7
|
type VerboseLogOptions = LogOptions & {
|
|
8
8
|
tag?: string;
|
|
9
|
-
secondTag?: string;
|
|
10
9
|
};
|
|
11
10
|
export declare const verboseTag: (str: string) => string;
|
|
12
11
|
export declare const secondverboseTag: (str: string) => string;
|
|
@@ -19,6 +18,6 @@ export declare const Log: {
|
|
|
19
18
|
warnAdvanced: (options: LogOptions, message?: any, ...optionalParams: any[]) => void;
|
|
20
19
|
error: (message?: any, ...optionalParams: any[]) => void;
|
|
21
20
|
};
|
|
22
|
-
export declare const getLogLevel: () => "verbose" | "
|
|
21
|
+
export declare const getLogLevel: () => "verbose" | "info" | "warn" | "error";
|
|
23
22
|
export declare const setLogLevel: (newLogLevel: LogLevel) => void;
|
|
24
23
|
export {};
|
package/dist/logger.js
CHANGED
|
@@ -22,12 +22,7 @@ exports.Log = {
|
|
|
22
22
|
if ((0, log_level_1.isEqualOrBelowLogLevel)(options.logLevel, 'verbose')) {
|
|
23
23
|
return console.log(...[
|
|
24
24
|
options.indent ? exports.INDENT_TOKEN : null,
|
|
25
|
-
|
|
26
|
-
options.tag ? (0, exports.verboseTag)(options.tag) : null,
|
|
27
|
-
options.secondTag ? (0, exports.secondverboseTag)(options.secondTag) : null,
|
|
28
|
-
]
|
|
29
|
-
.filter(truthy_1.truthy)
|
|
30
|
-
.join(''),
|
|
25
|
+
options.tag ? (0, exports.verboseTag)(options.tag) : null,
|
|
31
26
|
...args.map((a) => chalk_1.chalk.gray(a)),
|
|
32
27
|
].filter(truthy_1.truthy));
|
|
33
28
|
}
|
|
@@ -36,12 +31,12 @@ exports.Log = {
|
|
|
36
31
|
exports.Log.infoAdvanced({ indent: false, logLevel: (0, exports.getLogLevel)() }, ...args);
|
|
37
32
|
},
|
|
38
33
|
infoAdvanced: (options, ...args) => {
|
|
39
|
-
|
|
40
|
-
return console.log(...[options.indent ? exports.INDENT_TOKEN : null, ...args].filter(truthy_1.truthy));
|
|
41
|
-
}
|
|
34
|
+
return console.log(...[options.indent ? exports.INDENT_TOKEN : null, ...args].filter(truthy_1.truthy));
|
|
42
35
|
},
|
|
43
36
|
warn: (...args) => {
|
|
44
|
-
|
|
37
|
+
if ((0, log_level_1.isEqualOrBelowLogLevel)((0, exports.getLogLevel)(), 'warn')) {
|
|
38
|
+
exports.Log.warnAdvanced({ indent: false, logLevel: (0, exports.getLogLevel)() }, ...args);
|
|
39
|
+
}
|
|
45
40
|
},
|
|
46
41
|
warnAdvanced: (options, ...args) => {
|
|
47
42
|
if ((0, log_level_1.isEqualOrBelowLogLevel)(options.logLevel, 'warn')) {
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import type { RequestListener } from 'node:http';
|
|
2
2
|
import type { DownloadMap } from './assets/download-map';
|
|
3
3
|
import type { Compositor } from './compositor/compositor';
|
|
4
|
+
import type { LogLevel } from './log-level';
|
|
4
5
|
export declare const extractUrlAndSourceFromUrl: (url: string) => {
|
|
5
6
|
src: string;
|
|
6
7
|
time: number;
|
|
7
8
|
transparent: boolean;
|
|
8
9
|
};
|
|
9
|
-
export declare const startOffthreadVideoServer: ({ downloadMap, concurrency,
|
|
10
|
+
export declare const startOffthreadVideoServer: ({ downloadMap, concurrency, logLevel, indent, }: {
|
|
10
11
|
downloadMap: DownloadMap;
|
|
11
12
|
concurrency: number;
|
|
12
|
-
|
|
13
|
+
logLevel: LogLevel;
|
|
13
14
|
indent: boolean;
|
|
14
15
|
}) => {
|
|
15
16
|
listener: RequestListener;
|
|
@@ -4,6 +4,7 @@ exports.OffthreadVideoServerEmitter = exports.startOffthreadVideoServer = export
|
|
|
4
4
|
const node_url_1 = require("node:url");
|
|
5
5
|
const download_and_map_assets_to_file_1 = require("./assets/download-and-map-assets-to-file");
|
|
6
6
|
const compositor_1 = require("./compositor/compositor");
|
|
7
|
+
const log_level_1 = require("./log-level");
|
|
7
8
|
const extractUrlAndSourceFromUrl = (url) => {
|
|
8
9
|
const parsed = new URL(url, 'http://localhost');
|
|
9
10
|
const query = parsed.search;
|
|
@@ -27,13 +28,13 @@ const extractUrlAndSourceFromUrl = (url) => {
|
|
|
27
28
|
};
|
|
28
29
|
};
|
|
29
30
|
exports.extractUrlAndSourceFromUrl = extractUrlAndSourceFromUrl;
|
|
30
|
-
const startOffthreadVideoServer = ({ downloadMap, concurrency,
|
|
31
|
+
const startOffthreadVideoServer = ({ downloadMap, concurrency, logLevel, indent, }) => {
|
|
31
32
|
const events = new OffthreadVideoServerEmitter();
|
|
32
33
|
const compositor = (0, compositor_1.startCompositor)('StartLongRunningProcess', {
|
|
33
34
|
concurrency,
|
|
34
35
|
maximum_frame_cache_items: (0, compositor_1.getIdealMaximumFrameCacheItems)(),
|
|
35
|
-
verbose,
|
|
36
|
-
}, indent);
|
|
36
|
+
verbose: (0, log_level_1.isEqualOrBelowLogLevel)(logLevel, 'verbose'),
|
|
37
|
+
}, logLevel, indent);
|
|
37
38
|
return {
|
|
38
39
|
close: () => {
|
|
39
40
|
compositor.finishCommands();
|
package/dist/open-browser.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { Browser } from './browser';
|
|
2
2
|
import type { HeadlessBrowser } from './browser/Browser';
|
|
3
3
|
import type { Viewport } from './browser/PuppeteerViewport';
|
|
4
|
+
import { type LogLevel } from './log-level';
|
|
4
5
|
declare const validRenderers: readonly ["swangle", "angle", "egl", "swiftshader"];
|
|
5
6
|
type OpenGlRenderer = typeof validRenderers[number];
|
|
6
7
|
export type ChromiumOptions = {
|
|
@@ -12,13 +13,13 @@ export type ChromiumOptions = {
|
|
|
12
13
|
};
|
|
13
14
|
export declare const killAllBrowsers: () => Promise<void>;
|
|
14
15
|
type InternalOpenBrowserOptions = {
|
|
15
|
-
shouldDumpIo: boolean;
|
|
16
16
|
browserExecutable: string | null;
|
|
17
17
|
chromiumOptions: ChromiumOptions;
|
|
18
18
|
forceDeviceScaleFactor: number | undefined;
|
|
19
19
|
viewport: Viewport | null;
|
|
20
20
|
indent: boolean;
|
|
21
21
|
browser: Browser;
|
|
22
|
+
logLevel: LogLevel;
|
|
22
23
|
};
|
|
23
24
|
export type OpenBrowserOptions = {
|
|
24
25
|
shouldDumpIo?: boolean;
|
|
@@ -26,7 +27,7 @@ export type OpenBrowserOptions = {
|
|
|
26
27
|
chromiumOptions?: ChromiumOptions;
|
|
27
28
|
forceDeviceScaleFactor?: number;
|
|
28
29
|
};
|
|
29
|
-
export declare const internalOpenBrowser: ({ browser, browserExecutable, chromiumOptions, forceDeviceScaleFactor, indent,
|
|
30
|
+
export declare const internalOpenBrowser: ({ browser, browserExecutable, chromiumOptions, forceDeviceScaleFactor, indent, viewport, logLevel, }: InternalOpenBrowserOptions) => Promise<HeadlessBrowser>;
|
|
30
31
|
/**
|
|
31
32
|
* @description Opens a Chrome or Chromium browser instance.
|
|
32
33
|
* @see [Documentation](https://www.remotion.dev/docs/renderer/open-browser)
|
package/dist/open-browser.js
CHANGED
|
@@ -4,6 +4,7 @@ exports.openBrowser = exports.internalOpenBrowser = exports.killAllBrowsers = vo
|
|
|
4
4
|
const node_1 = require("./browser/node");
|
|
5
5
|
const get_local_browser_executable_1 = require("./get-local-browser-executable");
|
|
6
6
|
const get_video_threads_flag_1 = require("./get-video-threads-flag");
|
|
7
|
+
const log_level_1 = require("./log-level");
|
|
7
8
|
const validate_opengl_renderer_1 = require("./validate-opengl-renderer");
|
|
8
9
|
const validRenderers = ['swangle', 'angle', 'egl', 'swiftshader'];
|
|
9
10
|
const getOpenGlRenderer = (option) => {
|
|
@@ -21,13 +22,13 @@ const browserInstances = [];
|
|
|
21
22
|
const killAllBrowsers = async () => {
|
|
22
23
|
for (const browser of browserInstances) {
|
|
23
24
|
try {
|
|
24
|
-
await browser.close(true);
|
|
25
|
+
await browser.close(true, 'info', false);
|
|
25
26
|
}
|
|
26
27
|
catch (err) { }
|
|
27
28
|
}
|
|
28
29
|
};
|
|
29
30
|
exports.killAllBrowsers = killAllBrowsers;
|
|
30
|
-
const internalOpenBrowser = async ({ browser, browserExecutable, chromiumOptions, forceDeviceScaleFactor, indent,
|
|
31
|
+
const internalOpenBrowser = async ({ browser, browserExecutable, chromiumOptions, forceDeviceScaleFactor, indent, viewport, logLevel, }) => {
|
|
31
32
|
var _a, _b;
|
|
32
33
|
if (browser === 'firefox') {
|
|
33
34
|
throw new TypeError('Firefox supported is not yet turned on. Stay tuned for the future.');
|
|
@@ -38,7 +39,8 @@ const internalOpenBrowser = async ({ browser, browserExecutable, chromiumOptions
|
|
|
38
39
|
const browserInstance = await node_1.puppeteer.launch({
|
|
39
40
|
executablePath,
|
|
40
41
|
product: browser,
|
|
41
|
-
dumpio:
|
|
42
|
+
dumpio: (0, log_level_1.isEqualOrBelowLogLevel)(logLevel, 'verbose'),
|
|
43
|
+
logLevel,
|
|
42
44
|
indent,
|
|
43
45
|
args: [
|
|
44
46
|
'about:blank',
|
|
@@ -109,7 +111,7 @@ const internalOpenBrowser = async ({ browser, browserExecutable, chromiumOptions
|
|
|
109
111
|
deviceScaleFactor: 1,
|
|
110
112
|
},
|
|
111
113
|
});
|
|
112
|
-
const pages = await browserInstance.pages();
|
|
114
|
+
const pages = await browserInstance.pages(logLevel, indent);
|
|
113
115
|
await pages[0].close();
|
|
114
116
|
browserInstances.push(browserInstance);
|
|
115
117
|
return browserInstance;
|
|
@@ -127,8 +129,8 @@ const openBrowser = (browser, options) => {
|
|
|
127
129
|
chromiumOptions: chromiumOptions !== null && chromiumOptions !== void 0 ? chromiumOptions : {},
|
|
128
130
|
forceDeviceScaleFactor,
|
|
129
131
|
indent: false,
|
|
130
|
-
shouldDumpIo: shouldDumpIo !== null && shouldDumpIo !== void 0 ? shouldDumpIo : false,
|
|
131
132
|
viewport: null,
|
|
133
|
+
logLevel: shouldDumpIo ? 'verbose' : 'info',
|
|
132
134
|
});
|
|
133
135
|
};
|
|
134
136
|
exports.openBrowser = openBrowser;
|
package/dist/perf.js
CHANGED
|
@@ -29,8 +29,10 @@ exports.stopPerfMeasure = stopPerfMeasure;
|
|
|
29
29
|
const getPerf = () => {
|
|
30
30
|
return [
|
|
31
31
|
'Render performance:',
|
|
32
|
-
...Object.keys(perf)
|
|
33
|
-
|
|
32
|
+
...Object.keys(perf)
|
|
33
|
+
.filter((p) => perf[p].length)
|
|
34
|
+
.map((p) => {
|
|
35
|
+
return ` ${p} => ${perf[p].reduce((a, b) => a + b, 0) / perf[p].length}ms (n = ${perf[p].length})`;
|
|
34
36
|
}),
|
|
35
37
|
];
|
|
36
38
|
};
|
package/dist/prepare-server.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ import type { DownloadMap } from './assets/download-map';
|
|
|
3
3
|
import type { Compositor } from './compositor/compositor';
|
|
4
4
|
import type { OffthreadVideoServerEmitter } from './offthread-video-server';
|
|
5
5
|
import type { AnySourceMapConsumer } from './symbolicate-stacktrace';
|
|
6
|
+
import type { LogLevel } from './log-level';
|
|
6
7
|
export type RemotionServer = {
|
|
7
8
|
serveUrl: string;
|
|
8
9
|
closeServer: (force: boolean) => Promise<unknown>;
|
|
@@ -17,10 +18,10 @@ type PrepareServerOptions = {
|
|
|
17
18
|
port: number | null;
|
|
18
19
|
remotionRoot: string;
|
|
19
20
|
concurrency: number;
|
|
20
|
-
|
|
21
|
+
logLevel: LogLevel;
|
|
21
22
|
indent: boolean;
|
|
22
23
|
};
|
|
23
|
-
export declare const prepareServer: ({ webpackConfigOrServeUrl, port, remotionRoot, concurrency,
|
|
24
|
+
export declare const prepareServer: ({ webpackConfigOrServeUrl, port, remotionRoot, concurrency, logLevel, indent, }: PrepareServerOptions) => Promise<RemotionServer>;
|
|
24
25
|
export declare const makeOrReuseServer: (server: RemotionServer | undefined, config: PrepareServerOptions, { onDownload, onError, }: {
|
|
25
26
|
onError: (err: Error) => void;
|
|
26
27
|
onDownload: RenderMediaOnDownload | null;
|
package/dist/prepare-server.js
CHANGED
|
@@ -14,16 +14,16 @@ const logger_1 = require("./logger");
|
|
|
14
14
|
const serve_static_1 = require("./serve-static");
|
|
15
15
|
const symbolicate_stacktrace_1 = require("./symbolicate-stacktrace");
|
|
16
16
|
const wait_for_symbolication_error_to_be_done_1 = require("./wait-for-symbolication-error-to-be-done");
|
|
17
|
-
const prepareServer = async ({ webpackConfigOrServeUrl, port, remotionRoot, concurrency,
|
|
17
|
+
const prepareServer = async ({ webpackConfigOrServeUrl, port, remotionRoot, concurrency, logLevel, indent, }) => {
|
|
18
18
|
const downloadMap = (0, download_map_1.makeDownloadMap)();
|
|
19
|
-
logger_1.Log.verboseAdvanced({ indent, logLevel
|
|
19
|
+
logger_1.Log.verboseAdvanced({ indent, logLevel }, 'Created directory for temporary files', downloadMap.assetDir);
|
|
20
20
|
if ((0, is_serve_url_1.isServeUrl)(webpackConfigOrServeUrl)) {
|
|
21
21
|
const { port: offthreadPort, close: closeProxy, compositor: comp, events, } = await (0, serve_static_1.serveStatic)(null, {
|
|
22
22
|
port,
|
|
23
23
|
downloadMap,
|
|
24
24
|
remotionRoot,
|
|
25
25
|
concurrency,
|
|
26
|
-
|
|
26
|
+
logLevel,
|
|
27
27
|
indent,
|
|
28
28
|
});
|
|
29
29
|
return Promise.resolve({
|
|
@@ -51,7 +51,7 @@ const prepareServer = async ({ webpackConfigOrServeUrl, port, remotionRoot, conc
|
|
|
51
51
|
downloadMap,
|
|
52
52
|
remotionRoot,
|
|
53
53
|
concurrency,
|
|
54
|
-
|
|
54
|
+
logLevel,
|
|
55
55
|
indent,
|
|
56
56
|
});
|
|
57
57
|
return Promise.resolve({
|
|
@@ -4,6 +4,17 @@ import type { VideoImageFormat } from './image-format';
|
|
|
4
4
|
import type { CancelSignal } from './make-cancel-signal';
|
|
5
5
|
import type { PixelFormat } from './pixel-format';
|
|
6
6
|
import type { ProResProfile } from './prores-profile';
|
|
7
|
+
import type { LogLevel } from './log-level';
|
|
8
|
+
type RunningStatus = {
|
|
9
|
+
type: 'running';
|
|
10
|
+
} | {
|
|
11
|
+
type: 'quit-successfully';
|
|
12
|
+
stderr: string;
|
|
13
|
+
} | {
|
|
14
|
+
type: 'quit-with-error';
|
|
15
|
+
exitCode: number;
|
|
16
|
+
stderr: string;
|
|
17
|
+
};
|
|
7
18
|
type PreStitcherOptions = {
|
|
8
19
|
fps: number;
|
|
9
20
|
width: number;
|
|
@@ -14,7 +25,7 @@ type PreStitcherOptions = {
|
|
|
14
25
|
crf: number | null | undefined;
|
|
15
26
|
onProgress: (progress: number) => void;
|
|
16
27
|
proResProfile: ProResProfile | undefined;
|
|
17
|
-
|
|
28
|
+
logLevel: LogLevel;
|
|
18
29
|
imageFormat: VideoImageFormat;
|
|
19
30
|
ffmpegOverride: FfmpegOverrideFn;
|
|
20
31
|
signal: CancelSignal;
|
|
@@ -24,5 +35,6 @@ type PreStitcherOptions = {
|
|
|
24
35
|
export declare const prespawnFfmpeg: (options: PreStitcherOptions) => {
|
|
25
36
|
task: import("execa").ExecaChildProcess<string>;
|
|
26
37
|
getLogs: () => string;
|
|
38
|
+
getExitStatus: () => RunningStatus;
|
|
27
39
|
};
|
|
28
40
|
export {};
|
package/dist/prespawn-ffmpeg.js
CHANGED
|
@@ -29,34 +29,6 @@ const prespawnFfmpeg = (options) => {
|
|
|
29
29
|
if (encoderName === null) {
|
|
30
30
|
throw new TypeError('encoderName is null: ' + JSON.stringify(options));
|
|
31
31
|
}
|
|
32
|
-
const supportsCrf = codec !== 'prores';
|
|
33
|
-
logger_1.Log.verboseAdvanced({
|
|
34
|
-
indent: options.indent,
|
|
35
|
-
logLevel: options.verbose ? 'verbose' : 'info',
|
|
36
|
-
tag: 'prespawnFfmpeg()',
|
|
37
|
-
}, 'encoder', encoderName);
|
|
38
|
-
logger_1.Log.verboseAdvanced({
|
|
39
|
-
indent: options.indent,
|
|
40
|
-
logLevel: options.verbose ? 'verbose' : 'info',
|
|
41
|
-
tag: 'prespawnFfmpeg()',
|
|
42
|
-
}, 'pixelFormat', pixelFormat);
|
|
43
|
-
if (supportsCrf) {
|
|
44
|
-
logger_1.Log.verboseAdvanced({
|
|
45
|
-
indent: options.indent,
|
|
46
|
-
logLevel: options.verbose ? 'verbose' : 'info',
|
|
47
|
-
tag: 'prespawnFfmpeg()',
|
|
48
|
-
}, 'pixelFormat', options.crf);
|
|
49
|
-
}
|
|
50
|
-
logger_1.Log.verboseAdvanced({
|
|
51
|
-
indent: options.indent,
|
|
52
|
-
logLevel: options.verbose ? 'verbose' : 'info',
|
|
53
|
-
tag: 'prespawnFfmpeg()',
|
|
54
|
-
}, 'codec', codec);
|
|
55
|
-
logger_1.Log.verboseAdvanced({
|
|
56
|
-
indent: options.indent,
|
|
57
|
-
logLevel: options.verbose ? 'verbose' : 'info',
|
|
58
|
-
tag: 'prespawnFfmpeg()',
|
|
59
|
-
}, 'proResProfileName', proResProfileName);
|
|
60
32
|
(0, pixel_format_1.validateSelectedPixelFormatAndCodecCombination)(pixelFormat, codec);
|
|
61
33
|
const ffmpegArgs = [
|
|
62
34
|
['-r', options.fps.toFixed(2)],
|
|
@@ -86,12 +58,12 @@ const prespawnFfmpeg = (options) => {
|
|
|
86
58
|
];
|
|
87
59
|
logger_1.Log.verboseAdvanced({
|
|
88
60
|
indent: options.indent,
|
|
89
|
-
logLevel: options.
|
|
61
|
+
logLevel: options.logLevel,
|
|
90
62
|
tag: 'prespawnFfmpeg()',
|
|
91
63
|
}, 'Generated FFMPEG command:');
|
|
92
64
|
logger_1.Log.verboseAdvanced({
|
|
93
65
|
indent: options.indent,
|
|
94
|
-
logLevel: options.
|
|
66
|
+
logLevel: options.logLevel,
|
|
95
67
|
tag: 'prespawnFfmpeg()',
|
|
96
68
|
}, ffmpegArgs.join(' '));
|
|
97
69
|
const ffmpegString = ffmpegArgs.flat(2).filter(Boolean);
|
|
@@ -113,6 +85,24 @@ const prespawnFfmpeg = (options) => {
|
|
|
113
85
|
}
|
|
114
86
|
}
|
|
115
87
|
});
|
|
116
|
-
|
|
88
|
+
let exitCode = {
|
|
89
|
+
type: 'running',
|
|
90
|
+
};
|
|
91
|
+
task.on('exit', (code) => {
|
|
92
|
+
if (typeof code === 'number' && code > 0) {
|
|
93
|
+
exitCode = {
|
|
94
|
+
type: 'quit-with-error',
|
|
95
|
+
exitCode: code,
|
|
96
|
+
stderr: ffmpegOutput,
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
exitCode = {
|
|
101
|
+
type: 'quit-successfully',
|
|
102
|
+
stderr: ffmpegOutput,
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
return { task, getLogs: () => ffmpegOutput, getExitStatus: () => exitCode };
|
|
117
107
|
};
|
|
118
108
|
exports.prespawnFfmpeg = prespawnFfmpeg;
|
package/dist/render-frames.d.ts
CHANGED
|
@@ -10,6 +10,7 @@ import type { CancelSignal } from './make-cancel-signal';
|
|
|
10
10
|
import type { ChromiumOptions } from './open-browser';
|
|
11
11
|
import type { RemotionServer } from './prepare-server';
|
|
12
12
|
import type { OnStartData, RenderFramesOutput } from './types';
|
|
13
|
+
import { type LogLevel } from './log-level';
|
|
13
14
|
export type InternalRenderFramesOptions = {
|
|
14
15
|
onStart: null | ((data: OnStartData) => void);
|
|
15
16
|
onFrameUpdate: null | ((framesRendered: number, frameIndex: number, timeToRenderInMilliseconds: number) => void);
|
|
@@ -20,7 +21,6 @@ export type InternalRenderFramesOptions = {
|
|
|
20
21
|
jpegQuality: number;
|
|
21
22
|
frameRange: FrameRange | null;
|
|
22
23
|
everyNthFrame: number;
|
|
23
|
-
dumpBrowserLogs: boolean;
|
|
24
24
|
puppeteerInstance: HeadlessBrowser | undefined;
|
|
25
25
|
browserExecutable: BrowserExecutable | null;
|
|
26
26
|
onBrowserLog: null | ((log: BrowserLog) => void);
|
|
@@ -37,7 +37,7 @@ export type InternalRenderFramesOptions = {
|
|
|
37
37
|
muted: boolean;
|
|
38
38
|
concurrency: number | string | null;
|
|
39
39
|
webpackBundleOrServeUrl: string;
|
|
40
|
-
|
|
40
|
+
logLevel: LogLevel;
|
|
41
41
|
};
|
|
42
42
|
export type RenderFramesOptions = {
|
|
43
43
|
onStart: (data: OnStartData) => void;
|
|
@@ -53,7 +53,15 @@ export type RenderFramesOptions = {
|
|
|
53
53
|
jpegQuality?: number;
|
|
54
54
|
frameRange?: FrameRange | null;
|
|
55
55
|
everyNthFrame?: number;
|
|
56
|
+
/**
|
|
57
|
+
* @deprecated Use "logLevel": "verbose" instead
|
|
58
|
+
*/
|
|
56
59
|
dumpBrowserLogs?: boolean;
|
|
60
|
+
/**
|
|
61
|
+
* @deprecated Use "logLevel" instead
|
|
62
|
+
*/
|
|
63
|
+
verbose?: boolean;
|
|
64
|
+
logLevel?: LogLevel;
|
|
57
65
|
puppeteerInstance?: HeadlessBrowser;
|
|
58
66
|
browserExecutable?: BrowserExecutable;
|
|
59
67
|
onBrowserLog?: (log: BrowserLog) => void;
|
|
@@ -68,9 +76,8 @@ export type RenderFramesOptions = {
|
|
|
68
76
|
muted?: boolean;
|
|
69
77
|
concurrency?: number | string | null;
|
|
70
78
|
serveUrl: string;
|
|
71
|
-
verbose?: boolean;
|
|
72
79
|
};
|
|
73
|
-
export declare const internalRenderFrames: ({ browserExecutable, cancelSignal, chromiumOptions, composition, concurrency,
|
|
80
|
+
export declare const internalRenderFrames: ({ browserExecutable, cancelSignal, chromiumOptions, composition, concurrency, envVariables, everyNthFrame, frameRange, imageFormat, indent, inputProps, jpegQuality, muted, onBrowserLog, onDownload, onFrameBuffer, onFrameUpdate, onStart, outputDir, port, puppeteerInstance, scale, server, timeoutInMilliseconds, logLevel, webpackBundleOrServeUrl, }: InternalRenderFramesOptions) => Promise<RenderFramesOutput>;
|
|
74
81
|
/**
|
|
75
82
|
* @description Renders a series of images using Puppeteer and computes information for mixing audio.
|
|
76
83
|
* @see [Documentation](https://www.remotion.dev/docs/renderer/render-frames)
|