@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
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
1
|
import execa from 'execa';
|
|
3
2
|
import { SymbolicateableError } from './error-handling/symbolicateable-error';
|
|
4
3
|
import { mimeContentType, mimeLookup } from './mime-types';
|
|
@@ -11,24 +10,21 @@ export { BrowserExecutable } from './browser-executable';
|
|
|
11
10
|
export { BrowserLog } from './browser-log';
|
|
12
11
|
export { Codec, CodecOrUndefined } from './codec';
|
|
13
12
|
export { Crf } from './crf';
|
|
14
|
-
export { ensureFfmpeg, EnsureFfmpegOptions, ensureFfprobe, } from './ensure-ffmpeg';
|
|
15
13
|
export { ErrorWithStackFrame } from './error-handling/handle-javascript-exception';
|
|
16
|
-
export { FfmpegExecutable } from './ffmpeg-executable';
|
|
17
|
-
export { FfmpegVersion } from './ffmpeg-flags';
|
|
18
14
|
export type { FfmpegOverrideFn } from './ffmpeg-override';
|
|
19
15
|
export { FileExtension } from './file-extensions';
|
|
20
16
|
export { FrameRange } from './frame-range';
|
|
21
|
-
export { getCanExtractFramesFast } from './get-can-extract-frames-fast';
|
|
22
17
|
export { getCompositions } from './get-compositions';
|
|
23
|
-
export { ImageFormat, StillImageFormat, validateSelectedPixelFormatAndImageFormatCombination,
|
|
18
|
+
export { ImageFormat, StillImageFormat, validateSelectedPixelFormatAndImageFormatCombination, VideoImageFormat, } from './image-format';
|
|
24
19
|
export type { LogLevel } from './log-level';
|
|
25
20
|
export { CancelSignal, makeCancelSignal } from './make-cancel-signal';
|
|
26
21
|
export { openBrowser } from './open-browser';
|
|
27
22
|
export type { ChromiumOptions } from './open-browser';
|
|
23
|
+
export { RemotionOption } from './options/option';
|
|
28
24
|
export { PixelFormat } from './pixel-format';
|
|
29
25
|
export { ProResProfile } from './prores-profile';
|
|
30
26
|
export { renderFrames } from './render-frames';
|
|
31
|
-
export {
|
|
27
|
+
export { renderMedia, RenderMediaOnProgress, RenderMediaOptions, SlowFrame, StitchingState, } from './render-media';
|
|
32
28
|
export { renderStill, RenderStillOptions } from './render-still';
|
|
33
29
|
export { StitcherOptions, stitchFramesToVideo } from './stitch-frames-to-video';
|
|
34
30
|
export { SymbolicatedStackFrame } from './symbolicate-stacktrace';
|
|
@@ -37,21 +33,15 @@ export { OpenGlRenderer } from './validate-opengl-renderer';
|
|
|
37
33
|
export { validateOutputFilename } from './validate-output-filename';
|
|
38
34
|
export declare const RenderInternals: {
|
|
39
35
|
ensureLocalBrowser: (browser: import("./browser").Browser, preferredBrowserExecutable: import("./browser-executable").BrowserExecutable) => Promise<void>;
|
|
40
|
-
ffmpegHasFeature: ({ ffmpegExecutable, feature, remotionRoot, }: {
|
|
41
|
-
ffmpegExecutable: string | null;
|
|
42
|
-
feature: "enable-gpl" | "enable-libx265" | "enable-libvpx";
|
|
43
|
-
remotionRoot: string;
|
|
44
|
-
}) => Promise<boolean>;
|
|
45
36
|
getActualConcurrency: (userPreference: string | number | null) => number;
|
|
46
|
-
validateFfmpeg: (customFfmpegBinary: string | null, remotionRoot: string, binary: "ffmpeg" | "ffprobe") => Promise<void>;
|
|
47
37
|
serveStatic: (path: string | null, options: {
|
|
48
38
|
port: number | null;
|
|
49
|
-
ffmpegExecutable: import("./ffmpeg-executable").FfmpegExecutable;
|
|
50
|
-
ffprobeExecutable: import("./ffmpeg-executable").FfmpegExecutable;
|
|
51
39
|
onDownload: import("./assets/download-and-map-assets-to-file").RenderMediaOnDownload;
|
|
52
40
|
onError: (err: Error) => void;
|
|
53
41
|
downloadMap: import("./assets/download-map").DownloadMap;
|
|
54
42
|
remotionRoot: string;
|
|
43
|
+
concurrency: number;
|
|
44
|
+
verbose: boolean;
|
|
55
45
|
}) => Promise<{
|
|
56
46
|
port: number;
|
|
57
47
|
close: () => Promise<void>;
|
|
@@ -60,16 +50,16 @@ export declare const RenderInternals: {
|
|
|
60
50
|
width: number;
|
|
61
51
|
height: number;
|
|
62
52
|
scale: number;
|
|
63
|
-
codec: "
|
|
53
|
+
codec: "aac" | "mp3" | "h264" | "h265" | "vp8" | "vp9" | "wav" | "prores" | "h264-mkv" | "gif";
|
|
64
54
|
}) => void;
|
|
65
|
-
getFileExtensionFromCodec: <T extends "
|
|
55
|
+
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;
|
|
66
56
|
tmpDir: (str: string) => string;
|
|
67
57
|
deleteDirectory: (directory: string) => void;
|
|
68
58
|
isServeUrl: (potentialUrl: string) => boolean;
|
|
69
59
|
ensureOutputDirectory: (outputLocation: string) => void;
|
|
70
60
|
getRealFrameRange: (durationInFrames: number, frameRange: import("./frame-range").FrameRange | null) => [number, number];
|
|
71
61
|
validatePuppeteerTimeout: (timeoutInMilliseconds: unknown) => void;
|
|
72
|
-
downloadFile: (
|
|
62
|
+
downloadFile: (options: {
|
|
73
63
|
url: string;
|
|
74
64
|
to: (contentDisposition: string | null, contentType: string | null) => string;
|
|
75
65
|
onProgress: ((progress: {
|
|
@@ -77,7 +67,7 @@ export declare const RenderInternals: {
|
|
|
77
67
|
downloaded: number;
|
|
78
68
|
totalSize: number | null;
|
|
79
69
|
}) => void) | undefined;
|
|
80
|
-
}) => Promise<{
|
|
70
|
+
}, retries?: number) => Promise<{
|
|
81
71
|
sizeInBytes: number;
|
|
82
72
|
to: string;
|
|
83
73
|
}>;
|
|
@@ -112,24 +102,23 @@ export declare const RenderInternals: {
|
|
|
112
102
|
};
|
|
113
103
|
registerErrorSymbolicationLock: () => number;
|
|
114
104
|
unlockErrorSymbolicationLock: (id: number) => void;
|
|
115
|
-
canUseParallelEncoding: (codec: "
|
|
105
|
+
canUseParallelEncoding: (codec: "aac" | "mp3" | "h264" | "h265" | "vp8" | "vp9" | "wav" | "prores" | "h264-mkv" | "gif") => boolean;
|
|
116
106
|
mimeContentType: typeof mimeContentType;
|
|
117
107
|
mimeLookup: typeof mimeLookup;
|
|
118
108
|
validateConcurrency: (value: unknown, setting: string) => void;
|
|
119
109
|
validPixelFormats: readonly ["yuv420p", "yuva420p", "yuv422p", "yuv444p", "yuv420p10le", "yuv422p10le", "yuv444p10le", "yuva444p10le"];
|
|
120
110
|
DEFAULT_BROWSER: import("./browser").Browser;
|
|
121
111
|
validateFrameRange: (frameRange: import("./frame-range").FrameRange | null) => void;
|
|
122
|
-
DEFAULT_OPENGL_RENDERER: "
|
|
123
|
-
validateOpenGlRenderer: (option: "
|
|
124
|
-
validImageFormats: readonly ["png", "jpeg", "none"];
|
|
112
|
+
DEFAULT_OPENGL_RENDERER: "swangle" | "angle" | "egl" | "swiftshader" | null;
|
|
113
|
+
validateOpenGlRenderer: (option: "swangle" | "angle" | "egl" | "swiftshader" | null) => "swangle" | "angle" | "egl" | "swiftshader" | null;
|
|
125
114
|
validCodecs: readonly ["h264", "h265", "vp8", "vp9", "mp3", "aac", "wav", "prores", "h264-mkv", "gif"];
|
|
126
115
|
DEFAULT_PIXEL_FORMAT: "yuv420p" | "yuva420p" | "yuv422p" | "yuv444p" | "yuv420p10le" | "yuv422p10le" | "yuv444p10le" | "yuva444p10le";
|
|
127
|
-
|
|
116
|
+
validateJpegQuality: (q: number | undefined) => void;
|
|
128
117
|
DEFAULT_TIMEOUT: number;
|
|
129
|
-
DEFAULT_CODEC: "
|
|
130
|
-
isAudioCodec: (codec: "
|
|
118
|
+
DEFAULT_CODEC: "aac" | "mp3" | "h264" | "h265" | "vp8" | "vp9" | "wav" | "prores" | "h264-mkv" | "gif";
|
|
119
|
+
isAudioCodec: (codec: "aac" | "mp3" | "h264" | "h265" | "vp8" | "vp9" | "wav" | "prores" | "h264-mkv" | "gif" | undefined) => boolean;
|
|
131
120
|
logLevels: readonly ["verbose", "info", "warn", "error"];
|
|
132
|
-
isEqualOrBelowLogLevel: (currentLevel: "
|
|
121
|
+
isEqualOrBelowLogLevel: (currentLevel: "verbose" | "info" | "warn" | "error", level: "verbose" | "info" | "warn" | "error") => boolean;
|
|
133
122
|
isValidLogLevel: (level: string) => boolean;
|
|
134
123
|
perf: typeof perf;
|
|
135
124
|
makeDownloadMap: () => import("./assets/download-map").DownloadMap;
|
|
@@ -139,104 +128,99 @@ export declare const RenderInternals: {
|
|
|
139
128
|
durationInFrames: number;
|
|
140
129
|
}) => number;
|
|
141
130
|
findRemotionRoot: () => string;
|
|
142
|
-
getExecutableBinary: (ffmpegExecutable: import("./ffmpeg-executable").FfmpegExecutable, remotionRoot: string, binary: "ffmpeg" | "ffprobe") => string | Promise<string>;
|
|
143
131
|
validateBitrate: (bitrate: unknown, name: string) => void;
|
|
144
|
-
getFfmpegVersion: (options: {
|
|
145
|
-
ffmpegExecutable: string | null;
|
|
146
|
-
remotionRoot: string;
|
|
147
|
-
}) => Promise<import("./ffmpeg-flags").FfmpegVersion>;
|
|
148
132
|
combineVideos: (options: {
|
|
149
133
|
files: string[];
|
|
150
134
|
filelistDir: string;
|
|
151
135
|
output: string;
|
|
152
136
|
onProgress: (p: number) => void;
|
|
153
137
|
numberOfFrames: number;
|
|
154
|
-
codec: "
|
|
138
|
+
codec: "aac" | "mp3" | "h264" | "h265" | "vp8" | "vp9" | "wav" | "prores" | "h264-mkv" | "gif";
|
|
155
139
|
fps: number;
|
|
156
140
|
numberOfGifLoops: number | null;
|
|
157
|
-
|
|
158
|
-
ffmpegExecutable: import("./ffmpeg-executable").FfmpegExecutable;
|
|
159
|
-
audioCodec: "mp3" | "aac" | "pcm-16" | "opus" | null;
|
|
141
|
+
audioCodec: "pcm-16" | "aac" | "mp3" | "opus" | null;
|
|
160
142
|
}) => Promise<void>;
|
|
143
|
+
getMinConcurrency: () => number;
|
|
144
|
+
getMaxConcurrency: () => any;
|
|
161
145
|
getDefaultAudioCodec: ({ codec, preferLossless, }: {
|
|
162
|
-
codec: "
|
|
146
|
+
codec: "aac" | "mp3" | "h264" | "h265" | "vp8" | "vp9" | "wav" | "prores" | "h264-mkv" | "gif";
|
|
163
147
|
preferLossless: boolean;
|
|
164
|
-
}) => "
|
|
148
|
+
}) => "pcm-16" | "aac" | "mp3" | "opus" | null;
|
|
165
149
|
validAudioCodecs: readonly ["pcm-16", "aac", "mp3", "opus"];
|
|
166
150
|
defaultFileExtensionMap: {
|
|
167
|
-
|
|
151
|
+
aac: {
|
|
168
152
|
default: import("./file-extensions").FileExtension;
|
|
169
153
|
forAudioCodec: {
|
|
170
|
-
|
|
154
|
+
"pcm-16": {
|
|
171
155
|
possible: import("./file-extensions").FileExtension[];
|
|
172
156
|
default: import("./file-extensions").FileExtension;
|
|
173
157
|
};
|
|
174
|
-
|
|
158
|
+
aac: {
|
|
175
159
|
possible: import("./file-extensions").FileExtension[];
|
|
176
160
|
default: import("./file-extensions").FileExtension;
|
|
177
161
|
};
|
|
178
162
|
};
|
|
179
163
|
};
|
|
180
|
-
|
|
164
|
+
mp3: {
|
|
181
165
|
default: import("./file-extensions").FileExtension;
|
|
182
166
|
forAudioCodec: {
|
|
183
|
-
|
|
167
|
+
"pcm-16": {
|
|
184
168
|
possible: import("./file-extensions").FileExtension[];
|
|
185
169
|
default: import("./file-extensions").FileExtension;
|
|
186
170
|
};
|
|
187
|
-
|
|
171
|
+
mp3: {
|
|
188
172
|
possible: import("./file-extensions").FileExtension[];
|
|
189
173
|
default: import("./file-extensions").FileExtension;
|
|
190
174
|
};
|
|
191
175
|
};
|
|
192
176
|
};
|
|
193
|
-
|
|
177
|
+
h264: {
|
|
194
178
|
default: import("./file-extensions").FileExtension;
|
|
195
179
|
forAudioCodec: {
|
|
196
180
|
"pcm-16": {
|
|
197
181
|
possible: import("./file-extensions").FileExtension[];
|
|
198
182
|
default: import("./file-extensions").FileExtension;
|
|
199
183
|
};
|
|
200
|
-
|
|
184
|
+
aac: {
|
|
201
185
|
possible: import("./file-extensions").FileExtension[];
|
|
202
186
|
default: import("./file-extensions").FileExtension;
|
|
203
187
|
};
|
|
204
188
|
};
|
|
205
189
|
};
|
|
206
|
-
|
|
190
|
+
h265: {
|
|
207
191
|
default: import("./file-extensions").FileExtension;
|
|
208
192
|
forAudioCodec: {
|
|
209
193
|
"pcm-16": {
|
|
210
194
|
possible: import("./file-extensions").FileExtension[];
|
|
211
195
|
default: import("./file-extensions").FileExtension;
|
|
212
196
|
};
|
|
213
|
-
|
|
197
|
+
aac: {
|
|
214
198
|
possible: import("./file-extensions").FileExtension[];
|
|
215
199
|
default: import("./file-extensions").FileExtension;
|
|
216
200
|
};
|
|
217
201
|
};
|
|
218
202
|
};
|
|
219
|
-
|
|
203
|
+
vp8: {
|
|
220
204
|
default: import("./file-extensions").FileExtension;
|
|
221
205
|
forAudioCodec: {
|
|
222
|
-
|
|
206
|
+
"pcm-16": {
|
|
223
207
|
possible: import("./file-extensions").FileExtension[];
|
|
224
208
|
default: import("./file-extensions").FileExtension;
|
|
225
209
|
};
|
|
226
|
-
|
|
210
|
+
opus: {
|
|
227
211
|
possible: import("./file-extensions").FileExtension[];
|
|
228
212
|
default: import("./file-extensions").FileExtension;
|
|
229
213
|
};
|
|
230
214
|
};
|
|
231
215
|
};
|
|
232
|
-
|
|
216
|
+
vp9: {
|
|
233
217
|
default: import("./file-extensions").FileExtension;
|
|
234
218
|
forAudioCodec: {
|
|
235
|
-
|
|
219
|
+
"pcm-16": {
|
|
236
220
|
possible: import("./file-extensions").FileExtension[];
|
|
237
221
|
default: import("./file-extensions").FileExtension;
|
|
238
222
|
};
|
|
239
|
-
|
|
223
|
+
opus: {
|
|
240
224
|
possible: import("./file-extensions").FileExtension[];
|
|
241
225
|
default: import("./file-extensions").FileExtension;
|
|
242
226
|
};
|
|
@@ -254,11 +238,11 @@ export declare const RenderInternals: {
|
|
|
254
238
|
prores: {
|
|
255
239
|
default: import("./file-extensions").FileExtension;
|
|
256
240
|
forAudioCodec: {
|
|
257
|
-
|
|
241
|
+
"pcm-16": {
|
|
258
242
|
possible: import("./file-extensions").FileExtension[];
|
|
259
243
|
default: import("./file-extensions").FileExtension;
|
|
260
244
|
};
|
|
261
|
-
|
|
245
|
+
aac: {
|
|
262
246
|
possible: import("./file-extensions").FileExtension[];
|
|
263
247
|
default: import("./file-extensions").FileExtension;
|
|
264
248
|
};
|
|
@@ -275,21 +259,56 @@ export declare const RenderInternals: {
|
|
|
275
259
|
};
|
|
276
260
|
gif: {
|
|
277
261
|
default: import("./file-extensions").FileExtension;
|
|
278
|
-
forAudioCodec: {
|
|
262
|
+
forAudioCodec: {
|
|
263
|
+
"pcm-16": {
|
|
264
|
+
possible: import("./file-extensions").FileExtension[];
|
|
265
|
+
default: import("./file-extensions").FileExtension;
|
|
266
|
+
};
|
|
267
|
+
aac: {
|
|
268
|
+
possible: import("./file-extensions").FileExtension[];
|
|
269
|
+
default: import("./file-extensions").FileExtension;
|
|
270
|
+
};
|
|
271
|
+
mp3: {
|
|
272
|
+
possible: import("./file-extensions").FileExtension[];
|
|
273
|
+
default: import("./file-extensions").FileExtension;
|
|
274
|
+
};
|
|
275
|
+
opus: {
|
|
276
|
+
possible: import("./file-extensions").FileExtension[];
|
|
277
|
+
default: import("./file-extensions").FileExtension;
|
|
278
|
+
};
|
|
279
|
+
};
|
|
279
280
|
};
|
|
280
281
|
};
|
|
281
282
|
supportedAudioCodecs: {
|
|
282
283
|
readonly h264: readonly ["aac", "pcm-16"];
|
|
283
284
|
readonly 'h264-mkv': readonly ["pcm-16"];
|
|
284
285
|
readonly aac: readonly ["aac", "pcm-16"];
|
|
285
|
-
readonly gif:
|
|
286
|
+
readonly gif: ("pcm-16" | "aac" | "mp3" | "opus")[];
|
|
286
287
|
readonly h265: readonly ["aac", "pcm-16"];
|
|
287
288
|
readonly mp3: readonly ["mp3", "pcm-16"];
|
|
288
|
-
readonly prores: readonly ["
|
|
289
|
+
readonly prores: readonly ["aac", "pcm-16"];
|
|
289
290
|
readonly vp8: readonly ["opus", "pcm-16"];
|
|
290
291
|
readonly vp9: readonly ["opus", "pcm-16"];
|
|
291
292
|
readonly wav: readonly ["pcm-16"];
|
|
292
293
|
};
|
|
293
|
-
makeFileExtensionMap: () => Record<string, ("
|
|
294
|
-
defaultCodecsForFileExtension: Record<import("./file-extensions").FileExtension, "
|
|
294
|
+
makeFileExtensionMap: () => Record<string, ("aac" | "mp3" | "h264" | "h265" | "vp8" | "vp9" | "wav" | "prores" | "h264-mkv" | "gif")[]>;
|
|
295
|
+
defaultCodecsForFileExtension: Record<import("./file-extensions").FileExtension, "aac" | "mp3" | "h264" | "h265" | "vp8" | "vp9" | "wav" | "prores" | "h264-mkv" | "gif">;
|
|
296
|
+
getExecutablePath: (type: "compositor" | "ffmpeg" | "ffprobe" | "ffmpeg-cwd") => string;
|
|
297
|
+
callFf: (bin: "ffmpeg" | "ffprobe", args: (string | null)[], options?: execa.Options<string> | undefined) => execa.ExecaChildProcess<string>;
|
|
298
|
+
dynamicLibraryPathOptions: () => {
|
|
299
|
+
env: {
|
|
300
|
+
DYLD_LIBRARY_PATH: string;
|
|
301
|
+
RUST_BACKTRACE: string;
|
|
302
|
+
} | {
|
|
303
|
+
PATH: string;
|
|
304
|
+
RUST_BACKTRACE: string;
|
|
305
|
+
} | {
|
|
306
|
+
LD_LIBRARY_PATH: string;
|
|
307
|
+
RUST_BACKTRACE: string;
|
|
308
|
+
};
|
|
309
|
+
};
|
|
310
|
+
validStillImageFormats: readonly ["png", "jpeg", "pdf", "webp"];
|
|
311
|
+
validVideoImageFormats: readonly ["png", "jpeg", "none"];
|
|
312
|
+
DEFAULT_STILL_IMAGE_FORMAT: "png" | "jpeg" | "pdf" | "webp";
|
|
313
|
+
DEFAULT_VIDEO_IMAGE_FORMAT: "png" | "jpeg" | "none";
|
|
295
314
|
};
|
package/dist/index.js
CHANGED
|
@@ -26,23 +26,24 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
26
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.RenderInternals = exports.validateOutputFilename = exports.stitchFramesToVideo = exports.renderStill = exports.renderMedia = exports.renderFrames = exports.openBrowser = exports.makeCancelSignal = exports.
|
|
29
|
+
exports.RenderInternals = exports.validateOutputFilename = exports.stitchFramesToVideo = exports.renderStill = exports.renderMedia = exports.renderFrames = exports.openBrowser = exports.makeCancelSignal = exports.validateSelectedPixelFormatAndImageFormatCombination = exports.getCompositions = exports.ErrorWithStackFrame = void 0;
|
|
30
30
|
const execa_1 = __importDefault(require("execa"));
|
|
31
31
|
const download_file_1 = require("./assets/download-file");
|
|
32
32
|
const download_map_1 = require("./assets/download-map");
|
|
33
33
|
const audio_codec_1 = require("./audio-codec");
|
|
34
34
|
const browser_1 = require("./browser");
|
|
35
35
|
const TimeoutSettings_1 = require("./browser/TimeoutSettings");
|
|
36
|
+
const call_ffmpeg_1 = require("./call-ffmpeg");
|
|
36
37
|
const can_use_parallel_encoding_1 = require("./can-use-parallel-encoding");
|
|
37
38
|
const check_apple_silicon_1 = require("./check-apple-silicon");
|
|
38
39
|
const codec_1 = require("./codec");
|
|
39
40
|
const combine_videos_1 = require("./combine-videos");
|
|
41
|
+
const get_executable_path_1 = require("./compositor/get-executable-path");
|
|
40
42
|
const convert_to_positive_frame_index_1 = require("./convert-to-positive-frame-index");
|
|
41
43
|
const delete_directory_1 = require("./delete-directory");
|
|
42
44
|
const ensure_output_directory_1 = require("./ensure-output-directory");
|
|
43
45
|
const symbolicate_error_1 = require("./error-handling/symbolicate-error");
|
|
44
46
|
const symbolicateable_error_1 = require("./error-handling/symbolicateable-error");
|
|
45
|
-
const ffmpeg_flags_1 = require("./ffmpeg-flags");
|
|
46
47
|
const file_extensions_1 = require("./file-extensions");
|
|
47
48
|
const find_closest_package_json_1 = require("./find-closest-package-json");
|
|
48
49
|
const frame_range_1 = require("./frame-range");
|
|
@@ -56,35 +57,28 @@ const get_port_1 = require("./get-port");
|
|
|
56
57
|
const image_format_1 = require("./image-format");
|
|
57
58
|
const is_audio_codec_1 = require("./is-audio-codec");
|
|
58
59
|
const is_serve_url_1 = require("./is-serve-url");
|
|
60
|
+
const jpeg_quality_1 = require("./jpeg-quality");
|
|
59
61
|
const log_level_1 = require("./log-level");
|
|
60
62
|
const mime_types_1 = require("./mime-types");
|
|
61
63
|
const open_browser_1 = require("./open-browser");
|
|
62
64
|
const parse_browser_error_stack_1 = require("./parse-browser-error-stack");
|
|
63
65
|
const perf = __importStar(require("./perf"));
|
|
64
66
|
const pixel_format_1 = require("./pixel-format");
|
|
65
|
-
const quality_1 = require("./quality");
|
|
66
67
|
const is_path_inside_1 = require("./serve-handler/is-path-inside");
|
|
67
68
|
const serve_static_1 = require("./serve-static");
|
|
68
69
|
const tmp_dir_1 = require("./tmp-dir");
|
|
69
70
|
const validate_concurrency_1 = require("./validate-concurrency");
|
|
70
71
|
const validate_even_dimensions_with_codec_1 = require("./validate-even-dimensions-with-codec");
|
|
71
|
-
const validate_ffmpeg_1 = require("./validate-ffmpeg");
|
|
72
72
|
const validate_opengl_renderer_1 = require("./validate-opengl-renderer");
|
|
73
73
|
const validate_puppeteer_timeout_1 = require("./validate-puppeteer-timeout");
|
|
74
74
|
const validate_videobitrate_1 = require("./validate-videobitrate");
|
|
75
75
|
const wait_for_symbolication_error_to_be_done_1 = require("./wait-for-symbolication-error-to-be-done");
|
|
76
|
-
var ensure_ffmpeg_1 = require("./ensure-ffmpeg");
|
|
77
|
-
Object.defineProperty(exports, "ensureFfmpeg", { enumerable: true, get: function () { return ensure_ffmpeg_1.ensureFfmpeg; } });
|
|
78
|
-
Object.defineProperty(exports, "ensureFfprobe", { enumerable: true, get: function () { return ensure_ffmpeg_1.ensureFfprobe; } });
|
|
79
76
|
var handle_javascript_exception_1 = require("./error-handling/handle-javascript-exception");
|
|
80
77
|
Object.defineProperty(exports, "ErrorWithStackFrame", { enumerable: true, get: function () { return handle_javascript_exception_1.ErrorWithStackFrame; } });
|
|
81
|
-
var get_can_extract_frames_fast_1 = require("./get-can-extract-frames-fast");
|
|
82
|
-
Object.defineProperty(exports, "getCanExtractFramesFast", { enumerable: true, get: function () { return get_can_extract_frames_fast_1.getCanExtractFramesFast; } });
|
|
83
78
|
var get_compositions_1 = require("./get-compositions");
|
|
84
79
|
Object.defineProperty(exports, "getCompositions", { enumerable: true, get: function () { return get_compositions_1.getCompositions; } });
|
|
85
80
|
var image_format_2 = require("./image-format");
|
|
86
81
|
Object.defineProperty(exports, "validateSelectedPixelFormatAndImageFormatCombination", { enumerable: true, get: function () { return image_format_2.validateSelectedPixelFormatAndImageFormatCombination; } });
|
|
87
|
-
Object.defineProperty(exports, "validImageFormats", { enumerable: true, get: function () { return image_format_2.validImageFormats; } });
|
|
88
82
|
var make_cancel_signal_1 = require("./make-cancel-signal");
|
|
89
83
|
Object.defineProperty(exports, "makeCancelSignal", { enumerable: true, get: function () { return make_cancel_signal_1.makeCancelSignal; } });
|
|
90
84
|
var open_browser_2 = require("./open-browser");
|
|
@@ -101,9 +95,7 @@ var validate_output_filename_1 = require("./validate-output-filename");
|
|
|
101
95
|
Object.defineProperty(exports, "validateOutputFilename", { enumerable: true, get: function () { return validate_output_filename_1.validateOutputFilename; } });
|
|
102
96
|
exports.RenderInternals = {
|
|
103
97
|
ensureLocalBrowser: get_local_browser_executable_1.ensureLocalBrowser,
|
|
104
|
-
ffmpegHasFeature: ffmpeg_flags_1.ffmpegHasFeature,
|
|
105
98
|
getActualConcurrency: get_concurrency_1.getActualConcurrency,
|
|
106
|
-
validateFfmpeg: validate_ffmpeg_1.validateFfmpeg,
|
|
107
99
|
serveStatic: serve_static_1.serveStatic,
|
|
108
100
|
validateEvenDimensionsWithCodec: validate_even_dimensions_with_codec_1.validateEvenDimensionsWithCodec,
|
|
109
101
|
getFileExtensionFromCodec: get_extension_from_codec_1.getFileExtensionFromCodec,
|
|
@@ -134,10 +126,9 @@ exports.RenderInternals = {
|
|
|
134
126
|
validateFrameRange: frame_range_1.validateFrameRange,
|
|
135
127
|
DEFAULT_OPENGL_RENDERER: validate_opengl_renderer_1.DEFAULT_OPENGL_RENDERER,
|
|
136
128
|
validateOpenGlRenderer: validate_opengl_renderer_1.validateOpenGlRenderer,
|
|
137
|
-
validImageFormats: image_format_1.validImageFormats,
|
|
138
129
|
validCodecs: codec_1.validCodecs,
|
|
139
130
|
DEFAULT_PIXEL_FORMAT: pixel_format_1.DEFAULT_PIXEL_FORMAT,
|
|
140
|
-
|
|
131
|
+
validateJpegQuality: jpeg_quality_1.validateJpegQuality,
|
|
141
132
|
DEFAULT_TIMEOUT: TimeoutSettings_1.DEFAULT_TIMEOUT,
|
|
142
133
|
DEFAULT_CODEC: codec_1.DEFAULT_CODEC,
|
|
143
134
|
isAudioCodec: is_audio_codec_1.isAudioCodec,
|
|
@@ -149,16 +140,23 @@ exports.RenderInternals = {
|
|
|
149
140
|
cleanDownloadMap: download_map_1.cleanDownloadMap,
|
|
150
141
|
convertToPositiveFrameIndex: convert_to_positive_frame_index_1.convertToPositiveFrameIndex,
|
|
151
142
|
findRemotionRoot: find_closest_package_json_1.findRemotionRoot,
|
|
152
|
-
getExecutableBinary: ffmpeg_flags_1.getExecutableBinary,
|
|
153
143
|
validateBitrate: validate_videobitrate_1.validateBitrate,
|
|
154
|
-
getFfmpegVersion: ffmpeg_flags_1.getFfmpegVersion,
|
|
155
144
|
combineVideos: combine_videos_1.combineVideos,
|
|
145
|
+
getMinConcurrency: validate_concurrency_1.getMinConcurrency,
|
|
146
|
+
getMaxConcurrency: validate_concurrency_1.getMaxConcurrency,
|
|
156
147
|
getDefaultAudioCodec: audio_codec_1.getDefaultAudioCodec,
|
|
157
148
|
validAudioCodecs: audio_codec_1.validAudioCodecs,
|
|
158
149
|
defaultFileExtensionMap: file_extensions_1.defaultFileExtensionMap,
|
|
159
|
-
supportedAudioCodecs:
|
|
150
|
+
supportedAudioCodecs: audio_codec_1.supportedAudioCodecs,
|
|
160
151
|
makeFileExtensionMap: get_extension_from_codec_1.makeFileExtensionMap,
|
|
161
152
|
defaultCodecsForFileExtension: get_extension_from_codec_1.defaultCodecsForFileExtension,
|
|
153
|
+
getExecutablePath: get_executable_path_1.getExecutablePath,
|
|
154
|
+
callFf: call_ffmpeg_1.callFf,
|
|
155
|
+
dynamicLibraryPathOptions: call_ffmpeg_1.dynamicLibraryPathOptions,
|
|
156
|
+
validStillImageFormats: image_format_1.validStillImageFormats,
|
|
157
|
+
validVideoImageFormats: image_format_1.validVideoImageFormats,
|
|
158
|
+
DEFAULT_STILL_IMAGE_FORMAT: image_format_1.DEFAULT_STILL_IMAGE_FORMAT,
|
|
159
|
+
DEFAULT_VIDEO_IMAGE_FORMAT: image_format_1.DEFAULT_VIDEO_IMAGE_FORMAT,
|
|
162
160
|
};
|
|
163
161
|
// Warn of potential performance issues with Apple Silicon (M1 chip under Rosetta)
|
|
164
162
|
(0, check_apple_silicon_1.checkNodeVersionAndWarnAboutRosetta)();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const validateJpegQuality: (q: number | undefined) => void;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validateJpegQuality = void 0;
|
|
4
|
+
const validateJpegQuality = (q) => {
|
|
5
|
+
if (typeof q !== 'undefined' && typeof q !== 'number') {
|
|
6
|
+
throw new Error(`JPEG Quality option must be a number or undefined. Got ${typeof q} (${JSON.stringify(q)})`);
|
|
7
|
+
}
|
|
8
|
+
if (typeof q === 'undefined') {
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
if (!Number.isFinite(q)) {
|
|
12
|
+
throw new RangeError(`JPEG Quality must be a finite number, but is ${q}`);
|
|
13
|
+
}
|
|
14
|
+
if (Number.isNaN(q)) {
|
|
15
|
+
throw new RangeError(`JPEG Quality is NaN, but must be a real number`);
|
|
16
|
+
}
|
|
17
|
+
if (q > 100 || q < 0) {
|
|
18
|
+
throw new RangeError('JPEG Quality option must be between 0 and 100.');
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
exports.validateJpegQuality = validateJpegQuality;
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import type { DownloadMap } from './assets/download-map';
|
|
2
|
-
import type { FfmpegExecutable } from './ffmpeg-executable';
|
|
3
2
|
import type { PreprocessedAudioTrack } from './preprocess-audio-track';
|
|
4
3
|
declare type Options = {
|
|
5
|
-
ffmpegExecutable: FfmpegExecutable;
|
|
6
4
|
files: PreprocessedAudioTrack[];
|
|
7
5
|
outName: string;
|
|
8
6
|
numberOfSeconds: number;
|
|
@@ -4,24 +4,21 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.mergeAudioTrack = void 0;
|
|
7
|
-
const
|
|
8
|
-
const
|
|
7
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
8
|
+
const call_ffmpeg_1 = require("./call-ffmpeg");
|
|
9
9
|
const chunk_1 = require("./chunk");
|
|
10
10
|
const create_ffmpeg_complex_filter_1 = require("./create-ffmpeg-complex-filter");
|
|
11
11
|
const create_ffmpeg_merge_filter_1 = require("./create-ffmpeg-merge-filter");
|
|
12
12
|
const create_silent_audio_1 = require("./create-silent-audio");
|
|
13
13
|
const delete_directory_1 = require("./delete-directory");
|
|
14
|
-
const ffmpeg_flags_1 = require("./ffmpeg-flags");
|
|
15
14
|
const p_limit_1 = require("./p-limit");
|
|
16
15
|
const tmp_dir_1 = require("./tmp-dir");
|
|
17
16
|
const truthy_1 = require("./truthy");
|
|
18
|
-
const mergeAudioTrackUnlimited = async ({
|
|
17
|
+
const mergeAudioTrackUnlimited = async ({ outName, files, numberOfSeconds, downloadMap, remotionRoot, }) => {
|
|
19
18
|
if (files.length === 0) {
|
|
20
19
|
await (0, create_silent_audio_1.createSilentAudio)({
|
|
21
20
|
outName,
|
|
22
|
-
ffmpegExecutable,
|
|
23
21
|
numberOfSeconds,
|
|
24
|
-
remotionRoot,
|
|
25
22
|
});
|
|
26
23
|
return;
|
|
27
24
|
}
|
|
@@ -32,9 +29,8 @@ const mergeAudioTrackUnlimited = async ({ ffmpegExecutable, outName, files, numb
|
|
|
32
29
|
const tempPath = (0, tmp_dir_1.tmpDir)('remotion-large-audio-mixing');
|
|
33
30
|
try {
|
|
34
31
|
const chunkNames = await Promise.all(chunked.map(async (chunkFiles, i) => {
|
|
35
|
-
const chunkOutname =
|
|
32
|
+
const chunkOutname = node_path_1.default.join(tempPath, `chunk-${i}.wav`);
|
|
36
33
|
await (0, exports.mergeAudioTrack)({
|
|
37
|
-
ffmpegExecutable,
|
|
38
34
|
files: chunkFiles,
|
|
39
35
|
numberOfSeconds,
|
|
40
36
|
outName: chunkOutname,
|
|
@@ -44,7 +40,6 @@ const mergeAudioTrackUnlimited = async ({ ffmpegExecutable, outName, files, numb
|
|
|
44
40
|
return chunkOutname;
|
|
45
41
|
}));
|
|
46
42
|
await (0, exports.mergeAudioTrack)({
|
|
47
|
-
ffmpegExecutable,
|
|
48
43
|
files: chunkNames.map((c) => ({
|
|
49
44
|
filter: {
|
|
50
45
|
pad_end: null,
|
|
@@ -66,8 +61,6 @@ const mergeAudioTrackUnlimited = async ({ ffmpegExecutable, outName, files, numb
|
|
|
66
61
|
const { complexFilterFlag: mergeFilter, cleanup } = await (0, create_ffmpeg_complex_filter_1.createFfmpegComplexFilter)({
|
|
67
62
|
filters: files,
|
|
68
63
|
downloadMap,
|
|
69
|
-
ffmpegExecutable,
|
|
70
|
-
remotionRoot,
|
|
71
64
|
});
|
|
72
65
|
const args = [
|
|
73
66
|
...files.map((f) => ['-i', f.outName]),
|
|
@@ -78,7 +71,7 @@ const mergeAudioTrackUnlimited = async ({ ffmpegExecutable, outName, files, numb
|
|
|
78
71
|
]
|
|
79
72
|
.filter(truthy_1.truthy)
|
|
80
73
|
.flat(2);
|
|
81
|
-
const task = (0,
|
|
74
|
+
const task = (0, call_ffmpeg_1.callFf)('ffmpeg', args);
|
|
82
75
|
await task;
|
|
83
76
|
cleanup();
|
|
84
77
|
};
|
package/dist/mime-types.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.mimeContentType = exports.mimeLookup = exports.getExt = void 0;
|
|
4
|
-
const
|
|
4
|
+
const node_path_1 = require("node:path");
|
|
5
5
|
const mime_db_1 = require("./mime-db");
|
|
6
6
|
const extensions = {};
|
|
7
7
|
const types = {};
|
|
@@ -17,7 +17,7 @@ function mimeLookup(path) {
|
|
|
17
17
|
return false;
|
|
18
18
|
}
|
|
19
19
|
// get the extension ("ext" or ".ext" or full path)
|
|
20
|
-
const ext = (0,
|
|
20
|
+
const ext = (0, node_path_1.extname)('.' + path)
|
|
21
21
|
.toLowerCase()
|
|
22
22
|
.substr(1);
|
|
23
23
|
if (!ext) {
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import type { RequestListener } from 'http';
|
|
2
|
-
import type { OffthreadVideoImageFormat } from 'remotion';
|
|
1
|
+
import type { RequestListener } from 'node:http';
|
|
3
2
|
import type { RenderMediaOnDownload } from './assets/download-and-map-assets-to-file';
|
|
4
3
|
import type { DownloadMap } from './assets/download-map';
|
|
5
|
-
import type { FfmpegExecutable } from './ffmpeg-executable';
|
|
6
4
|
export declare const extractUrlAndSourceFromUrl: (url: string) => {
|
|
7
5
|
src: string;
|
|
8
6
|
time: number;
|
|
9
|
-
|
|
7
|
+
transparent: boolean;
|
|
10
8
|
};
|
|
11
|
-
export declare const startOffthreadVideoServer: ({
|
|
12
|
-
ffmpegExecutable: FfmpegExecutable;
|
|
13
|
-
ffprobeExecutable: FfmpegExecutable;
|
|
9
|
+
export declare const startOffthreadVideoServer: ({ onDownload, onError, downloadMap, concurrency, verbose, }: {
|
|
14
10
|
onDownload: RenderMediaOnDownload;
|
|
15
11
|
onError: (err: Error) => void;
|
|
16
12
|
downloadMap: DownloadMap;
|
|
17
|
-
|
|
18
|
-
|
|
13
|
+
concurrency: number;
|
|
14
|
+
verbose: boolean;
|
|
15
|
+
}) => {
|
|
16
|
+
listener: RequestListener;
|
|
17
|
+
close: () => Promise<void>;
|
|
18
|
+
};
|