@remotion/renderer 3.3.83 → 3.3.84
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/call-ffmpeg.d.ts +3 -0
- package/dist/call-ffmpeg.js +1 -0
- package/dist/client.d.ts +37 -37
- package/dist/compositor/compositor.d.ts +3 -2
- package/dist/compositor/compositor.js +45 -20
- package/dist/create-ffmpeg-complex-filter.d.ts +1 -4
- package/dist/extract-frame-from-video.d.ts +1 -0
- package/dist/get-extension-from-codec.d.ts +2 -2
- package/dist/get-frame-of-video-slow.d.ts +2 -4
- package/dist/index.d.ts +33 -32
- package/dist/last-frame-from-video-cache.d.ts +1 -0
- package/dist/provide-screenshot.d.ts +1 -0
- package/dist/puppeteer-screenshot.d.ts +1 -0
- package/dist/render-media.d.ts +1 -0
- package/dist/screenshot-dom-element.d.ts +1 -0
- package/dist/screenshot-task.d.ts +1 -0
- package/dist/take-frame-and-compose.d.ts +1 -0
- package/dist/try-to-extract-frame-of-video-fast.d.ts +1 -0
- package/dist/validate-output-filename.d.ts +1 -1
- package/package.json +9 -9
package/dist/call-ffmpeg.d.ts
CHANGED
|
@@ -2,15 +2,18 @@ import execa from 'execa';
|
|
|
2
2
|
export declare const dynamicLibraryPathOptions: () => {
|
|
3
3
|
env: {
|
|
4
4
|
DYLD_LIBRARY_PATH: string;
|
|
5
|
+
RUST_BACKTRACE: string;
|
|
5
6
|
PATH?: undefined;
|
|
6
7
|
LD_LIBRARY_PATH?: undefined;
|
|
7
8
|
} | {
|
|
8
9
|
PATH: string;
|
|
9
10
|
DYLD_LIBRARY_PATH?: undefined;
|
|
11
|
+
RUST_BACKTRACE?: undefined;
|
|
10
12
|
LD_LIBRARY_PATH?: undefined;
|
|
11
13
|
} | {
|
|
12
14
|
LD_LIBRARY_PATH: string;
|
|
13
15
|
DYLD_LIBRARY_PATH?: undefined;
|
|
16
|
+
RUST_BACKTRACE?: undefined;
|
|
14
17
|
PATH?: undefined;
|
|
15
18
|
};
|
|
16
19
|
};
|
package/dist/call-ffmpeg.js
CHANGED
package/dist/client.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
export declare const BrowserSafeApis: {
|
|
2
|
-
getFileExtensionFromCodec: <T extends "
|
|
2
|
+
getFileExtensionFromCodec: <T extends "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif">(codec: T, audioCodec: "mp3" | "aac" | "pcm-16" | "opus" | null) => import("./file-extensions").FileExtension;
|
|
3
3
|
validCodecs: readonly ["h264", "h265", "vp8", "vp9", "mp3", "aac", "wav", "prores", "h264-mkv", "gif"];
|
|
4
|
-
getDefaultCrfForCodec: (codec: "
|
|
5
|
-
getValidCrfRanges: (codec: "
|
|
6
|
-
isAudioCodec: (codec: "
|
|
4
|
+
getDefaultCrfForCodec: (codec: "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif") => number;
|
|
5
|
+
getValidCrfRanges: (codec: "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif") => [number, number];
|
|
6
|
+
isAudioCodec: (codec: "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif" | undefined) => boolean;
|
|
7
7
|
validPixelFormats: readonly ["yuv420p", "yuva420p", "yuv422p", "yuv444p", "yuv420p10le", "yuv422p10le", "yuv444p10le", "yuva444p10le"];
|
|
8
8
|
DEFAULT_PIXEL_FORMAT: "yuv420p" | "yuva420p" | "yuv422p" | "yuv444p" | "yuv420p10le" | "yuv422p10le" | "yuv444p10le" | "yuva444p10le";
|
|
9
9
|
supportedAudioCodecs: {
|
|
@@ -19,79 +19,79 @@ export declare const BrowserSafeApis: {
|
|
|
19
19
|
readonly wav: readonly ["pcm-16"];
|
|
20
20
|
};
|
|
21
21
|
defaultFileExtensionMap: {
|
|
22
|
-
|
|
22
|
+
h264: {
|
|
23
23
|
default: import("./file-extensions").FileExtension;
|
|
24
24
|
forAudioCodec: {
|
|
25
|
-
|
|
25
|
+
aac: {
|
|
26
26
|
possible: import("./file-extensions").FileExtension[];
|
|
27
27
|
default: import("./file-extensions").FileExtension;
|
|
28
28
|
};
|
|
29
|
-
|
|
29
|
+
"pcm-16": {
|
|
30
30
|
possible: import("./file-extensions").FileExtension[];
|
|
31
31
|
default: import("./file-extensions").FileExtension;
|
|
32
32
|
};
|
|
33
33
|
};
|
|
34
34
|
};
|
|
35
|
-
|
|
35
|
+
h265: {
|
|
36
36
|
default: import("./file-extensions").FileExtension;
|
|
37
37
|
forAudioCodec: {
|
|
38
|
-
|
|
38
|
+
aac: {
|
|
39
39
|
possible: import("./file-extensions").FileExtension[];
|
|
40
40
|
default: import("./file-extensions").FileExtension;
|
|
41
41
|
};
|
|
42
|
-
|
|
42
|
+
"pcm-16": {
|
|
43
43
|
possible: import("./file-extensions").FileExtension[];
|
|
44
44
|
default: import("./file-extensions").FileExtension;
|
|
45
45
|
};
|
|
46
46
|
};
|
|
47
47
|
};
|
|
48
|
-
|
|
48
|
+
vp8: {
|
|
49
49
|
default: import("./file-extensions").FileExtension;
|
|
50
50
|
forAudioCodec: {
|
|
51
51
|
"pcm-16": {
|
|
52
52
|
possible: import("./file-extensions").FileExtension[];
|
|
53
53
|
default: import("./file-extensions").FileExtension;
|
|
54
54
|
};
|
|
55
|
-
|
|
55
|
+
opus: {
|
|
56
56
|
possible: import("./file-extensions").FileExtension[];
|
|
57
57
|
default: import("./file-extensions").FileExtension;
|
|
58
58
|
};
|
|
59
59
|
};
|
|
60
60
|
};
|
|
61
|
-
|
|
61
|
+
vp9: {
|
|
62
62
|
default: import("./file-extensions").FileExtension;
|
|
63
63
|
forAudioCodec: {
|
|
64
64
|
"pcm-16": {
|
|
65
65
|
possible: import("./file-extensions").FileExtension[];
|
|
66
66
|
default: import("./file-extensions").FileExtension;
|
|
67
67
|
};
|
|
68
|
-
|
|
68
|
+
opus: {
|
|
69
69
|
possible: import("./file-extensions").FileExtension[];
|
|
70
70
|
default: import("./file-extensions").FileExtension;
|
|
71
71
|
};
|
|
72
72
|
};
|
|
73
73
|
};
|
|
74
|
-
|
|
74
|
+
mp3: {
|
|
75
75
|
default: import("./file-extensions").FileExtension;
|
|
76
76
|
forAudioCodec: {
|
|
77
|
-
|
|
77
|
+
mp3: {
|
|
78
78
|
possible: import("./file-extensions").FileExtension[];
|
|
79
79
|
default: import("./file-extensions").FileExtension;
|
|
80
80
|
};
|
|
81
|
-
|
|
81
|
+
"pcm-16": {
|
|
82
82
|
possible: import("./file-extensions").FileExtension[];
|
|
83
83
|
default: import("./file-extensions").FileExtension;
|
|
84
84
|
};
|
|
85
85
|
};
|
|
86
86
|
};
|
|
87
|
-
|
|
87
|
+
aac: {
|
|
88
88
|
default: import("./file-extensions").FileExtension;
|
|
89
89
|
forAudioCodec: {
|
|
90
|
-
|
|
90
|
+
aac: {
|
|
91
91
|
possible: import("./file-extensions").FileExtension[];
|
|
92
92
|
default: import("./file-extensions").FileExtension;
|
|
93
93
|
};
|
|
94
|
-
|
|
94
|
+
"pcm-16": {
|
|
95
95
|
possible: import("./file-extensions").FileExtension[];
|
|
96
96
|
default: import("./file-extensions").FileExtension;
|
|
97
97
|
};
|
|
@@ -109,11 +109,11 @@ export declare const BrowserSafeApis: {
|
|
|
109
109
|
prores: {
|
|
110
110
|
default: import("./file-extensions").FileExtension;
|
|
111
111
|
forAudioCodec: {
|
|
112
|
-
|
|
112
|
+
aac: {
|
|
113
113
|
possible: import("./file-extensions").FileExtension[];
|
|
114
114
|
default: import("./file-extensions").FileExtension;
|
|
115
115
|
};
|
|
116
|
-
|
|
116
|
+
"pcm-16": {
|
|
117
117
|
possible: import("./file-extensions").FileExtension[];
|
|
118
118
|
default: import("./file-extensions").FileExtension;
|
|
119
119
|
};
|
|
@@ -134,21 +134,13 @@ export declare const BrowserSafeApis: {
|
|
|
134
134
|
};
|
|
135
135
|
};
|
|
136
136
|
defaultAudioCodecs: {
|
|
137
|
-
aac: {
|
|
138
|
-
compressed: "pcm-16" | "aac" | null;
|
|
139
|
-
lossless: "pcm-16" | "aac" | null;
|
|
140
|
-
};
|
|
141
|
-
mp3: {
|
|
142
|
-
compressed: "pcm-16" | "mp3" | null;
|
|
143
|
-
lossless: "pcm-16" | "mp3" | null;
|
|
144
|
-
};
|
|
145
137
|
h264: {
|
|
146
|
-
compressed: "
|
|
147
|
-
lossless: "
|
|
138
|
+
compressed: "aac" | "pcm-16" | null;
|
|
139
|
+
lossless: "aac" | "pcm-16" | null;
|
|
148
140
|
};
|
|
149
141
|
h265: {
|
|
150
|
-
compressed: "
|
|
151
|
-
lossless: "
|
|
142
|
+
compressed: "aac" | "pcm-16" | null;
|
|
143
|
+
lossless: "aac" | "pcm-16" | null;
|
|
152
144
|
};
|
|
153
145
|
vp8: {
|
|
154
146
|
compressed: "pcm-16" | "opus" | null;
|
|
@@ -158,13 +150,21 @@ export declare const BrowserSafeApis: {
|
|
|
158
150
|
compressed: "pcm-16" | "opus" | null;
|
|
159
151
|
lossless: "pcm-16" | "opus" | null;
|
|
160
152
|
};
|
|
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
161
|
wav: {
|
|
162
162
|
compressed: "pcm-16" | null;
|
|
163
163
|
lossless: "pcm-16" | null;
|
|
164
164
|
};
|
|
165
165
|
prores: {
|
|
166
|
-
compressed: "
|
|
167
|
-
lossless: "
|
|
166
|
+
compressed: "aac" | "pcm-16" | null;
|
|
167
|
+
lossless: "aac" | "pcm-16" | null;
|
|
168
168
|
};
|
|
169
169
|
"h264-mkv": {
|
|
170
170
|
compressed: "pcm-16" | null;
|
|
@@ -175,5 +175,5 @@ export declare const BrowserSafeApis: {
|
|
|
175
175
|
lossless: null;
|
|
176
176
|
};
|
|
177
177
|
};
|
|
178
|
-
defaultCodecsForFileExtension: Record<import("./file-extensions").FileExtension, "
|
|
178
|
+
defaultCodecsForFileExtension: Record<import("./file-extensions").FileExtension, "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif">;
|
|
179
179
|
};
|
|
@@ -5,10 +5,11 @@ export declare type Compositor = {
|
|
|
5
5
|
executeCommand: <T extends keyof CompositorCommand>(type: T, payload: CompositorCommand[T]) => Promise<Buffer>;
|
|
6
6
|
waitForDone: () => Promise<void>;
|
|
7
7
|
};
|
|
8
|
-
export declare const spawnCompositorOrReuse: <T extends keyof CompositorCommand>({ initiatePayload, renderId, }: {
|
|
8
|
+
export declare const spawnCompositorOrReuse: <T extends keyof CompositorCommand>({ initiatePayload, renderId, type, }: {
|
|
9
|
+
type: T;
|
|
9
10
|
initiatePayload: CompositorCommand[T];
|
|
10
11
|
renderId: string;
|
|
11
12
|
}) => Compositor;
|
|
12
13
|
export declare const releaseCompositorWithId: (renderId: string) => void;
|
|
13
14
|
export declare const waitForCompositorWithIdToQuit: (renderId: string) => Promise<void>;
|
|
14
|
-
export declare const startCompositor: <T extends keyof CompositorCommand>(payload: CompositorCommand[T]) => Compositor;
|
|
15
|
+
export declare const startCompositor: <T extends keyof CompositorCommand>(type: T, payload: CompositorCommand[T]) => Compositor;
|
|
@@ -6,9 +6,9 @@ const call_ffmpeg_1 = require("../call-ffmpeg");
|
|
|
6
6
|
const get_executable_path_1 = require("./get-executable-path");
|
|
7
7
|
const make_nonce_1 = require("./make-nonce");
|
|
8
8
|
const compositorMap = {};
|
|
9
|
-
const spawnCompositorOrReuse = ({ initiatePayload, renderId, }) => {
|
|
9
|
+
const spawnCompositorOrReuse = ({ initiatePayload, renderId, type, }) => {
|
|
10
10
|
if (!compositorMap[renderId]) {
|
|
11
|
-
compositorMap[renderId] = (0, exports.startCompositor)(initiatePayload);
|
|
11
|
+
compositorMap[renderId] = (0, exports.startCompositor)(type, initiatePayload);
|
|
12
12
|
}
|
|
13
13
|
return compositorMap[renderId];
|
|
14
14
|
};
|
|
@@ -26,19 +26,37 @@ const waitForCompositorWithIdToQuit = (renderId) => {
|
|
|
26
26
|
return compositorMap[renderId].waitForDone();
|
|
27
27
|
};
|
|
28
28
|
exports.waitForCompositorWithIdToQuit = waitForCompositorWithIdToQuit;
|
|
29
|
-
const startCompositor = (payload) => {
|
|
29
|
+
const startCompositor = (type, payload) => {
|
|
30
30
|
const bin = (0, get_executable_path_1.getExecutablePath)('compositor');
|
|
31
|
-
const
|
|
31
|
+
const fullCommand = {
|
|
32
|
+
nonce: (0, make_nonce_1.makeNonce)(),
|
|
33
|
+
payload: {
|
|
34
|
+
type,
|
|
35
|
+
params: payload,
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
const child = (0, child_process_1.spawn)(bin, [JSON.stringify(fullCommand)], (0, call_ffmpeg_1.dynamicLibraryPathOptions)());
|
|
32
39
|
const stderrChunks = [];
|
|
33
40
|
let outputBuffer = Buffer.from('');
|
|
34
41
|
const separator = Buffer.from('remotion_buffer:');
|
|
35
42
|
const waiters = new Map();
|
|
36
|
-
const onMessage = (nonce, data) => {
|
|
43
|
+
const onMessage = (statusType, nonce, data) => {
|
|
37
44
|
if (nonce === '0') {
|
|
38
45
|
console.log(data.toString('utf8'));
|
|
39
46
|
}
|
|
40
47
|
if (waiters.has(nonce)) {
|
|
41
|
-
|
|
48
|
+
if (statusType === 'error') {
|
|
49
|
+
try {
|
|
50
|
+
const parsed = JSON.parse(data.toString('utf8'));
|
|
51
|
+
waiters.get(nonce).reject(new Error(`Compositor error: ${parsed.error}`));
|
|
52
|
+
}
|
|
53
|
+
catch (err) {
|
|
54
|
+
waiters.get(nonce).reject(new Error(data.toString('utf8')));
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
waiters.get(nonce).resolve(data);
|
|
59
|
+
}
|
|
42
60
|
waiters.delete(nonce);
|
|
43
61
|
}
|
|
44
62
|
};
|
|
@@ -52,14 +70,15 @@ const startCompositor = (payload) => {
|
|
|
52
70
|
separatorIndex += separator.length;
|
|
53
71
|
let nonceString = '';
|
|
54
72
|
let lengthString = '';
|
|
73
|
+
let statusString = '';
|
|
55
74
|
// Each message from Rust is prefixed with `remotion_buffer;{[nonce]}:{[length]}`
|
|
56
75
|
// Let's read the buffer to extract the nonce, and if the full length is available,
|
|
57
76
|
// we'll extract the data and pass it to the callback.
|
|
58
77
|
// eslint-disable-next-line no-constant-condition
|
|
59
78
|
while (true) {
|
|
60
79
|
const nextDigit = outputBuffer[separatorIndex];
|
|
61
|
-
//
|
|
62
|
-
if (nextDigit ===
|
|
80
|
+
// 0x3a is the character ":"
|
|
81
|
+
if (nextDigit === 0x3a) {
|
|
63
82
|
separatorIndex++;
|
|
64
83
|
break;
|
|
65
84
|
}
|
|
@@ -69,14 +88,24 @@ const startCompositor = (payload) => {
|
|
|
69
88
|
// eslint-disable-next-line no-constant-condition
|
|
70
89
|
while (true) {
|
|
71
90
|
const nextDigit = outputBuffer[separatorIndex];
|
|
72
|
-
// 0x3a is the character ":"
|
|
73
91
|
if (nextDigit === 0x3a) {
|
|
92
|
+
separatorIndex++;
|
|
74
93
|
break;
|
|
75
94
|
}
|
|
76
95
|
separatorIndex++;
|
|
77
96
|
lengthString += String.fromCharCode(nextDigit);
|
|
78
97
|
}
|
|
98
|
+
// eslint-disable-next-line no-constant-condition
|
|
99
|
+
while (true) {
|
|
100
|
+
const nextDigit = outputBuffer[separatorIndex];
|
|
101
|
+
if (nextDigit === 0x3a) {
|
|
102
|
+
break;
|
|
103
|
+
}
|
|
104
|
+
separatorIndex++;
|
|
105
|
+
statusString += String.fromCharCode(nextDigit);
|
|
106
|
+
}
|
|
79
107
|
const length = Number(lengthString);
|
|
108
|
+
const status = Number(statusString);
|
|
80
109
|
const dataLength = outputBuffer.length - separatorIndex - 1;
|
|
81
110
|
if (dataLength < length) {
|
|
82
111
|
missingData = {
|
|
@@ -85,7 +114,7 @@ const startCompositor = (payload) => {
|
|
|
85
114
|
return;
|
|
86
115
|
}
|
|
87
116
|
const data = outputBuffer.subarray(separatorIndex + 1, separatorIndex + 1 + Number(lengthString));
|
|
88
|
-
onMessage(nonceString, data);
|
|
117
|
+
onMessage(status === 1 ? 'error' : 'success', nonceString, data);
|
|
89
118
|
missingData = null;
|
|
90
119
|
outputBuffer = outputBuffer.subarray(separatorIndex + Number(lengthString) + 1);
|
|
91
120
|
processInput();
|
|
@@ -145,21 +174,17 @@ const startCompositor = (payload) => {
|
|
|
145
174
|
return new Promise((resolve, reject) => {
|
|
146
175
|
const nonce = (0, make_nonce_1.makeNonce)();
|
|
147
176
|
const composed = {
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
177
|
+
nonce,
|
|
178
|
+
payload: {
|
|
179
|
+
type: command,
|
|
180
|
+
params,
|
|
152
181
|
},
|
|
153
182
|
};
|
|
154
183
|
// TODO: Should have a way to error out a single task
|
|
155
184
|
child.stdin.write(JSON.stringify(composed) + '\n');
|
|
156
185
|
waiters.set(nonce, {
|
|
157
|
-
resolve
|
|
158
|
-
|
|
159
|
-
},
|
|
160
|
-
reject: (err) => {
|
|
161
|
-
reject(err);
|
|
162
|
-
},
|
|
186
|
+
resolve,
|
|
187
|
+
reject,
|
|
163
188
|
});
|
|
164
189
|
});
|
|
165
190
|
},
|
|
@@ -7,9 +7,6 @@ export declare const createFfmpegComplexFilter: ({ filters, downloadMap, ffmpegE
|
|
|
7
7
|
ffmpegExecutable: FfmpegExecutable;
|
|
8
8
|
remotionRoot: string;
|
|
9
9
|
}) => Promise<{
|
|
10
|
-
complexFilterFlag: [
|
|
11
|
-
string,
|
|
12
|
-
string
|
|
13
|
-
] | null;
|
|
10
|
+
complexFilterFlag: [string, string] | null;
|
|
14
11
|
cleanup: () => void;
|
|
15
12
|
}>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { AudioCodec } from './audio-codec';
|
|
2
2
|
import type { Codec } from './codec';
|
|
3
3
|
import type { FileExtension } from './file-extensions';
|
|
4
|
-
export declare const getFileExtensionFromCodec: <T extends "
|
|
5
|
-
export declare const makeFileExtensionMap: () => Record<string, ("
|
|
4
|
+
export declare const getFileExtensionFromCodec: <T extends "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif">(codec: T, audioCodec: AudioCodec | null) => FileExtension;
|
|
5
|
+
export declare const makeFileExtensionMap: () => Record<string, ("h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif")[]>;
|
|
6
6
|
export declare const defaultCodecsForFileExtension: Record<FileExtension, Codec>;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
1
2
|
import type { OffthreadVideoImageFormat } from 'remotion';
|
|
2
3
|
import type { SpecialVCodecForTransparency } from './assets/download-map';
|
|
3
4
|
import type { FfmpegExecutable } from './ffmpeg-executable';
|
|
@@ -7,10 +8,7 @@ export declare const getFrameOfVideoSlow: ({ src, duration, ffmpegExecutable, im
|
|
|
7
8
|
duration: number;
|
|
8
9
|
imageFormat: OffthreadVideoImageFormat;
|
|
9
10
|
specialVCodecForTransparency: SpecialVCodecForTransparency;
|
|
10
|
-
needsResize: [
|
|
11
|
-
number,
|
|
12
|
-
number
|
|
13
|
-
] | null;
|
|
11
|
+
needsResize: [number, number] | null;
|
|
14
12
|
offset: number;
|
|
15
13
|
fps: number | null;
|
|
16
14
|
remotionRoot: string;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
1
2
|
import execa from 'execa';
|
|
2
3
|
import { SymbolicateableError } from './error-handling/symbolicateable-error';
|
|
3
4
|
import { mimeContentType, mimeLookup } from './mime-types';
|
|
@@ -59,9 +60,9 @@ export declare const RenderInternals: {
|
|
|
59
60
|
width: number;
|
|
60
61
|
height: number;
|
|
61
62
|
scale: number;
|
|
62
|
-
codec: "
|
|
63
|
+
codec: "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif";
|
|
63
64
|
}) => void;
|
|
64
|
-
getFileExtensionFromCodec: <T extends "
|
|
65
|
+
getFileExtensionFromCodec: <T extends "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif">(codec: T, audioCodec: "mp3" | "aac" | "pcm-16" | "opus" | null) => import("./file-extensions").FileExtension;
|
|
65
66
|
tmpDir: (str: string) => string;
|
|
66
67
|
deleteDirectory: (directory: string) => void;
|
|
67
68
|
isServeUrl: (potentialUrl: string) => boolean;
|
|
@@ -111,24 +112,24 @@ export declare const RenderInternals: {
|
|
|
111
112
|
};
|
|
112
113
|
registerErrorSymbolicationLock: () => number;
|
|
113
114
|
unlockErrorSymbolicationLock: (id: number) => void;
|
|
114
|
-
canUseParallelEncoding: (codec: "
|
|
115
|
+
canUseParallelEncoding: (codec: "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif") => boolean;
|
|
115
116
|
mimeContentType: typeof mimeContentType;
|
|
116
117
|
mimeLookup: typeof mimeLookup;
|
|
117
118
|
validateConcurrency: (value: unknown, setting: string) => void;
|
|
118
119
|
validPixelFormats: readonly ["yuv420p", "yuva420p", "yuv422p", "yuv444p", "yuv420p10le", "yuv422p10le", "yuv444p10le", "yuva444p10le"];
|
|
119
120
|
DEFAULT_BROWSER: import("./browser").Browser;
|
|
120
121
|
validateFrameRange: (frameRange: import("./frame-range").FrameRange | null) => void;
|
|
121
|
-
DEFAULT_OPENGL_RENDERER: "
|
|
122
|
-
validateOpenGlRenderer: (option: "
|
|
122
|
+
DEFAULT_OPENGL_RENDERER: "angle" | "swangle" | "egl" | "swiftshader" | null;
|
|
123
|
+
validateOpenGlRenderer: (option: "angle" | "swangle" | "egl" | "swiftshader" | null) => "angle" | "swangle" | "egl" | "swiftshader" | null;
|
|
123
124
|
validImageFormats: readonly ["png", "jpeg", "none"];
|
|
124
125
|
validCodecs: readonly ["h264", "h265", "vp8", "vp9", "mp3", "aac", "wav", "prores", "h264-mkv", "gif"];
|
|
125
126
|
DEFAULT_PIXEL_FORMAT: "yuv420p" | "yuva420p" | "yuv422p" | "yuv444p" | "yuv420p10le" | "yuv422p10le" | "yuv444p10le" | "yuva444p10le";
|
|
126
127
|
validateQuality: (q: number | undefined) => void;
|
|
127
128
|
DEFAULT_TIMEOUT: number;
|
|
128
|
-
DEFAULT_CODEC: "
|
|
129
|
-
isAudioCodec: (codec: "
|
|
129
|
+
DEFAULT_CODEC: "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif";
|
|
130
|
+
isAudioCodec: (codec: "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif" | undefined) => boolean;
|
|
130
131
|
logLevels: readonly ["verbose", "info", "warn", "error"];
|
|
131
|
-
isEqualOrBelowLogLevel: (currentLevel: "
|
|
132
|
+
isEqualOrBelowLogLevel: (currentLevel: "error" | "verbose" | "info" | "warn", level: "error" | "verbose" | "info" | "warn") => boolean;
|
|
132
133
|
isValidLogLevel: (level: string) => boolean;
|
|
133
134
|
perf: typeof perf;
|
|
134
135
|
makeDownloadMap: () => import("./assets/download-map").DownloadMap;
|
|
@@ -150,92 +151,92 @@ export declare const RenderInternals: {
|
|
|
150
151
|
output: string;
|
|
151
152
|
onProgress: (p: number) => void;
|
|
152
153
|
numberOfFrames: number;
|
|
153
|
-
codec: "
|
|
154
|
+
codec: "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif";
|
|
154
155
|
fps: number;
|
|
155
156
|
numberOfGifLoops: number | null;
|
|
156
157
|
remotionRoot: string;
|
|
157
158
|
ffmpegExecutable: import("./ffmpeg-executable").FfmpegExecutable;
|
|
158
|
-
audioCodec: "
|
|
159
|
+
audioCodec: "mp3" | "aac" | "pcm-16" | "opus" | null;
|
|
159
160
|
}) => Promise<void>;
|
|
160
161
|
getDefaultAudioCodec: ({ codec, preferLossless, }: {
|
|
161
|
-
codec: "
|
|
162
|
+
codec: "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif";
|
|
162
163
|
preferLossless: boolean;
|
|
163
|
-
}) => "
|
|
164
|
+
}) => "mp3" | "aac" | "pcm-16" | "opus" | null;
|
|
164
165
|
validAudioCodecs: readonly ["pcm-16", "aac", "mp3", "opus"];
|
|
165
166
|
defaultFileExtensionMap: {
|
|
166
|
-
|
|
167
|
+
h264: {
|
|
167
168
|
default: import("./file-extensions").FileExtension;
|
|
168
169
|
forAudioCodec: {
|
|
169
|
-
|
|
170
|
+
aac: {
|
|
170
171
|
possible: import("./file-extensions").FileExtension[];
|
|
171
172
|
default: import("./file-extensions").FileExtension;
|
|
172
173
|
};
|
|
173
|
-
|
|
174
|
+
"pcm-16": {
|
|
174
175
|
possible: import("./file-extensions").FileExtension[];
|
|
175
176
|
default: import("./file-extensions").FileExtension;
|
|
176
177
|
};
|
|
177
178
|
};
|
|
178
179
|
};
|
|
179
|
-
|
|
180
|
+
h265: {
|
|
180
181
|
default: import("./file-extensions").FileExtension;
|
|
181
182
|
forAudioCodec: {
|
|
182
|
-
|
|
183
|
+
aac: {
|
|
183
184
|
possible: import("./file-extensions").FileExtension[];
|
|
184
185
|
default: import("./file-extensions").FileExtension;
|
|
185
186
|
};
|
|
186
|
-
|
|
187
|
+
"pcm-16": {
|
|
187
188
|
possible: import("./file-extensions").FileExtension[];
|
|
188
189
|
default: import("./file-extensions").FileExtension;
|
|
189
190
|
};
|
|
190
191
|
};
|
|
191
192
|
};
|
|
192
|
-
|
|
193
|
+
vp8: {
|
|
193
194
|
default: import("./file-extensions").FileExtension;
|
|
194
195
|
forAudioCodec: {
|
|
195
196
|
"pcm-16": {
|
|
196
197
|
possible: import("./file-extensions").FileExtension[];
|
|
197
198
|
default: import("./file-extensions").FileExtension;
|
|
198
199
|
};
|
|
199
|
-
|
|
200
|
+
opus: {
|
|
200
201
|
possible: import("./file-extensions").FileExtension[];
|
|
201
202
|
default: import("./file-extensions").FileExtension;
|
|
202
203
|
};
|
|
203
204
|
};
|
|
204
205
|
};
|
|
205
|
-
|
|
206
|
+
vp9: {
|
|
206
207
|
default: import("./file-extensions").FileExtension;
|
|
207
208
|
forAudioCodec: {
|
|
208
209
|
"pcm-16": {
|
|
209
210
|
possible: import("./file-extensions").FileExtension[];
|
|
210
211
|
default: import("./file-extensions").FileExtension;
|
|
211
212
|
};
|
|
212
|
-
|
|
213
|
+
opus: {
|
|
213
214
|
possible: import("./file-extensions").FileExtension[];
|
|
214
215
|
default: import("./file-extensions").FileExtension;
|
|
215
216
|
};
|
|
216
217
|
};
|
|
217
218
|
};
|
|
218
|
-
|
|
219
|
+
mp3: {
|
|
219
220
|
default: import("./file-extensions").FileExtension;
|
|
220
221
|
forAudioCodec: {
|
|
221
|
-
|
|
222
|
+
mp3: {
|
|
222
223
|
possible: import("./file-extensions").FileExtension[];
|
|
223
224
|
default: import("./file-extensions").FileExtension;
|
|
224
225
|
};
|
|
225
|
-
|
|
226
|
+
"pcm-16": {
|
|
226
227
|
possible: import("./file-extensions").FileExtension[];
|
|
227
228
|
default: import("./file-extensions").FileExtension;
|
|
228
229
|
};
|
|
229
230
|
};
|
|
230
231
|
};
|
|
231
|
-
|
|
232
|
+
aac: {
|
|
232
233
|
default: import("./file-extensions").FileExtension;
|
|
233
234
|
forAudioCodec: {
|
|
234
|
-
|
|
235
|
+
aac: {
|
|
235
236
|
possible: import("./file-extensions").FileExtension[];
|
|
236
237
|
default: import("./file-extensions").FileExtension;
|
|
237
238
|
};
|
|
238
|
-
|
|
239
|
+
"pcm-16": {
|
|
239
240
|
possible: import("./file-extensions").FileExtension[];
|
|
240
241
|
default: import("./file-extensions").FileExtension;
|
|
241
242
|
};
|
|
@@ -253,11 +254,11 @@ export declare const RenderInternals: {
|
|
|
253
254
|
prores: {
|
|
254
255
|
default: import("./file-extensions").FileExtension;
|
|
255
256
|
forAudioCodec: {
|
|
256
|
-
|
|
257
|
+
aac: {
|
|
257
258
|
possible: import("./file-extensions").FileExtension[];
|
|
258
259
|
default: import("./file-extensions").FileExtension;
|
|
259
260
|
};
|
|
260
|
-
|
|
261
|
+
"pcm-16": {
|
|
261
262
|
possible: import("./file-extensions").FileExtension[];
|
|
262
263
|
default: import("./file-extensions").FileExtension;
|
|
263
264
|
};
|
|
@@ -289,6 +290,6 @@ export declare const RenderInternals: {
|
|
|
289
290
|
readonly vp9: readonly ["opus", "pcm-16"];
|
|
290
291
|
readonly wav: readonly ["pcm-16"];
|
|
291
292
|
};
|
|
292
|
-
makeFileExtensionMap: () => Record<string, ("
|
|
293
|
-
defaultCodecsForFileExtension: Record<import("./file-extensions").FileExtension, "
|
|
293
|
+
makeFileExtensionMap: () => Record<string, ("h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif")[]>;
|
|
294
|
+
defaultCodecsForFileExtension: Record<import("./file-extensions").FileExtension, "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif">;
|
|
294
295
|
};
|
package/dist/render-media.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { AudioCodec } from './audio-codec';
|
|
2
|
-
export declare const validateOutputFilename: <T extends "
|
|
2
|
+
export declare const validateOutputFilename: <T extends "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif">({ codec, audioCodec, extension, preferLossless, }: {
|
|
3
3
|
codec: T;
|
|
4
4
|
audioCodec: AudioCodec | null;
|
|
5
5
|
extension: string;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@remotion/renderer",
|
|
3
|
-
"version": "3.3.
|
|
3
|
+
"version": "3.3.84",
|
|
4
4
|
"description": "Renderer for Remotion",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"dependencies": {
|
|
17
17
|
"execa": "5.1.1",
|
|
18
18
|
"extract-zip": "2.0.1",
|
|
19
|
-
"remotion": "3.3.
|
|
19
|
+
"remotion": "3.3.84",
|
|
20
20
|
"source-map": "^0.8.0-beta.0",
|
|
21
21
|
"ws": "8.7.0"
|
|
22
22
|
},
|
|
@@ -41,13 +41,13 @@
|
|
|
41
41
|
"vitest": "0.24.3"
|
|
42
42
|
},
|
|
43
43
|
"optionalDependencies": {
|
|
44
|
-
"@remotion/compositor-darwin-arm64": "3.3.
|
|
45
|
-
"@remotion/compositor-darwin-x64": "3.3.
|
|
46
|
-
"@remotion/compositor-linux-arm64-gnu": "3.3.
|
|
47
|
-
"@remotion/compositor-linux-arm64-musl": "3.3.
|
|
48
|
-
"@remotion/compositor-linux-x64-gnu": "3.3.
|
|
49
|
-
"@remotion/compositor-linux-x64-musl": "3.3.
|
|
50
|
-
"@remotion/compositor-win32-x64-msvc": "3.3.
|
|
44
|
+
"@remotion/compositor-darwin-arm64": "3.3.84",
|
|
45
|
+
"@remotion/compositor-darwin-x64": "3.3.84",
|
|
46
|
+
"@remotion/compositor-linux-arm64-gnu": "3.3.84",
|
|
47
|
+
"@remotion/compositor-linux-arm64-musl": "3.3.84",
|
|
48
|
+
"@remotion/compositor-linux-x64-gnu": "3.3.84",
|
|
49
|
+
"@remotion/compositor-linux-x64-musl": "3.3.84",
|
|
50
|
+
"@remotion/compositor-win32-x64-msvc": "3.3.84"
|
|
51
51
|
},
|
|
52
52
|
"keywords": [
|
|
53
53
|
"remotion",
|