@remotion/renderer 3.1.5 → 3.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/convert-assets-to-file-urls.d.ts +3 -2
- package/dist/assets/convert-assets-to-file-urls.js +2 -2
- package/dist/assets/download-and-map-assets-to-file.d.ts +6 -5
- package/dist/assets/download-and-map-assets-to-file.js +47 -48
- package/dist/assets/download-map.d.ts +64 -0
- package/dist/assets/download-map.js +73 -0
- package/dist/assets/get-audio-channels.d.ts +3 -7
- package/dist/assets/get-audio-channels.js +6 -7
- package/dist/assets/get-video-stream-duration.d.ts +3 -0
- package/dist/assets/get-video-stream-duration.js +35 -0
- package/dist/browser/TimeoutSettings.d.ts +1 -0
- package/dist/browser/TimeoutSettings.js +4 -4
- package/dist/browser-executable.d.ts +1 -0
- package/dist/{assets/cleanup-assets.js → browser-executable.js} +0 -0
- package/dist/browser.d.ts +2 -0
- package/dist/browser.js +4 -0
- package/dist/can-use-parallel-encoding.d.ts +1 -1
- package/dist/can-use-parallel-encoding.js +2 -2
- package/dist/codec-supports-media.d.ts +1 -1
- package/dist/codec.d.ts +4 -0
- package/dist/codec.js +16 -0
- package/dist/combine-videos.d.ts +1 -1
- package/dist/combine-videos.js +7 -6
- package/dist/compress-assets.d.ts +7 -0
- package/dist/compress-assets.js +25 -0
- package/dist/convert-to-pcm.d.ts +1 -1
- package/dist/create-ffmpeg-complex-filter.d.ts +6 -2
- package/dist/create-ffmpeg-complex-filter.js +2 -11
- package/dist/create-ffmpeg-merge-filter.js +3 -3
- package/dist/create-silent-audio.d.ts +1 -1
- package/dist/crf.d.ts +5 -0
- package/dist/crf.js +64 -0
- package/dist/ensure-presentation-timestamp.d.ts +2 -1
- package/dist/ensure-presentation-timestamp.js +9 -7
- package/dist/extract-frame-from-video.d.ts +4 -2
- package/dist/extract-frame-from-video.js +22 -17
- package/dist/ffmpeg-executable.d.ts +1 -0
- package/dist/ffmpeg-executable.js +2 -0
- package/dist/ffmpeg-filter-file.d.ts +2 -1
- package/dist/ffmpeg-filter-file.js +4 -6
- package/dist/frame-range.d.ts +2 -0
- package/dist/frame-range.js +49 -0
- package/dist/get-audio-codec-name.d.ts +1 -1
- package/dist/get-audio-codec-name.js +2 -2
- package/dist/get-browser-instance.d.ts +1 -1
- package/dist/get-browser-instance.js +2 -2
- package/dist/get-codec-name.d.ts +1 -1
- package/dist/get-codec-name.js +2 -2
- package/dist/get-compositions.d.ts +8 -1
- package/dist/get-compositions.js +10 -6
- package/dist/get-extension-from-codec.d.ts +2 -2
- package/dist/get-extension-of-filename.d.ts +1 -1
- package/dist/get-extension-of-filename.js +3 -0
- package/dist/get-frame-to-render.d.ts +1 -1
- package/dist/get-local-browser-executable.d.ts +2 -1
- package/dist/get-prores-profile-name.d.ts +2 -1
- package/dist/get-video-info.d.ts +3 -8
- package/dist/get-video-info.js +7 -8
- package/dist/guess-extension-for-media.d.ts +1 -1
- package/dist/image-format.d.ts +6 -1
- package/dist/image-format.js +25 -1
- package/dist/index.d.ts +49 -10
- package/dist/index.js +71 -1
- package/dist/is-audio-codec.d.ts +2 -0
- package/dist/is-audio-codec.js +7 -0
- package/dist/is-beyond-last-frame.d.ts +3 -2
- package/dist/is-beyond-last-frame.js +5 -5
- package/dist/last-frame-from-video-cache.d.ts +5 -4
- package/dist/last-frame-from-video-cache.js +17 -17
- package/dist/log-level.d.ts +4 -0
- package/dist/log-level.js +15 -0
- package/dist/merge-audio-track.d.ts +3 -1
- package/dist/merge-audio-track.js +6 -4
- package/dist/offthread-video-server.d.ts +5 -3
- package/dist/offthread-video-server.js +3 -2
- package/dist/open-browser.d.ts +1 -1
- package/dist/open-browser.js +4 -4
- package/dist/overwrite.d.ts +1 -0
- package/dist/overwrite.js +4 -0
- package/dist/perf.d.ts +5 -0
- package/dist/perf.js +35 -0
- package/dist/pixel-format.d.ts +5 -0
- package/dist/pixel-format.js +26 -0
- package/dist/prepare-server.d.ts +4 -3
- package/dist/prepare-server.js +3 -3
- package/dist/preprocess-audio-track.d.ts +3 -1
- package/dist/preprocess-audio-track.js +3 -3
- package/dist/prespawn-ffmpeg.d.ts +5 -1
- package/dist/prespawn-ffmpeg.js +9 -6
- package/dist/prores-profile.d.ts +5 -0
- package/dist/prores-profile.js +23 -0
- package/dist/provide-screenshot.d.ts +1 -1
- package/dist/quality.d.ts +1 -0
- package/dist/quality.js +21 -0
- package/dist/render-frames.d.ts +10 -1
- package/dist/render-frames.js +22 -16
- package/dist/render-media.d.ts +13 -2
- package/dist/render-media.js +24 -13
- package/dist/render-still.d.ts +9 -1
- package/dist/render-still.js +21 -11
- package/dist/screenshot-dom-element.d.ts +1 -1
- package/dist/screenshot-task.d.ts +1 -1
- package/dist/screenshot-task.js +7 -7
- package/dist/serve-static.d.ts +3 -2
- package/dist/serve-static.js +3 -4
- package/dist/set-props-and-env.js +2 -2
- package/dist/stitch-frames-to-video.d.ts +6 -1
- package/dist/stitch-frames-to-video.js +30 -43
- package/dist/stringify-ffmpeg-filter.js +2 -2
- package/dist/symbolicate-stacktrace.js +3 -3
- package/dist/truthy.d.ts +3 -0
- package/dist/truthy.js +7 -0
- package/dist/types.d.ts +1 -1
- package/dist/validate-even-dimensions-with-codec.d.ts +1 -1
- package/dist/validate-even-dimensions-with-codec.js +2 -2
- package/dist/validate-every-nth-frame.d.ts +1 -0
- package/dist/validate-every-nth-frame.js +21 -0
- package/dist/validate-ffmpeg.js +2 -3
- package/dist/validate-frame.d.ts +1 -0
- package/dist/validate-frame.js +24 -0
- package/dist/validate-opengl-renderer.d.ts +5 -0
- package/dist/validate-opengl-renderer.js +15 -0
- package/dist/validate-output-filename.d.ts +1 -1
- package/package.json +3 -3
- package/dist/assets/calculate-asset-positions.d.ts.map +0 -1
- package/dist/assets/calculate-asset-positions.js.map +0 -1
- package/dist/assets/calculate-atempo.d.ts.map +0 -1
- package/dist/assets/calculate-atempo.js.map +0 -1
- package/dist/assets/cleanup-assets.d.ts +0 -2
- package/dist/assets/convert-assets-to-file-urls.d.ts.map +0 -1
- package/dist/assets/convert-assets-to-file-urls.js.map +0 -1
- package/dist/assets/download-and-map-assets-to-file.d.ts.map +0 -1
- package/dist/assets/download-and-map-assets-to-file.js.map +0 -1
- package/dist/assets/download-file.d.ts.map +0 -1
- package/dist/assets/download-file.js.map +0 -1
- package/dist/assets/ffmpeg-volume-expression.d.ts.map +0 -1
- package/dist/assets/ffmpeg-volume-expression.js.map +0 -1
- package/dist/assets/flatten-volume-array.d.ts.map +0 -1
- package/dist/assets/flatten-volume-array.js.map +0 -1
- package/dist/assets/get-audio-channels.d.ts.map +0 -1
- package/dist/assets/get-audio-channels.js.map +0 -1
- package/dist/assets/read-file.d.ts.map +0 -1
- package/dist/assets/read-file.js.map +0 -1
- package/dist/assets/round-volume-to-avoid-stack-overflow.d.ts.map +0 -1
- package/dist/assets/round-volume-to-avoid-stack-overflow.js.map +0 -1
- package/dist/assets/sanitize-filename.d.ts.map +0 -1
- package/dist/assets/sanitize-filename.js.map +0 -1
- package/dist/assets/sanitize-filepath.d.ts.map +0 -1
- package/dist/assets/sanitize-filepath.js.map +0 -1
- package/dist/assets/truncate-utf8-bytes.d.ts.map +0 -1
- package/dist/assets/truncate-utf8-bytes.js.map +0 -1
- package/dist/assets/types.d.ts.map +0 -1
- package/dist/assets/types.js.map +0 -1
- package/dist/browser/Accessibility.d.ts +0 -175
- package/dist/browser/Accessibility.js +0 -423
- package/dist/browser/AriaQueryHandler.d.ts +0 -20
- package/dist/browser/AriaQueryHandler.js +0 -108
- package/dist/browser/ConnectionTransport.d.ts +0 -21
- package/dist/browser/ConnectionTransport.js +0 -17
- package/dist/browser/Coverage.d.ts +0 -180
- package/dist/browser/Coverage.js +0 -371
- package/dist/browser/Debug.d.ts +0 -19
- package/dist/browser/Debug.js +0 -42
- package/dist/browser/DeviceDescriptors.d.ts +0 -40
- package/dist/browser/DeviceDescriptors.js +0 -1407
- package/dist/browser/EmulationManager.d.ts +0 -7
- package/dist/browser/EmulationManager.js +0 -40
- package/dist/browser/FileChooser.d.ts +0 -56
- package/dist/browser/FileChooser.js +0 -86
- package/dist/browser/Input.d.ts +0 -355
- package/dist/browser/Input.js +0 -592
- package/dist/browser/NetworkConditions.d.ts +0 -26
- package/dist/browser/NetworkConditions.js +0 -33
- package/dist/browser/PDFOptions.d.ts +0 -165
- package/dist/browser/PDFOptions.js +0 -34
- package/dist/browser/PipeTransport.d.ts +0 -10
- package/dist/browser/PipeTransport.js +0 -86
- package/dist/browser/Puppeteer.d.ts +0 -35
- package/dist/browser/Puppeteer.js +0 -17
- package/dist/browser/QueryHandler.d.ts +0 -64
- package/dist/browser/QueryHandler.js +0 -183
- package/dist/browser/SecurityDetails.d.ts +0 -55
- package/dist/browser/SecurityDetails.js +0 -95
- package/dist/browser/Tracing.d.ts +0 -45
- package/dist/browser/Tracing.js +0 -136
- package/dist/browser/USKeyboardLayout.d.ts +0 -39
- package/dist/browser/USKeyboardLayout.js +0 -406
- package/dist/browser/WebWorker.d.ts +0 -96
- package/dist/browser/WebWorker.js +0 -122
- package/dist/browser/compat.d.ts +0 -2
- package/dist/browser/compat.js +0 -17
- package/dist/browser/dialog.d.ts +0 -70
- package/dist/browser/dialog.js +0 -114
- package/dist/browser/environment.d.ts +0 -16
- package/dist/browser/environment.js +0 -19
- package/dist/browser/fetch.d.ts +0 -16
- package/dist/browser/fetch.js +0 -46
- package/dist/browser/find-up.d.ts +0 -4
- package/dist/browser/find-up.js +0 -85
- package/dist/browser/page.d.ts +0 -74
- package/dist/browser/page.js +0 -283
- package/dist/browser/pkg-dir.d.ts +0 -3
- package/dist/browser/pkg-dir.js +0 -13
- package/dist/browser-log.d.ts.map +0 -1
- package/dist/browser-log.js.map +0 -1
- package/dist/calculate-ffmpeg-filters.d.ts.map +0 -1
- package/dist/calculate-ffmpeg-filters.js.map +0 -1
- package/dist/can-use-parallel-encoding.d.ts.map +0 -1
- package/dist/can-use-parallel-encoding.js.map +0 -1
- package/dist/chunk.d.ts.map +0 -1
- package/dist/chunk.js.map +0 -1
- package/dist/combine-videos.d.ts.map +0 -1
- package/dist/combine-videos.js.map +0 -1
- package/dist/convert-to-pcm.d.ts.map +0 -1
- package/dist/convert-to-pcm.js.map +0 -1
- package/dist/create-ffmpeg-complex-filter.d.ts.map +0 -1
- package/dist/create-ffmpeg-complex-filter.js.map +0 -1
- package/dist/create-ffmpeg-merge-filter.d.ts.map +0 -1
- package/dist/create-ffmpeg-merge-filter.js.map +0 -1
- package/dist/create-silent-audio.d.ts.map +0 -1
- package/dist/create-silent-audio.js.map +0 -1
- package/dist/cycle-browser-tabs.d.ts.map +0 -1
- package/dist/cycle-browser-tabs.js.map +0 -1
- package/dist/delay-render-embedded-stack.d.ts.map +0 -1
- package/dist/delay-render-embedded-stack.js.map +0 -1
- package/dist/delete-directory.d.ts.map +0 -1
- package/dist/delete-directory.js.map +0 -1
- package/dist/ensure-frames-in-order.d.ts.map +0 -1
- package/dist/ensure-frames-in-order.js.map +0 -1
- package/dist/ensure-output-directory.d.ts.map +0 -1
- package/dist/ensure-output-directory.js.map +0 -1
- package/dist/error-handling/handle-javascript-exception.d.ts.map +0 -1
- package/dist/error-handling/handle-javascript-exception.js.map +0 -1
- package/dist/error-handling/symbolicate-error.d.ts.map +0 -1
- package/dist/error-handling/symbolicate-error.js.map +0 -1
- package/dist/error-handling/symbolicateable-error.d.ts.map +0 -1
- package/dist/error-handling/symbolicateable-error.js.map +0 -1
- package/dist/ffmpeg-filter-file.d.ts.map +0 -1
- package/dist/ffmpeg-filter-file.js.map +0 -1
- package/dist/ffmpeg-flags.d.ts.map +0 -1
- package/dist/ffmpeg-flags.js.map +0 -1
- package/dist/get-audio-codec-name.d.ts.map +0 -1
- package/dist/get-audio-codec-name.js.map +0 -1
- package/dist/get-browser-instance.d.ts.map +0 -1
- package/dist/get-browser-instance.js.map +0 -1
- package/dist/get-codec-name.d.ts.map +0 -1
- package/dist/get-codec-name.js.map +0 -1
- package/dist/get-compositions.d.ts.map +0 -1
- package/dist/get-compositions.js.map +0 -1
- package/dist/get-concurrency.d.ts.map +0 -1
- package/dist/get-concurrency.js.map +0 -1
- package/dist/get-duration-from-frame-range.d.ts.map +0 -1
- package/dist/get-duration-from-frame-range.js.map +0 -1
- package/dist/get-duration-of-asset.d.ts +0 -7
- package/dist/get-duration-of-asset.js +0 -36
- package/dist/get-extension-from-codec.d.ts.map +0 -1
- package/dist/get-extension-from-codec.js.map +0 -1
- package/dist/get-format-for-codec.d.ts +0 -2
- package/dist/get-format-for-codec.js +0 -34
- package/dist/get-frame-to-render.d.ts.map +0 -1
- package/dist/get-frame-to-render.js.map +0 -1
- package/dist/get-local-browser-executable.d.ts.map +0 -1
- package/dist/get-local-browser-executable.js.map +0 -1
- package/dist/get-port.d.ts.map +0 -1
- package/dist/get-port.js.map +0 -1
- package/dist/get-prores-profile-name.d.ts.map +0 -1
- package/dist/get-prores-profile-name.js.map +0 -1
- package/dist/image-format.d.ts.map +0 -1
- package/dist/image-format.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/is-serve-url.d.ts.map +0 -1
- package/dist/is-serve-url.js.map +0 -1
- package/dist/is-vp9-video.d.ts +0 -3
- package/dist/is-vp9-video.js +0 -24
- package/dist/legacy-webpack-config.d.ts.map +0 -1
- package/dist/legacy-webpack-config.js.map +0 -1
- package/dist/make-assets-download-dir.d.ts.map +0 -1
- package/dist/make-assets-download-dir.js.map +0 -1
- package/dist/merge-audio-track.d.ts.map +0 -1
- package/dist/merge-audio-track.js.map +0 -1
- package/dist/normalize-serve-url.d.ts.map +0 -1
- package/dist/normalize-serve-url.js.map +0 -1
- package/dist/open-browser.d.ts.map +0 -1
- package/dist/open-browser.js.map +0 -1
- package/dist/p-limit.d.ts.map +0 -1
- package/dist/p-limit.js.map +0 -1
- package/dist/parse-browser-error-stack.d.ts.map +0 -1
- package/dist/parse-browser-error-stack.js.map +0 -1
- package/dist/parse-ffmpeg-progress.d.ts.map +0 -1
- package/dist/parse-ffmpeg-progress.js.map +0 -1
- package/dist/pool.d.ts.map +0 -1
- package/dist/pool.js.map +0 -1
- package/dist/prepare-server.d.ts.map +0 -1
- package/dist/prepare-server.js.map +0 -1
- package/dist/preprocess-audio-track.d.ts.map +0 -1
- package/dist/preprocess-audio-track.js.map +0 -1
- package/dist/prespawn-ffmpeg.d.ts.map +0 -1
- package/dist/prespawn-ffmpeg.js.map +0 -1
- package/dist/provide-screenshot.d.ts.map +0 -1
- package/dist/provide-screenshot.js.map +0 -1
- package/dist/puppeteer-evaluate.d.ts.map +0 -1
- package/dist/puppeteer-evaluate.js.map +0 -1
- package/dist/puppeteer-screenshot.d.ts.map +0 -1
- package/dist/puppeteer-screenshot.js.map +0 -1
- package/dist/render-frames.d.ts.map +0 -1
- package/dist/render-frames.js.map +0 -1
- package/dist/render-media.d.ts.map +0 -1
- package/dist/render-media.js.map +0 -1
- package/dist/render-still.d.ts.map +0 -1
- package/dist/render-still.js.map +0 -1
- package/dist/resolve-asset-src.d.ts.map +0 -1
- package/dist/resolve-asset-src.js.map +0 -1
- package/dist/sample-rate.d.ts.map +0 -1
- package/dist/sample-rate.js.map +0 -1
- package/dist/screenshot-dom-element.d.ts.map +0 -1
- package/dist/screenshot-dom-element.js.map +0 -1
- package/dist/screenshot-task.d.ts.map +0 -1
- package/dist/screenshot-task.js.map +0 -1
- package/dist/seek-to-frame.d.ts.map +0 -1
- package/dist/seek-to-frame.js.map +0 -1
- package/dist/serve-handler/glob-slash.d.ts +0 -1
- package/dist/serve-handler/glob-slash.js +0 -12
- package/dist/serve-static.d.ts.map +0 -1
- package/dist/serve-static.js.map +0 -1
- package/dist/set-props-and-env.d.ts.map +0 -1
- package/dist/set-props-and-env.js.map +0 -1
- package/dist/stitch-frames-to-video.d.ts.map +0 -1
- package/dist/stitch-frames-to-video.js.map +0 -1
- package/dist/stringify-ffmpeg-filter.d.ts.map +0 -1
- package/dist/stringify-ffmpeg-filter.js.map +0 -1
- package/dist/symbolicate-stacktrace.d.ts.map +0 -1
- package/dist/symbolicate-stacktrace.js.map +0 -1
- package/dist/tmp-dir.d.ts.map +0 -1
- package/dist/tmp-dir.js.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/validate-even-dimensions-with-codec.d.ts.map +0 -1
- package/dist/validate-even-dimensions-with-codec.js.map +0 -1
- package/dist/validate-ffmpeg.d.ts.map +0 -1
- package/dist/validate-ffmpeg.js.map +0 -1
- package/dist/validate-fps-for-gif.d.ts +0 -2
- package/dist/validate-fps-for-gif.js +0 -9
- package/dist/validate-puppeteer-timeout.d.ts.map +0 -1
- package/dist/validate-puppeteer-timeout.js.map +0 -1
- package/dist/validate-scale.d.ts.map +0 -1
- package/dist/validate-scale.js.map +0 -1
package/dist/get-video-info.d.ts
CHANGED
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
needsResize: [number, number] | null;
|
|
5
|
-
};
|
|
6
|
-
export declare type SpecialVCodecForTransparency = 'vp9' | 'vp8' | 'none';
|
|
7
|
-
export declare const getVideoInfo: (src: string, ffprobeExecutable: FfmpegExecutable) => Promise<Result>;
|
|
8
|
-
export {};
|
|
1
|
+
import type { DownloadMap, Vp9Result } from './assets/download-map';
|
|
2
|
+
import type { FfmpegExecutable } from './ffmpeg-executable';
|
|
3
|
+
export declare const getVideoInfo: (downloadMap: DownloadMap, src: string, ffprobeExecutable: FfmpegExecutable) => Promise<Vp9Result>;
|
package/dist/get-video-info.js
CHANGED
|
@@ -7,12 +7,11 @@ exports.getVideoInfo = void 0;
|
|
|
7
7
|
const execa_1 = __importDefault(require("execa"));
|
|
8
8
|
const calculate_sar_dar_pixels_1 = require("./calculate-sar-dar-pixels");
|
|
9
9
|
const p_limit_1 = require("./p-limit");
|
|
10
|
-
const isVp9VideoCache = {};
|
|
11
10
|
const limit = (0, p_limit_1.pLimit)(1);
|
|
12
|
-
async function getVideoInfoUnlimited(src, ffprobeExecutable) {
|
|
11
|
+
async function getVideoInfoUnlimited(downloadMap, src, ffprobeExecutable) {
|
|
13
12
|
var _a;
|
|
14
|
-
if (typeof isVp9VideoCache[src] !== 'undefined') {
|
|
15
|
-
return isVp9VideoCache[src];
|
|
13
|
+
if (typeof downloadMap.isVp9VideoCache[src] !== 'undefined') {
|
|
14
|
+
return downloadMap.isVp9VideoCache[src];
|
|
16
15
|
}
|
|
17
16
|
const task = await (0, execa_1.default)(ffprobeExecutable !== null && ffprobeExecutable !== void 0 ? ffprobeExecutable : 'ffprobe', [src]);
|
|
18
17
|
const isVp9 = task.stderr.includes('Video: vp9');
|
|
@@ -41,10 +40,10 @@ async function getVideoInfoUnlimited(src, ffprobeExecutable) {
|
|
|
41
40
|
specialVcodec: isVp9 ? 'vp9' : isVp8 ? 'vp8' : 'none',
|
|
42
41
|
needsResize,
|
|
43
42
|
};
|
|
44
|
-
isVp9VideoCache[src] = result;
|
|
45
|
-
return isVp9VideoCache[src];
|
|
43
|
+
downloadMap.isVp9VideoCache[src] = result;
|
|
44
|
+
return downloadMap.isVp9VideoCache[src];
|
|
46
45
|
}
|
|
47
|
-
const getVideoInfo = (src, ffprobeExecutable) => {
|
|
48
|
-
return limit(() => getVideoInfoUnlimited(src, ffprobeExecutable));
|
|
46
|
+
const getVideoInfo = (downloadMap, src, ffprobeExecutable) => {
|
|
47
|
+
return limit(() => getVideoInfoUnlimited(downloadMap, src, ffprobeExecutable));
|
|
49
48
|
};
|
|
50
49
|
exports.getVideoInfo = getVideoInfo;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const guessExtensionForVideo: (src: string) => Promise<"mp3" | "wav" | "
|
|
1
|
+
export declare const guessExtensionForVideo: (src: string) => Promise<"mp3" | "wav" | "mp4" | "webm">;
|
package/dist/image-format.d.ts
CHANGED
|
@@ -1,2 +1,7 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { PixelFormat } from './pixel-format';
|
|
2
|
+
export declare const validImageFormats: readonly ["png", "jpeg", "none"];
|
|
3
|
+
export declare type ImageFormat = typeof validImageFormats[number];
|
|
4
|
+
export declare type StillImageFormat = 'png' | 'jpeg';
|
|
2
5
|
export declare const DEFAULT_IMAGE_FORMAT: ImageFormat;
|
|
6
|
+
export declare const validateSelectedPixelFormatAndImageFormatCombination: (pixelFormat: PixelFormat, imageFormat: ImageFormat) => 'none' | 'valid';
|
|
7
|
+
export declare const validateNonNullImageFormat: (imageFormat: ImageFormat) => void;
|
package/dist/image-format.js
CHANGED
|
@@ -2,6 +2,30 @@
|
|
|
2
2
|
// Keeping the default image format PNG if you don't pass a
|
|
3
3
|
// value to the renderer for backwards compatibility.
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
-
exports.DEFAULT_IMAGE_FORMAT = void 0;
|
|
5
|
+
exports.validateNonNullImageFormat = exports.validateSelectedPixelFormatAndImageFormatCombination = exports.DEFAULT_IMAGE_FORMAT = exports.validImageFormats = void 0;
|
|
6
|
+
exports.validImageFormats = ['png', 'jpeg', 'none'];
|
|
6
7
|
// However, the CLI will override it and use JPEG if suitable.
|
|
7
8
|
exports.DEFAULT_IMAGE_FORMAT = 'png';
|
|
9
|
+
// By returning a value, we improve testability as we can specifically test certain branches
|
|
10
|
+
const validateSelectedPixelFormatAndImageFormatCombination = (pixelFormat, imageFormat) => {
|
|
11
|
+
if (imageFormat === 'none') {
|
|
12
|
+
return 'none';
|
|
13
|
+
}
|
|
14
|
+
if (!exports.validImageFormats.includes(imageFormat)) {
|
|
15
|
+
throw new TypeError(`Value ${imageFormat} is not valid as an image format.`);
|
|
16
|
+
}
|
|
17
|
+
if (pixelFormat !== 'yuva420p' && pixelFormat !== 'yuva444p10le') {
|
|
18
|
+
return 'valid';
|
|
19
|
+
}
|
|
20
|
+
if (imageFormat !== 'png') {
|
|
21
|
+
throw new TypeError(`Pixel format was set to '${pixelFormat}' but the image format is not PNG. To render transparent videos, you need to set PNG as the image format.`);
|
|
22
|
+
}
|
|
23
|
+
return 'valid';
|
|
24
|
+
};
|
|
25
|
+
exports.validateSelectedPixelFormatAndImageFormatCombination = validateSelectedPixelFormatAndImageFormatCombination;
|
|
26
|
+
const validateNonNullImageFormat = (imageFormat) => {
|
|
27
|
+
if (imageFormat !== 'jpeg' && imageFormat !== 'png') {
|
|
28
|
+
throw new TypeError('Image format should be either "png" or "jpeg"');
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
exports.validateNonNullImageFormat = validateNonNullImageFormat;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,24 +1,36 @@
|
|
|
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';
|
|
4
|
+
import * as perf from './perf';
|
|
5
5
|
export type { RenderMediaOnDownload } from './assets/download-and-map-assets-to-file';
|
|
6
|
+
export type { DownloadMap } from './assets/download-map';
|
|
7
|
+
export { Browser } from './browser';
|
|
8
|
+
export { BrowserExecutable } from './browser-executable';
|
|
6
9
|
export { BrowserLog } from './browser-log';
|
|
10
|
+
export { Codec, CodecOrUndefined } from './codec';
|
|
7
11
|
export { combineVideos } from './combine-videos';
|
|
12
|
+
export { Crf } from './crf';
|
|
8
13
|
export { ErrorWithStackFrame } from './error-handling/handle-javascript-exception';
|
|
14
|
+
export { FfmpegExecutable } from './ffmpeg-executable';
|
|
9
15
|
export { FfmpegVersion } from './ffmpeg-flags';
|
|
16
|
+
export { FrameRange } from './frame-range';
|
|
10
17
|
export { getCompositions } from './get-compositions';
|
|
18
|
+
export { ImageFormat, StillImageFormat, validateSelectedPixelFormatAndImageFormatCombination, validImageFormats, } from './image-format';
|
|
19
|
+
export type { LogLevel } from './log-level';
|
|
11
20
|
export { CancelSignal, makeCancelSignal } from './make-cancel-signal';
|
|
12
21
|
export { openBrowser } from './open-browser';
|
|
13
22
|
export type { ChromiumOptions } from './open-browser';
|
|
23
|
+
export { PixelFormat } from './pixel-format';
|
|
24
|
+
export { ProResProfile } from './prores-profile';
|
|
14
25
|
export { renderFrames } from './render-frames';
|
|
15
26
|
export { renderMedia, RenderMediaOnProgress, RenderMediaOptions, StitchingState, } from './render-media';
|
|
16
27
|
export { renderStill } from './render-still';
|
|
17
28
|
export { StitcherOptions, stitchFramesToVideo } from './stitch-frames-to-video';
|
|
18
29
|
export { SymbolicatedStackFrame } from './symbolicate-stacktrace';
|
|
19
30
|
export { OnStartData, RenderFramesOutput } from './types';
|
|
31
|
+
export { OpenGlRenderer } from './validate-opengl-renderer';
|
|
20
32
|
export declare const RenderInternals: {
|
|
21
|
-
ensureLocalBrowser: (browser: import("
|
|
33
|
+
ensureLocalBrowser: (browser: import("./browser").Browser, preferredBrowserExecutable: import("./browser-executable").BrowserExecutable) => Promise<void>;
|
|
22
34
|
ffmpegHasFeature: ({ ffmpegExecutable, feature, isLambda, }: {
|
|
23
35
|
ffmpegExecutable: string | null;
|
|
24
36
|
feature: "enable-gpl" | "enable-libx265" | "enable-libvpx";
|
|
@@ -35,11 +47,11 @@ export declare const RenderInternals: {
|
|
|
35
47
|
}) => Promise<string>;
|
|
36
48
|
serveStatic: (path: string | null, options: {
|
|
37
49
|
port: number | null;
|
|
38
|
-
ffmpegExecutable: import("
|
|
39
|
-
ffprobeExecutable: import("
|
|
40
|
-
downloadDir: string;
|
|
50
|
+
ffmpegExecutable: import("./ffmpeg-executable").FfmpegExecutable;
|
|
51
|
+
ffprobeExecutable: import("./ffmpeg-executable").FfmpegExecutable;
|
|
41
52
|
onDownload: import("./assets/download-and-map-assets-to-file").RenderMediaOnDownload;
|
|
42
53
|
onError: (err: Error) => void;
|
|
54
|
+
downloadMap: import("./assets/download-map").DownloadMap;
|
|
43
55
|
}) => Promise<{
|
|
44
56
|
port: number;
|
|
45
57
|
close: () => Promise<void>;
|
|
@@ -48,19 +60,19 @@ export declare const RenderInternals: {
|
|
|
48
60
|
width: number;
|
|
49
61
|
height: number;
|
|
50
62
|
scale: number;
|
|
51
|
-
codec: "
|
|
63
|
+
codec: "vp9" | "vp8" | "h264" | "h265" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif";
|
|
52
64
|
}) => void;
|
|
53
65
|
normalizeServeUrl: (unnormalized: string) => string;
|
|
54
66
|
spawnFfmpeg: (options: import("./stitch-frames-to-video").StitcherOptions) => Promise<{
|
|
55
67
|
task: Promise<Buffer | null>;
|
|
56
68
|
getLogs: () => string;
|
|
57
69
|
}>;
|
|
58
|
-
getFileExtensionFromCodec: (codec: "
|
|
70
|
+
getFileExtensionFromCodec: (codec: "vp9" | "vp8" | "h264" | "h265" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif", type: "chunk" | "final") => "mp3" | "aac" | "wav" | "gif" | "mp4" | "mkv" | "mov" | "webm";
|
|
59
71
|
tmpDir: (str: string) => string;
|
|
60
72
|
deleteDirectory: (directory: string) => Promise<void>;
|
|
61
73
|
isServeUrl: (potentialUrl: string) => boolean;
|
|
62
74
|
ensureOutputDirectory: (outputLocation: string) => void;
|
|
63
|
-
getRealFrameRange: (durationInFrames: number, frameRange: import("
|
|
75
|
+
getRealFrameRange: (durationInFrames: number, frameRange: import("./frame-range").FrameRange | null) => [number, number];
|
|
64
76
|
validatePuppeteerTimeout: (timeoutInMilliseconds: unknown) => void;
|
|
65
77
|
downloadFile: ({ onProgress, url, to: toFn, }: {
|
|
66
78
|
url: string;
|
|
@@ -80,7 +92,7 @@ export declare const RenderInternals: {
|
|
|
80
92
|
symbolicateError: (symbolicateableError: SymbolicateableError) => Promise<import("./error-handling/handle-javascript-exception").ErrorWithStackFrame>;
|
|
81
93
|
SymbolicateableError: typeof SymbolicateableError;
|
|
82
94
|
getFramesToRender: (frameRange: [number, number], everyNthFrame: number) => number[];
|
|
83
|
-
getExtensionOfFilename: (filename: string) => string | null;
|
|
95
|
+
getExtensionOfFilename: (filename: string | null) => string | null;
|
|
84
96
|
getDesiredPort: (desiredPort: number | undefined, from: number, to: number) => Promise<number>;
|
|
85
97
|
isPathInside: (thePath: string, potentialParent: string) => boolean;
|
|
86
98
|
execa: {
|
|
@@ -103,8 +115,35 @@ export declare const RenderInternals: {
|
|
|
103
115
|
};
|
|
104
116
|
registerErrorSymbolicationLock: () => number;
|
|
105
117
|
unlockErrorSymbolicationLock: (id: number) => void;
|
|
106
|
-
canUseParallelEncoding: (codec: "
|
|
118
|
+
canUseParallelEncoding: (codec: "vp9" | "vp8" | "h264" | "h265" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif") => boolean;
|
|
107
119
|
mimeContentType: typeof mimeContentType;
|
|
108
120
|
mimeLookup: typeof mimeLookup;
|
|
109
121
|
validateConcurrency: (value: unknown, setting: string) => void;
|
|
122
|
+
validPixelFormats: readonly ["yuv420p", "yuva420p", "yuv422p", "yuv444p", "yuv420p10le", "yuv422p10le", "yuv444p10le", "yuva444p10le"];
|
|
123
|
+
DEFAULT_BROWSER: import("./browser").Browser;
|
|
124
|
+
validateFrameRange: (frameRange: import("./frame-range").FrameRange | null) => void;
|
|
125
|
+
DEFAULT_OPENGL_RENDERER: "swangle" | "angle" | "egl" | "swiftshader" | null;
|
|
126
|
+
validateOpenGlRenderer: (option: "swangle" | "angle" | "egl" | "swiftshader" | null) => "swangle" | "angle" | "egl" | "swiftshader" | null;
|
|
127
|
+
getDefaultCrfForCodec: (codec: "vp9" | "vp8" | "h264" | "h265" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif") => number;
|
|
128
|
+
validateSelectedCrfAndCodecCombination: (crf: unknown, codec: "vp9" | "vp8" | "h264" | "h265" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif") => void;
|
|
129
|
+
validImageFormats: readonly ["png", "jpeg", "none"];
|
|
130
|
+
validCodecs: readonly ["h264", "h265", "vp8", "vp9", "mp3", "aac", "wav", "prores", "h264-mkv", "gif"];
|
|
131
|
+
DEFAULT_OVERWRITE: boolean;
|
|
132
|
+
DEFAULT_PIXEL_FORMAT: "yuv420p" | "yuva420p" | "yuv422p" | "yuv444p" | "yuv420p10le" | "yuv422p10le" | "yuv444p10le" | "yuva444p10le";
|
|
133
|
+
validateQuality: (q: number | undefined) => void;
|
|
134
|
+
validateFrame: (frame: number, durationInFrames: number) => void;
|
|
135
|
+
DEFAULT_TIMEOUT: number;
|
|
136
|
+
getValidCrfRanges: (codec: "vp9" | "vp8" | "h264" | "h265" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif") => [number, number];
|
|
137
|
+
validateSelectedPixelFormatAndCodecCombination: (pixelFormat: "yuv420p" | "yuva420p" | "yuv422p" | "yuv444p" | "yuv420p10le" | "yuv422p10le" | "yuv444p10le" | "yuva444p10le", codec: "vp9" | "vp8" | "h264" | "h265" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif") => void;
|
|
138
|
+
validateSelectedCodecAndProResCombination: (actualCodec: "vp9" | "vp8" | "h264" | "h265" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif", actualProResProfile: "4444-xq" | "4444" | "hq" | "standard" | "light" | "proxy" | undefined) => void;
|
|
139
|
+
validateSelectedPixelFormatAndImageFormatCombination: (pixelFormat: "yuv420p" | "yuva420p" | "yuv422p" | "yuv444p" | "yuv420p10le" | "yuv422p10le" | "yuv444p10le" | "yuva444p10le", imageFormat: "none" | "png" | "jpeg") => "none" | "valid";
|
|
140
|
+
DEFAULT_CODEC: "vp9" | "vp8" | "h264" | "h265" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif";
|
|
141
|
+
isAudioCodec: (codec: "vp9" | "vp8" | "h264" | "h265" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif" | undefined) => boolean;
|
|
142
|
+
logLevels: readonly ["verbose", "info", "warn", "error"];
|
|
143
|
+
isEqualOrBelowLogLevel: (currentLevel: "verbose" | "info" | "warn" | "error", level: "verbose" | "info" | "warn" | "error") => boolean;
|
|
144
|
+
isValidLogLevel: (level: string) => boolean;
|
|
145
|
+
validateEveryNthFrame: (everyNthFrame: unknown) => void;
|
|
146
|
+
perf: typeof perf;
|
|
147
|
+
makeDownloadMap: () => import("./assets/download-map").DownloadMap;
|
|
148
|
+
cleanDownloadMap: (downloadMap: import("./assets/download-map").DownloadMap) => Promise<void>;
|
|
110
149
|
};
|
package/dist/index.js
CHANGED
|
@@ -1,17 +1,46 @@
|
|
|
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
|
+
};
|
|
2
25
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
27
|
};
|
|
5
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.RenderInternals = exports.stitchFramesToVideo = exports.renderStill = exports.renderMedia = exports.renderFrames = exports.openBrowser = exports.makeCancelSignal = exports.getCompositions = exports.ErrorWithStackFrame = exports.combineVideos = void 0;
|
|
29
|
+
exports.RenderInternals = exports.stitchFramesToVideo = exports.renderStill = exports.renderMedia = exports.renderFrames = exports.openBrowser = exports.makeCancelSignal = exports.validImageFormats = exports.validateSelectedPixelFormatAndImageFormatCombination = exports.getCompositions = exports.ErrorWithStackFrame = exports.combineVideos = void 0;
|
|
7
30
|
const execa_1 = __importDefault(require("execa"));
|
|
8
31
|
const download_file_1 = require("./assets/download-file");
|
|
32
|
+
const download_map_1 = require("./assets/download-map");
|
|
33
|
+
const browser_1 = require("./browser");
|
|
34
|
+
const TimeoutSettings_1 = require("./browser/TimeoutSettings");
|
|
9
35
|
const can_use_parallel_encoding_1 = require("./can-use-parallel-encoding");
|
|
36
|
+
const codec_1 = require("./codec");
|
|
37
|
+
const crf_1 = require("./crf");
|
|
10
38
|
const delete_directory_1 = require("./delete-directory");
|
|
11
39
|
const ensure_output_directory_1 = require("./ensure-output-directory");
|
|
12
40
|
const symbolicate_error_1 = require("./error-handling/symbolicate-error");
|
|
13
41
|
const symbolicateable_error_1 = require("./error-handling/symbolicateable-error");
|
|
14
42
|
const ffmpeg_flags_1 = require("./ffmpeg-flags");
|
|
43
|
+
const frame_range_1 = require("./frame-range");
|
|
15
44
|
const get_concurrency_1 = require("./get-concurrency");
|
|
16
45
|
const get_duration_from_frame_range_1 = require("./get-duration-from-frame-range");
|
|
17
46
|
const get_extension_from_codec_1 = require("./get-extension-from-codec");
|
|
@@ -19,18 +48,29 @@ const get_extension_of_filename_1 = require("./get-extension-of-filename");
|
|
|
19
48
|
const get_frame_to_render_1 = require("./get-frame-to-render");
|
|
20
49
|
const get_local_browser_executable_1 = require("./get-local-browser-executable");
|
|
21
50
|
const get_port_1 = require("./get-port");
|
|
51
|
+
const image_format_1 = require("./image-format");
|
|
52
|
+
const is_audio_codec_1 = require("./is-audio-codec");
|
|
22
53
|
const is_serve_url_1 = require("./is-serve-url");
|
|
54
|
+
const log_level_1 = require("./log-level");
|
|
23
55
|
const mime_types_1 = require("./mime-types");
|
|
24
56
|
const normalize_serve_url_1 = require("./normalize-serve-url");
|
|
25
57
|
const open_browser_1 = require("./open-browser");
|
|
58
|
+
const overwrite_1 = require("./overwrite");
|
|
26
59
|
const parse_browser_error_stack_1 = require("./parse-browser-error-stack");
|
|
60
|
+
const perf = __importStar(require("./perf"));
|
|
61
|
+
const pixel_format_1 = require("./pixel-format");
|
|
62
|
+
const prores_profile_1 = require("./prores-profile");
|
|
63
|
+
const quality_1 = require("./quality");
|
|
27
64
|
const is_path_inside_1 = require("./serve-handler/is-path-inside");
|
|
28
65
|
const serve_static_1 = require("./serve-static");
|
|
29
66
|
const stitch_frames_to_video_1 = require("./stitch-frames-to-video");
|
|
30
67
|
const tmp_dir_1 = require("./tmp-dir");
|
|
31
68
|
const validate_concurrency_1 = require("./validate-concurrency");
|
|
32
69
|
const validate_even_dimensions_with_codec_1 = require("./validate-even-dimensions-with-codec");
|
|
70
|
+
const validate_every_nth_frame_1 = require("./validate-every-nth-frame");
|
|
33
71
|
const validate_ffmpeg_1 = require("./validate-ffmpeg");
|
|
72
|
+
const validate_frame_1 = require("./validate-frame");
|
|
73
|
+
const validate_opengl_renderer_1 = require("./validate-opengl-renderer");
|
|
34
74
|
const validate_puppeteer_timeout_1 = require("./validate-puppeteer-timeout");
|
|
35
75
|
const validate_scale_1 = require("./validate-scale");
|
|
36
76
|
const wait_for_symbolication_error_to_be_done_1 = require("./wait-for-symbolication-error-to-be-done");
|
|
@@ -40,6 +80,9 @@ var handle_javascript_exception_1 = require("./error-handling/handle-javascript-
|
|
|
40
80
|
Object.defineProperty(exports, "ErrorWithStackFrame", { enumerable: true, get: function () { return handle_javascript_exception_1.ErrorWithStackFrame; } });
|
|
41
81
|
var get_compositions_1 = require("./get-compositions");
|
|
42
82
|
Object.defineProperty(exports, "getCompositions", { enumerable: true, get: function () { return get_compositions_1.getCompositions; } });
|
|
83
|
+
var image_format_2 = require("./image-format");
|
|
84
|
+
Object.defineProperty(exports, "validateSelectedPixelFormatAndImageFormatCombination", { enumerable: true, get: function () { return image_format_2.validateSelectedPixelFormatAndImageFormatCombination; } });
|
|
85
|
+
Object.defineProperty(exports, "validImageFormats", { enumerable: true, get: function () { return image_format_2.validImageFormats; } });
|
|
43
86
|
var make_cancel_signal_1 = require("./make-cancel-signal");
|
|
44
87
|
Object.defineProperty(exports, "makeCancelSignal", { enumerable: true, get: function () { return make_cancel_signal_1.makeCancelSignal; } });
|
|
45
88
|
var open_browser_2 = require("./open-browser");
|
|
@@ -88,4 +131,31 @@ exports.RenderInternals = {
|
|
|
88
131
|
mimeContentType: mime_types_1.mimeContentType,
|
|
89
132
|
mimeLookup: mime_types_1.mimeLookup,
|
|
90
133
|
validateConcurrency: validate_concurrency_1.validateConcurrency,
|
|
134
|
+
validPixelFormats: pixel_format_1.validPixelFormats,
|
|
135
|
+
DEFAULT_BROWSER: browser_1.DEFAULT_BROWSER,
|
|
136
|
+
validateFrameRange: frame_range_1.validateFrameRange,
|
|
137
|
+
DEFAULT_OPENGL_RENDERER: validate_opengl_renderer_1.DEFAULT_OPENGL_RENDERER,
|
|
138
|
+
validateOpenGlRenderer: validate_opengl_renderer_1.validateOpenGlRenderer,
|
|
139
|
+
getDefaultCrfForCodec: crf_1.getDefaultCrfForCodec,
|
|
140
|
+
validateSelectedCrfAndCodecCombination: crf_1.validateSelectedCrfAndCodecCombination,
|
|
141
|
+
validImageFormats: image_format_1.validImageFormats,
|
|
142
|
+
validCodecs: codec_1.validCodecs,
|
|
143
|
+
DEFAULT_OVERWRITE: overwrite_1.DEFAULT_OVERWRITE,
|
|
144
|
+
DEFAULT_PIXEL_FORMAT: pixel_format_1.DEFAULT_PIXEL_FORMAT,
|
|
145
|
+
validateQuality: quality_1.validateQuality,
|
|
146
|
+
validateFrame: validate_frame_1.validateFrame,
|
|
147
|
+
DEFAULT_TIMEOUT: TimeoutSettings_1.DEFAULT_TIMEOUT,
|
|
148
|
+
getValidCrfRanges: crf_1.getValidCrfRanges,
|
|
149
|
+
validateSelectedPixelFormatAndCodecCombination: pixel_format_1.validateSelectedPixelFormatAndCodecCombination,
|
|
150
|
+
validateSelectedCodecAndProResCombination: prores_profile_1.validateSelectedCodecAndProResCombination,
|
|
151
|
+
validateSelectedPixelFormatAndImageFormatCombination: image_format_1.validateSelectedPixelFormatAndImageFormatCombination,
|
|
152
|
+
DEFAULT_CODEC: codec_1.DEFAULT_CODEC,
|
|
153
|
+
isAudioCodec: is_audio_codec_1.isAudioCodec,
|
|
154
|
+
logLevels: log_level_1.logLevels,
|
|
155
|
+
isEqualOrBelowLogLevel: log_level_1.isEqualOrBelowLogLevel,
|
|
156
|
+
isValidLogLevel: log_level_1.isValidLogLevel,
|
|
157
|
+
validateEveryNthFrame: validate_every_nth_frame_1.validateEveryNthFrame,
|
|
158
|
+
perf,
|
|
159
|
+
makeDownloadMap: download_map_1.makeDownloadMap,
|
|
160
|
+
cleanDownloadMap: download_map_1.cleanDownloadMap,
|
|
91
161
|
};
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const
|
|
1
|
+
import type { DownloadMap } from './assets/download-map';
|
|
2
|
+
export declare const isBeyondLastFrame: (downloadMap: DownloadMap, src: string, time: number) => boolean | 0;
|
|
3
|
+
export declare const markAsBeyondLastFrame: (downloadMap: DownloadMap, src: string, time: number) => void;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.markAsBeyondLastFrame = exports.isBeyondLastFrame = void 0;
|
|
4
|
-
const
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
const isBeyondLastFrame = (downloadMap, src, time) => {
|
|
5
|
+
return (downloadMap.isBeyondLastFrameMap[src] &&
|
|
6
|
+
time >= downloadMap.isBeyondLastFrameMap[src]);
|
|
7
7
|
};
|
|
8
8
|
exports.isBeyondLastFrame = isBeyondLastFrame;
|
|
9
|
-
const markAsBeyondLastFrame = (src, time) => {
|
|
10
|
-
|
|
9
|
+
const markAsBeyondLastFrame = (downloadMap, src, time) => {
|
|
10
|
+
downloadMap.isBeyondLastFrameMap[src] = time;
|
|
11
11
|
};
|
|
12
12
|
exports.markAsBeyondLastFrame = markAsBeyondLastFrame;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
import type {
|
|
3
|
-
import type {
|
|
1
|
+
import type { OffthreadVideoImageFormat } from 'remotion';
|
|
2
|
+
import type { DownloadMap, SpecialVCodecForTransparency } from './assets/download-map';
|
|
3
|
+
import type { FfmpegExecutable } from './ffmpeg-executable';
|
|
4
4
|
export declare type LastFrameOptions = {
|
|
5
5
|
ffmpegExecutable: FfmpegExecutable;
|
|
6
6
|
ffprobeExecutable: FfmpegExecutable;
|
|
@@ -9,7 +9,8 @@ export declare type LastFrameOptions = {
|
|
|
9
9
|
specialVCodecForTransparency: SpecialVCodecForTransparency;
|
|
10
10
|
imageFormat: OffthreadVideoImageFormat;
|
|
11
11
|
needsResize: [number, number] | null;
|
|
12
|
+
downloadMap: DownloadMap;
|
|
12
13
|
};
|
|
13
14
|
export declare const setLastFrameInCache: (options: LastFrameOptions, data: Buffer) => void;
|
|
14
15
|
export declare const getLastFrameFromCache: (options: LastFrameOptions) => Buffer | null;
|
|
15
|
-
export declare const clearLastFileCache: () => void;
|
|
16
|
+
export declare const clearLastFileCache: (downloadMap: DownloadMap) => void;
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
// OffthreadVideo requires sometimes that the last frame of a video gets extracted, however, this can be slow. We allocate a cache for it but that can be garbage collected
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.clearLastFileCache = exports.getLastFrameFromCache = exports.setLastFrameInCache = void 0;
|
|
5
|
-
let map = {};
|
|
6
5
|
const MAX_CACHE_SIZE = 50 * 1024 * 1024; // 50MB
|
|
7
6
|
let bufferSize = 0;
|
|
8
7
|
const makeLastFrameCacheKey = (options) => {
|
|
@@ -11,45 +10,46 @@ const makeLastFrameCacheKey = (options) => {
|
|
|
11
10
|
options.offset,
|
|
12
11
|
options.src,
|
|
13
12
|
options.imageFormat,
|
|
13
|
+
options.downloadMap.id,
|
|
14
14
|
].join('-');
|
|
15
15
|
};
|
|
16
16
|
const setLastFrameInCache = (options, data) => {
|
|
17
17
|
const key = makeLastFrameCacheKey(options);
|
|
18
|
-
if (
|
|
19
|
-
bufferSize -=
|
|
18
|
+
if (options.downloadMap.lastFrameMap[key]) {
|
|
19
|
+
bufferSize -= options.downloadMap.lastFrameMap[key].data.byteLength;
|
|
20
20
|
}
|
|
21
|
-
|
|
21
|
+
options.downloadMap.lastFrameMap[key] = { data, lastAccessed: Date.now() };
|
|
22
22
|
bufferSize += data.byteLength;
|
|
23
|
-
ensureMaxSize();
|
|
23
|
+
ensureMaxSize(options.downloadMap);
|
|
24
24
|
};
|
|
25
25
|
exports.setLastFrameInCache = setLastFrameInCache;
|
|
26
26
|
const getLastFrameFromCache = (options) => {
|
|
27
27
|
var _a;
|
|
28
28
|
const key = makeLastFrameCacheKey(options);
|
|
29
|
-
if (!
|
|
29
|
+
if (!options.downloadMap.lastFrameMap[key]) {
|
|
30
30
|
return null;
|
|
31
31
|
}
|
|
32
|
-
|
|
33
|
-
return (_a =
|
|
32
|
+
options.downloadMap.lastFrameMap[key].lastAccessed = Date.now();
|
|
33
|
+
return (_a = options.downloadMap.lastFrameMap[key].data) !== null && _a !== void 0 ? _a : null;
|
|
34
34
|
};
|
|
35
35
|
exports.getLastFrameFromCache = getLastFrameFromCache;
|
|
36
|
-
const removedLastFrameFromCache = (key) => {
|
|
37
|
-
if (!
|
|
36
|
+
const removedLastFrameFromCache = (key, downloadMap) => {
|
|
37
|
+
if (!downloadMap.lastFrameMap[key]) {
|
|
38
38
|
return;
|
|
39
39
|
}
|
|
40
|
-
bufferSize -=
|
|
41
|
-
delete
|
|
40
|
+
bufferSize -= downloadMap.lastFrameMap[key].data.byteLength;
|
|
41
|
+
delete downloadMap.lastFrameMap[key];
|
|
42
42
|
};
|
|
43
|
-
const ensureMaxSize = () => {
|
|
43
|
+
const ensureMaxSize = (downloadMap) => {
|
|
44
44
|
// eslint-disable-next-line no-unmodified-loop-condition
|
|
45
45
|
while (bufferSize > MAX_CACHE_SIZE) {
|
|
46
|
-
const earliest = Object.entries(
|
|
46
|
+
const earliest = Object.entries(downloadMap.lastFrameMap).sort((a, b) => {
|
|
47
47
|
return a[1].lastAccessed - b[1].lastAccessed;
|
|
48
48
|
})[0];
|
|
49
|
-
removedLastFrameFromCache(earliest[0]);
|
|
49
|
+
removedLastFrameFromCache(earliest[0], downloadMap);
|
|
50
50
|
}
|
|
51
51
|
};
|
|
52
|
-
const clearLastFileCache = () => {
|
|
53
|
-
|
|
52
|
+
const clearLastFileCache = (downloadMap) => {
|
|
53
|
+
downloadMap.lastFrameMap = {};
|
|
54
54
|
};
|
|
55
55
|
exports.clearLastFileCache = clearLastFileCache;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare const logLevels: readonly ["verbose", "info", "warn", "error"];
|
|
2
|
+
export declare type LogLevel = typeof logLevels[number];
|
|
3
|
+
export declare const isValidLogLevel: (level: string) => boolean;
|
|
4
|
+
export declare const isEqualOrBelowLogLevel: (currentLevel: LogLevel, level: LogLevel) => boolean;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isEqualOrBelowLogLevel = exports.isValidLogLevel = exports.logLevels = void 0;
|
|
4
|
+
exports.logLevels = ['verbose', 'info', 'warn', 'error'];
|
|
5
|
+
const getNumberForLogLevel = (level) => {
|
|
6
|
+
return exports.logLevels.indexOf(level);
|
|
7
|
+
};
|
|
8
|
+
const isValidLogLevel = (level) => {
|
|
9
|
+
return getNumberForLogLevel(level) > -1;
|
|
10
|
+
};
|
|
11
|
+
exports.isValidLogLevel = isValidLogLevel;
|
|
12
|
+
const isEqualOrBelowLogLevel = (currentLevel, level) => {
|
|
13
|
+
return getNumberForLogLevel(currentLevel) <= getNumberForLogLevel(level);
|
|
14
|
+
};
|
|
15
|
+
exports.isEqualOrBelowLogLevel = isEqualOrBelowLogLevel;
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { DownloadMap } from './assets/download-map';
|
|
2
|
+
import type { FfmpegExecutable } from './ffmpeg-executable';
|
|
2
3
|
declare type Options = {
|
|
3
4
|
ffmpegExecutable: FfmpegExecutable;
|
|
4
5
|
files: string[];
|
|
5
6
|
outName: string;
|
|
6
7
|
numberOfSeconds: number;
|
|
8
|
+
downloadMap: DownloadMap;
|
|
7
9
|
};
|
|
8
10
|
export declare const mergeAudioTrack: (options: Options) => Promise<void>;
|
|
9
11
|
export {};
|
|
@@ -6,7 +6,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.mergeAudioTrack = void 0;
|
|
7
7
|
const execa_1 = __importDefault(require("execa"));
|
|
8
8
|
const path_1 = __importDefault(require("path"));
|
|
9
|
-
const remotion_1 = require("remotion");
|
|
10
9
|
const chunk_1 = require("./chunk");
|
|
11
10
|
const convert_to_pcm_1 = require("./convert-to-pcm");
|
|
12
11
|
const create_ffmpeg_complex_filter_1 = require("./create-ffmpeg-complex-filter");
|
|
@@ -14,7 +13,8 @@ const create_silent_audio_1 = require("./create-silent-audio");
|
|
|
14
13
|
const delete_directory_1 = require("./delete-directory");
|
|
15
14
|
const p_limit_1 = require("./p-limit");
|
|
16
15
|
const tmp_dir_1 = require("./tmp-dir");
|
|
17
|
-
const
|
|
16
|
+
const truthy_1 = require("./truthy");
|
|
17
|
+
const mergeAudioTrackUnlimited = async ({ ffmpegExecutable, outName, files, numberOfSeconds, downloadMap, }) => {
|
|
18
18
|
if (files.length === 0) {
|
|
19
19
|
await (0, create_silent_audio_1.createSilentAudio)({
|
|
20
20
|
outName,
|
|
@@ -42,6 +42,7 @@ const mergeAudioTrackUnlimited = async ({ ffmpegExecutable, outName, files, numb
|
|
|
42
42
|
files: chunkFiles,
|
|
43
43
|
numberOfSeconds,
|
|
44
44
|
outName: chunkOutname,
|
|
45
|
+
downloadMap,
|
|
45
46
|
});
|
|
46
47
|
return chunkOutname;
|
|
47
48
|
}));
|
|
@@ -50,11 +51,12 @@ const mergeAudioTrackUnlimited = async ({ ffmpegExecutable, outName, files, numb
|
|
|
50
51
|
files: chunkNames,
|
|
51
52
|
numberOfSeconds,
|
|
52
53
|
outName,
|
|
54
|
+
downloadMap,
|
|
53
55
|
});
|
|
54
56
|
await (0, delete_directory_1.deleteDirectory)(tempPath);
|
|
55
57
|
return;
|
|
56
58
|
}
|
|
57
|
-
const { complexFilterFlag: mergeFilter, cleanup } = await (0, create_ffmpeg_complex_filter_1.createFfmpegComplexFilter)(files.length);
|
|
59
|
+
const { complexFilterFlag: mergeFilter, cleanup } = await (0, create_ffmpeg_complex_filter_1.createFfmpegComplexFilter)(files.length, downloadMap);
|
|
58
60
|
const args = [
|
|
59
61
|
...files.map((f) => ['-i', f]),
|
|
60
62
|
mergeFilter,
|
|
@@ -62,7 +64,7 @@ const mergeAudioTrackUnlimited = async ({ ffmpegExecutable, outName, files, numb
|
|
|
62
64
|
['-map', '[a]'],
|
|
63
65
|
['-y', outName],
|
|
64
66
|
]
|
|
65
|
-
.filter(
|
|
67
|
+
.filter(truthy_1.truthy)
|
|
66
68
|
.flat(2);
|
|
67
69
|
const task = (0, execa_1.default)(ffmpegExecutable !== null && ffmpegExecutable !== void 0 ? ffmpegExecutable : 'ffmpeg', args);
|
|
68
70
|
await task;
|
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
import type { RequestListener } from 'http';
|
|
2
|
-
import type {
|
|
2
|
+
import type { OffthreadVideoImageFormat } from 'remotion';
|
|
3
3
|
import type { RenderMediaOnDownload } from './assets/download-and-map-assets-to-file';
|
|
4
|
+
import type { DownloadMap } from './assets/download-map';
|
|
5
|
+
import type { FfmpegExecutable } from './ffmpeg-executable';
|
|
4
6
|
export declare const extractUrlAndSourceFromUrl: (url: string) => {
|
|
5
7
|
src: string;
|
|
6
8
|
time: number;
|
|
7
9
|
imageFormat: OffthreadVideoImageFormat;
|
|
8
10
|
};
|
|
9
|
-
export declare const startOffthreadVideoServer: ({ ffmpegExecutable, ffprobeExecutable,
|
|
11
|
+
export declare const startOffthreadVideoServer: ({ ffmpegExecutable, ffprobeExecutable, onDownload, onError, downloadMap, }: {
|
|
10
12
|
ffmpegExecutable: FfmpegExecutable;
|
|
11
13
|
ffprobeExecutable: FfmpegExecutable;
|
|
12
|
-
downloadDir: string;
|
|
13
14
|
onDownload: RenderMediaOnDownload;
|
|
14
15
|
onError: (err: Error) => void;
|
|
16
|
+
downloadMap: DownloadMap;
|
|
15
17
|
}) => RequestListener;
|
|
@@ -32,7 +32,7 @@ const extractUrlAndSourceFromUrl = (url) => {
|
|
|
32
32
|
};
|
|
33
33
|
};
|
|
34
34
|
exports.extractUrlAndSourceFromUrl = extractUrlAndSourceFromUrl;
|
|
35
|
-
const startOffthreadVideoServer = ({ ffmpegExecutable, ffprobeExecutable,
|
|
35
|
+
const startOffthreadVideoServer = ({ ffmpegExecutable, ffprobeExecutable, onDownload, onError, downloadMap, }) => {
|
|
36
36
|
return (req, res) => {
|
|
37
37
|
if (!req.url) {
|
|
38
38
|
throw new Error('Request came in without URL');
|
|
@@ -45,7 +45,7 @@ const startOffthreadVideoServer = ({ ffmpegExecutable, ffprobeExecutable, downlo
|
|
|
45
45
|
const { src, time, imageFormat } = (0, exports.extractUrlAndSourceFromUrl)(req.url);
|
|
46
46
|
res.setHeader('access-control-allow-origin', '*');
|
|
47
47
|
res.setHeader('content-type', `image/${imageFormat === 'jpeg' ? 'jpg' : 'png'}`);
|
|
48
|
-
(0, download_and_map_assets_to_file_1.downloadAsset)({ src,
|
|
48
|
+
(0, download_and_map_assets_to_file_1.downloadAsset)({ src, onDownload, downloadMap })
|
|
49
49
|
.then((to) => {
|
|
50
50
|
return (0, extract_frame_from_video_1.extractFrameFromVideo)({
|
|
51
51
|
time,
|
|
@@ -53,6 +53,7 @@ const startOffthreadVideoServer = ({ ffmpegExecutable, ffprobeExecutable, downlo
|
|
|
53
53
|
ffmpegExecutable,
|
|
54
54
|
ffprobeExecutable,
|
|
55
55
|
imageFormat,
|
|
56
|
+
downloadMap,
|
|
56
57
|
});
|
|
57
58
|
})
|
|
58
59
|
.then((readable) => {
|
package/dist/open-browser.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Browser } from '
|
|
1
|
+
import type { Browser } from './browser';
|
|
2
2
|
import type { Browser as PuppeteerBrowser } from './browser/Browser';
|
|
3
3
|
import type { Viewport } from './browser/PuppeteerViewport';
|
|
4
4
|
declare const validRenderers: readonly ["swangle", "angle", "egl", "swiftshader"];
|