@remotion/renderer 4.0.0-alpha4 → 4.0.0-alpha6
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/README.md +5 -43
- package/dist/assets/download-and-map-assets-to-file.js +6 -6
- package/dist/assets/download-file.d.ts +3 -2
- package/dist/assets/download-file.js +18 -3
- package/dist/assets/download-map.d.ts +0 -26
- package/dist/assets/download-map.js +7 -12
- package/dist/assets/get-audio-channels.d.ts +1 -2
- package/dist/assets/get-audio-channels.js +5 -9
- package/dist/assets/read-file.d.ts +1 -1
- package/dist/assets/read-file.js +2 -2
- package/dist/assets/sanitize-filepath.js +2 -2
- package/dist/audio-codec.d.ts +4 -3
- package/dist/audio-codec.js +3 -9
- package/dist/browser/BrowserFetcher.d.ts +0 -1
- package/dist/browser/BrowserFetcher.js +14 -15
- package/dist/browser/BrowserRunner.d.ts +1 -1
- package/dist/browser/BrowserRunner.js +10 -4
- package/dist/browser/FrameManager.js +2 -3
- package/dist/browser/LaunchOptions.d.ts +1 -0
- package/dist/browser/Launcher.js +6 -5
- package/dist/browser/NodeWebSocketTransport.js +4 -4
- package/dist/browser/devtools-commands.d.ts +5 -1
- package/dist/browser/devtools-types.d.ts +78 -0
- package/dist/browser/get-download-destination.js +8 -8
- package/dist/browser/is-target-closed-err.d.ts +1 -0
- package/dist/browser/is-target-closed-err.js +9 -0
- package/dist/call-ffmpeg.d.ts +14 -0
- package/dist/call-ffmpeg.js +40 -0
- package/dist/check-apple-silicon.js +2 -45
- package/dist/client.d.ts +79 -42
- package/dist/client.js +27 -1
- package/dist/codec-supports-media.d.ts +2 -1
- package/dist/codec-supports-media.js +20 -5
- package/dist/combine-videos.d.ts +0 -3
- package/dist/combine-videos.js +9 -13
- package/dist/compositor/compose.d.ts +3 -1
- package/dist/compositor/compose.js +41 -18
- package/dist/compositor/compositor.d.ts +12 -0
- package/dist/compositor/compositor.js +204 -0
- package/dist/compositor/get-executable-path.d.ts +1 -1
- package/dist/compositor/get-executable-path.js +27 -8
- package/dist/compositor/make-nonce.d.ts +1 -0
- package/dist/compositor/make-nonce.js +8 -0
- package/dist/compositor/payloads.d.ts +34 -7
- package/dist/create-ffmpeg-complex-filter.d.ts +5 -5
- package/dist/create-ffmpeg-complex-filter.js +2 -4
- package/dist/create-ffmpeg-merge-filter.d.ts +2 -5
- package/dist/create-ffmpeg-merge-filter.js +2 -10
- package/dist/create-silent-audio.d.ts +1 -4
- package/dist/create-silent-audio.js +3 -7
- package/dist/crf.js +8 -2
- package/dist/delete-directory.js +18 -18
- package/dist/does-have-m2-bug.js +2 -2
- package/dist/ensure-output-directory.js +5 -5
- package/dist/ffmpeg-filter-file.js +7 -7
- package/dist/file-extensions.d.ts +1 -12
- package/dist/file-extensions.js +8 -14
- package/dist/find-closest-package-json.js +6 -6
- package/dist/get-compositions.d.ts +3 -5
- package/dist/get-compositions.js +8 -11
- package/dist/get-concurrency.js +3 -3
- package/dist/get-extension-from-codec.d.ts +2 -2
- package/dist/get-extension-of-filename.js +2 -2
- package/dist/get-frame-padded-index.d.ts +2 -1
- package/dist/get-local-browser-executable.js +4 -4
- package/dist/get-video-threads-flag.js +3 -3
- package/dist/guess-extension-for-media.d.ts +1 -3
- package/dist/guess-extension-for-media.js +4 -8
- package/dist/image-format.d.ts +12 -6
- package/dist/image-format.js +16 -13
- package/dist/index.d.ts +80 -61
- package/dist/index.js +15 -17
- package/dist/jpeg-quality.d.ts +1 -0
- package/dist/jpeg-quality.js +21 -0
- package/dist/merge-audio-track.d.ts +0 -2
- package/dist/merge-audio-track.js +5 -12
- package/dist/mime-types.js +2 -2
- package/dist/offthread-video-server.d.ts +9 -9
- package/dist/offthread-video-server.js +65 -58
- package/dist/open-browser.d.ts +1 -0
- package/dist/open-browser.js +7 -6
- package/dist/options/audio-bitrate.d.ts +2 -0
- package/dist/options/audio-bitrate.js +11 -0
- package/dist/options/crf.d.ts +2 -0
- package/dist/options/crf.js +11 -0
- package/dist/options/enforce-audio.d.ts +2 -0
- package/dist/options/enforce-audio.js +11 -0
- package/dist/options/jpeg-quality.d.ts +2 -0
- package/dist/options/jpeg-quality.js +11 -0
- package/dist/options/mute.d.ts +2 -0
- package/dist/options/mute.js +11 -0
- package/dist/options/option.d.ts +8 -0
- package/dist/options/option.js +2 -0
- package/dist/options/scale.d.ts +2 -0
- package/dist/options/scale.js +11 -0
- package/dist/options/video-bitrate.d.ts +2 -0
- package/dist/options/video-bitrate.js +11 -0
- package/dist/options/video-codec.d.ts +2 -0
- package/dist/options/video-codec.js +11 -0
- package/dist/perf.d.ts +1 -1
- package/dist/perf.js +9 -7
- package/dist/prepare-server.d.ts +3 -4
- package/dist/prepare-server.js +9 -9
- package/dist/preprocess-audio-track.d.ts +0 -4
- package/dist/preprocess-audio-track.js +4 -8
- package/dist/prespawn-ffmpeg.d.ts +6 -9
- package/dist/prespawn-ffmpeg.js +7 -12
- package/dist/prestitcher-memory-usage.d.ts +0 -4
- package/dist/prestitcher-memory-usage.js +4 -5
- package/dist/prores-profile.d.ts +1 -2
- package/dist/prores-profile.js +4 -4
- package/dist/provide-screenshot.d.ts +4 -5
- package/dist/provide-screenshot.js +2 -2
- package/dist/puppeteer-screenshot.d.ts +3 -3
- package/dist/puppeteer-screenshot.js +10 -33
- package/dist/render-frames.d.ts +13 -25
- package/dist/render-frames.js +34 -45
- package/dist/render-media.d.ts +16 -18
- package/dist/render-media.js +42 -52
- package/dist/render-still.d.ts +12 -8
- package/dist/render-still.js +30 -18
- package/dist/resolve-asset-src.js +2 -2
- package/dist/screenshot-dom-element.d.ts +4 -5
- package/dist/screenshot-dom-element.js +6 -3
- package/dist/screenshot-task.d.ts +2 -3
- package/dist/screenshot-task.js +40 -25
- package/dist/serve-handler/index.d.ts +1 -1
- package/dist/serve-handler/index.js +21 -19
- package/dist/serve-handler/is-path-inside.js +3 -3
- package/dist/serve-static.d.ts +2 -3
- package/dist/serve-static.js +26 -22
- package/dist/stitch-frames-to-video.d.ts +2 -12
- package/dist/stitch-frames-to-video.js +37 -46
- package/dist/take-frame-and-compose.d.ts +4 -5
- package/dist/take-frame-and-compose.js +15 -9
- package/dist/tmp-dir.js +7 -8
- package/dist/validate-concurrency.d.ts +2 -0
- package/dist/validate-concurrency.js +11 -5
- package/dist/validate-output-filename.d.ts +1 -1
- package/dist/validate-puppeteer-timeout.js +1 -0
- package/install-toolchain.mjs +36 -0
- package/package.json +11 -10
- package/types/ws/index.d.ts +5 -5
|
@@ -537,6 +537,84 @@ export interface CaptureScreenshotResponse {
|
|
|
537
537
|
*/
|
|
538
538
|
data: string;
|
|
539
539
|
}
|
|
540
|
+
export interface PrintPDFRequest {
|
|
541
|
+
/**
|
|
542
|
+
* Paper orientation. Defaults to false.
|
|
543
|
+
*/
|
|
544
|
+
landscape?: boolean;
|
|
545
|
+
/**
|
|
546
|
+
* Display header and footer. Defaults to false.
|
|
547
|
+
*/
|
|
548
|
+
displayHeaderFooter?: boolean;
|
|
549
|
+
/**
|
|
550
|
+
* Print background graphics. Defaults to false.
|
|
551
|
+
*/
|
|
552
|
+
printBackground?: boolean;
|
|
553
|
+
/**
|
|
554
|
+
* Scale of the webpage rendering. Defaults to 1.
|
|
555
|
+
*/
|
|
556
|
+
scale?: number;
|
|
557
|
+
/**
|
|
558
|
+
* Paper width in inches. Defaults to 8.5 inches.
|
|
559
|
+
*/
|
|
560
|
+
paperWidth?: number;
|
|
561
|
+
/**
|
|
562
|
+
* Paper height in inches. Defaults to 11 inches.
|
|
563
|
+
*/
|
|
564
|
+
paperHeight?: number;
|
|
565
|
+
/**
|
|
566
|
+
* Top margin in inches. Defaults to 1cm (~0.4 inches).
|
|
567
|
+
*/
|
|
568
|
+
marginTop?: number;
|
|
569
|
+
/**
|
|
570
|
+
* Bottom margin in inches. Defaults to 1cm (~0.4 inches).
|
|
571
|
+
*/
|
|
572
|
+
marginBottom?: number;
|
|
573
|
+
/**
|
|
574
|
+
* Left margin in inches. Defaults to 1cm (~0.4 inches).
|
|
575
|
+
*/
|
|
576
|
+
marginLeft?: number;
|
|
577
|
+
/**
|
|
578
|
+
* Right margin in inches. Defaults to 1cm (~0.4 inches).
|
|
579
|
+
*/
|
|
580
|
+
marginRight?: number;
|
|
581
|
+
/**
|
|
582
|
+
* Paper ranges to print, one based, e.g., '1-5, 8, 11-13'.
|
|
583
|
+
* Pages are printed in the document order, not in the order specified,
|
|
584
|
+
* and no more than once. Defaults to empty string,
|
|
585
|
+
* which implies the entire document is printed.
|
|
586
|
+
* The page numbers are quietly capped to actual page count of the document,
|
|
587
|
+
* and ranges beyond the end of the document are ignored.
|
|
588
|
+
* If this results in no pages to print, an error is reported.
|
|
589
|
+
* It is an error to specify a range with start greater than end.
|
|
590
|
+
*/
|
|
591
|
+
pageRanges?: string;
|
|
592
|
+
/**
|
|
593
|
+
* HTML template for the print header.
|
|
594
|
+
* Should be valid HTML markup with following classes used to inject printing values into them:
|
|
595
|
+
* date: formatted print date
|
|
596
|
+
* title: document title
|
|
597
|
+
* url: document location
|
|
598
|
+
* pageNumber: current page number
|
|
599
|
+
* totalPages: total pages in the document
|
|
600
|
+
* For example, <span class=title></span> would generate span containing the title.
|
|
601
|
+
*/
|
|
602
|
+
headerTemplate?: string;
|
|
603
|
+
/**
|
|
604
|
+
* HTML template for the print footer. Should use the same format as the headerTemplate.
|
|
605
|
+
*/
|
|
606
|
+
footerTemplate?: string;
|
|
607
|
+
/**
|
|
608
|
+
* Whether or not to prefer page size as defined by css. Defaults to false, in which case the content will be scaled to fit the paper size.
|
|
609
|
+
*/
|
|
610
|
+
preferCSSPageSize?: boolean;
|
|
611
|
+
}
|
|
612
|
+
export interface PrintPDFResponse {
|
|
613
|
+
/**
|
|
614
|
+
* Base64-encoded pdf data. Empty if |returnAsStream| is specified. (Encoded as a base64 string when passed over JSON)
|
|
615
|
+
*/
|
|
616
|
+
data: string;
|
|
617
|
+
}
|
|
540
618
|
export interface RequestWillBeSentEvent {
|
|
541
619
|
/**
|
|
542
620
|
* Request identifier.
|
|
@@ -4,20 +4,20 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.getDownloadsCacheDir = void 0;
|
|
7
|
-
const
|
|
8
|
-
const
|
|
7
|
+
const node_fs_1 = __importDefault(require("node:fs"));
|
|
8
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
9
9
|
const getDownloadsCacheDir = () => {
|
|
10
10
|
const cwd = process.cwd();
|
|
11
11
|
let dir = cwd;
|
|
12
12
|
for (;;) {
|
|
13
13
|
try {
|
|
14
|
-
if (
|
|
14
|
+
if (node_fs_1.default.statSync(node_path_1.default.join(dir, 'package.json')).isFile()) {
|
|
15
15
|
break;
|
|
16
16
|
}
|
|
17
17
|
// eslint-disable-next-line no-empty
|
|
18
18
|
}
|
|
19
19
|
catch (e) { }
|
|
20
|
-
const parent =
|
|
20
|
+
const parent = node_path_1.default.dirname(dir);
|
|
21
21
|
if (dir === parent) {
|
|
22
22
|
dir = undefined;
|
|
23
23
|
break;
|
|
@@ -25,14 +25,14 @@ const getDownloadsCacheDir = () => {
|
|
|
25
25
|
dir = parent;
|
|
26
26
|
}
|
|
27
27
|
if (!dir) {
|
|
28
|
-
return
|
|
28
|
+
return node_path_1.default.resolve(cwd, '.remotion');
|
|
29
29
|
}
|
|
30
30
|
if (process.versions.pnp === '1') {
|
|
31
|
-
return
|
|
31
|
+
return node_path_1.default.resolve(dir, '.pnp/.remotion');
|
|
32
32
|
}
|
|
33
33
|
if (process.versions.pnp === '3') {
|
|
34
|
-
return
|
|
34
|
+
return node_path_1.default.resolve(dir, '.yarn/.remotion');
|
|
35
35
|
}
|
|
36
|
-
return
|
|
36
|
+
return node_path_1.default.resolve(dir, 'node_modules/.remotion');
|
|
37
37
|
};
|
|
38
38
|
exports.getDownloadsCacheDir = getDownloadsCacheDir;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const isTargetClosedErr: (error: Error | undefined) => boolean | undefined;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isTargetClosedErr = void 0;
|
|
4
|
+
const isTargetClosedErr = (error) => {
|
|
5
|
+
var _a, _b;
|
|
6
|
+
return (((_a = error === null || error === void 0 ? void 0 : error.message) === null || _a === void 0 ? void 0 : _a.includes('Target closed')) ||
|
|
7
|
+
((_b = error === null || error === void 0 ? void 0 : error.message) === null || _b === void 0 ? void 0 : _b.includes('Session closed')));
|
|
8
|
+
};
|
|
9
|
+
exports.isTargetClosedErr = isTargetClosedErr;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import execa from 'execa';
|
|
2
|
+
export declare const dynamicLibraryPathOptions: () => {
|
|
3
|
+
env: {
|
|
4
|
+
DYLD_LIBRARY_PATH: string;
|
|
5
|
+
RUST_BACKTRACE: string;
|
|
6
|
+
} | {
|
|
7
|
+
PATH: string;
|
|
8
|
+
RUST_BACKTRACE: string;
|
|
9
|
+
} | {
|
|
10
|
+
LD_LIBRARY_PATH: string;
|
|
11
|
+
RUST_BACKTRACE: string;
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
export declare const callFf: (bin: 'ffmpeg' | 'ffprobe', args: (string | null)[], options?: execa.Options<string>) => execa.ExecaChildProcess<string>;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.callFf = exports.dynamicLibraryPathOptions = void 0;
|
|
7
|
+
const execa_1 = __importDefault(require("execa"));
|
|
8
|
+
const node_fs_1 = require("node:fs");
|
|
9
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
10
|
+
const get_executable_path_1 = require("./compositor/get-executable-path");
|
|
11
|
+
const truthy_1 = require("./truthy");
|
|
12
|
+
const dynamicLibraryPathOptions = () => {
|
|
13
|
+
const lib = node_path_1.default.join((0, get_executable_path_1.getExecutablePath)('ffmpeg-cwd'), 'remotion', 'lib');
|
|
14
|
+
return {
|
|
15
|
+
env: {
|
|
16
|
+
RUST_BACKTRACE: 'full',
|
|
17
|
+
...(process.platform === 'darwin'
|
|
18
|
+
? {
|
|
19
|
+
DYLD_LIBRARY_PATH: lib,
|
|
20
|
+
}
|
|
21
|
+
: process.platform === 'win32'
|
|
22
|
+
? {
|
|
23
|
+
PATH: `${process.env.PATH};${lib}`,
|
|
24
|
+
}
|
|
25
|
+
: {
|
|
26
|
+
LD_LIBRARY_PATH: lib,
|
|
27
|
+
}),
|
|
28
|
+
},
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
exports.dynamicLibraryPathOptions = dynamicLibraryPathOptions;
|
|
32
|
+
const callFf = (bin, args, options) => {
|
|
33
|
+
const executablePath = (0, get_executable_path_1.getExecutablePath)(bin);
|
|
34
|
+
(0, node_fs_1.chmodSync)(executablePath, 0o755);
|
|
35
|
+
return (0, execa_1.default)(executablePath, args.filter(truthy_1.truthy), {
|
|
36
|
+
...(0, exports.dynamicLibraryPathOptions)(),
|
|
37
|
+
...options,
|
|
38
|
+
});
|
|
39
|
+
};
|
|
40
|
+
exports.callFf = callFf;
|
|
@@ -1,55 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
3
|
exports.checkNodeVersionAndWarnAboutRosetta = void 0;
|
|
27
|
-
const os = __importStar(require("os"));
|
|
28
4
|
const checkNodeVersionAndWarnAboutRosetta = () => {
|
|
29
|
-
// see https://github.com/nodejs/node/issues/41900#issuecomment-1113511254
|
|
30
|
-
const cpus = os.cpus();
|
|
31
|
-
const isAppleSilicon = cpus[0].model.includes('Apple');
|
|
32
|
-
const isArm64 = os.arch() === 'arm64';
|
|
33
5
|
const version = process.version.replace('v', '').split('.');
|
|
34
6
|
const majorVersion = Number(version[0]);
|
|
35
|
-
const requiredNodeVersion =
|
|
36
|
-
if (majorVersion <
|
|
7
|
+
const requiredNodeVersion = 16;
|
|
8
|
+
if (majorVersion < 16) {
|
|
37
9
|
throw new Error(`Remotion requires at least Node ${requiredNodeVersion}. You currently have ${process.version}. Update your node version to ${requiredNodeVersion} to use Remotion.`);
|
|
38
10
|
}
|
|
39
|
-
if (isAppleSilicon && !isArm64) {
|
|
40
|
-
const recommendedNodeVersion = 16;
|
|
41
|
-
const recommendNodeUpgrade = majorVersion < recommendedNodeVersion;
|
|
42
|
-
console.warn([
|
|
43
|
-
`⚠️ Apple Silicon detected but Node.JS running under Rosetta. This will cause performance issues.\n`,
|
|
44
|
-
`Recommended actions:\n`,
|
|
45
|
-
recommendNodeUpgrade
|
|
46
|
-
? ` - Upgrade to Node ${recommendedNodeVersion} or later\n`
|
|
47
|
-
: ' - Run Node using `arch -arm64` architecture\n',
|
|
48
|
-
'See https://remotion.dev/docs/troubleshooting/rosetta for more information.',
|
|
49
|
-
'---',
|
|
50
|
-
]
|
|
51
|
-
.filter(Boolean)
|
|
52
|
-
.join('\n'));
|
|
53
|
-
}
|
|
54
11
|
};
|
|
55
12
|
exports.checkNodeVersionAndWarnAboutRosetta = checkNodeVersionAndWarnAboutRosetta;
|
package/dist/client.d.ts
CHANGED
|
@@ -1,97 +1,99 @@
|
|
|
1
1
|
export declare const BrowserSafeApis: {
|
|
2
|
-
getFileExtensionFromCodec: <T extends "
|
|
2
|
+
getFileExtensionFromCodec: <T extends "aac" | "mp3" | "h264" | "h265" | "vp8" | "vp9" | "wav" | "prores" | "h264-mkv" | "gif">(codec: T, audioCodec: "pcm-16" | "aac" | "mp3" | "opus" | null) => import("./file-extensions").FileExtension;
|
|
3
3
|
validCodecs: readonly ["h264", "h265", "vp8", "vp9", "mp3", "aac", "wav", "prores", "h264-mkv", "gif"];
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
validAudioCodecs: readonly ["pcm-16", "aac", "mp3", "opus"];
|
|
5
|
+
getDefaultCrfForCodec: (codec: "aac" | "mp3" | "h264" | "h265" | "vp8" | "vp9" | "wav" | "prores" | "h264-mkv" | "gif") => number;
|
|
6
|
+
getValidCrfRanges: (codec: "aac" | "mp3" | "h264" | "h265" | "vp8" | "vp9" | "wav" | "prores" | "h264-mkv" | "gif") => [number, number];
|
|
7
|
+
isAudioCodec: (codec: "aac" | "mp3" | "h264" | "h265" | "vp8" | "vp9" | "wav" | "prores" | "h264-mkv" | "gif" | undefined) => boolean;
|
|
8
|
+
proResProfileOptions: readonly ["4444-xq", "4444", "hq", "standard", "light", "proxy"];
|
|
7
9
|
validPixelFormats: readonly ["yuv420p", "yuva420p", "yuv422p", "yuv444p", "yuv420p10le", "yuv422p10le", "yuv444p10le", "yuva444p10le"];
|
|
8
10
|
DEFAULT_PIXEL_FORMAT: "yuv420p" | "yuva420p" | "yuv422p" | "yuv444p" | "yuv420p10le" | "yuv422p10le" | "yuv444p10le" | "yuva444p10le";
|
|
9
11
|
supportedAudioCodecs: {
|
|
10
12
|
readonly h264: readonly ["aac", "pcm-16"];
|
|
11
13
|
readonly 'h264-mkv': readonly ["pcm-16"];
|
|
12
14
|
readonly aac: readonly ["aac", "pcm-16"];
|
|
13
|
-
readonly gif:
|
|
15
|
+
readonly gif: ("pcm-16" | "aac" | "mp3" | "opus")[];
|
|
14
16
|
readonly h265: readonly ["aac", "pcm-16"];
|
|
15
17
|
readonly mp3: readonly ["mp3", "pcm-16"];
|
|
16
|
-
readonly prores: readonly ["
|
|
18
|
+
readonly prores: readonly ["aac", "pcm-16"];
|
|
17
19
|
readonly vp8: readonly ["opus", "pcm-16"];
|
|
18
20
|
readonly vp9: readonly ["opus", "pcm-16"];
|
|
19
21
|
readonly wav: readonly ["pcm-16"];
|
|
20
22
|
};
|
|
21
23
|
defaultFileExtensionMap: {
|
|
22
|
-
|
|
24
|
+
aac: {
|
|
23
25
|
default: import("./file-extensions").FileExtension;
|
|
24
26
|
forAudioCodec: {
|
|
25
|
-
|
|
27
|
+
"pcm-16": {
|
|
26
28
|
possible: import("./file-extensions").FileExtension[];
|
|
27
29
|
default: import("./file-extensions").FileExtension;
|
|
28
30
|
};
|
|
29
|
-
|
|
31
|
+
aac: {
|
|
30
32
|
possible: import("./file-extensions").FileExtension[];
|
|
31
33
|
default: import("./file-extensions").FileExtension;
|
|
32
34
|
};
|
|
33
35
|
};
|
|
34
36
|
};
|
|
35
|
-
|
|
37
|
+
mp3: {
|
|
36
38
|
default: import("./file-extensions").FileExtension;
|
|
37
39
|
forAudioCodec: {
|
|
38
|
-
|
|
40
|
+
"pcm-16": {
|
|
39
41
|
possible: import("./file-extensions").FileExtension[];
|
|
40
42
|
default: import("./file-extensions").FileExtension;
|
|
41
43
|
};
|
|
42
|
-
|
|
44
|
+
mp3: {
|
|
43
45
|
possible: import("./file-extensions").FileExtension[];
|
|
44
46
|
default: import("./file-extensions").FileExtension;
|
|
45
47
|
};
|
|
46
48
|
};
|
|
47
49
|
};
|
|
48
|
-
|
|
50
|
+
h264: {
|
|
49
51
|
default: import("./file-extensions").FileExtension;
|
|
50
52
|
forAudioCodec: {
|
|
51
53
|
"pcm-16": {
|
|
52
54
|
possible: import("./file-extensions").FileExtension[];
|
|
53
55
|
default: import("./file-extensions").FileExtension;
|
|
54
56
|
};
|
|
55
|
-
|
|
57
|
+
aac: {
|
|
56
58
|
possible: import("./file-extensions").FileExtension[];
|
|
57
59
|
default: import("./file-extensions").FileExtension;
|
|
58
60
|
};
|
|
59
61
|
};
|
|
60
62
|
};
|
|
61
|
-
|
|
63
|
+
h265: {
|
|
62
64
|
default: import("./file-extensions").FileExtension;
|
|
63
65
|
forAudioCodec: {
|
|
64
66
|
"pcm-16": {
|
|
65
67
|
possible: import("./file-extensions").FileExtension[];
|
|
66
68
|
default: import("./file-extensions").FileExtension;
|
|
67
69
|
};
|
|
68
|
-
|
|
70
|
+
aac: {
|
|
69
71
|
possible: import("./file-extensions").FileExtension[];
|
|
70
72
|
default: import("./file-extensions").FileExtension;
|
|
71
73
|
};
|
|
72
74
|
};
|
|
73
75
|
};
|
|
74
|
-
|
|
76
|
+
vp8: {
|
|
75
77
|
default: import("./file-extensions").FileExtension;
|
|
76
78
|
forAudioCodec: {
|
|
77
|
-
|
|
79
|
+
"pcm-16": {
|
|
78
80
|
possible: import("./file-extensions").FileExtension[];
|
|
79
81
|
default: import("./file-extensions").FileExtension;
|
|
80
82
|
};
|
|
81
|
-
|
|
83
|
+
opus: {
|
|
82
84
|
possible: import("./file-extensions").FileExtension[];
|
|
83
85
|
default: import("./file-extensions").FileExtension;
|
|
84
86
|
};
|
|
85
87
|
};
|
|
86
88
|
};
|
|
87
|
-
|
|
89
|
+
vp9: {
|
|
88
90
|
default: import("./file-extensions").FileExtension;
|
|
89
91
|
forAudioCodec: {
|
|
90
|
-
|
|
92
|
+
"pcm-16": {
|
|
91
93
|
possible: import("./file-extensions").FileExtension[];
|
|
92
94
|
default: import("./file-extensions").FileExtension;
|
|
93
95
|
};
|
|
94
|
-
|
|
96
|
+
opus: {
|
|
95
97
|
possible: import("./file-extensions").FileExtension[];
|
|
96
98
|
default: import("./file-extensions").FileExtension;
|
|
97
99
|
};
|
|
@@ -109,11 +111,11 @@ export declare const BrowserSafeApis: {
|
|
|
109
111
|
prores: {
|
|
110
112
|
default: import("./file-extensions").FileExtension;
|
|
111
113
|
forAudioCodec: {
|
|
112
|
-
|
|
114
|
+
"pcm-16": {
|
|
113
115
|
possible: import("./file-extensions").FileExtension[];
|
|
114
116
|
default: import("./file-extensions").FileExtension;
|
|
115
117
|
};
|
|
116
|
-
|
|
118
|
+
aac: {
|
|
117
119
|
possible: import("./file-extensions").FileExtension[];
|
|
118
120
|
default: import("./file-extensions").FileExtension;
|
|
119
121
|
};
|
|
@@ -130,17 +132,42 @@ export declare const BrowserSafeApis: {
|
|
|
130
132
|
};
|
|
131
133
|
gif: {
|
|
132
134
|
default: import("./file-extensions").FileExtension;
|
|
133
|
-
forAudioCodec: {
|
|
135
|
+
forAudioCodec: {
|
|
136
|
+
"pcm-16": {
|
|
137
|
+
possible: import("./file-extensions").FileExtension[];
|
|
138
|
+
default: import("./file-extensions").FileExtension;
|
|
139
|
+
};
|
|
140
|
+
aac: {
|
|
141
|
+
possible: import("./file-extensions").FileExtension[];
|
|
142
|
+
default: import("./file-extensions").FileExtension;
|
|
143
|
+
};
|
|
144
|
+
mp3: {
|
|
145
|
+
possible: import("./file-extensions").FileExtension[];
|
|
146
|
+
default: import("./file-extensions").FileExtension;
|
|
147
|
+
};
|
|
148
|
+
opus: {
|
|
149
|
+
possible: import("./file-extensions").FileExtension[];
|
|
150
|
+
default: import("./file-extensions").FileExtension;
|
|
151
|
+
};
|
|
152
|
+
};
|
|
134
153
|
};
|
|
135
154
|
};
|
|
136
155
|
defaultAudioCodecs: {
|
|
156
|
+
aac: {
|
|
157
|
+
compressed: "pcm-16" | "aac" | null;
|
|
158
|
+
lossless: "pcm-16" | "aac" | null;
|
|
159
|
+
};
|
|
160
|
+
mp3: {
|
|
161
|
+
compressed: "pcm-16" | "mp3" | null;
|
|
162
|
+
lossless: "pcm-16" | "mp3" | null;
|
|
163
|
+
};
|
|
137
164
|
h264: {
|
|
138
|
-
compressed: "
|
|
139
|
-
lossless: "
|
|
165
|
+
compressed: "pcm-16" | "aac" | null;
|
|
166
|
+
lossless: "pcm-16" | "aac" | null;
|
|
140
167
|
};
|
|
141
168
|
h265: {
|
|
142
|
-
compressed: "
|
|
143
|
-
lossless: "
|
|
169
|
+
compressed: "pcm-16" | "aac" | null;
|
|
170
|
+
lossless: "pcm-16" | "aac" | null;
|
|
144
171
|
};
|
|
145
172
|
vp8: {
|
|
146
173
|
compressed: "pcm-16" | "opus" | null;
|
|
@@ -150,30 +177,40 @@ export declare const BrowserSafeApis: {
|
|
|
150
177
|
compressed: "pcm-16" | "opus" | null;
|
|
151
178
|
lossless: "pcm-16" | "opus" | null;
|
|
152
179
|
};
|
|
153
|
-
mp3: {
|
|
154
|
-
compressed: "mp3" | "pcm-16" | null;
|
|
155
|
-
lossless: "mp3" | "pcm-16" | null;
|
|
156
|
-
};
|
|
157
|
-
aac: {
|
|
158
|
-
compressed: "aac" | "pcm-16" | null;
|
|
159
|
-
lossless: "aac" | "pcm-16" | null;
|
|
160
|
-
};
|
|
161
180
|
wav: {
|
|
162
181
|
compressed: "pcm-16" | null;
|
|
163
182
|
lossless: "pcm-16" | null;
|
|
164
183
|
};
|
|
165
184
|
prores: {
|
|
166
|
-
compressed: "
|
|
167
|
-
lossless: "
|
|
185
|
+
compressed: "pcm-16" | "aac" | null;
|
|
186
|
+
lossless: "pcm-16" | "aac" | null;
|
|
168
187
|
};
|
|
169
188
|
"h264-mkv": {
|
|
170
189
|
compressed: "pcm-16" | null;
|
|
171
190
|
lossless: "pcm-16" | null;
|
|
172
191
|
};
|
|
173
192
|
gif: {
|
|
174
|
-
compressed: null;
|
|
175
|
-
lossless: null;
|
|
193
|
+
compressed: "pcm-16" | "aac" | "mp3" | "opus" | null;
|
|
194
|
+
lossless: "pcm-16" | "aac" | "mp3" | "opus" | null;
|
|
176
195
|
};
|
|
177
196
|
};
|
|
178
|
-
defaultCodecsForFileExtension: Record<import("./file-extensions").FileExtension, "
|
|
197
|
+
defaultCodecsForFileExtension: Record<import("./file-extensions").FileExtension, "aac" | "mp3" | "h264" | "h265" | "vp8" | "vp9" | "wav" | "prores" | "h264-mkv" | "gif">;
|
|
198
|
+
validateOutputFilename: <T_1 extends "aac" | "mp3" | "h264" | "h265" | "vp8" | "vp9" | "wav" | "prores" | "h264-mkv" | "gif">({ codec, audioCodec, extension, preferLossless, }: {
|
|
199
|
+
codec: T_1;
|
|
200
|
+
audioCodec: "pcm-16" | "aac" | "mp3" | "opus" | null;
|
|
201
|
+
extension: string;
|
|
202
|
+
preferLossless: boolean;
|
|
203
|
+
}) => void;
|
|
204
|
+
options: {
|
|
205
|
+
scaleOption: import(".").RemotionOption;
|
|
206
|
+
crfOption: import(".").RemotionOption;
|
|
207
|
+
jpegQualityOption: import(".").RemotionOption;
|
|
208
|
+
videoBitrate: import(".").RemotionOption;
|
|
209
|
+
audioBitrateOption: import(".").RemotionOption;
|
|
210
|
+
enforceAudioOption: import(".").RemotionOption;
|
|
211
|
+
muteOption: import(".").RemotionOption;
|
|
212
|
+
videoCodecOption: import(".").RemotionOption;
|
|
213
|
+
};
|
|
214
|
+
codecSupportsCrf: (codec: "aac" | "mp3" | "h264" | "h265" | "vp8" | "vp9" | "wav" | "prores" | "h264-mkv" | "gif") => boolean;
|
|
215
|
+
codecSupportsVideoBitrate: (codec: "aac" | "mp3" | "h264" | "h265" | "vp8" | "vp9" | "wav" | "prores" | "h264-mkv" | "gif") => boolean;
|
|
179
216
|
};
|
package/dist/client.js
CHANGED
|
@@ -3,21 +3,47 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.BrowserSafeApis = void 0;
|
|
4
4
|
const audio_codec_1 = require("./audio-codec");
|
|
5
5
|
const codec_1 = require("./codec");
|
|
6
|
+
const codec_supports_media_1 = require("./codec-supports-media");
|
|
6
7
|
const crf_1 = require("./crf");
|
|
7
8
|
const file_extensions_1 = require("./file-extensions");
|
|
8
9
|
const get_extension_from_codec_1 = require("./get-extension-from-codec");
|
|
9
10
|
const is_audio_codec_1 = require("./is-audio-codec");
|
|
11
|
+
const audio_bitrate_1 = require("./options/audio-bitrate");
|
|
12
|
+
const crf_2 = require("./options/crf");
|
|
13
|
+
const enforce_audio_1 = require("./options/enforce-audio");
|
|
14
|
+
const jpeg_quality_1 = require("./options/jpeg-quality");
|
|
15
|
+
const mute_1 = require("./options/mute");
|
|
16
|
+
const scale_1 = require("./options/scale");
|
|
17
|
+
const video_bitrate_1 = require("./options/video-bitrate");
|
|
18
|
+
const video_codec_1 = require("./options/video-codec");
|
|
10
19
|
const pixel_format_1 = require("./pixel-format");
|
|
20
|
+
const prores_profile_1 = require("./prores-profile");
|
|
21
|
+
const validate_output_filename_1 = require("./validate-output-filename");
|
|
11
22
|
exports.BrowserSafeApis = {
|
|
12
23
|
getFileExtensionFromCodec: get_extension_from_codec_1.getFileExtensionFromCodec,
|
|
13
24
|
validCodecs: codec_1.validCodecs,
|
|
25
|
+
validAudioCodecs: audio_codec_1.validAudioCodecs,
|
|
14
26
|
getDefaultCrfForCodec: crf_1.getDefaultCrfForCodec,
|
|
15
27
|
getValidCrfRanges: crf_1.getValidCrfRanges,
|
|
16
28
|
isAudioCodec: is_audio_codec_1.isAudioCodec,
|
|
29
|
+
proResProfileOptions: prores_profile_1.proResProfileOptions,
|
|
17
30
|
validPixelFormats: pixel_format_1.validPixelFormats,
|
|
18
31
|
DEFAULT_PIXEL_FORMAT: pixel_format_1.DEFAULT_PIXEL_FORMAT,
|
|
19
|
-
supportedAudioCodecs:
|
|
32
|
+
supportedAudioCodecs: audio_codec_1.supportedAudioCodecs,
|
|
20
33
|
defaultFileExtensionMap: file_extensions_1.defaultFileExtensionMap,
|
|
21
34
|
defaultAudioCodecs: audio_codec_1.defaultAudioCodecs,
|
|
22
35
|
defaultCodecsForFileExtension: get_extension_from_codec_1.defaultCodecsForFileExtension,
|
|
36
|
+
validateOutputFilename: validate_output_filename_1.validateOutputFilename,
|
|
37
|
+
options: {
|
|
38
|
+
scaleOption: scale_1.scaleOption,
|
|
39
|
+
crfOption: crf_2.crfOption,
|
|
40
|
+
jpegQualityOption: jpeg_quality_1.jpegQualityOption,
|
|
41
|
+
videoBitrate: video_bitrate_1.videoBitrate,
|
|
42
|
+
audioBitrateOption: audio_bitrate_1.audioBitrateOption,
|
|
43
|
+
enforceAudioOption: enforce_audio_1.enforceAudioOption,
|
|
44
|
+
muteOption: mute_1.muteOption,
|
|
45
|
+
videoCodecOption: video_codec_1.videoCodecOption,
|
|
46
|
+
},
|
|
47
|
+
codecSupportsCrf: codec_supports_media_1.codecSupportsCrf,
|
|
48
|
+
codecSupportsVideoBitrate: codec_supports_media_1.codecSupportsVideoBitrate,
|
|
23
49
|
};
|
|
@@ -4,5 +4,6 @@ declare type MediaSupport = {
|
|
|
4
4
|
audio: boolean;
|
|
5
5
|
};
|
|
6
6
|
export declare const codecSupportsMedia: (codec: Codec) => MediaSupport;
|
|
7
|
-
export declare const codecSupportsCrf: (codec: Codec) => boolean
|
|
7
|
+
export declare const codecSupportsCrf: (codec: Codec) => boolean;
|
|
8
|
+
export declare const codecSupportsVideoBitrate: (codec: Codec) => boolean;
|
|
8
9
|
export {};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.codecSupportsCrf = exports.codecSupportsMedia = void 0;
|
|
4
|
-
const
|
|
3
|
+
exports.codecSupportsVideoBitrate = exports.codecSupportsCrf = exports.codecSupportsMedia = void 0;
|
|
4
|
+
const crf_1 = require("./crf");
|
|
5
5
|
const support = {
|
|
6
6
|
'h264-mkv': {
|
|
7
7
|
audio: true,
|
|
@@ -48,9 +48,24 @@ const codecSupportsMedia = (codec) => {
|
|
|
48
48
|
return support[codec];
|
|
49
49
|
};
|
|
50
50
|
exports.codecSupportsMedia = codecSupportsMedia;
|
|
51
|
+
const codecSupportsVideoBitrateMap = {
|
|
52
|
+
'h264-mkv': true,
|
|
53
|
+
aac: false,
|
|
54
|
+
gif: false,
|
|
55
|
+
h264: true,
|
|
56
|
+
h265: true,
|
|
57
|
+
mp3: false,
|
|
58
|
+
prores: false,
|
|
59
|
+
vp8: true,
|
|
60
|
+
vp9: true,
|
|
61
|
+
wav: false,
|
|
62
|
+
};
|
|
51
63
|
const codecSupportsCrf = (codec) => {
|
|
52
|
-
const
|
|
53
|
-
|
|
54
|
-
return supportsCrf;
|
|
64
|
+
const range = (0, crf_1.getValidCrfRanges)(codec);
|
|
65
|
+
return range[0] !== range[1];
|
|
55
66
|
};
|
|
56
67
|
exports.codecSupportsCrf = codecSupportsCrf;
|
|
68
|
+
const codecSupportsVideoBitrate = (codec) => {
|
|
69
|
+
return codecSupportsVideoBitrateMap[codec];
|
|
70
|
+
};
|
|
71
|
+
exports.codecSupportsVideoBitrate = codecSupportsVideoBitrate;
|
package/dist/combine-videos.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import type { AudioCodec } from './audio-codec';
|
|
2
2
|
import type { Codec } from './codec';
|
|
3
|
-
import type { FfmpegExecutable } from './ffmpeg-executable';
|
|
4
3
|
declare type Options = {
|
|
5
4
|
files: string[];
|
|
6
5
|
filelistDir: string;
|
|
@@ -10,8 +9,6 @@ declare type Options = {
|
|
|
10
9
|
codec: Codec;
|
|
11
10
|
fps: number;
|
|
12
11
|
numberOfGifLoops: number | null;
|
|
13
|
-
remotionRoot: string;
|
|
14
|
-
ffmpegExecutable: FfmpegExecutable;
|
|
15
12
|
audioCodec: AudioCodec | null;
|
|
16
13
|
};
|
|
17
14
|
export declare const combineVideos: (options: Options) => Promise<void>;
|