@remotion/renderer 4.0.206 → 4.0.208
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/browser/browser-download-progress-bar.js +0 -1
- package/dist/client.d.ts +15 -15
- package/dist/get-local-browser.d.ts +1 -1
- package/dist/get-local-browser.js +1 -37
- package/dist/index.d.ts +8 -8
- package/dist/is-delay-render-error-with-retry.d.ts +1 -0
- package/dist/is-delay-render-error-with-retry.js +28 -0
- package/dist/open-browser.d.ts +4 -0
- package/dist/options/gl.d.ts +3 -3
- package/dist/options/headless.js +1 -1
- package/dist/options/index.d.ts +6 -6
- package/dist/options/options-map.d.ts +9 -9
- package/dist/options/x264-preset.d.ts +2 -2
- package/dist/pixel-format.d.ts +1 -1
- package/dist/render-frames.js +1 -1
- package/dist/render-media.js +5 -0
- package/dist/streaming.d.ts +11 -0
- package/dist/streaming.js +140 -0
- package/package.json +10 -10
|
@@ -4,7 +4,6 @@ exports.defaultBrowserDownloadProgress = void 0;
|
|
|
4
4
|
const logger_1 = require("../logger");
|
|
5
5
|
const to_megabytes_1 = require("../to-megabytes");
|
|
6
6
|
const defaultBrowserDownloadProgress = ({ indent, logLevel, api, }) => () => {
|
|
7
|
-
logger_1.Log.info({ indent, logLevel }, 'No local browser could be found.');
|
|
8
7
|
logger_1.Log.info({ indent, logLevel }, 'Downloading Chrome Headless Shell https://www.remotion.dev/docs/miscellaneous/chrome-headless-shell');
|
|
9
8
|
logger_1.Log.info({ indent, logLevel }, `Customize this behavior by adding a onBrowserDownload function to ${api}.`);
|
|
10
9
|
return {
|
package/dist/client.d.ts
CHANGED
|
@@ -467,19 +467,19 @@ export declare const BrowserSafeApis: {
|
|
|
467
467
|
cliFlag: "gl";
|
|
468
468
|
docLink: string;
|
|
469
469
|
name: string;
|
|
470
|
-
type: "
|
|
470
|
+
type: "swangle" | "angle" | "egl" | "swiftshader" | "vulkan" | "angle-egl" | null;
|
|
471
471
|
ssrName: string;
|
|
472
472
|
description: () => import("react/jsx-runtime").JSX.Element;
|
|
473
473
|
getValue: ({ commandLine }: {
|
|
474
474
|
commandLine: Record<string, unknown>;
|
|
475
475
|
}) => {
|
|
476
|
-
value: "
|
|
476
|
+
value: "swangle" | "angle" | "egl" | "swiftshader" | "vulkan" | "angle-egl";
|
|
477
477
|
source: string;
|
|
478
478
|
} | {
|
|
479
479
|
value: null;
|
|
480
480
|
source: string;
|
|
481
481
|
};
|
|
482
|
-
setConfig: (value: "
|
|
482
|
+
setConfig: (value: "swangle" | "angle" | "egl" | "swiftshader" | "vulkan" | "angle-egl" | null) => void;
|
|
483
483
|
};
|
|
484
484
|
enableLambdaInsights: {
|
|
485
485
|
name: string;
|
|
@@ -604,17 +604,17 @@ export declare const BrowserSafeApis: {
|
|
|
604
604
|
description: () => import("react/jsx-runtime").JSX.Element;
|
|
605
605
|
ssrName: "x264Preset";
|
|
606
606
|
docLink: string;
|
|
607
|
-
type: "
|
|
607
|
+
type: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | null;
|
|
608
608
|
getValue: ({ commandLine }: {
|
|
609
609
|
commandLine: Record<string, unknown>;
|
|
610
610
|
}) => {
|
|
611
|
-
value: "
|
|
611
|
+
value: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo";
|
|
612
612
|
source: string;
|
|
613
613
|
} | {
|
|
614
614
|
value: null;
|
|
615
615
|
source: string;
|
|
616
616
|
};
|
|
617
|
-
setConfig: (profile: "
|
|
617
|
+
setConfig: (profile: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | null) => void;
|
|
618
618
|
};
|
|
619
619
|
logLevelOption: {
|
|
620
620
|
cliFlag: "log";
|
|
@@ -879,17 +879,17 @@ export declare const BrowserSafeApis: {
|
|
|
879
879
|
description: () => import("react/jsx-runtime").JSX.Element;
|
|
880
880
|
ssrName: "x264Preset";
|
|
881
881
|
docLink: string;
|
|
882
|
-
type: "
|
|
882
|
+
type: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | null;
|
|
883
883
|
getValue: ({ commandLine }: {
|
|
884
884
|
commandLine: Record<string, unknown>;
|
|
885
885
|
}) => {
|
|
886
|
-
value: "
|
|
886
|
+
value: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo";
|
|
887
887
|
source: string;
|
|
888
888
|
} | {
|
|
889
889
|
value: null;
|
|
890
890
|
source: string;
|
|
891
891
|
};
|
|
892
|
-
setConfig: (profile: "
|
|
892
|
+
setConfig: (profile: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | null) => void;
|
|
893
893
|
};
|
|
894
894
|
readonly audioBitrate: {
|
|
895
895
|
name: string;
|
|
@@ -1601,17 +1601,17 @@ export declare const BrowserSafeApis: {
|
|
|
1601
1601
|
description: () => import("react/jsx-runtime").JSX.Element;
|
|
1602
1602
|
ssrName: "x264Preset";
|
|
1603
1603
|
docLink: string;
|
|
1604
|
-
type: "
|
|
1604
|
+
type: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | null;
|
|
1605
1605
|
getValue: ({ commandLine }: {
|
|
1606
1606
|
commandLine: Record<string, unknown>;
|
|
1607
1607
|
}) => {
|
|
1608
|
-
value: "
|
|
1608
|
+
value: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo";
|
|
1609
1609
|
source: string;
|
|
1610
1610
|
} | {
|
|
1611
1611
|
value: null;
|
|
1612
1612
|
source: string;
|
|
1613
1613
|
};
|
|
1614
|
-
setConfig: (profile: "
|
|
1614
|
+
setConfig: (profile: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | null) => void;
|
|
1615
1615
|
};
|
|
1616
1616
|
readonly encodingMaxRate: {
|
|
1617
1617
|
name: string;
|
|
@@ -1967,17 +1967,17 @@ export declare const BrowserSafeApis: {
|
|
|
1967
1967
|
description: () => import("react/jsx-runtime").JSX.Element;
|
|
1968
1968
|
ssrName: "x264Preset";
|
|
1969
1969
|
docLink: string;
|
|
1970
|
-
type: "
|
|
1970
|
+
type: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | null;
|
|
1971
1971
|
getValue: ({ commandLine }: {
|
|
1972
1972
|
commandLine: Record<string, unknown>;
|
|
1973
1973
|
}) => {
|
|
1974
|
-
value: "
|
|
1974
|
+
value: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo";
|
|
1975
1975
|
source: string;
|
|
1976
1976
|
} | {
|
|
1977
1977
|
value: null;
|
|
1978
1978
|
source: string;
|
|
1979
1979
|
};
|
|
1980
|
-
setConfig: (profile: "
|
|
1980
|
+
setConfig: (profile: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | null) => void;
|
|
1981
1981
|
};
|
|
1982
1982
|
readonly encodingMaxRate: {
|
|
1983
1983
|
name: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const getLocalBrowser: () =>
|
|
1
|
+
export declare const getLocalBrowser: () => null;
|
|
@@ -5,44 +5,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.getLocalBrowser = void 0;
|
|
7
7
|
const fs_1 = __importDefault(require("fs"));
|
|
8
|
-
const node_os_1 = require("node:os");
|
|
9
|
-
const no_react_1 = require("remotion/no-react");
|
|
10
8
|
const getSearchPathsForProduct = () => {
|
|
11
|
-
|
|
12
|
-
if (no_react_1.NoReactInternals.ENABLE_V5_BREAKING_CHANGES) {
|
|
13
|
-
return [];
|
|
14
|
-
}
|
|
15
|
-
return [
|
|
16
|
-
(_a = process.env.PUPPETEER_EXECUTABLE_PATH) !== null && _a !== void 0 ? _a : null,
|
|
17
|
-
process.platform === 'darwin'
|
|
18
|
-
? '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome'
|
|
19
|
-
: null,
|
|
20
|
-
process.platform === 'linux' ? '/usr/bin/google-chrome' : null,
|
|
21
|
-
process.platform === 'linux' ? '/usr/bin/chromium-browser' : null,
|
|
22
|
-
process.platform === 'linux' ? '/usr/bin/chromium' : null, // Debian
|
|
23
|
-
process.platform === 'linux'
|
|
24
|
-
? '/app/.apt/usr/bin/google-chrome-stable'
|
|
25
|
-
: null,
|
|
26
|
-
process.platform === 'win32'
|
|
27
|
-
? 'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe'
|
|
28
|
-
: null,
|
|
29
|
-
process.platform === 'win32'
|
|
30
|
-
? 'C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe'
|
|
31
|
-
: null,
|
|
32
|
-
process.platform === 'win32'
|
|
33
|
-
? (0, node_os_1.homedir)() + '\\AppData\\Local\\Google\\Chrome\\Application\\chrome.exe'
|
|
34
|
-
: null,
|
|
35
|
-
process.platform === 'win32'
|
|
36
|
-
? 'C:\\Program Files\\Google\\Chrome SxS\\Application\\chrome.exe'
|
|
37
|
-
: null,
|
|
38
|
-
process.platform === 'win32'
|
|
39
|
-
? 'C:\\Program Files (x86)\\Google\\Chrome SxS\\Application\\chrome.exe'
|
|
40
|
-
: null,
|
|
41
|
-
process.platform === 'win32'
|
|
42
|
-
? (0, node_os_1.homedir)() +
|
|
43
|
-
'\\AppData\\Local\\Google\\Chrome SxS\\Application\\chrome.exe'
|
|
44
|
-
: null,
|
|
45
|
-
].filter(Boolean);
|
|
9
|
+
return [];
|
|
46
10
|
};
|
|
47
11
|
const getLocalBrowser = () => {
|
|
48
12
|
for (const p of getSearchPathsForProduct()) {
|
package/dist/index.d.ts
CHANGED
|
@@ -141,8 +141,8 @@ export declare const RenderInternals: {
|
|
|
141
141
|
validPixelFormats: readonly ["yuv420p", "yuva420p", "yuv422p", "yuv444p", "yuv420p10le", "yuv422p10le", "yuv444p10le", "yuva444p10le"];
|
|
142
142
|
DEFAULT_BROWSER: "chrome";
|
|
143
143
|
validateFrameRange: (frameRange: import("./frame-range").FrameRange | null) => void;
|
|
144
|
-
DEFAULT_OPENGL_RENDERER: "
|
|
145
|
-
validateOpenGlRenderer: (option: unknown) => "
|
|
144
|
+
DEFAULT_OPENGL_RENDERER: "swangle" | "angle" | "egl" | "swiftshader" | "vulkan" | "angle-egl" | null;
|
|
145
|
+
validateOpenGlRenderer: (option: unknown) => "swangle" | "angle" | "egl" | "swiftshader" | "vulkan" | "angle-egl" | null;
|
|
146
146
|
validCodecs: readonly ["h264", "h265", "vp8", "vp9", "mp3", "aac", "wav", "prores", "h264-mkv", "h264-ts", "gif"];
|
|
147
147
|
DEFAULT_PIXEL_FORMAT: "yuv420p" | "yuva420p" | "yuv422p" | "yuv444p" | "yuv420p10le" | "yuv422p10le" | "yuv444p10le" | "yuva444p10le";
|
|
148
148
|
validateJpegQuality: (q: unknown) => void;
|
|
@@ -354,8 +354,8 @@ export declare const RenderInternals: {
|
|
|
354
354
|
}) => execa.ExecaChildProcess<string>;
|
|
355
355
|
validStillImageFormats: readonly ["png", "jpeg", "pdf", "webp"];
|
|
356
356
|
validVideoImageFormats: readonly ["png", "jpeg", "none"];
|
|
357
|
-
DEFAULT_STILL_IMAGE_FORMAT: "
|
|
358
|
-
DEFAULT_VIDEO_IMAGE_FORMAT: "
|
|
357
|
+
DEFAULT_STILL_IMAGE_FORMAT: "png" | "jpeg" | "pdf" | "webp";
|
|
358
|
+
DEFAULT_VIDEO_IMAGE_FORMAT: "png" | "jpeg" | "none";
|
|
359
359
|
DEFAULT_JPEG_QUALITY: number;
|
|
360
360
|
chalk: {
|
|
361
361
|
enabled: () => boolean;
|
|
@@ -453,7 +453,7 @@ export declare const RenderInternals: {
|
|
|
453
453
|
frame: number;
|
|
454
454
|
serializedInputPropsWithCustomSchema: string;
|
|
455
455
|
serializedResolvedPropsWithCustomSchema: string;
|
|
456
|
-
imageFormat: "
|
|
456
|
+
imageFormat: "png" | "jpeg" | "pdf" | "webp";
|
|
457
457
|
jpegQuality: number;
|
|
458
458
|
puppeteerInstance: HeadlessBrowser | null;
|
|
459
459
|
envVariables: Record<string, string>;
|
|
@@ -754,7 +754,7 @@ export declare const RenderInternals: {
|
|
|
754
754
|
onFrameUpdate: ((framesRendered: number, frameIndex: number, timeToRenderInMilliseconds: number) => void) | null;
|
|
755
755
|
outputDir: string | null;
|
|
756
756
|
envVariables: Record<string, string>;
|
|
757
|
-
imageFormat: "
|
|
757
|
+
imageFormat: "png" | "jpeg" | "none";
|
|
758
758
|
jpegQuality: number;
|
|
759
759
|
frameRange: import("./frame-range").FrameRange | null;
|
|
760
760
|
everyNthFrame: number;
|
|
@@ -767,7 +767,7 @@ export declare const RenderInternals: {
|
|
|
767
767
|
scale: number;
|
|
768
768
|
port: number | null;
|
|
769
769
|
cancelSignal: import("./make-cancel-signal").CancelSignal | undefined;
|
|
770
|
-
composition: Omit<import("remotion").VideoConfig, "
|
|
770
|
+
composition: Omit<import("remotion").VideoConfig, "props" | "defaultProps">;
|
|
771
771
|
indent: boolean;
|
|
772
772
|
server: import("./prepare-server").RemotionServer | undefined;
|
|
773
773
|
muted: boolean;
|
|
@@ -922,7 +922,7 @@ export declare const RenderInternals: {
|
|
|
922
922
|
assetsInfo: import("./assets/download-map").RenderAssetInfo | null;
|
|
923
923
|
enforceAudioTrack: boolean;
|
|
924
924
|
muted: boolean;
|
|
925
|
-
}) => "
|
|
925
|
+
}) => "yes" | "maybe" | "no";
|
|
926
926
|
codecSupportsMedia: (codec: "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "h264-ts" | "gif") => {
|
|
927
927
|
video: boolean;
|
|
928
928
|
audio: boolean;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const getRetriesLeftFromError: (error: Error | undefined) => number;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getRetriesLeftFromError = void 0;
|
|
4
|
+
const no_react_1 = require("remotion/no-react");
|
|
5
|
+
const getRetriesLeftFromError = (error) => {
|
|
6
|
+
if (!error) {
|
|
7
|
+
throw new Error('Expected stack');
|
|
8
|
+
}
|
|
9
|
+
const { stack } = error;
|
|
10
|
+
if (!stack) {
|
|
11
|
+
throw new Error('Expected stack: ' + JSON.stringify(error));
|
|
12
|
+
}
|
|
13
|
+
const beforeIndex = stack.indexOf(no_react_1.NoReactInternals.DELAY_RENDER_ATTEMPT_TOKEN);
|
|
14
|
+
if (beforeIndex === -1) {
|
|
15
|
+
throw new Error('Expected to find attempt token in stack');
|
|
16
|
+
}
|
|
17
|
+
const afterIndex = stack.indexOf(no_react_1.NoReactInternals.DELAY_RENDER_RETRY_TOKEN);
|
|
18
|
+
if (afterIndex === -1) {
|
|
19
|
+
throw new Error('Expected to find retry token in stack');
|
|
20
|
+
}
|
|
21
|
+
const inbetween = stack.substring(beforeIndex + no_react_1.NoReactInternals.DELAY_RENDER_ATTEMPT_TOKEN.length, afterIndex);
|
|
22
|
+
const parsed = Number(inbetween);
|
|
23
|
+
if (Number.isNaN(parsed)) {
|
|
24
|
+
throw new Error(`Expected to find a number in the stack ${stack}`);
|
|
25
|
+
}
|
|
26
|
+
return parsed;
|
|
27
|
+
};
|
|
28
|
+
exports.getRetriesLeftFromError = getRetriesLeftFromError;
|
package/dist/open-browser.d.ts
CHANGED
|
@@ -7,6 +7,10 @@ import type { validOpenGlRenderers } from './options/gl';
|
|
|
7
7
|
import type { OnBrowserDownload } from './options/on-browser-download';
|
|
8
8
|
type OpenGlRenderer = (typeof validOpenGlRenderers)[number];
|
|
9
9
|
type OnlyV4Options = typeof NoReactInternals.ENABLE_V5_BREAKING_CHANGES extends true ? {} : {
|
|
10
|
+
/**
|
|
11
|
+
* @deprecated - Will be removed in v5.
|
|
12
|
+
* Chrome Headless shell does not allow disabling headless mode anymore.
|
|
13
|
+
*/
|
|
10
14
|
headless?: boolean;
|
|
11
15
|
};
|
|
12
16
|
export type ChromiumOptions = {
|
package/dist/options/gl.d.ts
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
export declare const validOpenGlRenderers: readonly ["swangle", "angle", "egl", "swiftshader", "vulkan", "angle-egl"];
|
|
2
2
|
export type OpenGlRenderer = (typeof validOpenGlRenderers)[number];
|
|
3
3
|
export declare const DEFAULT_OPENGL_RENDERER: OpenGlRenderer | null;
|
|
4
|
-
export declare const getChromiumOpenGlRenderer: () => "
|
|
4
|
+
export declare const getChromiumOpenGlRenderer: () => "swangle" | "angle" | "egl" | "swiftshader" | "vulkan" | "angle-egl" | null;
|
|
5
5
|
export declare const setChromiumOpenGlRenderer: (renderer: OpenGlRenderer) => void;
|
|
6
6
|
export declare const glOption: {
|
|
7
7
|
cliFlag: "gl";
|
|
8
8
|
docLink: string;
|
|
9
9
|
name: string;
|
|
10
|
-
type: "
|
|
10
|
+
type: "swangle" | "angle" | "egl" | "swiftshader" | "vulkan" | "angle-egl" | null;
|
|
11
11
|
ssrName: string;
|
|
12
12
|
description: () => import("react/jsx-runtime").JSX.Element;
|
|
13
13
|
getValue: ({ commandLine }: {
|
|
14
14
|
commandLine: Record<string, unknown>;
|
|
15
15
|
}) => {
|
|
16
|
-
value: "
|
|
16
|
+
value: "swangle" | "angle" | "egl" | "swiftshader" | "vulkan" | "angle-egl";
|
|
17
17
|
source: string;
|
|
18
18
|
} | {
|
|
19
19
|
value: null;
|
package/dist/options/headless.js
CHANGED
|
@@ -8,7 +8,7 @@ const cliFlag = 'disable-headless';
|
|
|
8
8
|
exports.headlessOption = {
|
|
9
9
|
name: 'Disable Headless Mode',
|
|
10
10
|
cliFlag,
|
|
11
|
-
description: () => ((0, jsx_runtime_1.
|
|
11
|
+
description: () => ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: ["Deprecated - will be removed in 5.0.0. With the migration to", ' ', (0, jsx_runtime_1.jsx)("a", { href: "/docs/miscellaneous/chrome-headless-shell", children: "Chrome Headless Shell" }), ", this option is not functional anymore.", (0, jsx_runtime_1.jsx)("br", {}), (0, jsx_runtime_1.jsx)("br", {}), " If disabled, the render will open an actual Chrome window where you can see the render happen. The default is headless mode."] })),
|
|
12
12
|
ssrName: 'headless',
|
|
13
13
|
docLink: 'https://www.remotion.dev/docs/chromium-flags#--disable-headless',
|
|
14
14
|
type: false,
|
package/dist/options/index.d.ts
CHANGED
|
@@ -245,19 +245,19 @@ export declare const allOptions: {
|
|
|
245
245
|
cliFlag: "gl";
|
|
246
246
|
docLink: string;
|
|
247
247
|
name: string;
|
|
248
|
-
type: "
|
|
248
|
+
type: "swangle" | "angle" | "egl" | "swiftshader" | "vulkan" | "angle-egl" | null;
|
|
249
249
|
ssrName: string;
|
|
250
250
|
description: () => import("react/jsx-runtime").JSX.Element;
|
|
251
251
|
getValue: ({ commandLine }: {
|
|
252
252
|
commandLine: Record<string, unknown>;
|
|
253
253
|
}) => {
|
|
254
|
-
value: "
|
|
254
|
+
value: "swangle" | "angle" | "egl" | "swiftshader" | "vulkan" | "angle-egl";
|
|
255
255
|
source: string;
|
|
256
256
|
} | {
|
|
257
257
|
value: null;
|
|
258
258
|
source: string;
|
|
259
259
|
};
|
|
260
|
-
setConfig: (value: "
|
|
260
|
+
setConfig: (value: "swangle" | "angle" | "egl" | "swiftshader" | "vulkan" | "angle-egl" | null) => void;
|
|
261
261
|
};
|
|
262
262
|
enableLambdaInsights: {
|
|
263
263
|
name: string;
|
|
@@ -382,17 +382,17 @@ export declare const allOptions: {
|
|
|
382
382
|
description: () => import("react/jsx-runtime").JSX.Element;
|
|
383
383
|
ssrName: "x264Preset";
|
|
384
384
|
docLink: string;
|
|
385
|
-
type: "
|
|
385
|
+
type: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | null;
|
|
386
386
|
getValue: ({ commandLine }: {
|
|
387
387
|
commandLine: Record<string, unknown>;
|
|
388
388
|
}) => {
|
|
389
|
-
value: "
|
|
389
|
+
value: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo";
|
|
390
390
|
source: string;
|
|
391
391
|
} | {
|
|
392
392
|
value: null;
|
|
393
393
|
source: string;
|
|
394
394
|
};
|
|
395
|
-
setConfig: (profile: "
|
|
395
|
+
setConfig: (profile: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | null) => void;
|
|
396
396
|
};
|
|
397
397
|
logLevelOption: {
|
|
398
398
|
cliFlag: "log";
|
|
@@ -72,17 +72,17 @@ export declare const optionsMap: {
|
|
|
72
72
|
description: () => import("react/jsx-runtime").JSX.Element;
|
|
73
73
|
ssrName: "x264Preset";
|
|
74
74
|
docLink: string;
|
|
75
|
-
type: "
|
|
75
|
+
type: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | null;
|
|
76
76
|
getValue: ({ commandLine }: {
|
|
77
77
|
commandLine: Record<string, unknown>;
|
|
78
78
|
}) => {
|
|
79
|
-
value: "
|
|
79
|
+
value: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo";
|
|
80
80
|
source: string;
|
|
81
81
|
} | {
|
|
82
82
|
value: null;
|
|
83
83
|
source: string;
|
|
84
84
|
};
|
|
85
|
-
setConfig: (profile: "
|
|
85
|
+
setConfig: (profile: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | null) => void;
|
|
86
86
|
};
|
|
87
87
|
readonly audioBitrate: {
|
|
88
88
|
name: string;
|
|
@@ -794,17 +794,17 @@ export declare const optionsMap: {
|
|
|
794
794
|
description: () => import("react/jsx-runtime").JSX.Element;
|
|
795
795
|
ssrName: "x264Preset";
|
|
796
796
|
docLink: string;
|
|
797
|
-
type: "
|
|
797
|
+
type: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | null;
|
|
798
798
|
getValue: ({ commandLine }: {
|
|
799
799
|
commandLine: Record<string, unknown>;
|
|
800
800
|
}) => {
|
|
801
|
-
value: "
|
|
801
|
+
value: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo";
|
|
802
802
|
source: string;
|
|
803
803
|
} | {
|
|
804
804
|
value: null;
|
|
805
805
|
source: string;
|
|
806
806
|
};
|
|
807
|
-
setConfig: (profile: "
|
|
807
|
+
setConfig: (profile: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | null) => void;
|
|
808
808
|
};
|
|
809
809
|
readonly encodingMaxRate: {
|
|
810
810
|
name: string;
|
|
@@ -1160,17 +1160,17 @@ export declare const optionsMap: {
|
|
|
1160
1160
|
description: () => import("react/jsx-runtime").JSX.Element;
|
|
1161
1161
|
ssrName: "x264Preset";
|
|
1162
1162
|
docLink: string;
|
|
1163
|
-
type: "
|
|
1163
|
+
type: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | null;
|
|
1164
1164
|
getValue: ({ commandLine }: {
|
|
1165
1165
|
commandLine: Record<string, unknown>;
|
|
1166
1166
|
}) => {
|
|
1167
|
-
value: "
|
|
1167
|
+
value: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo";
|
|
1168
1168
|
source: string;
|
|
1169
1169
|
} | {
|
|
1170
1170
|
value: null;
|
|
1171
1171
|
source: string;
|
|
1172
1172
|
};
|
|
1173
|
-
setConfig: (profile: "
|
|
1173
|
+
setConfig: (profile: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | null) => void;
|
|
1174
1174
|
};
|
|
1175
1175
|
readonly encodingMaxRate: {
|
|
1176
1176
|
name: string;
|
|
@@ -11,11 +11,11 @@ export declare const x264Option: {
|
|
|
11
11
|
description: () => import("react/jsx-runtime").JSX.Element;
|
|
12
12
|
ssrName: "x264Preset";
|
|
13
13
|
docLink: string;
|
|
14
|
-
type: "
|
|
14
|
+
type: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | null;
|
|
15
15
|
getValue: ({ commandLine }: {
|
|
16
16
|
commandLine: Record<string, unknown>;
|
|
17
17
|
}) => {
|
|
18
|
-
value: "
|
|
18
|
+
value: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo";
|
|
19
19
|
source: string;
|
|
20
20
|
} | {
|
|
21
21
|
value: null;
|
package/dist/pixel-format.d.ts
CHANGED
|
@@ -2,5 +2,5 @@ import type { Codec } from './codec';
|
|
|
2
2
|
export declare const validPixelFormats: readonly ["yuv420p", "yuva420p", "yuv422p", "yuv444p", "yuv420p10le", "yuv422p10le", "yuv444p10le", "yuva444p10le"];
|
|
3
3
|
export type PixelFormat = (typeof validPixelFormats)[number];
|
|
4
4
|
export declare const DEFAULT_PIXEL_FORMAT: PixelFormat;
|
|
5
|
-
export declare const validPixelFormatsForCodec: (codec: Codec) => readonly ["yuv420p", "yuva420p", "yuv422p", "yuv444p", "yuv420p10le", "yuv422p10le", "yuv444p10le", "yuva444p10le"] | ("yuv420p" | "
|
|
5
|
+
export declare const validPixelFormatsForCodec: (codec: Codec) => readonly ["yuv420p", "yuva420p", "yuv422p", "yuv444p", "yuv420p10le", "yuv422p10le", "yuv444p10le", "yuva444p10le"] | ("yuv420p" | "yuv422p" | "yuv444p" | "yuva420p" | "yuv420p10le" | "yuv422p10le" | "yuv444p10le" | "yuva444p10le")[];
|
|
6
6
|
export declare const validateSelectedPixelFormatAndCodecCombination: (pixelFormat: PixelFormat | undefined, codec: Codec) => undefined;
|
package/dist/render-frames.js
CHANGED
|
@@ -23,7 +23,7 @@ const get_duration_from_frame_range_1 = require("./get-duration-from-frame-range
|
|
|
23
23
|
const get_extra_frames_to_capture_1 = require("./get-extra-frames-to-capture");
|
|
24
24
|
const get_frame_padded_index_1 = require("./get-frame-padded-index");
|
|
25
25
|
const get_frame_to_render_1 = require("./get-frame-to-render");
|
|
26
|
-
const is_delay_render_error_with_retry_1 = require("./is-delay-render-error-with
|
|
26
|
+
const is_delay_render_error_with_retry_1 = require("./is-delay-render-error-with-retry");
|
|
27
27
|
const jpeg_quality_1 = require("./jpeg-quality");
|
|
28
28
|
const logger_1 = require("./logger");
|
|
29
29
|
const make_cancel_signal_1 = require("./make-cancel-signal");
|
package/dist/render-media.js
CHANGED
|
@@ -128,6 +128,11 @@ const internalRenderMediaRaw = ({ proResProfile, x264Preset, crf, composition, s
|
|
|
128
128
|
logLevel,
|
|
129
129
|
tag: 'renderMedia()',
|
|
130
130
|
}, 'Using concurrency:', resolvedConcurrency);
|
|
131
|
+
logger_1.Log.verbose({
|
|
132
|
+
indent,
|
|
133
|
+
logLevel,
|
|
134
|
+
tag: 'renderMedia()',
|
|
135
|
+
}, 'delayRender() timeout:', timeoutInMilliseconds);
|
|
131
136
|
logger_1.Log.verbose({
|
|
132
137
|
indent,
|
|
133
138
|
logLevel,
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare const streamingKey = "remotion_buffer:";
|
|
2
|
+
export declare const makeStreamer: (onMessage: (statusType: 'success' | 'error', nonce: string, data: Uint8Array) => void) => {
|
|
3
|
+
onData: (data: Uint8Array) => void;
|
|
4
|
+
getOutputBuffer: () => Uint8Array;
|
|
5
|
+
clear: () => void;
|
|
6
|
+
};
|
|
7
|
+
export declare const makeStreamPayloadMessage: ({ status, body, nonce, }: {
|
|
8
|
+
nonce: string;
|
|
9
|
+
status: 0 | 1;
|
|
10
|
+
body: Uint8Array;
|
|
11
|
+
}) => Uint8Array;
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.makeStreamPayloadMessage = exports.makeStreamer = exports.streamingKey = void 0;
|
|
4
|
+
exports.streamingKey = 'remotion_buffer:';
|
|
5
|
+
const magicWordStr = 'remotion_buffer:';
|
|
6
|
+
const makeStreamer = (onMessage) => {
|
|
7
|
+
const separator = new Uint8Array(magicWordStr.length);
|
|
8
|
+
for (let i = 0; i < magicWordStr.length; i++) {
|
|
9
|
+
separator[i] = magicWordStr.charCodeAt(i);
|
|
10
|
+
}
|
|
11
|
+
let unprocessedBuffers = [];
|
|
12
|
+
let outputBuffer = new Uint8Array(0);
|
|
13
|
+
let missingData = null;
|
|
14
|
+
const processInput = () => {
|
|
15
|
+
let separatorIndex = outputBuffer.indexOf(separator[0]); // Start checking for the first byte of the separator
|
|
16
|
+
if (separatorIndex === -1 ||
|
|
17
|
+
outputBuffer
|
|
18
|
+
.subarray(separatorIndex, separatorIndex + separator.length)
|
|
19
|
+
.toString() !== separator.toString()) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
separatorIndex += separator.length;
|
|
23
|
+
let nonceString = '';
|
|
24
|
+
let lengthString = '';
|
|
25
|
+
let statusString = '';
|
|
26
|
+
// eslint-disable-next-line no-constant-condition
|
|
27
|
+
while (true) {
|
|
28
|
+
if (separatorIndex > outputBuffer.length - 1) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
const nextDigit = outputBuffer[separatorIndex];
|
|
32
|
+
separatorIndex++;
|
|
33
|
+
if (nextDigit === 0x3a) {
|
|
34
|
+
break;
|
|
35
|
+
}
|
|
36
|
+
nonceString += String.fromCharCode(nextDigit);
|
|
37
|
+
}
|
|
38
|
+
// eslint-disable-next-line no-constant-condition
|
|
39
|
+
while (true) {
|
|
40
|
+
if (separatorIndex > outputBuffer.length - 1) {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
const nextDigit = outputBuffer[separatorIndex];
|
|
44
|
+
separatorIndex++;
|
|
45
|
+
if (nextDigit === 0x3a) {
|
|
46
|
+
break;
|
|
47
|
+
}
|
|
48
|
+
lengthString += String.fromCharCode(nextDigit);
|
|
49
|
+
}
|
|
50
|
+
// eslint-disable-next-line no-constant-condition
|
|
51
|
+
while (true) {
|
|
52
|
+
if (separatorIndex > outputBuffer.length - 1) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
const nextDigit = outputBuffer[separatorIndex];
|
|
56
|
+
if (nextDigit === 0x3a) {
|
|
57
|
+
break;
|
|
58
|
+
}
|
|
59
|
+
separatorIndex++;
|
|
60
|
+
statusString += String.fromCharCode(nextDigit);
|
|
61
|
+
}
|
|
62
|
+
const length = Number(lengthString);
|
|
63
|
+
const status = Number(statusString);
|
|
64
|
+
const dataLength = outputBuffer.length - separatorIndex - 1;
|
|
65
|
+
if (dataLength < length) {
|
|
66
|
+
missingData = {
|
|
67
|
+
dataMissing: length - dataLength,
|
|
68
|
+
};
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
const data = outputBuffer.subarray(separatorIndex + 1, separatorIndex + 1 + Number(lengthString));
|
|
72
|
+
onMessage(status === 1 ? 'error' : 'success', nonceString, data);
|
|
73
|
+
missingData = null;
|
|
74
|
+
outputBuffer = outputBuffer.subarray(separatorIndex + Number(lengthString) + 1);
|
|
75
|
+
processInput();
|
|
76
|
+
};
|
|
77
|
+
const onData = (data) => {
|
|
78
|
+
unprocessedBuffers.push(data);
|
|
79
|
+
const separatorIndex = data.indexOf(separator[0]);
|
|
80
|
+
if (separatorIndex === -1) {
|
|
81
|
+
if (missingData) {
|
|
82
|
+
missingData.dataMissing -= data.length;
|
|
83
|
+
}
|
|
84
|
+
if (!missingData || missingData.dataMissing > 0) {
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
unprocessedBuffers.unshift(outputBuffer);
|
|
89
|
+
outputBuffer = new Uint8Array(unprocessedBuffers.reduce((acc, val) => acc + val.length, 0));
|
|
90
|
+
let offset = 0;
|
|
91
|
+
for (const buf of unprocessedBuffers) {
|
|
92
|
+
outputBuffer.set(buf, offset);
|
|
93
|
+
offset += buf.length;
|
|
94
|
+
}
|
|
95
|
+
unprocessedBuffers = [];
|
|
96
|
+
processInput();
|
|
97
|
+
};
|
|
98
|
+
return {
|
|
99
|
+
onData,
|
|
100
|
+
getOutputBuffer: () => outputBuffer,
|
|
101
|
+
clear: () => {
|
|
102
|
+
unprocessedBuffers = [];
|
|
103
|
+
outputBuffer = new Uint8Array(0);
|
|
104
|
+
},
|
|
105
|
+
};
|
|
106
|
+
};
|
|
107
|
+
exports.makeStreamer = makeStreamer;
|
|
108
|
+
const makeStreamPayloadMessage = ({ status, body, nonce, }) => {
|
|
109
|
+
const nonceArr = new TextEncoder().encode(nonce);
|
|
110
|
+
const magicWordArr = new TextEncoder().encode(magicWordStr);
|
|
111
|
+
const separatorArr = new TextEncoder().encode(':');
|
|
112
|
+
const bodyLengthArr = new TextEncoder().encode(body.length.toString());
|
|
113
|
+
const statusArr = new TextEncoder().encode(String(status));
|
|
114
|
+
// Calculate total length of new Uint8Array
|
|
115
|
+
const totalLength = nonceArr.length +
|
|
116
|
+
magicWordArr.length +
|
|
117
|
+
separatorArr.length * 3 +
|
|
118
|
+
bodyLengthArr.length +
|
|
119
|
+
statusArr.length +
|
|
120
|
+
body.length;
|
|
121
|
+
// Create a new Uint8Array to hold all combined parts
|
|
122
|
+
const concat = new Uint8Array(totalLength);
|
|
123
|
+
let offset = 0;
|
|
124
|
+
// Function to append data to concat
|
|
125
|
+
const appendToConcat = (data) => {
|
|
126
|
+
concat.set(data, offset);
|
|
127
|
+
offset += data.length;
|
|
128
|
+
};
|
|
129
|
+
// Building the final Uint8Array
|
|
130
|
+
appendToConcat(magicWordArr);
|
|
131
|
+
appendToConcat(nonceArr);
|
|
132
|
+
appendToConcat(separatorArr);
|
|
133
|
+
appendToConcat(bodyLengthArr);
|
|
134
|
+
appendToConcat(separatorArr);
|
|
135
|
+
appendToConcat(statusArr);
|
|
136
|
+
appendToConcat(separatorArr);
|
|
137
|
+
appendToConcat(body);
|
|
138
|
+
return concat;
|
|
139
|
+
};
|
|
140
|
+
exports.makeStreamPayloadMessage = makeStreamPayloadMessage;
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"url": "https://github.com/remotion-dev/remotion/tree/main/packages/renderer"
|
|
4
4
|
},
|
|
5
5
|
"name": "@remotion/renderer",
|
|
6
|
-
"version": "4.0.
|
|
6
|
+
"version": "4.0.208",
|
|
7
7
|
"description": "Render Remotion videos using Node.js or Bun",
|
|
8
8
|
"main": "dist/index.js",
|
|
9
9
|
"types": "dist/index.d.ts",
|
|
@@ -18,8 +18,8 @@
|
|
|
18
18
|
"extract-zip": "2.0.1",
|
|
19
19
|
"source-map": "^0.8.0-beta.0",
|
|
20
20
|
"ws": "8.17.1",
|
|
21
|
-
"
|
|
22
|
-
"remotion": "4.0.
|
|
21
|
+
"remotion": "4.0.208",
|
|
22
|
+
"@remotion/streaming": "4.0.208"
|
|
23
23
|
},
|
|
24
24
|
"peerDependencies": {
|
|
25
25
|
"react": ">=16.8.0",
|
|
@@ -34,13 +34,13 @@
|
|
|
34
34
|
"@types/ws": "8.5.10"
|
|
35
35
|
},
|
|
36
36
|
"optionalDependencies": {
|
|
37
|
-
"@remotion/compositor-darwin-
|
|
38
|
-
"@remotion/compositor-
|
|
39
|
-
"@remotion/compositor-
|
|
40
|
-
"@remotion/compositor-linux-arm64-
|
|
41
|
-
"@remotion/compositor-linux-x64-gnu": "4.0.
|
|
42
|
-
"@remotion/compositor-win32-x64-msvc": "4.0.
|
|
43
|
-
"@remotion/compositor-linux-x64-musl": "4.0.
|
|
37
|
+
"@remotion/compositor-darwin-x64": "4.0.208",
|
|
38
|
+
"@remotion/compositor-darwin-arm64": "4.0.208",
|
|
39
|
+
"@remotion/compositor-linux-arm64-gnu": "4.0.208",
|
|
40
|
+
"@remotion/compositor-linux-arm64-musl": "4.0.208",
|
|
41
|
+
"@remotion/compositor-linux-x64-gnu": "4.0.208",
|
|
42
|
+
"@remotion/compositor-win32-x64-msvc": "4.0.208",
|
|
43
|
+
"@remotion/compositor-linux-x64-musl": "4.0.208"
|
|
44
44
|
},
|
|
45
45
|
"keywords": [
|
|
46
46
|
"remotion",
|