@remotion/renderer 4.0.56 → 4.0.58
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.js +1 -1
- package/dist/browser/BrowserFetcher.js +1 -1
- package/dist/browser/BrowserPage.js +3 -3
- package/dist/browser/BrowserRunner.js +2 -2
- package/dist/browser/FrameManager.d.ts +2 -1
- package/dist/browser/FrameManager.js +2 -2
- package/dist/browser/NetworkManager.d.ts +2 -1
- package/dist/browser/NetworkManager.js +8 -4
- package/dist/client.d.ts +1 -1
- package/dist/combine-videos.js +4 -4
- package/dist/compositor/compositor.js +1 -1
- package/dist/compositor/get-executable-path.js +1 -1
- package/dist/get-available-memory.d.ts +2 -1
- package/dist/get-available-memory.js +3 -3
- package/dist/get-compositions.js +7 -1
- package/dist/get-local-browser-executable.js +1 -1
- package/dist/get-video-threads-flag.d.ts +2 -1
- package/dist/get-video-threads-flag.js +2 -2
- package/dist/index.d.ts +10 -25
- package/dist/logger.d.ts +3 -5
- package/dist/logger.js +2 -10
- package/dist/offthread-video-server.js +1 -1
- package/dist/open-browser.js +1 -1
- package/dist/options/gl.d.ts +1 -1
- package/dist/options/index.d.ts +1 -1
- package/dist/prepare-server.js +2 -2
- package/dist/prespawn-ffmpeg.js +2 -2
- package/dist/prestitcher-memory-usage.d.ts +3 -1
- package/dist/prestitcher-memory-usage.js +2 -2
- package/dist/render-frames.js +3 -1
- package/dist/render-media.js +9 -8
- package/dist/render-still.js +2 -0
- package/dist/seek-to-frame.d.ts +7 -2
- package/dist/seek-to-frame.js +12 -6
- package/dist/select-composition.js +9 -3
- package/dist/set-props-and-env.js +2 -2
- package/dist/stitch-frames-to-video.d.ts +0 -1
- package/dist/stitch-frames-to-video.js +8 -8
- package/package.json +11 -11
- package/dist/options/render-expiry-days.d.ts +0 -8
- package/dist/options/render-expiry-days.js +0 -14
- package/dist/presets-profile.d.ts +0 -7
- package/dist/presets-profile.js +0 -27
|
@@ -100,7 +100,7 @@ const downloadFile = async (options, retries = 2, attempt = 1) => {
|
|
|
100
100
|
if (retries === 0) {
|
|
101
101
|
throw err;
|
|
102
102
|
}
|
|
103
|
-
logger_1.Log.
|
|
103
|
+
logger_1.Log.warn({ indent: options.indent, logLevel: options.logLevel }, `Downloading ${options.url} failed (will retry): ${message}`);
|
|
104
104
|
const backoffInSeconds = (attempt + 1) ** 2;
|
|
105
105
|
await new Promise((resolve) => {
|
|
106
106
|
setTimeout(() => resolve(), backoffInSeconds * 1000);
|
|
@@ -120,7 +120,7 @@ const downloadBrowser = async (options) => {
|
|
|
120
120
|
onProgress: (progress) => {
|
|
121
121
|
if (progress.downloaded > lastProgress + 10000000) {
|
|
122
122
|
lastProgress = progress.downloaded;
|
|
123
|
-
logger_1.Log.
|
|
123
|
+
logger_1.Log.infoAdvanced({ indent: options.indent, logLevel: options.logLevel }, `Downloading Thorium - ${toMegabytes(progress.downloaded)}/${toMegabytes(progress.totalSize)}`);
|
|
124
124
|
}
|
|
125
125
|
},
|
|
126
126
|
indent: options.indent,
|
|
@@ -74,7 +74,7 @@ class Page extends EventEmitter_1.EventEmitter {
|
|
|
74
74
|
this.sourcemapContext = null;
|
|
75
75
|
__classPrivateFieldSet(this, _Page_client, client, "f");
|
|
76
76
|
__classPrivateFieldSet(this, _Page_target, target, "f");
|
|
77
|
-
__classPrivateFieldSet(this, _Page_frameManager, new FrameManager_1.FrameManager(client, this), "f");
|
|
77
|
+
__classPrivateFieldSet(this, _Page_frameManager, new FrameManager_1.FrameManager(client, this, indent, logLevel), "f");
|
|
78
78
|
this.screenshotTaskQueue = new TaskQueue_1.TaskQueue();
|
|
79
79
|
this.browser = browser;
|
|
80
80
|
this.id = String(Math.random());
|
|
@@ -143,7 +143,7 @@ class Page extends EventEmitter_1.EventEmitter {
|
|
|
143
143
|
}, log.previewString);
|
|
144
144
|
}
|
|
145
145
|
else {
|
|
146
|
-
logger_1.Log.
|
|
146
|
+
logger_1.Log.verbose({
|
|
147
147
|
logLevel,
|
|
148
148
|
tag,
|
|
149
149
|
indent,
|
|
@@ -159,7 +159,7 @@ class Page extends EventEmitter_1.EventEmitter {
|
|
|
159
159
|
}
|
|
160
160
|
}
|
|
161
161
|
else {
|
|
162
|
-
logger_1.Log.
|
|
162
|
+
logger_1.Log.verbose({ logLevel, tag: `console.${log.type}`, indent }, log.text);
|
|
163
163
|
}
|
|
164
164
|
});
|
|
165
165
|
}
|
|
@@ -104,7 +104,7 @@ class BrowserRunner {
|
|
|
104
104
|
return;
|
|
105
105
|
}
|
|
106
106
|
const { output, tag } = formatted;
|
|
107
|
-
logger_1.Log.
|
|
107
|
+
logger_1.Log.verbose({ indent: options.indent, logLevel: options.logLevel, tag }, output);
|
|
108
108
|
}
|
|
109
109
|
});
|
|
110
110
|
(_b = this.proc.stderr) === null || _b === void 0 ? void 0 : _b.on('data', (d) => {
|
|
@@ -115,7 +115,7 @@ class BrowserRunner {
|
|
|
115
115
|
return;
|
|
116
116
|
}
|
|
117
117
|
const { output, tag } = formatted;
|
|
118
|
-
logger_1.Log.
|
|
118
|
+
logger_1.Log.verbose({ indent: options.indent, logLevel: options.logLevel, tag }, output);
|
|
119
119
|
}
|
|
120
120
|
});
|
|
121
121
|
}
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
+
import type { LogLevel } from '../log-level';
|
|
16
17
|
import type { Page } from './BrowserPage';
|
|
17
18
|
import type { CDPSession } from './Connection';
|
|
18
19
|
import type { Frame as TFrame } from './devtools-types';
|
|
@@ -36,7 +37,7 @@ export declare const FrameManagerEmittedEvents: {
|
|
|
36
37
|
export declare class FrameManager extends EventEmitter {
|
|
37
38
|
#private;
|
|
38
39
|
get _client(): CDPSession;
|
|
39
|
-
constructor(client: CDPSession, page: Page);
|
|
40
|
+
constructor(client: CDPSession, page: Page, indent: boolean, logLevel: LogLevel);
|
|
40
41
|
private setupEventListeners;
|
|
41
42
|
initialize(client?: CDPSession): Promise<void>;
|
|
42
43
|
networkManager(): NetworkManager;
|
|
@@ -51,7 +51,7 @@ class FrameManager extends EventEmitter_1.EventEmitter {
|
|
|
51
51
|
get _client() {
|
|
52
52
|
return __classPrivateFieldGet(this, _FrameManager_client, "f");
|
|
53
53
|
}
|
|
54
|
-
constructor(client, page) {
|
|
54
|
+
constructor(client, page, indent, logLevel) {
|
|
55
55
|
super();
|
|
56
56
|
_FrameManager_instances.add(this);
|
|
57
57
|
_FrameManager_page.set(this, void 0);
|
|
@@ -63,7 +63,7 @@ class FrameManager extends EventEmitter_1.EventEmitter {
|
|
|
63
63
|
_FrameManager_client.set(this, void 0);
|
|
64
64
|
__classPrivateFieldSet(this, _FrameManager_client, client, "f");
|
|
65
65
|
__classPrivateFieldSet(this, _FrameManager_page, page, "f");
|
|
66
|
-
__classPrivateFieldSet(this, _FrameManager_networkManager, new NetworkManager_1.NetworkManager(client, this), "f");
|
|
66
|
+
__classPrivateFieldSet(this, _FrameManager_networkManager, new NetworkManager_1.NetworkManager(client, this, indent, logLevel), "f");
|
|
67
67
|
this.setupEventListeners(__classPrivateFieldGet(this, _FrameManager_client, "f"));
|
|
68
68
|
}
|
|
69
69
|
setupEventListeners(session) {
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
+
import type { LogLevel } from '../log-level';
|
|
16
17
|
import type { Commands } from './devtools-commands';
|
|
17
18
|
import { EventEmitter } from './EventEmitter';
|
|
18
19
|
import type { Frame } from './FrameManager';
|
|
@@ -30,7 +31,7 @@ interface FrameManager {
|
|
|
30
31
|
}
|
|
31
32
|
export declare class NetworkManager extends EventEmitter {
|
|
32
33
|
#private;
|
|
33
|
-
constructor(client: CDPSession, frameManager: FrameManager);
|
|
34
|
+
constructor(client: CDPSession, frameManager: FrameManager, indent: boolean, logLevel: LogLevel);
|
|
34
35
|
initialize(): Promise<void>;
|
|
35
36
|
numRequestsInProgress(): number;
|
|
36
37
|
}
|
|
@@ -25,7 +25,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
25
25
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
26
26
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
27
27
|
};
|
|
28
|
-
var _NetworkManager_instances, _NetworkManager_client, _NetworkManager_frameManager, _NetworkManager_networkEventManager, _NetworkManager_onRequestWillBeSent, _NetworkManager_onRequestPaused, _NetworkManager_patchRequestEventHeaders, _NetworkManager_onRequest, _NetworkManager_onRequestServedFromCache, _NetworkManager_handleRequestRedirect, _NetworkManager_emitResponseEvent, _NetworkManager_onResponseReceived, _NetworkManager_onResponseReceivedExtraInfo, _NetworkManager_forgetRequest, _NetworkManager_onLoadingFinished, _NetworkManager_emitLoadingFinished, _NetworkManager_onLoadingFailed, _NetworkManager_emitLoadingFailed;
|
|
28
|
+
var _NetworkManager_instances, _NetworkManager_client, _NetworkManager_frameManager, _NetworkManager_networkEventManager, _NetworkManager_indent, _NetworkManager_logLevel, _NetworkManager_onRequestWillBeSent, _NetworkManager_onRequestPaused, _NetworkManager_patchRequestEventHeaders, _NetworkManager_onRequest, _NetworkManager_onRequestServedFromCache, _NetworkManager_handleRequestRedirect, _NetworkManager_emitResponseEvent, _NetworkManager_onResponseReceived, _NetworkManager_onResponseReceivedExtraInfo, _NetworkManager_forgetRequest, _NetworkManager_onLoadingFinished, _NetworkManager_emitLoadingFinished, _NetworkManager_onLoadingFailed, _NetworkManager_emitLoadingFailed;
|
|
29
29
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
30
30
|
exports.NetworkManager = exports.NetworkManagerEmittedEvents = void 0;
|
|
31
31
|
const logger_1 = require("../logger");
|
|
@@ -37,14 +37,18 @@ exports.NetworkManagerEmittedEvents = {
|
|
|
37
37
|
Request: Symbol('NetworkManager.Request'),
|
|
38
38
|
};
|
|
39
39
|
class NetworkManager extends EventEmitter_1.EventEmitter {
|
|
40
|
-
constructor(client, frameManager) {
|
|
40
|
+
constructor(client, frameManager, indent, logLevel) {
|
|
41
41
|
super();
|
|
42
42
|
_NetworkManager_instances.add(this);
|
|
43
43
|
_NetworkManager_client.set(this, void 0);
|
|
44
44
|
_NetworkManager_frameManager.set(this, void 0);
|
|
45
45
|
_NetworkManager_networkEventManager.set(this, new NetworkEventManager_1.NetworkEventManager());
|
|
46
|
+
_NetworkManager_indent.set(this, void 0);
|
|
47
|
+
_NetworkManager_logLevel.set(this, void 0);
|
|
46
48
|
__classPrivateFieldSet(this, _NetworkManager_client, client, "f");
|
|
47
49
|
__classPrivateFieldSet(this, _NetworkManager_frameManager, frameManager, "f");
|
|
50
|
+
__classPrivateFieldSet(this, _NetworkManager_indent, indent, "f");
|
|
51
|
+
__classPrivateFieldSet(this, _NetworkManager_logLevel, logLevel, "f");
|
|
48
52
|
__classPrivateFieldGet(this, _NetworkManager_client, "f").on('Fetch.requestPaused', __classPrivateFieldGet(this, _NetworkManager_instances, "m", _NetworkManager_onRequestPaused).bind(this));
|
|
49
53
|
__classPrivateFieldGet(this, _NetworkManager_client, "f").on('Network.requestWillBeSent', __classPrivateFieldGet(this, _NetworkManager_instances, "m", _NetworkManager_onRequestWillBeSent).bind(this));
|
|
50
54
|
__classPrivateFieldGet(this, _NetworkManager_client, "f").on('Network.requestServedFromCache', __classPrivateFieldGet(this, _NetworkManager_instances, "m", _NetworkManager_onRequestServedFromCache).bind(this));
|
|
@@ -61,7 +65,7 @@ class NetworkManager extends EventEmitter_1.EventEmitter {
|
|
|
61
65
|
}
|
|
62
66
|
}
|
|
63
67
|
exports.NetworkManager = NetworkManager;
|
|
64
|
-
_NetworkManager_client = new WeakMap(), _NetworkManager_frameManager = new WeakMap(), _NetworkManager_networkEventManager = new WeakMap(), _NetworkManager_instances = new WeakSet(), _NetworkManager_onRequestWillBeSent = function _NetworkManager_onRequestWillBeSent(event) {
|
|
68
|
+
_NetworkManager_client = new WeakMap(), _NetworkManager_frameManager = new WeakMap(), _NetworkManager_networkEventManager = new WeakMap(), _NetworkManager_indent = new WeakMap(), _NetworkManager_logLevel = new WeakMap(), _NetworkManager_instances = new WeakSet(), _NetworkManager_onRequestWillBeSent = function _NetworkManager_onRequestWillBeSent(event) {
|
|
65
69
|
__classPrivateFieldGet(this, _NetworkManager_instances, "m", _NetworkManager_onRequest).call(this, event, undefined);
|
|
66
70
|
}, _NetworkManager_onRequestPaused = function _NetworkManager_onRequestPaused(event) {
|
|
67
71
|
const { networkId: networkRequestId, requestId: fetchRequestId } = event;
|
|
@@ -229,7 +233,7 @@ _NetworkManager_client = new WeakMap(), _NetworkManager_frameManager = new WeakM
|
|
|
229
233
|
return;
|
|
230
234
|
}
|
|
231
235
|
if (!event.canceled) {
|
|
232
|
-
logger_1.Log.warn(`Browser failed to load ${request._url}: ${event.errorText}`);
|
|
236
|
+
logger_1.Log.warn({ indent: __classPrivateFieldGet(this, _NetworkManager_indent, "f"), logLevel: __classPrivateFieldGet(this, _NetworkManager_logLevel, "f") }, `Browser failed to load ${request._url}: ${event.errorText}`);
|
|
233
237
|
}
|
|
234
238
|
__classPrivateFieldGet(this, _NetworkManager_instances, "m", _NetworkManager_forgetRequest).call(this, request, true);
|
|
235
239
|
};
|
package/dist/client.d.ts
CHANGED
|
@@ -311,7 +311,7 @@ export declare const BrowserSafeApis: {
|
|
|
311
311
|
cliFlag: string;
|
|
312
312
|
docLink: string;
|
|
313
313
|
name: string;
|
|
314
|
-
type: "
|
|
314
|
+
type: "swangle" | "angle" | "egl" | "swiftshader" | "vulkan" | "angle-egl";
|
|
315
315
|
ssrName: string;
|
|
316
316
|
description: () => JSX.Element;
|
|
317
317
|
};
|
package/dist/combine-videos.js
CHANGED
|
@@ -12,7 +12,7 @@ const parse_ffmpeg_progress_1 = require("./parse-ffmpeg-progress");
|
|
|
12
12
|
const truthy_1 = require("./truthy");
|
|
13
13
|
const combineVideos = async (options) => {
|
|
14
14
|
var _a;
|
|
15
|
-
const { files, filelistDir, output, onProgress, numberOfFrames, codec, fps, numberOfGifLoops, audioCodec, audioBitrate, } = options;
|
|
15
|
+
const { files, filelistDir, output, onProgress, numberOfFrames, codec, fps, numberOfGifLoops, audioCodec, audioBitrate, indent, logLevel, } = options;
|
|
16
16
|
const fileList = files.map((p) => `file '${p}'`).join('\n');
|
|
17
17
|
const fileListTxt = (0, node_path_1.join)(filelistDir, 'files.txt');
|
|
18
18
|
(0, node_fs_1.writeFileSync)(fileListTxt, fileList);
|
|
@@ -47,17 +47,17 @@ const combineVideos = async (options) => {
|
|
|
47
47
|
'-y',
|
|
48
48
|
output,
|
|
49
49
|
].filter(truthy_1.truthy);
|
|
50
|
-
logger_1.Log.verbose('Combining command: ', command);
|
|
50
|
+
logger_1.Log.verbose({ indent, logLevel }, 'Combining command: ', command);
|
|
51
51
|
try {
|
|
52
52
|
const task = (0, call_ffmpeg_1.callFf)('ffmpeg', command, options.indent, options.logLevel);
|
|
53
53
|
(_a = task.stderr) === null || _a === void 0 ? void 0 : _a.on('data', (data) => {
|
|
54
54
|
if (onProgress) {
|
|
55
55
|
const parsed = (0, parse_ffmpeg_progress_1.parseFfmpegProgress)(data.toString('utf8'));
|
|
56
56
|
if (parsed === undefined) {
|
|
57
|
-
logger_1.Log.verbose(data.toString('utf8'));
|
|
57
|
+
logger_1.Log.verbose({ indent, logLevel }, data.toString('utf8'));
|
|
58
58
|
}
|
|
59
59
|
else {
|
|
60
|
-
logger_1.Log.verbose(`Combined ${parsed} frames`);
|
|
60
|
+
logger_1.Log.verbose({ indent, logLevel }, `Combined ${parsed} frames`);
|
|
61
61
|
onProgress(parsed);
|
|
62
62
|
}
|
|
63
63
|
}
|
|
@@ -32,7 +32,7 @@ const startCompositor = (type, payload, logLevel, indent) => {
|
|
|
32
32
|
const waiters = new Map();
|
|
33
33
|
const onMessage = (statusType, nonce, data) => {
|
|
34
34
|
if (nonce === '0') {
|
|
35
|
-
logger_1.Log.
|
|
35
|
+
logger_1.Log.verbose({ indent, logLevel, tag: 'compositor' }, data.toString('utf8'));
|
|
36
36
|
}
|
|
37
37
|
if (waiters.has(nonce)) {
|
|
38
38
|
if (statusType === 'error') {
|
|
@@ -8,7 +8,7 @@ function isMusl({ indent, logLevel }) {
|
|
|
8
8
|
// @ts-expect-error bun no types
|
|
9
9
|
if (!process.report && typeof Bun !== 'undefined') {
|
|
10
10
|
if (!warned) {
|
|
11
|
-
logger_1.Log.
|
|
11
|
+
logger_1.Log.warn({ indent, logLevel }, 'Bun limitation: Could not determine if your Linux is using musl or glibc. Assuming glibc.');
|
|
12
12
|
}
|
|
13
13
|
warned = true;
|
|
14
14
|
return false;
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import type { LogLevel } from './log-level';
|
|
2
|
+
export declare const getAvailableMemory: (logLevel: LogLevel) => number;
|
|
@@ -32,14 +32,14 @@ const getFreeMemoryFromProcMeminfo = () => {
|
|
|
32
32
|
throw new Error(`Unknown unit: ${unit}`);
|
|
33
33
|
}
|
|
34
34
|
};
|
|
35
|
-
const getAvailableMemory = () => {
|
|
35
|
+
const getAvailableMemory = (logLevel) => {
|
|
36
36
|
if ((0, node_fs_1.existsSync)('/proc/meminfo')) {
|
|
37
37
|
try {
|
|
38
38
|
getFreeMemoryFromProcMeminfo();
|
|
39
39
|
}
|
|
40
40
|
catch (err) {
|
|
41
|
-
logger_1.Log.warn('Tried to get available memory from /proc/meminfo but failed. Falling back to os.freemem(). Error:');
|
|
42
|
-
logger_1.Log.warn(err);
|
|
41
|
+
logger_1.Log.warn({ indent: false, logLevel }, 'Tried to get available memory from /proc/meminfo but failed. Falling back to os.freemem(). Error:');
|
|
42
|
+
logger_1.Log.warn({ indent: false, logLevel }, err);
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
45
|
return (0, node_os_1.freemem)();
|
package/dist/get-compositions.js
CHANGED
|
@@ -48,7 +48,13 @@ const innerGetCompositions = async ({ envVariables, serializedInputPropsWithCust
|
|
|
48
48
|
frame: null,
|
|
49
49
|
args: [],
|
|
50
50
|
});
|
|
51
|
-
await (0, seek_to_frame_1.waitForReady)({
|
|
51
|
+
await (0, seek_to_frame_1.waitForReady)({
|
|
52
|
+
page,
|
|
53
|
+
timeoutInMilliseconds,
|
|
54
|
+
frame: null,
|
|
55
|
+
indent,
|
|
56
|
+
logLevel,
|
|
57
|
+
});
|
|
52
58
|
const { value: result } = await (0, puppeteer_evaluate_1.puppeteerEvaluateWithCatch)({
|
|
53
59
|
pageFunction: () => {
|
|
54
60
|
return window.getStaticCompositions();
|
|
@@ -71,7 +71,7 @@ const getBrowserStatus = (browserExecutablePath) => {
|
|
|
71
71
|
const ensureLocalBrowser = async ({ indent, logLevel, preferredBrowserExecutable, }) => {
|
|
72
72
|
const status = getBrowserStatus(preferredBrowserExecutable);
|
|
73
73
|
if (status.type === 'no-browser') {
|
|
74
|
-
logger_1.Log.
|
|
74
|
+
logger_1.Log.infoAdvanced({ indent, logLevel }, 'No local browser could be found. Downloading Thorium https://www.remotion.dev/docs/miscellaneous/thorium-browser');
|
|
75
75
|
await (0, BrowserFetcher_1.downloadBrowser)({ indent, logLevel });
|
|
76
76
|
}
|
|
77
77
|
};
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import type { LogLevel } from './log-level';
|
|
2
|
+
export declare const getIdealVideoThreadsFlag: (logLevel: LogLevel) => number;
|
|
@@ -5,8 +5,8 @@ const get_available_memory_1 = require("./get-available-memory");
|
|
|
5
5
|
const get_cpu_count_1 = require("./get-cpu-count");
|
|
6
6
|
const MEMORY_USAGE_PER_THREAD = 400000000; // 400MB
|
|
7
7
|
const RESERVED_MEMORY = 2000000000;
|
|
8
|
-
const getIdealVideoThreadsFlag = () => {
|
|
9
|
-
const freeMemory = (0, get_available_memory_1.getAvailableMemory)();
|
|
8
|
+
const getIdealVideoThreadsFlag = (logLevel) => {
|
|
9
|
+
const freeMemory = (0, get_available_memory_1.getAvailableMemory)(logLevel);
|
|
10
10
|
const cpus = (0, get_cpu_count_1.getCpuCount)();
|
|
11
11
|
const maxRecommendedBasedOnCpus = (cpus * 2) / 3;
|
|
12
12
|
const maxRecommendedBasedOnMemory = (freeMemory - RESERVED_MEMORY) / MEMORY_USAGE_PER_THREAD;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
/// <reference types="react" />
|
|
3
1
|
import execa from 'execa';
|
|
4
2
|
import { HeadlessBrowser } from './browser/Browser';
|
|
5
3
|
import { SymbolicateableError } from './error-handling/symbolicateable-error';
|
|
@@ -23,6 +21,7 @@ export { getSilentParts } from './get-silent-parts';
|
|
|
23
21
|
export { getVideoMetadata, VideoMetadata } from './get-video-metadata';
|
|
24
22
|
export { ImageFormat, StillImageFormat, validateSelectedPixelFormatAndImageFormatCombination, VideoImageFormat, } from './image-format';
|
|
25
23
|
export type { LogLevel } from './log-level';
|
|
24
|
+
export { LogOptions } from './logger';
|
|
26
25
|
export { CancelSignal, makeCancelSignal } from './make-cancel-signal';
|
|
27
26
|
export { openBrowser } from './open-browser';
|
|
28
27
|
export type { ChromiumOptions } from './open-browser';
|
|
@@ -136,8 +135,8 @@ export declare const RenderInternals: {
|
|
|
136
135
|
validPixelFormats: readonly ["yuv420p", "yuva420p", "yuv422p", "yuv444p", "yuv420p10le", "yuv422p10le", "yuv444p10le", "yuva444p10le"];
|
|
137
136
|
DEFAULT_BROWSER: "chrome";
|
|
138
137
|
validateFrameRange: (frameRange: import("./frame-range").FrameRange | null) => void;
|
|
139
|
-
DEFAULT_OPENGL_RENDERER: "
|
|
140
|
-
validateOpenGlRenderer: (option: "
|
|
138
|
+
DEFAULT_OPENGL_RENDERER: "swangle" | "angle" | "egl" | "swiftshader" | "vulkan" | "angle-egl" | null;
|
|
139
|
+
validateOpenGlRenderer: (option: "swangle" | "angle" | "egl" | "swiftshader" | "vulkan" | "angle-egl" | null) => "swangle" | "angle" | "egl" | "swiftshader" | "vulkan" | "angle-egl" | null;
|
|
141
140
|
validCodecs: readonly ["h264", "h265", "vp8", "vp9", "mp3", "aac", "wav", "prores", "h264-mkv", "gif"];
|
|
142
141
|
DEFAULT_PIXEL_FORMAT: "yuv420p" | "yuva420p" | "yuv422p" | "yuv444p" | "yuv420p10le" | "yuv422p10le" | "yuv444p10le" | "yuva444p10le";
|
|
143
142
|
validateJpegQuality: (q: number | undefined) => void;
|
|
@@ -328,8 +327,8 @@ export declare const RenderInternals: {
|
|
|
328
327
|
};
|
|
329
328
|
validStillImageFormats: readonly ["png", "jpeg", "pdf", "webp"];
|
|
330
329
|
validVideoImageFormats: readonly ["png", "jpeg", "none"];
|
|
331
|
-
DEFAULT_STILL_IMAGE_FORMAT: "
|
|
332
|
-
DEFAULT_VIDEO_IMAGE_FORMAT: "
|
|
330
|
+
DEFAULT_STILL_IMAGE_FORMAT: "png" | "jpeg" | "pdf" | "webp";
|
|
331
|
+
DEFAULT_VIDEO_IMAGE_FORMAT: "png" | "jpeg" | "none";
|
|
333
332
|
DEFAULT_JPEG_QUALITY: number;
|
|
334
333
|
chalk: {
|
|
335
334
|
enabled: () => boolean;
|
|
@@ -382,28 +381,14 @@ export declare const RenderInternals: {
|
|
|
382
381
|
bgWhiteBright: (str: string) => string;
|
|
383
382
|
};
|
|
384
383
|
Log: {
|
|
385
|
-
verbose: (
|
|
386
|
-
verboseAdvanced: (options: {
|
|
387
|
-
indent: boolean;
|
|
388
|
-
logLevel: "verbose" | "info" | "warn" | "error";
|
|
389
|
-
} & {
|
|
384
|
+
verbose: (options: import("./logger").LogOptions & {
|
|
390
385
|
tag?: string | undefined;
|
|
391
386
|
}, message?: any, ...optionalParams: any[]) => void;
|
|
392
387
|
info: (message?: any, ...optionalParams: any[]) => void;
|
|
393
|
-
infoAdvanced: (options:
|
|
394
|
-
|
|
395
|
-
logLevel: "verbose" | "info" | "warn" | "error";
|
|
396
|
-
}, message?: any, ...optionalParams: any[]) => void;
|
|
397
|
-
warn: (message?: any, ...optionalParams: any[]) => void;
|
|
398
|
-
warnAdvanced: (options: {
|
|
399
|
-
indent: boolean;
|
|
400
|
-
logLevel: "verbose" | "info" | "warn" | "error";
|
|
401
|
-
}, message?: any, ...optionalParams: any[]) => void;
|
|
388
|
+
infoAdvanced: (options: import("./logger").LogOptions, message?: any, ...optionalParams: any[]) => void;
|
|
389
|
+
warn: (options: import("./logger").LogOptions, message?: any, ...optionalParams: any[]) => void;
|
|
402
390
|
error: (message?: any, ...optionalParams: any[]) => void;
|
|
403
|
-
errorAdvanced: (options: {
|
|
404
|
-
indent: boolean;
|
|
405
|
-
logLevel: "verbose" | "info" | "warn" | "error";
|
|
406
|
-
} & {
|
|
391
|
+
errorAdvanced: (options: import("./logger").LogOptions & {
|
|
407
392
|
tag?: string | undefined;
|
|
408
393
|
}, message?: any, ...optionalParams: any[]) => void;
|
|
409
394
|
};
|
|
@@ -442,7 +427,7 @@ export declare const RenderInternals: {
|
|
|
442
427
|
frame: number;
|
|
443
428
|
serializedInputPropsWithCustomSchema: string;
|
|
444
429
|
serializedResolvedPropsWithCustomSchema: string;
|
|
445
|
-
imageFormat: "
|
|
430
|
+
imageFormat: "png" | "jpeg" | "pdf" | "webp";
|
|
446
431
|
jpegQuality: number;
|
|
447
432
|
puppeteerInstance: HeadlessBrowser | null;
|
|
448
433
|
envVariables: Record<string, string>;
|
package/dist/logger.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { LogLevel } from './log-level';
|
|
2
2
|
export declare const INDENT_TOKEN: string;
|
|
3
|
-
type LogOptions = {
|
|
3
|
+
export type LogOptions = {
|
|
4
4
|
indent: boolean;
|
|
5
5
|
logLevel: LogLevel;
|
|
6
6
|
};
|
|
@@ -10,12 +10,10 @@ type VerboseLogOptions = LogOptions & {
|
|
|
10
10
|
export declare const verboseTag: (str: string) => string;
|
|
11
11
|
export declare const secondverboseTag: (str: string) => string;
|
|
12
12
|
export declare const Log: {
|
|
13
|
-
verbose: (message?: any, ...optionalParams: any[]) => void;
|
|
14
|
-
verboseAdvanced: (options: VerboseLogOptions, message?: any, ...optionalParams: any[]) => void;
|
|
13
|
+
verbose: (options: VerboseLogOptions, message?: any, ...optionalParams: any[]) => void;
|
|
15
14
|
info: (message?: any, ...optionalParams: any[]) => void;
|
|
16
15
|
infoAdvanced: (options: LogOptions, message?: any, ...optionalParams: any[]) => void;
|
|
17
|
-
warn: (message?: any, ...optionalParams: any[]) => void;
|
|
18
|
-
warnAdvanced: (options: LogOptions, message?: any, ...optionalParams: any[]) => void;
|
|
16
|
+
warn: (options: LogOptions, message?: any, ...optionalParams: any[]) => void;
|
|
19
17
|
error: (message?: any, ...optionalParams: any[]) => void;
|
|
20
18
|
errorAdvanced: (options: VerboseLogOptions, message?: any, ...optionalParams: any[]) => void;
|
|
21
19
|
};
|
package/dist/logger.js
CHANGED
|
@@ -15,10 +15,7 @@ const secondverboseTag = (str) => {
|
|
|
15
15
|
};
|
|
16
16
|
exports.secondverboseTag = secondverboseTag;
|
|
17
17
|
exports.Log = {
|
|
18
|
-
verbose: (...args) => {
|
|
19
|
-
exports.Log.verboseAdvanced({ indent: false, logLevel: (0, exports.getLogLevel)() }, ...args);
|
|
20
|
-
},
|
|
21
|
-
verboseAdvanced: (options, ...args) => {
|
|
18
|
+
verbose: (options, ...args) => {
|
|
22
19
|
if ((0, log_level_1.isEqualOrBelowLogLevel)(options.logLevel, 'verbose')) {
|
|
23
20
|
return console.log(...[
|
|
24
21
|
options.indent ? exports.INDENT_TOKEN : null,
|
|
@@ -34,12 +31,7 @@ exports.Log = {
|
|
|
34
31
|
infoAdvanced: (options, ...args) => {
|
|
35
32
|
return console.log(...[options.indent ? exports.INDENT_TOKEN : null].filter(truthy_1.truthy).concat(args));
|
|
36
33
|
},
|
|
37
|
-
warn: (...args) => {
|
|
38
|
-
if ((0, log_level_1.isEqualOrBelowLogLevel)((0, exports.getLogLevel)(), 'warn')) {
|
|
39
|
-
exports.Log.warnAdvanced({ indent: false, logLevel: (0, exports.getLogLevel)() }, ...args);
|
|
40
|
-
}
|
|
41
|
-
},
|
|
42
|
-
warnAdvanced: (options, ...args) => {
|
|
34
|
+
warn: (options, ...args) => {
|
|
43
35
|
if ((0, log_level_1.isEqualOrBelowLogLevel)(options.logLevel, 'warn')) {
|
|
44
36
|
return console.warn(...[options.indent ? chalk_1.chalk.yellow(exports.INDENT_TOKEN) : null]
|
|
45
37
|
.filter(truthy_1.truthy)
|
|
@@ -117,7 +117,7 @@ const startOffthreadVideoServer = ({ downloadMap, concurrency, logLevel, indent,
|
|
|
117
117
|
const extractEnd = Date.now();
|
|
118
118
|
const timeToExtract = extractEnd - extractStart;
|
|
119
119
|
if (timeToExtract > 1000) {
|
|
120
|
-
logger_1.Log.verbose(`Took ${timeToExtract}ms to extract frame from ${src} at ${time}`);
|
|
120
|
+
logger_1.Log.verbose({ indent, logLevel }, `Took ${timeToExtract}ms to extract frame from ${src} at ${time}`);
|
|
121
121
|
}
|
|
122
122
|
response.writeHead(200);
|
|
123
123
|
response.write(readable, (err) => {
|
package/dist/open-browser.js
CHANGED
|
@@ -82,7 +82,7 @@ const internalOpenBrowser = async ({ browser, browserExecutable, chromiumOptions
|
|
|
82
82
|
'--force-color-profile=srgb',
|
|
83
83
|
'--metrics-recording-only',
|
|
84
84
|
'--no-first-run',
|
|
85
|
-
'--video-threads=' + (0, get_video_threads_flag_1.getIdealVideoThreadsFlag)(),
|
|
85
|
+
'--video-threads=' + (0, get_video_threads_flag_1.getIdealVideoThreadsFlag)(logLevel),
|
|
86
86
|
'--enable-automation',
|
|
87
87
|
'--password-store=basic',
|
|
88
88
|
'--use-mock-keychain',
|
package/dist/options/gl.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ export declare const glOption: {
|
|
|
4
4
|
cliFlag: string;
|
|
5
5
|
docLink: string;
|
|
6
6
|
name: string;
|
|
7
|
-
type: "
|
|
7
|
+
type: "swangle" | "angle" | "egl" | "swiftshader" | "vulkan" | "angle-egl";
|
|
8
8
|
ssrName: string;
|
|
9
9
|
description: () => JSX.Element;
|
|
10
10
|
};
|
package/dist/options/index.d.ts
CHANGED
|
@@ -116,7 +116,7 @@ export declare const allOptions: {
|
|
|
116
116
|
cliFlag: string;
|
|
117
117
|
docLink: string;
|
|
118
118
|
name: string;
|
|
119
|
-
type: "
|
|
119
|
+
type: "swangle" | "angle" | "egl" | "swiftshader" | "vulkan" | "angle-egl";
|
|
120
120
|
ssrName: string;
|
|
121
121
|
description: () => JSX.Element;
|
|
122
122
|
};
|
package/dist/prepare-server.js
CHANGED
|
@@ -17,7 +17,7 @@ const symbolicate_stacktrace_1 = require("./symbolicate-stacktrace");
|
|
|
17
17
|
const wait_for_symbolication_error_to_be_done_1 = require("./wait-for-symbolication-error-to-be-done");
|
|
18
18
|
const prepareServer = async ({ webpackConfigOrServeUrl, port, remotionRoot, concurrency, logLevel, indent, offthreadVideoCacheSizeInBytes, }) => {
|
|
19
19
|
const downloadMap = (0, download_map_1.makeDownloadMap)();
|
|
20
|
-
logger_1.Log.
|
|
20
|
+
logger_1.Log.verbose({ indent, logLevel }, 'Created directory for temporary files', downloadMap.assetDir);
|
|
21
21
|
if ((0, is_serve_url_1.isServeUrl)(webpackConfigOrServeUrl)) {
|
|
22
22
|
const { port: offthreadPort, close: closeProxy, compositor: comp, } = await (0, serve_static_1.serveStatic)(null, {
|
|
23
23
|
port,
|
|
@@ -37,7 +37,7 @@ const prepareServer = async ({ webpackConfigOrServeUrl, port, remotionRoot, conc
|
|
|
37
37
|
offthreadPort,
|
|
38
38
|
compositor: comp,
|
|
39
39
|
sourceMap: (0, symbolicate_stacktrace_1.getSourceMapFromRemoteUrl)((0, get_bundle_url_from_serve_url_1.getBundleMapUrlFromServeUrl)(webpackConfigOrServeUrl)).catch((err) => {
|
|
40
|
-
logger_1.Log.verbose('Could not fetch sourcemap for ', webpackConfigOrServeUrl, err);
|
|
40
|
+
logger_1.Log.verbose({ indent, logLevel }, 'Could not fetch sourcemap for ', webpackConfigOrServeUrl, err);
|
|
41
41
|
return null;
|
|
42
42
|
}),
|
|
43
43
|
downloadMap,
|
package/dist/prespawn-ffmpeg.js
CHANGED
|
@@ -49,12 +49,12 @@ const prespawnFfmpeg = (options) => {
|
|
|
49
49
|
'-y',
|
|
50
50
|
options.outputLocation,
|
|
51
51
|
];
|
|
52
|
-
logger_1.Log.
|
|
52
|
+
logger_1.Log.verbose({
|
|
53
53
|
indent: options.indent,
|
|
54
54
|
logLevel: options.logLevel,
|
|
55
55
|
tag: 'prespawnFfmpeg()',
|
|
56
56
|
}, 'Generated FFMPEG command:');
|
|
57
|
-
logger_1.Log.
|
|
57
|
+
logger_1.Log.verbose({
|
|
58
58
|
indent: options.indent,
|
|
59
59
|
logLevel: options.logLevel,
|
|
60
60
|
tag: 'prespawnFfmpeg()',
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
import type { LogLevel } from './log-level';
|
|
2
|
+
export declare const shouldUseParallelEncoding: ({ width, height, logLevel, }: {
|
|
2
3
|
width: number;
|
|
3
4
|
height: number;
|
|
5
|
+
logLevel: LogLevel;
|
|
4
6
|
}) => {
|
|
5
7
|
hasEnoughMemory: boolean;
|
|
6
8
|
freeMemory: number;
|
|
@@ -9,8 +9,8 @@ const estimateMemoryUsageForPrestitcher = ({ width, height, }) => {
|
|
|
9
9
|
const memoryUsageOfPixel = memoryUsageFor4K / 1000000;
|
|
10
10
|
return memoryUsageOfPixel * width * height;
|
|
11
11
|
};
|
|
12
|
-
const shouldUseParallelEncoding = ({ width, height, }) => {
|
|
13
|
-
const freeMemory = (0, get_available_memory_1.getAvailableMemory)();
|
|
12
|
+
const shouldUseParallelEncoding = ({ width, height, logLevel, }) => {
|
|
13
|
+
const freeMemory = (0, get_available_memory_1.getAvailableMemory)(logLevel);
|
|
14
14
|
const estimatedUsage = estimateMemoryUsageForPrestitcher({
|
|
15
15
|
height,
|
|
16
16
|
width,
|
package/dist/render-frames.js
CHANGED
|
@@ -162,10 +162,12 @@ const innerRenderFrames = async ({ onFrameUpdate, outputDir, onStart, serialized
|
|
|
162
162
|
page: freePage,
|
|
163
163
|
composition: compId,
|
|
164
164
|
timeoutInMilliseconds,
|
|
165
|
+
indent,
|
|
166
|
+
logLevel,
|
|
165
167
|
});
|
|
166
168
|
const timeToSeek = Date.now() - startSeeking;
|
|
167
169
|
if (timeToSeek > 1000) {
|
|
168
|
-
logger_1.Log.verbose(`Seeking to frame ${frame} took ${timeToSeek}ms`);
|
|
170
|
+
logger_1.Log.verbose({ indent, logLevel }, `Seeking to frame ${frame} took ${timeToSeek}ms`);
|
|
169
171
|
}
|
|
170
172
|
if (!outputDir && !onFrameBuffer && imageFormat !== 'none') {
|
|
171
173
|
throw new Error('Called renderFrames() without specifying either `outputDir` or `onFrameBuffer`');
|
package/dist/render-media.js
CHANGED
|
@@ -89,42 +89,43 @@ const internalRenderMediaRaw = ({ proResProfile, x264Preset, crf, composition, s
|
|
|
89
89
|
const { estimatedUsage, freeMemory, hasEnoughMemory } = (0, prestitcher_memory_usage_1.shouldUseParallelEncoding)({
|
|
90
90
|
height: composition.height,
|
|
91
91
|
width: composition.width,
|
|
92
|
+
logLevel,
|
|
92
93
|
});
|
|
93
94
|
const parallelEncoding = !disallowParallelEncoding &&
|
|
94
95
|
hasEnoughMemory &&
|
|
95
96
|
(0, can_use_parallel_encoding_1.canUseParallelEncoding)(codec);
|
|
96
|
-
logger_1.Log.
|
|
97
|
+
logger_1.Log.verbose({
|
|
97
98
|
indent,
|
|
98
99
|
logLevel,
|
|
99
100
|
tag: 'renderMedia()',
|
|
100
101
|
}, 'Free memory:', freeMemory, 'Estimated usage parallel encoding', estimatedUsage);
|
|
101
102
|
const actualConcurrency = (0, get_concurrency_1.getActualConcurrency)(concurrency);
|
|
102
|
-
logger_1.Log.
|
|
103
|
+
logger_1.Log.verbose({
|
|
103
104
|
indent,
|
|
104
105
|
logLevel,
|
|
105
106
|
tag: 'renderMedia()',
|
|
106
107
|
}, 'Using concurrency:', actualConcurrency);
|
|
107
|
-
logger_1.Log.
|
|
108
|
+
logger_1.Log.verbose({
|
|
108
109
|
indent,
|
|
109
110
|
logLevel,
|
|
110
111
|
tag: 'renderMedia()',
|
|
111
112
|
}, 'Codec supports parallel rendering:', (0, can_use_parallel_encoding_1.canUseParallelEncoding)(codec));
|
|
112
113
|
if (disallowParallelEncoding) {
|
|
113
|
-
logger_1.Log.
|
|
114
|
+
logger_1.Log.verbose({
|
|
114
115
|
indent,
|
|
115
116
|
logLevel,
|
|
116
117
|
tag: 'renderMedia()',
|
|
117
118
|
}, 'User disallowed parallel encoding.');
|
|
118
119
|
}
|
|
119
120
|
if (parallelEncoding) {
|
|
120
|
-
logger_1.Log.
|
|
121
|
+
logger_1.Log.verbose({
|
|
121
122
|
indent,
|
|
122
123
|
logLevel,
|
|
123
124
|
tag: 'renderMedia()',
|
|
124
125
|
}, 'Parallel encoding is enabled.');
|
|
125
126
|
}
|
|
126
127
|
else {
|
|
127
|
-
logger_1.Log.
|
|
128
|
+
logger_1.Log.verbose({
|
|
128
129
|
indent,
|
|
129
130
|
logLevel,
|
|
130
131
|
tag: 'renderMedia()',
|
|
@@ -325,7 +326,7 @@ const internalRenderMediaRaw = ({ proResProfile, x264Preset, crf, composition, s
|
|
|
325
326
|
.then(([{ assetsInfo }]) => {
|
|
326
327
|
renderedDoneIn = Date.now() - renderStart;
|
|
327
328
|
callUpdate();
|
|
328
|
-
logger_1.Log.
|
|
329
|
+
logger_1.Log.verbose({ indent, logLevel }, 'Rendering frames done in', renderedDoneIn + 'ms');
|
|
329
330
|
if (absoluteOutputLocation) {
|
|
330
331
|
(0, ensure_output_directory_1.ensureOutputDirectory)(absoluteOutputLocation);
|
|
331
332
|
}
|
|
@@ -377,7 +378,7 @@ const internalRenderMediaRaw = ({ proResProfile, x264Preset, crf, composition, s
|
|
|
377
378
|
encodedFrames = (0, get_duration_from_frame_range_1.getFramesToRender)(realFrameRange, everyNthFrame).length;
|
|
378
379
|
encodedDoneIn = Date.now() - stitchStart;
|
|
379
380
|
callUpdate();
|
|
380
|
-
logger_1.Log.
|
|
381
|
+
logger_1.Log.verbose({ indent, logLevel }, 'Stitching done in', encodedDoneIn + 'ms');
|
|
381
382
|
slowestFrames.sort((a, b) => b.time - a.time);
|
|
382
383
|
const result = {
|
|
383
384
|
buffer,
|
package/dist/render-still.js
CHANGED
|
@@ -180,6 +180,8 @@ const innerRenderStill = async ({ composition, imageFormat = image_format_1.DEFA
|
|
|
180
180
|
page,
|
|
181
181
|
composition: composition.id,
|
|
182
182
|
timeoutInMilliseconds,
|
|
183
|
+
indent,
|
|
184
|
+
logLevel,
|
|
183
185
|
});
|
|
184
186
|
const { buffer } = await (0, take_frame_and_compose_1.takeFrameAndCompose)({
|
|
185
187
|
frame: stillFrame,
|
package/dist/seek-to-frame.d.ts
CHANGED
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
import type { Page } from './browser/BrowserPage';
|
|
2
|
-
|
|
2
|
+
import type { LogLevel } from './log-level';
|
|
3
|
+
export declare const waitForReady: ({ page, timeoutInMilliseconds, frame, indent, logLevel, }: {
|
|
3
4
|
page: Page;
|
|
4
5
|
timeoutInMilliseconds: number;
|
|
5
6
|
frame: number | null;
|
|
7
|
+
indent: boolean;
|
|
8
|
+
logLevel: LogLevel;
|
|
6
9
|
}) => Promise<unknown>;
|
|
7
|
-
export declare const seekToFrame: ({ frame, page, composition, timeoutInMilliseconds, }: {
|
|
10
|
+
export declare const seekToFrame: ({ frame, page, composition, timeoutInMilliseconds, logLevel, indent, }: {
|
|
8
11
|
frame: number;
|
|
9
12
|
composition: string;
|
|
10
13
|
page: Page;
|
|
11
14
|
timeoutInMilliseconds: number;
|
|
15
|
+
logLevel: LogLevel;
|
|
16
|
+
indent: boolean;
|
|
12
17
|
}) => Promise<void>;
|
package/dist/seek-to-frame.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.seekToFrame = exports.waitForReady = void 0;
|
|
4
|
-
const _1 = require(".");
|
|
5
4
|
const symbolicateable_error_1 = require("./error-handling/symbolicateable-error");
|
|
5
|
+
const logger_1 = require("./logger");
|
|
6
6
|
const parse_browser_error_stack_1 = require("./parse-browser-error-stack");
|
|
7
7
|
const puppeteer_evaluate_1 = require("./puppeteer-evaluate");
|
|
8
|
-
const waitForReady = ({ page, timeoutInMilliseconds, frame, }) => {
|
|
8
|
+
const waitForReady = ({ page, timeoutInMilliseconds, frame, indent, logLevel, }) => {
|
|
9
9
|
const waitForReadyProm = new Promise((resolve, reject) => {
|
|
10
10
|
page
|
|
11
11
|
.mainFrame()
|
|
@@ -44,7 +44,7 @@ const waitForReady = ({ page, timeoutInMilliseconds, frame, }) => {
|
|
|
44
44
|
reject(new Error(`Timeout exceeded rendering the component${frame ? ' at frame ' + frame : ''}. ${res.value ? `Open delayRender() handles: ${res.value}` : ''}`));
|
|
45
45
|
})
|
|
46
46
|
.catch((newErr) => {
|
|
47
|
-
|
|
47
|
+
logger_1.Log.warn({ indent, logLevel }, 'Tried to get delayRender() handles for timeout, but could not do so because of', newErr);
|
|
48
48
|
// Ignore, use prev error
|
|
49
49
|
reject(err);
|
|
50
50
|
});
|
|
@@ -110,8 +110,14 @@ const waitForReady = ({ page, timeoutInMilliseconds, frame, }) => {
|
|
|
110
110
|
]);
|
|
111
111
|
};
|
|
112
112
|
exports.waitForReady = waitForReady;
|
|
113
|
-
const seekToFrame = async ({ frame, page, composition, timeoutInMilliseconds, }) => {
|
|
114
|
-
await (0, exports.waitForReady)({
|
|
113
|
+
const seekToFrame = async ({ frame, page, composition, timeoutInMilliseconds, logLevel, indent, }) => {
|
|
114
|
+
await (0, exports.waitForReady)({
|
|
115
|
+
page,
|
|
116
|
+
timeoutInMilliseconds,
|
|
117
|
+
frame: null,
|
|
118
|
+
indent,
|
|
119
|
+
logLevel,
|
|
120
|
+
});
|
|
115
121
|
await (0, puppeteer_evaluate_1.puppeteerEvaluateWithCatchAndTimeout)({
|
|
116
122
|
pageFunction: (f, c) => {
|
|
117
123
|
window.remotion_setFrame(f, c);
|
|
@@ -120,7 +126,7 @@ const seekToFrame = async ({ frame, page, composition, timeoutInMilliseconds, })
|
|
|
120
126
|
frame,
|
|
121
127
|
page,
|
|
122
128
|
});
|
|
123
|
-
await (0, exports.waitForReady)({ page, timeoutInMilliseconds, frame });
|
|
129
|
+
await (0, exports.waitForReady)({ page, timeoutInMilliseconds, frame, indent, logLevel });
|
|
124
130
|
await page.evaluateHandle('document.fonts.ready');
|
|
125
131
|
};
|
|
126
132
|
exports.seekToFrame = seekToFrame;
|
|
@@ -48,8 +48,14 @@ const innerSelectComposition = async ({ page, onBrowserLog, serializedInputProps
|
|
|
48
48
|
frame: null,
|
|
49
49
|
args: [],
|
|
50
50
|
});
|
|
51
|
-
await (0, seek_to_frame_1.waitForReady)({
|
|
52
|
-
|
|
51
|
+
await (0, seek_to_frame_1.waitForReady)({
|
|
52
|
+
page,
|
|
53
|
+
timeoutInMilliseconds,
|
|
54
|
+
frame: null,
|
|
55
|
+
logLevel,
|
|
56
|
+
indent,
|
|
57
|
+
});
|
|
58
|
+
logger_1.Log.verbose({
|
|
53
59
|
indent,
|
|
54
60
|
tag: 'selectComposition()',
|
|
55
61
|
logLevel,
|
|
@@ -63,7 +69,7 @@ const innerSelectComposition = async ({ page, onBrowserLog, serializedInputProps
|
|
|
63
69
|
page,
|
|
64
70
|
args: [id],
|
|
65
71
|
});
|
|
66
|
-
logger_1.Log.
|
|
72
|
+
logger_1.Log.verbose({
|
|
67
73
|
indent,
|
|
68
74
|
tag: 'selectComposition()',
|
|
69
75
|
logLevel,
|
|
@@ -131,7 +131,7 @@ const innerSetPropsAndEnv = async ({ serializedInputPropsWithCustomSchema, envVa
|
|
|
131
131
|
}
|
|
132
132
|
if (remotionVersion !== version_1.VERSION && process.env.NODE_ENV !== 'test') {
|
|
133
133
|
if (remotionVersion) {
|
|
134
|
-
logger_1.Log.
|
|
134
|
+
logger_1.Log.warn({
|
|
135
135
|
indent,
|
|
136
136
|
logLevel,
|
|
137
137
|
}, [
|
|
@@ -143,7 +143,7 @@ const innerSetPropsAndEnv = async ({ serializedInputPropsWithCustomSchema, envVa
|
|
|
143
143
|
].join('\n'));
|
|
144
144
|
}
|
|
145
145
|
else {
|
|
146
|
-
logger_1.Log.
|
|
146
|
+
logger_1.Log.warn({
|
|
147
147
|
indent,
|
|
148
148
|
logLevel,
|
|
149
149
|
}, `The site was bundled with an old version of Remotion, while @remotion/renderer is on version ${version_1.VERSION}. You may not have the newest bugfixes and features. Re-bundle the site to fix this issue.`);
|
|
@@ -70,7 +70,7 @@ const getAssetsData = async ({ assets, onDownload, fps, expectedFrames, logLevel
|
|
|
70
70
|
});
|
|
71
71
|
(0, download_and_map_assets_to_file_1.markAllAssetsAsDownloaded)(downloadMap);
|
|
72
72
|
const assetPositions = (0, calculate_asset_positions_1.calculateAssetPositions)(fileUrlAssets);
|
|
73
|
-
logger_1.Log.
|
|
73
|
+
logger_1.Log.verbose({ indent, logLevel, tag: 'audio' }, 'asset positions', JSON.stringify(assetPositions));
|
|
74
74
|
const preprocessProgress = new Array(assetPositions.length).fill(0);
|
|
75
75
|
const updateProgress = () => {
|
|
76
76
|
onProgress(preprocessProgress.reduce((a, b) => a + b, 0) / assetPositions.length);
|
|
@@ -141,27 +141,27 @@ const innerStitchFramesToVideo = async ({ assetsInfo, audioBitrate, audioCodec,
|
|
|
141
141
|
const tempFile = outputLocation
|
|
142
142
|
? null
|
|
143
143
|
: node_path_1.default.join(assetsInfo.downloadMap.stitchFrames, `out.${(0, get_extension_from_codec_1.getFileExtensionFromCodec)(codec, resolvedAudioCodec)}`);
|
|
144
|
-
logger_1.Log.
|
|
144
|
+
logger_1.Log.verbose({
|
|
145
145
|
indent,
|
|
146
146
|
logLevel,
|
|
147
147
|
tag: 'stitchFramesToVideo()',
|
|
148
148
|
}, 'audioCodec', resolvedAudioCodec);
|
|
149
|
-
logger_1.Log.
|
|
149
|
+
logger_1.Log.verbose({
|
|
150
150
|
indent,
|
|
151
151
|
logLevel,
|
|
152
152
|
tag: 'stitchFramesToVideo()',
|
|
153
153
|
}, 'pixelFormat', pixelFormat);
|
|
154
|
-
logger_1.Log.
|
|
154
|
+
logger_1.Log.verbose({
|
|
155
155
|
indent,
|
|
156
156
|
logLevel,
|
|
157
157
|
tag: 'stitchFramesToVideo()',
|
|
158
158
|
}, 'codec', codec);
|
|
159
|
-
logger_1.Log.
|
|
159
|
+
logger_1.Log.verbose({
|
|
160
160
|
indent,
|
|
161
161
|
logLevel,
|
|
162
162
|
tag: 'stitchFramesToVideo()',
|
|
163
163
|
}, 'shouldRenderAudio', shouldRenderAudio);
|
|
164
|
-
logger_1.Log.
|
|
164
|
+
logger_1.Log.verbose({
|
|
165
165
|
indent,
|
|
166
166
|
logLevel,
|
|
167
167
|
tag: 'stitchFramesToVideo()',
|
|
@@ -275,12 +275,12 @@ const innerStitchFramesToVideo = async ({ assetsInfo, audioBitrate, audioCodec,
|
|
|
275
275
|
const finalFfmpegString = ffmpegOverride
|
|
276
276
|
? ffmpegOverride({ type: 'stitcher', args: ffmpegString })
|
|
277
277
|
: ffmpegString;
|
|
278
|
-
logger_1.Log.
|
|
278
|
+
logger_1.Log.verbose({
|
|
279
279
|
indent: indent !== null && indent !== void 0 ? indent : false,
|
|
280
280
|
logLevel,
|
|
281
281
|
tag: 'stitchFramesToVideo()',
|
|
282
282
|
}, 'Generated final FFMPEG command:');
|
|
283
|
-
logger_1.Log.
|
|
283
|
+
logger_1.Log.verbose({
|
|
284
284
|
indent,
|
|
285
285
|
logLevel,
|
|
286
286
|
tag: 'stitchFramesToVideo()',
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@remotion/renderer",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.58",
|
|
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.
|
|
21
|
+
"remotion": "4.0.58"
|
|
22
22
|
},
|
|
23
23
|
"peerDependencies": {
|
|
24
24
|
"react": ">=16.8.0",
|
|
@@ -35,18 +35,18 @@
|
|
|
35
35
|
"eslint": "8.42.0",
|
|
36
36
|
"prettier": "3.0.2",
|
|
37
37
|
"prettier-plugin-organize-imports": "^3.2.2",
|
|
38
|
-
"react": "18.
|
|
39
|
-
"react-dom": "18.
|
|
38
|
+
"react": "18.2.0",
|
|
39
|
+
"react-dom": "18.2.0",
|
|
40
40
|
"vitest": "0.31.1"
|
|
41
41
|
},
|
|
42
42
|
"optionalDependencies": {
|
|
43
|
-
"@remotion/compositor-darwin-arm64": "4.0.
|
|
44
|
-
"@remotion/compositor-darwin-x64": "4.0.
|
|
45
|
-
"@remotion/compositor-linux-arm64-
|
|
46
|
-
"@remotion/compositor-linux-x64-musl": "4.0.
|
|
47
|
-
"@remotion/compositor-
|
|
48
|
-
"@remotion/compositor-linux-
|
|
49
|
-
"@remotion/compositor-
|
|
43
|
+
"@remotion/compositor-darwin-arm64": "4.0.58",
|
|
44
|
+
"@remotion/compositor-darwin-x64": "4.0.58",
|
|
45
|
+
"@remotion/compositor-linux-arm64-musl": "4.0.58",
|
|
46
|
+
"@remotion/compositor-linux-x64-musl": "4.0.58",
|
|
47
|
+
"@remotion/compositor-win32-x64-msvc": "4.0.58",
|
|
48
|
+
"@remotion/compositor-linux-arm64-gnu": "4.0.58",
|
|
49
|
+
"@remotion/compositor-linux-x64-gnu": "4.0.58"
|
|
50
50
|
},
|
|
51
51
|
"keywords": [
|
|
52
52
|
"remotion",
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.deleteAfterOption = void 0;
|
|
4
|
-
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
-
exports.deleteAfterOption = {
|
|
6
|
-
name: 'Render expiry days',
|
|
7
|
-
cliFlag: 'delete-after',
|
|
8
|
-
description: () => {
|
|
9
|
-
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: ["Automatically delete the render after a certain period. Accepted values are ", (0, jsx_runtime_1.jsx)("code", { children: "1-day" }), ", ", (0, jsx_runtime_1.jsx)("code", { children: "3-days" }), ", ", (0, jsx_runtime_1.jsx)("code", { children: "7-days" }), " and", ' ', (0, jsx_runtime_1.jsx)("code", { children: "30-days" }), ".", (0, jsx_runtime_1.jsx)("br", {}), " For this to work, your bucket needs to have", ' ', (0, jsx_runtime_1.jsx)("a", { href: "/docs/lambda/autodelete", children: "lifecycles enabled" }), "."] }));
|
|
10
|
-
},
|
|
11
|
-
ssrName: 'deleteAfter',
|
|
12
|
-
docLink: 'https://www.remotion.dev/docs/autodelete',
|
|
13
|
-
type: 0,
|
|
14
|
-
};
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import type { Codec } from './codec';
|
|
2
|
-
export declare const x264PresetOptions: readonly ["ultrafast", "superfast", "veryfast", "faster", "fast", "medium", "slow", "slower", "veryslow", "placebo"];
|
|
3
|
-
export type x264Preset = typeof x264PresetOptions[number];
|
|
4
|
-
export declare const validateSelectedCodecAndPresetCombination: ({ codec, x264Preset, }: {
|
|
5
|
-
codec: Codec;
|
|
6
|
-
x264Preset: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | undefined;
|
|
7
|
-
}) => void;
|
package/dist/presets-profile.js
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.validateSelectedCodecAndPresetCombination = exports.x264PresetOptions = void 0;
|
|
4
|
-
exports.x264PresetOptions = [
|
|
5
|
-
'ultrafast',
|
|
6
|
-
'superfast',
|
|
7
|
-
'veryfast',
|
|
8
|
-
'faster',
|
|
9
|
-
'fast',
|
|
10
|
-
'medium',
|
|
11
|
-
'slow',
|
|
12
|
-
'slower',
|
|
13
|
-
'veryslow',
|
|
14
|
-
'placebo',
|
|
15
|
-
];
|
|
16
|
-
const validateSelectedCodecAndPresetCombination = ({ codec, x264Preset, }) => {
|
|
17
|
-
if (typeof x264Preset !== 'undefined' && codec !== 'h264') {
|
|
18
|
-
throw new TypeError(`You have set a Preset profile but the codec is "${codec}". Set the codec to "h264" or remove the Preset profile.`);
|
|
19
|
-
}
|
|
20
|
-
if (x264Preset !== undefined &&
|
|
21
|
-
!exports.x264PresetOptions.includes(x264Preset)) {
|
|
22
|
-
throw new TypeError(`The Preset profile "${x264Preset}" is not valid. Valid options are ${exports.x264PresetOptions
|
|
23
|
-
.map((p) => `"${p}"`)
|
|
24
|
-
.join(', ')}`);
|
|
25
|
-
}
|
|
26
|
-
};
|
|
27
|
-
exports.validateSelectedCodecAndPresetCombination = validateSelectedCodecAndPresetCombination;
|