@remotion/renderer 4.0.0-alpha17 → 4.0.0-alpha18
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 +14 -6
- 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/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 +19 -20
- package/dist/logger.d.ts +1 -1
- package/dist/logger.js +4 -4
- 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/stitch-frames-to-video.d.ts +2 -1
- package/dist/stitch-frames-to-video.js +12 -22
- package/package.json +9 -9
package/dist/render-media.d.ts
CHANGED
|
@@ -15,6 +15,7 @@ import type { PixelFormat } from './pixel-format';
|
|
|
15
15
|
import type { RemotionServer } from './prepare-server';
|
|
16
16
|
import type { ProResProfile } from './prores-profile';
|
|
17
17
|
import type { OnStartData } from './types';
|
|
18
|
+
import { type LogLevel } from './log-level';
|
|
18
19
|
export type StitchingState = 'encoding' | 'muxing';
|
|
19
20
|
export type SlowFrame = {
|
|
20
21
|
frame: number;
|
|
@@ -46,7 +47,6 @@ export type InternalRenderMediaOptions = {
|
|
|
46
47
|
onProgress: RenderMediaOnProgress;
|
|
47
48
|
onDownload: RenderMediaOnDownload;
|
|
48
49
|
proResProfile: ProResProfile | undefined;
|
|
49
|
-
dumpBrowserLogs: boolean;
|
|
50
50
|
onBrowserLog: ((log: BrowserLog) => void) | null;
|
|
51
51
|
onStart: (data: OnStartData) => void;
|
|
52
52
|
timeoutInMilliseconds: number;
|
|
@@ -55,7 +55,7 @@ export type InternalRenderMediaOptions = {
|
|
|
55
55
|
port: number | null;
|
|
56
56
|
cancelSignal: CancelSignal | undefined;
|
|
57
57
|
browserExecutable: BrowserExecutable | null;
|
|
58
|
-
|
|
58
|
+
logLevel: LogLevel;
|
|
59
59
|
onCtrlCExit: (fn: () => void) => void;
|
|
60
60
|
indent: boolean;
|
|
61
61
|
server: RemotionServer | undefined;
|
|
@@ -92,6 +92,9 @@ export type RenderMediaOptions = {
|
|
|
92
92
|
onProgress?: RenderMediaOnProgress;
|
|
93
93
|
onDownload?: RenderMediaOnDownload;
|
|
94
94
|
proResProfile?: ProResProfile;
|
|
95
|
+
/**
|
|
96
|
+
* @deprecated Use "logLevel": "verbose" instead
|
|
97
|
+
*/
|
|
95
98
|
dumpBrowserLogs?: boolean;
|
|
96
99
|
onBrowserLog?: ((log: BrowserLog) => void) | undefined;
|
|
97
100
|
onStart?: (data: OnStartData) => void;
|
|
@@ -101,6 +104,9 @@ export type RenderMediaOptions = {
|
|
|
101
104
|
port?: number | null;
|
|
102
105
|
cancelSignal?: CancelSignal;
|
|
103
106
|
browserExecutable?: BrowserExecutable;
|
|
107
|
+
/**
|
|
108
|
+
* @deprecated Use "logLevel" instead
|
|
109
|
+
*/
|
|
104
110
|
verbose?: boolean;
|
|
105
111
|
preferLossless?: boolean;
|
|
106
112
|
muted?: boolean;
|
|
@@ -112,16 +118,17 @@ export type RenderMediaOptions = {
|
|
|
112
118
|
audioCodec?: AudioCodec | null;
|
|
113
119
|
serveUrl: string;
|
|
114
120
|
concurrency?: number | string | null;
|
|
121
|
+
logLevel?: LogLevel;
|
|
115
122
|
};
|
|
116
123
|
type RenderMediaResult = {
|
|
117
124
|
buffer: Buffer | null;
|
|
118
125
|
slowestFrames: SlowFrame[];
|
|
119
126
|
};
|
|
120
|
-
export declare const internalRenderMedia: ({ proResProfile, crf, composition, inputProps, pixelFormat, codec, envVariables, frameRange, puppeteerInstance, outputLocation, onProgress, overwrite, onDownload,
|
|
127
|
+
export declare const 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, }: InternalRenderMediaOptions) => Promise<RenderMediaResult>;
|
|
121
128
|
/**
|
|
122
129
|
*
|
|
123
130
|
* @description Render a video from a composition
|
|
124
131
|
* @see [Documentation](https://www.remotion.dev/docs/renderer/render-media)
|
|
125
132
|
*/
|
|
126
|
-
export declare const renderMedia: ({ proResProfile, crf, composition, inputProps, pixelFormat, codec, envVariables, frameRange, puppeteerInstance, outputLocation, onProgress, overwrite, onDownload,
|
|
133
|
+
export declare const renderMedia: ({ 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, jpegQuality, concurrency, serveUrl, disallowParallelEncoding, everyNthFrame, imageFormat, numberOfGifLoops, dumpBrowserLogs, preferLossless, verbose, quality, logLevel, }: RenderMediaOptions) => Promise<RenderMediaResult>;
|
|
127
134
|
export {};
|
package/dist/render-media.js
CHANGED
|
@@ -43,7 +43,7 @@ const validate_output_filename_1 = require("./validate-output-filename");
|
|
|
43
43
|
const validate_scale_1 = require("./validate-scale");
|
|
44
44
|
const validate_videobitrate_1 = require("./validate-videobitrate");
|
|
45
45
|
const SLOWEST_FRAME_COUNT = 10;
|
|
46
|
-
const internalRenderMedia = ({ proResProfile, crf, composition, inputProps, pixelFormat, codec, envVariables, frameRange, puppeteerInstance, outputLocation, onProgress, overwrite, onDownload,
|
|
46
|
+
const 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, }) => {
|
|
47
47
|
(0, jpeg_quality_1.validateJpegQuality)(jpegQuality);
|
|
48
48
|
(0, crf_1.validateQualitySettings)({ crf, codec, videoBitrate });
|
|
49
49
|
(0, validate_videobitrate_1.validateBitrate)(audioBitrate, 'audioBitrate');
|
|
@@ -86,30 +86,30 @@ const internalRenderMedia = ({ proResProfile, crf, composition, inputProps, pixe
|
|
|
86
86
|
(0, can_use_parallel_encoding_1.canUseParallelEncoding)(codec);
|
|
87
87
|
logger_1.Log.verboseAdvanced({
|
|
88
88
|
indent,
|
|
89
|
-
logLevel
|
|
89
|
+
logLevel,
|
|
90
90
|
tag: 'renderMedia()',
|
|
91
91
|
}, 'Free memory:', freeMemory, 'Estimated usage parallel encoding', estimatedUsage);
|
|
92
92
|
logger_1.Log.verboseAdvanced({
|
|
93
93
|
indent,
|
|
94
|
-
logLevel
|
|
94
|
+
logLevel,
|
|
95
95
|
tag: 'renderMedia()',
|
|
96
96
|
}, 'Codec supports parallel rendering:', (0, can_use_parallel_encoding_1.canUseParallelEncoding)(codec));
|
|
97
97
|
logger_1.Log.verboseAdvanced({
|
|
98
98
|
indent,
|
|
99
|
-
logLevel
|
|
99
|
+
logLevel,
|
|
100
100
|
tag: 'renderMedia()',
|
|
101
101
|
}, 'User disallowed parallel encoding:', Boolean(disallowParallelEncoding));
|
|
102
102
|
if (parallelEncoding) {
|
|
103
103
|
logger_1.Log.verboseAdvanced({
|
|
104
104
|
indent,
|
|
105
|
-
logLevel
|
|
105
|
+
logLevel,
|
|
106
106
|
tag: 'renderMedia()',
|
|
107
107
|
}, 'Parallel encoding is enabled.');
|
|
108
108
|
}
|
|
109
109
|
else {
|
|
110
110
|
logger_1.Log.verboseAdvanced({
|
|
111
111
|
indent,
|
|
112
|
-
logLevel
|
|
112
|
+
logLevel,
|
|
113
113
|
tag: 'renderMedia()',
|
|
114
114
|
}, 'Parallel encoding is disabled.');
|
|
115
115
|
}
|
|
@@ -167,7 +167,7 @@ const internalRenderMedia = ({ proResProfile, crf, composition, inputProps, pixe
|
|
|
167
167
|
encodedFrames = frame;
|
|
168
168
|
callUpdate();
|
|
169
169
|
},
|
|
170
|
-
|
|
170
|
+
logLevel,
|
|
171
171
|
imageFormat,
|
|
172
172
|
signal: cancelPrestitcher.cancelSignal,
|
|
173
173
|
ffmpegOverride: ffmpegOverride !== null && ffmpegOverride !== void 0 ? ffmpegOverride : (({ args }) => args),
|
|
@@ -225,7 +225,7 @@ const internalRenderMedia = ({ proResProfile, crf, composition, inputProps, pixe
|
|
|
225
225
|
indent,
|
|
226
226
|
port,
|
|
227
227
|
remotionRoot: (0, find_closest_package_json_1.findRemotionRoot)(),
|
|
228
|
-
|
|
228
|
+
logLevel,
|
|
229
229
|
webpackConfigOrServeUrl: serveUrl,
|
|
230
230
|
}, {
|
|
231
231
|
onDownload,
|
|
@@ -263,13 +263,19 @@ const internalRenderMedia = ({ proResProfile, crf, composition, inputProps, pixe
|
|
|
263
263
|
return;
|
|
264
264
|
}
|
|
265
265
|
const id = (0, perf_1.startPerfMeasure)('piping');
|
|
266
|
+
const exitStatus = preStitcher === null || preStitcher === void 0 ? void 0 : preStitcher.getExitStatus();
|
|
267
|
+
if ((exitStatus === null || exitStatus === void 0 ? void 0 : exitStatus.type) === 'quit-successfully') {
|
|
268
|
+
throw new Error(`FFmpeg already quit while trying to pipe frame ${frame} to it. Stderr: ${exitStatus.stderr}}`);
|
|
269
|
+
}
|
|
270
|
+
if ((exitStatus === null || exitStatus === void 0 ? void 0 : exitStatus.type) === 'quit-with-error') {
|
|
271
|
+
throw new Error(`FFmpeg quit with code ${exitStatus.exitCode} while piping frame ${frame}. Stderr: ${exitStatus.stderr}}`);
|
|
272
|
+
}
|
|
266
273
|
(_a = stitcherFfmpeg === null || stitcherFfmpeg === void 0 ? void 0 : stitcherFfmpeg.stdin) === null || _a === void 0 ? void 0 : _a.write(buffer);
|
|
267
274
|
(0, perf_1.stopPerfMeasure)(id);
|
|
268
275
|
setFrameToStitch(Math.min(realFrameRange[1] + 1, frame + everyNthFrame));
|
|
269
276
|
}
|
|
270
277
|
: null,
|
|
271
278
|
webpackBundleOrServeUrl: serveUrl,
|
|
272
|
-
dumpBrowserLogs,
|
|
273
279
|
onBrowserLog,
|
|
274
280
|
onDownload,
|
|
275
281
|
timeoutInMilliseconds,
|
|
@@ -279,7 +285,7 @@ const internalRenderMedia = ({ proResProfile, crf, composition, inputProps, pixe
|
|
|
279
285
|
port,
|
|
280
286
|
cancelSignal: cancelRenderFrames.cancelSignal,
|
|
281
287
|
muted: disableAudio,
|
|
282
|
-
|
|
288
|
+
logLevel,
|
|
283
289
|
indent,
|
|
284
290
|
server,
|
|
285
291
|
});
|
|
@@ -320,7 +326,7 @@ const internalRenderMedia = ({ proResProfile, crf, composition, inputProps, pixe
|
|
|
320
326
|
},
|
|
321
327
|
onDownload,
|
|
322
328
|
numberOfGifLoops,
|
|
323
|
-
|
|
329
|
+
logLevel,
|
|
324
330
|
dir: workingDir,
|
|
325
331
|
cancelSignal: cancelStitcher.cancelSignal,
|
|
326
332
|
muted: disableAudio,
|
|
@@ -394,7 +400,7 @@ exports.internalRenderMedia = internalRenderMedia;
|
|
|
394
400
|
* @description Render a video from a composition
|
|
395
401
|
* @see [Documentation](https://www.remotion.dev/docs/renderer/render-media)
|
|
396
402
|
*/
|
|
397
|
-
const renderMedia = ({ proResProfile, crf, composition, inputProps, pixelFormat, codec, envVariables, frameRange, puppeteerInstance, outputLocation, onProgress, overwrite, onDownload,
|
|
403
|
+
const renderMedia = ({ 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, jpegQuality, concurrency, serveUrl, disallowParallelEncoding, everyNthFrame, imageFormat, numberOfGifLoops, dumpBrowserLogs, preferLossless, verbose, quality, logLevel, }) => {
|
|
398
404
|
var _a;
|
|
399
405
|
if (quality !== undefined) {
|
|
400
406
|
console.warn(`The "quality" option has been renamed. Please use "jpegQuality" instead.`);
|
|
@@ -412,7 +418,6 @@ const renderMedia = ({ proResProfile, crf, composition, inputProps, pixelFormat,
|
|
|
412
418
|
concurrency: concurrency !== null && concurrency !== void 0 ? concurrency : null,
|
|
413
419
|
crf: crf !== null && crf !== void 0 ? crf : null,
|
|
414
420
|
disallowParallelEncoding: disallowParallelEncoding !== null && disallowParallelEncoding !== void 0 ? disallowParallelEncoding : false,
|
|
415
|
-
dumpBrowserLogs: dumpBrowserLogs !== null && dumpBrowserLogs !== void 0 ? dumpBrowserLogs : false,
|
|
416
421
|
enforceAudioTrack: enforceAudioTrack !== null && enforceAudioTrack !== void 0 ? enforceAudioTrack : false,
|
|
417
422
|
envVariables: envVariables !== null && envVariables !== void 0 ? envVariables : {},
|
|
418
423
|
everyNthFrame: everyNthFrame !== null && everyNthFrame !== void 0 ? everyNthFrame : 1,
|
|
@@ -435,7 +440,7 @@ const renderMedia = ({ proResProfile, crf, composition, inputProps, pixelFormat,
|
|
|
435
440
|
scale: scale !== null && scale !== void 0 ? scale : 1,
|
|
436
441
|
timeoutInMilliseconds: timeoutInMilliseconds !== null && timeoutInMilliseconds !== void 0 ? timeoutInMilliseconds : TimeoutSettings_1.DEFAULT_TIMEOUT,
|
|
437
442
|
videoBitrate: videoBitrate !== null && videoBitrate !== void 0 ? videoBitrate : null,
|
|
438
|
-
|
|
443
|
+
logLevel: verbose || dumpBrowserLogs ? 'verbose' : logLevel !== null && logLevel !== void 0 ? logLevel : (0, logger_1.getLogLevel)(),
|
|
439
444
|
preferLossless: preferLossless !== null && preferLossless !== void 0 ? preferLossless : false,
|
|
440
445
|
indent: false,
|
|
441
446
|
onCtrlCExit: () => undefined,
|
package/dist/render-still.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ import type { StillImageFormat } from './image-format';
|
|
|
8
8
|
import type { CancelSignal } from './make-cancel-signal';
|
|
9
9
|
import type { ChromiumOptions } from './open-browser';
|
|
10
10
|
import type { RemotionServer } from './prepare-server';
|
|
11
|
+
import type { LogLevel } from './log-level';
|
|
11
12
|
type InternalRenderStillOptions = {
|
|
12
13
|
composition: AnySmallCompMetadata;
|
|
13
14
|
output: string | null;
|
|
@@ -16,7 +17,6 @@ type InternalRenderStillOptions = {
|
|
|
16
17
|
imageFormat: StillImageFormat;
|
|
17
18
|
jpegQuality: number;
|
|
18
19
|
puppeteerInstance: HeadlessBrowser | null;
|
|
19
|
-
dumpBrowserLogs: boolean;
|
|
20
20
|
envVariables: Record<string, string>;
|
|
21
21
|
overwrite: boolean;
|
|
22
22
|
browserExecutable: BrowserExecutable;
|
|
@@ -28,7 +28,7 @@ type InternalRenderStillOptions = {
|
|
|
28
28
|
cancelSignal: CancelSignal | null;
|
|
29
29
|
indent: boolean;
|
|
30
30
|
server: RemotionServer | undefined;
|
|
31
|
-
|
|
31
|
+
logLevel: LogLevel;
|
|
32
32
|
serveUrl: string;
|
|
33
33
|
port: number | null;
|
|
34
34
|
};
|
|
@@ -41,6 +41,9 @@ export type RenderStillOptions = {
|
|
|
41
41
|
imageFormat?: StillImageFormat;
|
|
42
42
|
jpegQuality?: number;
|
|
43
43
|
puppeteerInstance?: HeadlessBrowser;
|
|
44
|
+
/**
|
|
45
|
+
* @deprecated Use "logLevel": "verbose" instead
|
|
46
|
+
*/
|
|
44
47
|
dumpBrowserLogs?: boolean;
|
|
45
48
|
envVariables?: Record<string, string>;
|
|
46
49
|
overwrite?: boolean;
|
|
@@ -51,6 +54,9 @@ export type RenderStillOptions = {
|
|
|
51
54
|
scale?: number;
|
|
52
55
|
onDownload?: RenderMediaOnDownload;
|
|
53
56
|
cancelSignal?: CancelSignal;
|
|
57
|
+
/**
|
|
58
|
+
* @deprecated Use "logLevel" instead
|
|
59
|
+
*/
|
|
54
60
|
verbose?: boolean;
|
|
55
61
|
serveUrl: string;
|
|
56
62
|
/**
|
package/dist/render-still.js
CHANGED
|
@@ -48,7 +48,8 @@ const set_props_and_env_1 = require("./set-props-and-env");
|
|
|
48
48
|
const take_frame_and_compose_1 = require("./take-frame-and-compose");
|
|
49
49
|
const validate_puppeteer_timeout_1 = require("./validate-puppeteer-timeout");
|
|
50
50
|
const validate_scale_1 = require("./validate-scale");
|
|
51
|
-
const
|
|
51
|
+
const logger_1 = require("./logger");
|
|
52
|
+
const innerRenderStill = async ({ composition, imageFormat = image_format_1.DEFAULT_STILL_IMAGE_FORMAT, serveUrl, puppeteerInstance, onError, inputProps, envVariables, output, frame = 0, overwrite, browserExecutable, timeoutInMilliseconds, chromiumOptions, scale, proxyPort, cancelSignal, jpegQuality, onBrowserLog, compositor, sourceMapContext, downloadMap, logLevel, indent, }) => {
|
|
52
53
|
remotion_1.Internals.validateDimension(composition.height, 'height', 'in the `config` object passed to `renderStill()`');
|
|
53
54
|
remotion_1.Internals.validateDimension(composition.width, 'width', 'in the `config` object passed to `renderStill()`');
|
|
54
55
|
remotion_1.Internals.validateFps(composition.fps, 'in the `config` object of `renderStill()`', false);
|
|
@@ -87,13 +88,13 @@ const innerRenderStill = async ({ composition, imageFormat = image_format_1.DEFA
|
|
|
87
88
|
const browserInstance = puppeteerInstance !== null && puppeteerInstance !== void 0 ? puppeteerInstance : (await (0, open_browser_1.internalOpenBrowser)({
|
|
88
89
|
browser: browser_1.DEFAULT_BROWSER,
|
|
89
90
|
browserExecutable,
|
|
90
|
-
shouldDumpIo: dumpBrowserLogs,
|
|
91
91
|
chromiumOptions,
|
|
92
92
|
forceDeviceScaleFactor: scale,
|
|
93
|
-
indent
|
|
93
|
+
indent,
|
|
94
94
|
viewport: null,
|
|
95
|
+
logLevel,
|
|
95
96
|
}));
|
|
96
|
-
const page = await browserInstance.newPage(sourceMapContext);
|
|
97
|
+
const page = await browserInstance.newPage(sourceMapContext, logLevel, indent);
|
|
97
98
|
await page.setViewport({
|
|
98
99
|
width: composition.width,
|
|
99
100
|
height: composition.height,
|
|
@@ -122,7 +123,7 @@ const innerRenderStill = async ({ composition, imageFormat = image_format_1.DEFA
|
|
|
122
123
|
await page.close();
|
|
123
124
|
}
|
|
124
125
|
else {
|
|
125
|
-
browserInstance.close(true).catch((err) => {
|
|
126
|
+
browserInstance.close(true, logLevel, indent).catch((err) => {
|
|
126
127
|
console.log('Unable to close browser', err);
|
|
127
128
|
});
|
|
128
129
|
}
|
|
@@ -195,7 +196,7 @@ const internalRenderStill = (options) => {
|
|
|
195
196
|
port: options.port,
|
|
196
197
|
remotionRoot: (0, find_closest_package_json_1.findRemotionRoot)(),
|
|
197
198
|
concurrency: 1,
|
|
198
|
-
|
|
199
|
+
logLevel: options.logLevel,
|
|
199
200
|
indent: options.indent,
|
|
200
201
|
}, {
|
|
201
202
|
onDownload: options.onDownload,
|
|
@@ -252,7 +253,6 @@ const renderStill = (options) => {
|
|
|
252
253
|
browserExecutable: browserExecutable !== null && browserExecutable !== void 0 ? browserExecutable : null,
|
|
253
254
|
cancelSignal: cancelSignal !== null && cancelSignal !== void 0 ? cancelSignal : null,
|
|
254
255
|
chromiumOptions: chromiumOptions !== null && chromiumOptions !== void 0 ? chromiumOptions : {},
|
|
255
|
-
dumpBrowserLogs: dumpBrowserLogs !== null && dumpBrowserLogs !== void 0 ? dumpBrowserLogs : false,
|
|
256
256
|
envVariables: envVariables !== null && envVariables !== void 0 ? envVariables : {},
|
|
257
257
|
frame: frame !== null && frame !== void 0 ? frame : 0,
|
|
258
258
|
imageFormat: imageFormat !== null && imageFormat !== void 0 ? imageFormat : image_format_1.DEFAULT_STILL_IMAGE_FORMAT,
|
|
@@ -269,7 +269,7 @@ const renderStill = (options) => {
|
|
|
269
269
|
server: undefined,
|
|
270
270
|
serveUrl,
|
|
271
271
|
timeoutInMilliseconds: timeoutInMilliseconds !== null && timeoutInMilliseconds !== void 0 ? timeoutInMilliseconds : TimeoutSettings_1.DEFAULT_TIMEOUT,
|
|
272
|
-
|
|
272
|
+
logLevel: verbose || dumpBrowserLogs ? 'verbose' : (0, logger_1.getLogLevel)(),
|
|
273
273
|
});
|
|
274
274
|
};
|
|
275
275
|
exports.renderStill = renderStill;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { HeadlessBrowser } from './browser/Browser';
|
|
2
|
+
import type { LogLevel } from './log-level';
|
|
2
3
|
export type BrowserReplacer = {
|
|
3
4
|
getBrowser: () => HeadlessBrowser;
|
|
4
5
|
replaceBrowser: (make: () => Promise<HeadlessBrowser>, makeNewPages: () => Promise<void>) => Promise<HeadlessBrowser>;
|
|
5
6
|
};
|
|
6
|
-
export declare const handleBrowserCrash: (instance: HeadlessBrowser) => BrowserReplacer;
|
|
7
|
+
export declare const handleBrowserCrash: (instance: HeadlessBrowser, logLevel: LogLevel, indent: boolean) => BrowserReplacer;
|
package/dist/replace-browser.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.handleBrowserCrash = void 0;
|
|
4
|
-
const handleBrowserCrash = (instance) => {
|
|
4
|
+
const handleBrowserCrash = (instance, logLevel, indent) => {
|
|
5
5
|
let _instance = instance;
|
|
6
6
|
const waiters = [];
|
|
7
7
|
let replacing = false;
|
|
@@ -20,7 +20,7 @@ const handleBrowserCrash = (instance) => {
|
|
|
20
20
|
try {
|
|
21
21
|
replacing = true;
|
|
22
22
|
await _instance
|
|
23
|
-
.close(true)
|
|
23
|
+
.close(true, logLevel, indent)
|
|
24
24
|
.then(() => {
|
|
25
25
|
console.log('Killed previous browser and making new one');
|
|
26
26
|
})
|
|
@@ -4,6 +4,7 @@ import type { BrowserLog } from './browser-log';
|
|
|
4
4
|
import type { HeadlessBrowser } from './browser/Browser';
|
|
5
5
|
import type { ChromiumOptions } from './open-browser';
|
|
6
6
|
import type { RemotionServer } from './prepare-server';
|
|
7
|
+
import { type LogLevel } from './log-level';
|
|
7
8
|
type InternalSelectCompositionsConfig = {
|
|
8
9
|
inputProps: Record<string, unknown>;
|
|
9
10
|
envVariables: Record<string, string>;
|
|
@@ -15,7 +16,7 @@ type InternalSelectCompositionsConfig = {
|
|
|
15
16
|
port: number | null;
|
|
16
17
|
indent: boolean;
|
|
17
18
|
server: RemotionServer | undefined;
|
|
18
|
-
|
|
19
|
+
logLevel: LogLevel;
|
|
19
20
|
serveUrl: string;
|
|
20
21
|
id: string;
|
|
21
22
|
};
|
|
@@ -11,7 +11,7 @@ const puppeteer_evaluate_1 = require("./puppeteer-evaluate");
|
|
|
11
11
|
const seek_to_frame_1 = require("./seek-to-frame");
|
|
12
12
|
const set_props_and_env_1 = require("./set-props-and-env");
|
|
13
13
|
const validate_puppeteer_timeout_1 = require("./validate-puppeteer-timeout");
|
|
14
|
-
const innerSelectComposition = async ({ page, onBrowserLog, inputProps, envVariables, serveUrl, timeoutInMilliseconds, port, id, indent,
|
|
14
|
+
const innerSelectComposition = async ({ page, onBrowserLog, inputProps, envVariables, serveUrl, timeoutInMilliseconds, port, id, indent, logLevel, }) => {
|
|
15
15
|
if (onBrowserLog) {
|
|
16
16
|
page.on('console', (log) => {
|
|
17
17
|
onBrowserLog({
|
|
@@ -48,7 +48,7 @@ const innerSelectComposition = async ({ page, onBrowserLog, inputProps, envVaria
|
|
|
48
48
|
logger_1.Log.verboseAdvanced({
|
|
49
49
|
indent,
|
|
50
50
|
tag: 'selectComposition()',
|
|
51
|
-
logLevel
|
|
51
|
+
logLevel,
|
|
52
52
|
}, 'Running calculateMetadata()...');
|
|
53
53
|
const time = Date.now();
|
|
54
54
|
const result = await (0, puppeteer_evaluate_1.puppeteerEvaluateWithCatch)({
|
|
@@ -62,13 +62,13 @@ const innerSelectComposition = async ({ page, onBrowserLog, inputProps, envVaria
|
|
|
62
62
|
logger_1.Log.verboseAdvanced({
|
|
63
63
|
indent,
|
|
64
64
|
tag: 'selectComposition()',
|
|
65
|
-
logLevel
|
|
65
|
+
logLevel,
|
|
66
66
|
}, `calculateMetadata() took ${Date.now() - time}ms`);
|
|
67
67
|
return result;
|
|
68
68
|
};
|
|
69
69
|
const internalSelectComposition = async (options) => {
|
|
70
70
|
const cleanup = [];
|
|
71
|
-
const { puppeteerInstance, browserExecutable, chromiumOptions, serveUrl: serveUrlOrWebpackUrl,
|
|
71
|
+
const { puppeteerInstance, browserExecutable, chromiumOptions, serveUrl: serveUrlOrWebpackUrl, logLevel, indent, port, envVariables, id, inputProps, onBrowserLog, server, timeoutInMilliseconds, } = options;
|
|
72
72
|
const { page, cleanup: cleanupPage } = await (0, get_browser_instance_1.getPageAndCleanupFn)({
|
|
73
73
|
passedInInstance: puppeteerInstance,
|
|
74
74
|
browserExecutable,
|
|
@@ -76,7 +76,7 @@ const internalSelectComposition = async (options) => {
|
|
|
76
76
|
context: null,
|
|
77
77
|
forceDeviceScaleFactor: undefined,
|
|
78
78
|
indent,
|
|
79
|
-
|
|
79
|
+
logLevel,
|
|
80
80
|
});
|
|
81
81
|
cleanup.push(() => cleanupPage());
|
|
82
82
|
return new Promise((resolve, reject) => {
|
|
@@ -91,7 +91,7 @@ const internalSelectComposition = async (options) => {
|
|
|
91
91
|
port,
|
|
92
92
|
remotionRoot: (0, find_closest_package_json_1.findRemotionRoot)(),
|
|
93
93
|
concurrency: 1,
|
|
94
|
-
|
|
94
|
+
logLevel,
|
|
95
95
|
indent,
|
|
96
96
|
}, {
|
|
97
97
|
onDownload: () => undefined,
|
|
@@ -111,7 +111,7 @@ const internalSelectComposition = async (options) => {
|
|
|
111
111
|
inputProps,
|
|
112
112
|
onBrowserLog,
|
|
113
113
|
timeoutInMilliseconds,
|
|
114
|
-
|
|
114
|
+
logLevel,
|
|
115
115
|
indent,
|
|
116
116
|
puppeteerInstance,
|
|
117
117
|
server,
|
|
@@ -148,7 +148,7 @@ const selectComposition = (options) => {
|
|
|
148
148
|
port: port !== null && port !== void 0 ? port : null,
|
|
149
149
|
puppeteerInstance,
|
|
150
150
|
timeoutInMilliseconds: timeoutInMilliseconds !== null && timeoutInMilliseconds !== void 0 ? timeoutInMilliseconds : TimeoutSettings_1.DEFAULT_TIMEOUT,
|
|
151
|
-
|
|
151
|
+
logLevel: verbose ? 'verbose' : 'info',
|
|
152
152
|
indent: false,
|
|
153
153
|
server: undefined,
|
|
154
154
|
});
|
package/dist/serve-static.d.ts
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import type { DownloadMap } from './assets/download-map';
|
|
2
2
|
import type { Compositor } from './compositor/compositor';
|
|
3
3
|
import type { OffthreadVideoServerEmitter } from './offthread-video-server';
|
|
4
|
+
import type { LogLevel } from './log-level';
|
|
4
5
|
export declare const serveStatic: (path: string | null, options: {
|
|
5
6
|
port: number | null;
|
|
6
7
|
downloadMap: DownloadMap;
|
|
7
8
|
remotionRoot: string;
|
|
8
9
|
concurrency: number;
|
|
9
|
-
|
|
10
|
+
logLevel: LogLevel;
|
|
10
11
|
indent: boolean;
|
|
11
12
|
}) => Promise<{
|
|
12
13
|
port: number;
|
package/dist/serve-static.js
CHANGED
|
@@ -12,7 +12,7 @@ const serveStatic = async (path, options) => {
|
|
|
12
12
|
const { listener: offthreadRequest, close: closeCompositor, compositor, events, } = (0, offthread_video_server_1.startOffthreadVideoServer)({
|
|
13
13
|
downloadMap: options.downloadMap,
|
|
14
14
|
concurrency: options.concurrency,
|
|
15
|
-
|
|
15
|
+
logLevel: options.logLevel,
|
|
16
16
|
indent: options.indent,
|
|
17
17
|
});
|
|
18
18
|
const connections = {};
|
|
@@ -7,6 +7,7 @@ import type { FfmpegOverrideFn } from './ffmpeg-override';
|
|
|
7
7
|
import type { CancelSignal } from './make-cancel-signal';
|
|
8
8
|
import type { PixelFormat } from './pixel-format';
|
|
9
9
|
import type { ProResProfile } from './prores-profile';
|
|
10
|
+
import type { LogLevel } from './log-level';
|
|
10
11
|
type InternalStitchFramesToVideoOptions = {
|
|
11
12
|
audioBitrate: string | null;
|
|
12
13
|
videoBitrate: string | null;
|
|
@@ -24,7 +25,7 @@ type InternalStitchFramesToVideoOptions = {
|
|
|
24
25
|
onProgress?: null | ((progress: number) => void);
|
|
25
26
|
onDownload: undefined | RenderMediaOnDownload;
|
|
26
27
|
proResProfile: undefined | ProResProfile;
|
|
27
|
-
|
|
28
|
+
logLevel: LogLevel;
|
|
28
29
|
dir: string;
|
|
29
30
|
cancelSignal: CancelSignal | null;
|
|
30
31
|
preEncodedFileLocation: string | null;
|
|
@@ -59,7 +59,7 @@ const packageJsonPath = node_path_1.default.join(__dirname, '..', 'package.json'
|
|
|
59
59
|
const packageJson = node_fs_1.default.existsSync(packageJsonPath)
|
|
60
60
|
? JSON.parse(node_fs_1.default.readFileSync(packageJsonPath, 'utf-8'))
|
|
61
61
|
: null;
|
|
62
|
-
const getAssetsData = async ({ assets, onDownload, fps, expectedFrames,
|
|
62
|
+
const getAssetsData = async ({ assets, onDownload, fps, expectedFrames, logLevel, onProgress, downloadMap, remotionRoot, indent, }) => {
|
|
63
63
|
const fileUrlAssets = await (0, convert_assets_to_file_urls_1.convertAssetsToFileUrls)({
|
|
64
64
|
assets,
|
|
65
65
|
onDownload: onDownload !== null && onDownload !== void 0 ? onDownload : (() => () => undefined),
|
|
@@ -67,7 +67,7 @@ const getAssetsData = async ({ assets, onDownload, fps, expectedFrames, verbose,
|
|
|
67
67
|
});
|
|
68
68
|
(0, download_and_map_assets_to_file_1.markAllAssetsAsDownloaded)(downloadMap);
|
|
69
69
|
const assetPositions = (0, calculate_asset_positions_1.calculateAssetPositions)(fileUrlAssets);
|
|
70
|
-
logger_1.Log.verboseAdvanced({ indent, logLevel
|
|
70
|
+
logger_1.Log.verboseAdvanced({ indent, logLevel, tag: 'audio' }, 'asset positions', JSON.stringify(assetPositions));
|
|
71
71
|
const preprocessProgress = new Array(assetPositions.length).fill(0);
|
|
72
72
|
const updateProgress = () => {
|
|
73
73
|
onProgress(preprocessProgress.reduce((a, b) => a + b, 0) / assetPositions.length);
|
|
@@ -100,7 +100,7 @@ const getAssetsData = async ({ assets, onDownload, fps, expectedFrames, verbose,
|
|
|
100
100
|
});
|
|
101
101
|
return outName;
|
|
102
102
|
};
|
|
103
|
-
const innerStitchFramesToVideo = async ({ assetsInfo, audioBitrate, audioCodec, cancelSignal, codec, crf, dir, enforceAudioTrack, ffmpegOverride, force, fps, height, indent, muted, onDownload, outputLocation, pixelFormat, preEncodedFileLocation, preferLossless, proResProfile,
|
|
103
|
+
const innerStitchFramesToVideo = async ({ assetsInfo, audioBitrate, audioCodec, cancelSignal, codec, crf, dir, enforceAudioTrack, ffmpegOverride, force, fps, height, indent, muted, onDownload, outputLocation, pixelFormat, preEncodedFileLocation, preferLossless, proResProfile, logLevel, videoBitrate, width, numberOfGifLoops, onProgress, }, remotionRoot) => {
|
|
104
104
|
var _a;
|
|
105
105
|
remotion_1.Internals.validateDimension(height, 'height', 'passed to `stitchFramesToVideo()`');
|
|
106
106
|
remotion_1.Internals.validateDimension(width, 'width', 'passed to `stitchFramesToVideo()`');
|
|
@@ -136,39 +136,29 @@ const innerStitchFramesToVideo = async ({ assetsInfo, audioBitrate, audioCodec,
|
|
|
136
136
|
: node_path_1.default.join(assetsInfo.downloadMap.stitchFrames, `out.${(0, get_extension_from_codec_1.getFileExtensionFromCodec)(codec, resolvedAudioCodec)}`);
|
|
137
137
|
logger_1.Log.verboseAdvanced({
|
|
138
138
|
indent,
|
|
139
|
-
logLevel
|
|
140
|
-
tag: 'stitchFramesToVideo()',
|
|
141
|
-
}, 'encoder', encoderName);
|
|
142
|
-
logger_1.Log.verboseAdvanced({
|
|
143
|
-
indent,
|
|
144
|
-
logLevel: verbose ? 'verbose' : 'info',
|
|
139
|
+
logLevel,
|
|
145
140
|
tag: 'stitchFramesToVideo()',
|
|
146
141
|
}, 'audioCodec', resolvedAudioCodec);
|
|
147
142
|
logger_1.Log.verboseAdvanced({
|
|
148
143
|
indent,
|
|
149
|
-
logLevel
|
|
144
|
+
logLevel,
|
|
150
145
|
tag: 'stitchFramesToVideo()',
|
|
151
146
|
}, 'pixelFormat', pixelFormat);
|
|
152
147
|
logger_1.Log.verboseAdvanced({
|
|
153
148
|
indent,
|
|
154
|
-
logLevel
|
|
149
|
+
logLevel,
|
|
155
150
|
tag: 'stitchFramesToVideo()',
|
|
156
151
|
}, 'codec', codec);
|
|
157
152
|
logger_1.Log.verboseAdvanced({
|
|
158
153
|
indent,
|
|
159
|
-
logLevel
|
|
154
|
+
logLevel,
|
|
160
155
|
tag: 'stitchFramesToVideo()',
|
|
161
156
|
}, 'shouldRenderAudio', shouldRenderAudio);
|
|
162
157
|
logger_1.Log.verboseAdvanced({
|
|
163
158
|
indent,
|
|
164
|
-
logLevel
|
|
159
|
+
logLevel,
|
|
165
160
|
tag: 'stitchFramesToVideo()',
|
|
166
161
|
}, 'shouldRenderVideo', shouldRenderVideo);
|
|
167
|
-
logger_1.Log.verboseAdvanced({
|
|
168
|
-
indent,
|
|
169
|
-
logLevel: verbose ? 'verbose' : 'info',
|
|
170
|
-
tag: 'stitchFramesToVideo()',
|
|
171
|
-
}, 'proResProfileName', proResProfileName);
|
|
172
162
|
(0, crf_1.validateQualitySettings)({
|
|
173
163
|
crf,
|
|
174
164
|
codec,
|
|
@@ -186,7 +176,7 @@ const innerStitchFramesToVideo = async ({ assetsInfo, audioBitrate, audioCodec,
|
|
|
186
176
|
onDownload,
|
|
187
177
|
fps,
|
|
188
178
|
expectedFrames,
|
|
189
|
-
|
|
179
|
+
logLevel,
|
|
190
180
|
onProgress: (prog) => updateProgress(prog, 0),
|
|
191
181
|
downloadMap: assetsInfo.downloadMap,
|
|
192
182
|
remotionRoot,
|
|
@@ -288,12 +278,12 @@ const innerStitchFramesToVideo = async ({ assetsInfo, audioBitrate, audioCodec,
|
|
|
288
278
|
: ffmpegString;
|
|
289
279
|
logger_1.Log.verboseAdvanced({
|
|
290
280
|
indent: indent !== null && indent !== void 0 ? indent : false,
|
|
291
|
-
logLevel
|
|
281
|
+
logLevel,
|
|
292
282
|
tag: 'stitchFramesToVideo()',
|
|
293
283
|
}, 'Generated final FFMPEG command:');
|
|
294
284
|
logger_1.Log.verboseAdvanced({
|
|
295
285
|
indent,
|
|
296
|
-
logLevel
|
|
286
|
+
logLevel,
|
|
297
287
|
tag: 'stitchFramesToVideo()',
|
|
298
288
|
}, finalFfmpegString.join(' '));
|
|
299
289
|
const task = (0, call_ffmpeg_1.callFf)('ffmpeg', finalFfmpegString, {
|
|
@@ -391,7 +381,7 @@ const stitchFramesToVideo = ({ assetsInfo, force, fps, height, width, audioBitra
|
|
|
391
381
|
outputLocation: outputLocation !== null && outputLocation !== void 0 ? outputLocation : null,
|
|
392
382
|
pixelFormat: pixelFormat !== null && pixelFormat !== void 0 ? pixelFormat : pixel_format_1.DEFAULT_PIXEL_FORMAT,
|
|
393
383
|
proResProfile,
|
|
394
|
-
|
|
384
|
+
logLevel: verbose ? 'verbose' : 'info',
|
|
395
385
|
videoBitrate: videoBitrate !== null && videoBitrate !== void 0 ? videoBitrate : null,
|
|
396
386
|
width,
|
|
397
387
|
preEncodedFileLocation: null,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@remotion/renderer",
|
|
3
|
-
"version": "4.0.0-
|
|
3
|
+
"version": "4.0.0-alpha18",
|
|
4
4
|
"description": "Renderer for Remotion",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"extract-zip": "2.0.1",
|
|
19
19
|
"source-map": "^0.8.0-beta.0",
|
|
20
20
|
"ws": "8.7.0",
|
|
21
|
-
"remotion": "4.0.0-
|
|
21
|
+
"remotion": "4.0.0-alpha18"
|
|
22
22
|
},
|
|
23
23
|
"peerDependencies": {
|
|
24
24
|
"react": ">=16.8.0",
|
|
@@ -42,13 +42,13 @@
|
|
|
42
42
|
"zod": "^3.21.4"
|
|
43
43
|
},
|
|
44
44
|
"optionalDependencies": {
|
|
45
|
-
"@remotion/compositor-darwin-
|
|
46
|
-
"@remotion/compositor-linux-arm64-
|
|
47
|
-
"@remotion/compositor-
|
|
48
|
-
"@remotion/compositor-
|
|
49
|
-
"@remotion/compositor-linux-x64-
|
|
50
|
-
"@remotion/compositor-win32-x64-msvc": "4.0.0-
|
|
51
|
-
"@remotion/compositor-linux-
|
|
45
|
+
"@remotion/compositor-darwin-x64": "4.0.0-alpha18",
|
|
46
|
+
"@remotion/compositor-linux-arm64-musl": "4.0.0-alpha18",
|
|
47
|
+
"@remotion/compositor-darwin-arm64": "4.0.0-alpha18",
|
|
48
|
+
"@remotion/compositor-linux-x64-gnu": "4.0.0-alpha18",
|
|
49
|
+
"@remotion/compositor-linux-x64-musl": "4.0.0-alpha18",
|
|
50
|
+
"@remotion/compositor-win32-x64-msvc": "4.0.0-alpha18",
|
|
51
|
+
"@remotion/compositor-linux-arm64-gnu": "4.0.0-alpha18"
|
|
52
52
|
},
|
|
53
53
|
"keywords": [
|
|
54
54
|
"remotion",
|