@remotion/renderer 3.1.6 → 3.1.10
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/add-silent-audio-if-necessary.d.ts +8 -0
- package/dist/add-silent-audio-if-necessary.d.ts.map +1 -0
- package/dist/add-silent-audio-if-necessary.js +51 -0
- package/dist/add-silent-audio-if-necessary.js.map +1 -0
- package/dist/assets/asset-is-used-at-time.d.ts +3 -0
- package/dist/assets/asset-is-used-at-time.d.ts.map +1 -0
- package/dist/assets/asset-is-used-at-time.js +8 -0
- package/dist/assets/asset-is-used-at-time.js.map +1 -0
- package/dist/assets/calculate-asset-positions.d.ts.map +1 -0
- package/dist/assets/calculate-asset-positions.js.map +1 -0
- package/dist/assets/calculate-atempo.d.ts.map +1 -0
- package/dist/assets/calculate-atempo.js.map +1 -0
- package/dist/assets/convert-assets-to-file-urls.d.ts +3 -2
- package/dist/assets/convert-assets-to-file-urls.d.ts.map +1 -0
- package/dist/assets/convert-assets-to-file-urls.js +2 -2
- package/dist/assets/convert-assets-to-file-urls.js.map +1 -0
- package/dist/assets/download-and-map-assets-to-file.d.ts +6 -5
- package/dist/assets/download-and-map-assets-to-file.d.ts.map +1 -0
- package/dist/assets/download-and-map-assets-to-file.js +46 -47
- package/dist/assets/download-and-map-assets-to-file.js.map +1 -0
- package/dist/assets/download-file.d.ts.map +1 -0
- package/dist/assets/download-file.js.map +1 -0
- package/dist/assets/download-map.d.ts +64 -0
- package/dist/assets/download-map.js +73 -0
- package/dist/assets/ffmpeg-volume-expression.d.ts.map +1 -0
- package/dist/assets/ffmpeg-volume-expression.js.map +1 -0
- package/dist/assets/flatten-volume-array.d.ts.map +1 -0
- package/dist/assets/flatten-volume-array.js.map +1 -0
- package/dist/assets/get-asset-audio-details.d.ts +5 -0
- package/dist/assets/get-asset-audio-details.d.ts.map +1 -0
- package/dist/assets/get-asset-audio-details.js +21 -0
- package/dist/assets/get-asset-audio-details.js.map +1 -0
- package/dist/assets/get-audio-channels.d.ts +3 -7
- package/dist/assets/get-audio-channels.d.ts.map +1 -0
- package/dist/assets/get-audio-channels.js +6 -7
- package/dist/assets/get-audio-channels.js.map +1 -0
- package/dist/assets/get-simulatenous-assets.d.ts +3 -0
- package/dist/assets/get-simulatenous-assets.d.ts.map +1 -0
- package/dist/assets/get-simulatenous-assets.js +14 -0
- package/dist/assets/get-simulatenous-assets.js.map +1 -0
- package/dist/assets/get-video-stream-duration.d.ts +3 -6
- package/dist/assets/get-video-stream-duration.js +9 -8
- package/dist/assets/read-file.d.ts.map +1 -0
- package/dist/assets/read-file.js.map +1 -0
- package/dist/assets/round-volume-to-avoid-stack-overflow.d.ts.map +1 -0
- package/dist/assets/round-volume-to-avoid-stack-overflow.js.map +1 -0
- package/dist/assets/sanitize-filename.d.ts.map +1 -0
- package/dist/assets/sanitize-filename.js.map +1 -0
- package/dist/assets/sanitize-filepath.d.ts.map +1 -0
- package/dist/assets/sanitize-filepath.js.map +1 -0
- package/dist/assets/split-assets-into-segments.d.ts +6 -0
- package/dist/assets/split-assets-into-segments.d.ts.map +1 -0
- package/dist/assets/split-assets-into-segments.js +89 -0
- package/dist/assets/split-assets-into-segments.js.map +1 -0
- package/dist/assets/truncate-utf8-bytes.d.ts.map +1 -0
- package/dist/assets/truncate-utf8-bytes.js.map +1 -0
- package/dist/assets/types.d.ts.map +1 -0
- package/dist/assets/types.js.map +1 -0
- package/dist/assets-to-ffmpeg-inputs.d.ts +7 -0
- package/dist/assets-to-ffmpeg-inputs.d.ts.map +1 -0
- package/dist/assets-to-ffmpeg-inputs.js +15 -0
- package/dist/assets-to-ffmpeg-inputs.js.map +1 -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/browser-executable.js +2 -0
- package/dist/browser-log.d.ts.map +1 -0
- package/dist/browser-log.js.map +1 -0
- package/dist/browser.d.ts +2 -0
- package/dist/browser.js +4 -0
- package/dist/calculate-ffmpeg-filters.d.ts.map +1 -0
- package/dist/calculate-ffmpeg-filters.js.map +1 -0
- package/dist/can-use-parallel-encoding.d.ts +1 -1
- package/dist/can-use-parallel-encoding.d.ts.map +1 -0
- package/dist/can-use-parallel-encoding.js +2 -2
- package/dist/can-use-parallel-encoding.js.map +1 -0
- 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.d.ts.map +1 -0
- package/dist/combine-videos.js +7 -6
- package/dist/combine-videos.js.map +1 -0
- 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.d.ts.map +1 -0
- package/dist/create-ffmpeg-complex-filter.js +2 -11
- package/dist/create-ffmpeg-complex-filter.js.map +1 -0
- 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/cycle-browser-tabs.d.ts.map +1 -0
- package/dist/cycle-browser-tabs.js.map +1 -0
- package/dist/delay-render-embedded-stack.d.ts.map +1 -0
- package/dist/delay-render-embedded-stack.js.map +1 -0
- package/dist/delete-directory.d.ts.map +1 -0
- package/dist/delete-directory.js.map +1 -0
- package/dist/ensure-frames-in-order.d.ts.map +1 -0
- package/dist/ensure-frames-in-order.js.map +1 -0
- package/dist/ensure-output-directory.d.ts.map +1 -0
- package/dist/ensure-output-directory.js.map +1 -0
- package/dist/ensure-presentation-timestamp.d.ts +2 -1
- package/dist/ensure-presentation-timestamp.js +9 -7
- package/dist/error-handling/handle-javascript-exception.d.ts.map +1 -0
- package/dist/error-handling/handle-javascript-exception.js.map +1 -0
- package/dist/error-handling/symbolicate-error.d.ts.map +1 -0
- package/dist/error-handling/symbolicate-error.js.map +1 -0
- package/dist/error-handling/symbolicateable-error.d.ts.map +1 -0
- package/dist/error-handling/symbolicateable-error.js.map +1 -0
- package/dist/extract-frame-from-video.d.ts +4 -1
- package/dist/extract-frame-from-video.js +21 -16
- 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/ffmpeg-flags.d.ts.map +1 -0
- package/dist/ffmpeg-flags.js.map +1 -0
- 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.d.ts.map +1 -0
- package/dist/get-audio-codec-name.js +2 -2
- package/dist/get-audio-codec-name.js.map +1 -0
- package/dist/get-browser-instance.d.ts +1 -1
- package/dist/get-browser-instance.d.ts.map +1 -0
- package/dist/get-browser-instance.js +2 -2
- package/dist/get-browser-instance.js.map +1 -0
- package/dist/get-codec-name.d.ts +1 -1
- package/dist/get-codec-name.d.ts.map +1 -0
- package/dist/get-codec-name.js +2 -2
- package/dist/get-codec-name.js.map +1 -0
- package/dist/get-compositions.d.ts +8 -1
- package/dist/get-compositions.d.ts.map +1 -0
- package/dist/get-compositions.js +10 -6
- package/dist/get-compositions.js.map +1 -0
- package/dist/get-concurrency.d.ts.map +1 -0
- package/dist/get-concurrency.js.map +1 -0
- package/dist/get-extension-from-codec.d.ts +1 -1
- package/dist/get-extension-from-codec.d.ts.map +1 -0
- package/dist/get-extension-from-codec.js.map +1 -0
- package/dist/get-frame-to-render.d.ts +1 -1
- package/dist/get-frame-to-render.d.ts.map +1 -0
- package/dist/get-frame-to-render.js.map +1 -0
- package/dist/get-local-browser-executable.d.ts +2 -1
- package/dist/get-local-browser-executable.d.ts.map +1 -0
- package/dist/get-local-browser-executable.js.map +1 -0
- package/dist/get-port.d.ts.map +1 -0
- package/dist/get-port.js.map +1 -0
- package/dist/get-prores-profile-name.d.ts +2 -1
- package/dist/get-prores-profile-name.d.ts.map +1 -0
- package/dist/get-prores-profile-name.js.map +1 -0
- package/dist/get-video-info.d.ts +3 -8
- package/dist/get-video-info.js +7 -8
- package/dist/get-video-threads-flag.d.ts +1 -0
- package/dist/get-video-threads-flag.js +18 -0
- package/dist/image-format.d.ts +6 -1
- package/dist/image-format.d.ts.map +1 -0
- package/dist/image-format.js +25 -1
- package/dist/image-format.js.map +1 -0
- package/dist/index.d.ts +48 -9
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +71 -1
- package/dist/index.js.map +1 -0
- 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/is-serve-url.d.ts.map +1 -0
- package/dist/is-serve-url.js.map +1 -0
- package/dist/last-frame-from-video-cache.d.ts +5 -4
- package/dist/last-frame-from-video-cache.js +17 -17
- package/dist/legacy-webpack-config.d.ts.map +1 -0
- package/dist/legacy-webpack-config.js.map +1 -0
- package/dist/log-level.d.ts +4 -0
- package/dist/log-level.js +15 -0
- package/dist/make-assets-download-dir.d.ts.map +1 -0
- package/dist/make-assets-download-dir.js.map +1 -0
- package/dist/merge-audio-track.d.ts +3 -1
- package/dist/merge-audio-track.js +6 -4
- package/dist/normalize-serve-url.d.ts.map +1 -0
- package/dist/normalize-serve-url.js.map +1 -0
- 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.d.ts.map +1 -0
- package/dist/open-browser.js +6 -5
- package/dist/open-browser.js.map +1 -0
- package/dist/overwrite.d.ts +1 -0
- package/dist/overwrite.js +4 -0
- package/dist/parse-browser-error-stack.d.ts.map +1 -0
- package/dist/parse-browser-error-stack.js.map +1 -0
- package/dist/parse-ffmpeg-progress.d.ts.map +1 -0
- package/dist/parse-ffmpeg-progress.js.map +1 -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/pool.d.ts.map +1 -0
- package/dist/pool.js.map +1 -0
- package/dist/prepare-server.d.ts +4 -3
- package/dist/prepare-server.d.ts.map +1 -0
- package/dist/prepare-server.js +3 -3
- package/dist/prepare-server.js.map +1 -0
- 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/prestitcher-memory-usage.d.ts +12 -0
- package/dist/prestitcher-memory-usage.js +30 -0
- 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/provide-screenshot.d.ts.map +1 -0
- package/dist/provide-screenshot.js.map +1 -0
- package/dist/puppeteer-evaluate.d.ts.map +1 -0
- package/dist/puppeteer-evaluate.js.map +1 -0
- package/dist/puppeteer-screenshot.d.ts.map +1 -0
- package/dist/puppeteer-screenshot.js.map +1 -0
- 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.d.ts.map +1 -0
- package/dist/render-media.js +40 -14
- package/dist/render-media.js.map +1 -0
- package/dist/render-still.d.ts +9 -1
- package/dist/render-still.d.ts.map +1 -0
- package/dist/render-still.js +21 -11
- package/dist/render-still.js.map +1 -0
- package/dist/render.d.ts +45 -0
- package/dist/render.d.ts.map +1 -0
- package/dist/render.js +245 -0
- package/dist/render.js.map +1 -0
- package/dist/resolve-asset-src.d.ts.map +1 -0
- package/dist/resolve-asset-src.js.map +1 -0
- package/dist/sample-rate.d.ts.map +1 -0
- package/dist/sample-rate.js.map +1 -0
- package/dist/screenshot-dom-element.d.ts +1 -1
- package/dist/screenshot-dom-element.d.ts.map +1 -0
- package/dist/screenshot-dom-element.js.map +1 -0
- package/dist/screenshot-task.d.ts +1 -2
- package/dist/screenshot-task.d.ts.map +1 -0
- package/dist/screenshot-task.js +34 -19
- package/dist/screenshot-task.js.map +1 -0
- package/dist/seek-to-frame.d.ts.map +1 -0
- package/dist/seek-to-frame.js.map +1 -0
- package/dist/serve-static.d.ts +3 -2
- package/dist/serve-static.d.ts.map +1 -0
- package/dist/serve-static.js +3 -4
- package/dist/serve-static.js.map +1 -0
- package/dist/set-props-and-env.d.ts.map +1 -0
- package/dist/set-props-and-env.js +2 -2
- package/dist/set-props-and-env.js.map +1 -0
- package/dist/stitch-frames-to-video.d.ts +6 -1
- package/dist/stitch-frames-to-video.js +30 -43
- package/dist/stitcher.d.ts +32 -0
- package/dist/stitcher.d.ts.map +1 -0
- package/dist/stitcher.js +204 -0
- package/dist/stitcher.js.map +1 -0
- package/dist/stringify-ffmpeg-filter.d.ts.map +1 -0
- package/dist/stringify-ffmpeg-filter.js +2 -2
- package/dist/stringify-ffmpeg-filter.js.map +1 -0
- package/dist/symbolicate-stacktrace.d.ts.map +1 -0
- package/dist/symbolicate-stacktrace.js +3 -3
- package/dist/symbolicate-stacktrace.js.map +1 -0
- package/dist/tmp-dir.d.ts.map +1 -0
- package/dist/tmp-dir.js.map +1 -0
- package/dist/truthy.d.ts +3 -0
- package/dist/truthy.js +7 -0
- package/dist/types.d.ts +1 -1
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js.map +1 -0
- package/dist/validate-even-dimensions-with-codec.d.ts +1 -1
- package/dist/validate-even-dimensions-with-codec.d.ts.map +1 -0
- package/dist/validate-even-dimensions-with-codec.js +2 -2
- package/dist/validate-even-dimensions-with-codec.js.map +1 -0
- package/dist/validate-every-nth-frame.d.ts +1 -0
- package/dist/validate-every-nth-frame.js +21 -0
- package/dist/validate-ffmpeg.d.ts.map +1 -0
- package/dist/validate-ffmpeg.js +2 -3
- package/dist/validate-ffmpeg.js.map +1 -0
- 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/dist/validate-puppeteer-timeout.d.ts.map +1 -0
- package/dist/validate-puppeteer-timeout.js.map +1 -0
- package/dist/validate-scale.d.ts.map +1 -0
- package/dist/validate-scale.js.map +1 -0
- package/package.json +3 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-audio-channels.js","sourceRoot":"","sources":["../../src/assets/get-audio-channels.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAEnB,KAAK,UAAU,gBAAgB,CAAC,IAAY;IAClD,MAAM,IAAI,GAAG;QACZ,CAAC,IAAI,EAAE,OAAO,CAAC;QACf,CAAC,eAAe,EAAE,iBAAiB,CAAC;QACpC,CAAC,KAAK,EAAE,cAAc,CAAC;QACvB,CAAC,IAAI,CAAC;KACN;SACC,MAAM,CAAoB,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;SAC5D,MAAM,CAAC,OAAO,CAAa,CAAC;IAE9B,MAAM,IAAI,GAAG,MAAM,IAAA,eAAK,EAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC1C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;QACvC,OAAO,CAAC,CAAC;KACT;IAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IACpE,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE;QACpB,MAAM,IAAI,SAAS,CAAC,sDAAsD,CAAC,CAAC;KAC5E;IAED,OAAO,QAAQ,CAAC;AACjB,CAAC;AArBD,4CAqBC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-simulatenous-assets.d.ts","sourceRoot":"","sources":["../../src/assets/get-simulatenous-assets.ts"],"names":[],"mappings":"AAKA,OAAO,EAAC,MAAM,EAAE,UAAU,EAAC,MAAM,SAAS,CAAC;AAE3C,eAAO,MAAM,qBAAqB,6BAA8B,UAAU,iBAIzE,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Determine how many other audio tracks are not being finished yet given
|
|
3
|
+
// an audio track. This includes audio tracks that will be played in the future.
|
|
4
|
+
// Because of split-assets-into-segments, we are guaranteed to have no overlapping
|
|
5
|
+
// audio tracks.
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.getSimultaneousAssets = void 0;
|
|
8
|
+
const getSimultaneousAssets = (allAssets, asset) => {
|
|
9
|
+
return allAssets.filter((a) => {
|
|
10
|
+
return a.startInVideo >= asset.startInVideo;
|
|
11
|
+
});
|
|
12
|
+
};
|
|
13
|
+
exports.getSimultaneousAssets = getSimultaneousAssets;
|
|
14
|
+
//# sourceMappingURL=get-simulatenous-assets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-simulatenous-assets.js","sourceRoot":"","sources":["../../src/assets/get-simulatenous-assets.ts"],"names":[],"mappings":";AAAA,yEAAyE;AACzE,gFAAgF;AAChF,kFAAkF;AAClF,gBAAgB;;;AAIT,MAAM,qBAAqB,GAAG,CAAC,SAAiB,EAAE,KAAiB,EAAE,EAAE;IAC7E,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;QAC7B,OAAO,CAAC,CAAC,YAAY,IAAI,KAAK,CAAC,YAAY,CAAC;IAC7C,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC;AAJW,QAAA,qBAAqB,yBAIhC"}
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
import type { FfmpegExecutable } from '
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
};
|
|
5
|
-
export declare const getVideoStreamDuration: (src: string, ffprobeExecutable: FfmpegExecutable) => Promise<Result>;
|
|
6
|
-
export {};
|
|
1
|
+
import type { FfmpegExecutable } from '../ffmpeg-executable';
|
|
2
|
+
import type { DownloadMap, VideoDurationResult } from './download-map';
|
|
3
|
+
export declare const getVideoStreamDuration: (downloadMap: DownloadMap, src: string, ffprobeExecutable: FfmpegExecutable) => Promise<VideoDurationResult>;
|
|
@@ -6,29 +6,30 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.getVideoStreamDuration = void 0;
|
|
7
7
|
const execa_1 = __importDefault(require("execa"));
|
|
8
8
|
const p_limit_1 = require("../p-limit");
|
|
9
|
-
const durationOfAssetCache = {};
|
|
10
9
|
const limit = (0, p_limit_1.pLimit)(1);
|
|
11
|
-
async function getVideoStreamDurationUnlimited(src, ffprobeExecutable) {
|
|
12
|
-
if (
|
|
13
|
-
return
|
|
10
|
+
async function getVideoStreamDurationUnlimited(downloadMap, src, ffprobeExecutable) {
|
|
11
|
+
if (downloadMap.videoDurationResultCache[src]) {
|
|
12
|
+
return downloadMap.videoDurationResultCache[src];
|
|
14
13
|
}
|
|
15
14
|
const args = [
|
|
16
15
|
['-v', 'error'],
|
|
17
16
|
['-select_streams', 'v:0'],
|
|
18
|
-
['-show_entries', 'stream=duration'],
|
|
17
|
+
['-show_entries', 'stream=duration,r_frame_rate'],
|
|
19
18
|
[src],
|
|
20
19
|
]
|
|
21
20
|
.reduce((acc, val) => acc.concat(val), [])
|
|
22
21
|
.filter(Boolean);
|
|
23
22
|
const task = await (0, execa_1.default)(ffprobeExecutable !== null && ffprobeExecutable !== void 0 ? ffprobeExecutable : 'ffprobe', args);
|
|
24
23
|
const duration = task.stdout.match(/duration=([0-9.]+)/);
|
|
24
|
+
const fps = task.stdout.match(/r_frame_rate=([0-9.]+)\/([0-9.]+)/);
|
|
25
25
|
const result = {
|
|
26
26
|
duration: duration ? parseFloat(duration[1]) : null,
|
|
27
|
+
fps: fps ? parseInt(fps[1], 10) / parseInt(fps[2], 10) : null,
|
|
27
28
|
};
|
|
28
|
-
|
|
29
|
+
downloadMap.videoDurationResultCache[src] = result;
|
|
29
30
|
return result;
|
|
30
31
|
}
|
|
31
|
-
const getVideoStreamDuration = (src, ffprobeExecutable) => {
|
|
32
|
-
return limit(() => getVideoStreamDurationUnlimited(src, ffprobeExecutable));
|
|
32
|
+
const getVideoStreamDuration = (downloadMap, src, ffprobeExecutable) => {
|
|
33
|
+
return limit(() => getVideoStreamDurationUnlimited(downloadMap, src, ffprobeExecutable));
|
|
33
34
|
};
|
|
34
35
|
exports.getVideoStreamDuration = getVideoStreamDuration;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read-file.d.ts","sourceRoot":"","sources":["../../src/assets/read-file.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAexB,eAAO,MAAM,QAAQ,QAAS,MAAM,KAAG,QAAQ,KAAK,eAAe,CAQlE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read-file.js","sourceRoot":"","sources":["../../src/assets/read-file.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AACxB,kDAA0B;AAE1B,MAAM,SAAS,GAAG,CAAC,GAAW,EAAE,EAAE;IACjC,IAAI,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;QAC/B,OAAO,eAAK,CAAC,GAAG,CAAC;KACjB;IAED,IAAI,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;QAC9B,OAAO,cAAI,CAAC,GAAG,CAAC;KAChB;IAED,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;AAC7E,CAAC,CAAC;AAEK,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAiC,EAAE;IACtE,OAAO,IAAI,OAAO,CAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC5D,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE;YAC3B,OAAO,CAAC,GAAG,CAAC,CAAC;QACd,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACtB,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;QACpB,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC;AARW,QAAA,QAAQ,YAQnB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"round-volume-to-avoid-stack-overflow.d.ts","sourceRoot":"","sources":["../../src/assets/round-volume-to-avoid-stack-overflow.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,sBAAsB,KAAK,CAAC;AAEzC,eAAO,MAAM,+BAA+B,WAAY,MAAM,KAAG,MAOhE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"round-volume-to-avoid-stack-overflow.js","sourceRoot":"","sources":["../../src/assets/round-volume-to-avoid-stack-overflow.ts"],"names":[],"mappings":";AAAA,4DAA4D;AAC5D,wHAAwH;AACxH,iDAAiD;AACjD,4DAA4D;AAC5D,qEAAqE;AACrE,6CAA6C;AAC7C,kFAAkF;AAClF,iDAAiD;;;AAEpC,QAAA,sBAAsB,GAAG,EAAE,CAAC;AAElC,MAAM,+BAA+B,GAAG,CAAC,MAAc,EAAU,EAAE;IACzE,OAAO,MAAM,CACZ,CACC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,8BAAsB,GAAG,CAAC,CAAC,CAAC;QACjD,CAAC,8BAAsB,GAAG,CAAC,CAAC,CAC5B,CAAC,OAAO,CAAC,CAAC,CAAC,CACZ,CAAC;AACH,CAAC,CAAC;AAPW,QAAA,+BAA+B,mCAO1C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sanitize-filename.d.ts","sourceRoot":"","sources":["../../src/assets/sanitize-filename.ts"],"names":[],"mappings":"AAoDA,eAAO,MAAM,gBAAgB,UAAW,MAAM,WAQ7C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sanitize-filename.js","sourceRoot":"","sources":["../../src/assets/sanitize-filename.ts"],"names":[],"mappings":";AAAA,sFAAsF;;;AAEtF,+DAAwD;AAExD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,MAAM,SAAS,GAAG,eAAe,CAAC;AAClC,4CAA4C;AAC5C,MAAM,SAAS,GAAG,uBAAuB,CAAC;AAC1C,MAAM,UAAU,GAAG,OAAO,CAAC;AAC3B,MAAM,iBAAiB,GAAG,+CAA+C,CAAC;AAC1E,MAAM,iBAAiB,GAAG,QAAQ,CAAC;AAEnC,SAAS,QAAQ,CAAC,KAAa,EAAE,WAAmB;IACnD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC9B,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;KACxC;IAED,MAAM,SAAS,GAAG,KAAK;SACrB,OAAO,CAAC,SAAS,EAAE,WAAW,CAAC;SAC/B,OAAO,CAAC,SAAS,EAAE,WAAW,CAAC;SAC/B,OAAO,CAAC,UAAU,EAAE,WAAW,CAAC;SAChC,OAAO,CAAC,iBAAiB,EAAE,WAAW,CAAC;SACvC,OAAO,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC;IAC1C,OAAO,IAAA,uCAAiB,EAAC,SAAS,EAAE,GAAG,CAAC,CAAC;AAC1C,CAAC;AAEM,MAAM,gBAAgB,GAAG,CAAC,KAAa,EAAE,EAAE;IACjD,MAAM,WAAW,GAAG,EAAE,CAAC;IACvB,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IAC5C,IAAI,WAAW,KAAK,EAAE,EAAE;QACvB,OAAO,MAAM,CAAC;KACd;IAED,OAAO,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAC7B,CAAC,CAAC;AARW,QAAA,gBAAgB,oBAQ3B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sanitize-filepath.d.ts","sourceRoot":"","sources":["../../src/assets/sanitize-filepath.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,gBAAgB,mBAAoB,MAAM,WAKtD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sanitize-filepath.js","sourceRoot":"","sources":["../../src/assets/sanitize-filepath.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AACxB,2DAAqD;AAErD,MAAM,cAAc,GAAG,OAAO,CAAC;AAExB,MAAM,gBAAgB,GAAG,CAAC,cAAsB,EAAE,EAAE;IAC1D,OAAO,cAAc;SACnB,KAAK,CAAC,cAAc,CAAC;SACrB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,oCAAgB,EAAC,CAAC,CAAC,CAAC;SAC/B,IAAI,CAAC,cAAI,CAAC,GAAG,CAAC,CAAC;AAClB,CAAC,CAAC;AALW,QAAA,gBAAgB,oBAK3B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"split-assets-into-segments.d.ts","sourceRoot":"","sources":["../../src/assets/split-assets-into-segments.ts"],"names":[],"mappings":"AAMA,OAAO,EAAC,UAAU,EAAC,MAAM,SAAS,CAAC;AAQnC,eAAO,MAAM,uBAAuB;YAI3B,UAAU,EAAE;cACV,MAAM;MACb,UAAU,EAuFb,CAAC"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Because of how FFMPEG filters work, we might have to split 1 audio
|
|
3
|
+
// track into multiple filters to avoid unexpected volume changes.
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.splitAssetsIntoSegments = void 0;
|
|
6
|
+
const remotion_1 = require("remotion");
|
|
7
|
+
const asset_is_used_at_time_1 = require("./asset-is-used-at-time");
|
|
8
|
+
const flatten_volume_array_1 = require("./flatten-volume-array");
|
|
9
|
+
// If there is a track from 0-10 seconds and one from 5-15 seconds
|
|
10
|
+
// we need to create the following segments:
|
|
11
|
+
// 1. Segment from 0-5 seconds with 1 audio source and volume=1
|
|
12
|
+
// 2. Segment from 5-10 seconds with 2 audio sources and volume=2 for each
|
|
13
|
+
// 3. Segment from 10-15 seconds with 1 audio source and volume=1
|
|
14
|
+
const splitAssetsIntoSegments = ({ assets, duration, }) => {
|
|
15
|
+
const timeIds = new Array(duration).fill(true).map((_, frame) => {
|
|
16
|
+
const sourcesAtThisTime = assets.filter((a) => {
|
|
17
|
+
return (0, asset_is_used_at_time_1.assetIsUsedAtTime)(a, frame);
|
|
18
|
+
});
|
|
19
|
+
return sourcesAtThisTime.map((s) => s.src).join(',');
|
|
20
|
+
});
|
|
21
|
+
const framesAtWhichToCut = [
|
|
22
|
+
0,
|
|
23
|
+
...timeIds
|
|
24
|
+
.map((t, i) => {
|
|
25
|
+
return {
|
|
26
|
+
timeId: t,
|
|
27
|
+
index: i,
|
|
28
|
+
};
|
|
29
|
+
})
|
|
30
|
+
.filter(({ index, timeId }) => {
|
|
31
|
+
return index > 0 && timeId !== timeIds[index - 1];
|
|
32
|
+
})
|
|
33
|
+
.map(({ index }) => index),
|
|
34
|
+
duration,
|
|
35
|
+
];
|
|
36
|
+
return assets
|
|
37
|
+
.map((a) => {
|
|
38
|
+
return framesAtWhichToCut.map((cutEnd, i) => {
|
|
39
|
+
const cutStart = i === 0 ? 0 : framesAtWhichToCut[i - 1];
|
|
40
|
+
const assetStart = a.startInVideo;
|
|
41
|
+
const assetEnd = a.startInVideo + a.duration;
|
|
42
|
+
const amountOfFramesThatGetCut = cutStart - assetStart;
|
|
43
|
+
// Video goes beyond cut
|
|
44
|
+
if (assetStart < cutEnd && assetEnd > cutEnd) {
|
|
45
|
+
const newDuration = cutEnd - cutStart;
|
|
46
|
+
return {
|
|
47
|
+
...a,
|
|
48
|
+
startInVideo: cutStart,
|
|
49
|
+
volume: typeof a.volume === 'number'
|
|
50
|
+
? a.volume
|
|
51
|
+
: a.volume.slice(amountOfFramesThatGetCut, newDuration + amountOfFramesThatGetCut),
|
|
52
|
+
duration: cutEnd - cutStart,
|
|
53
|
+
trimLeft: a.trimLeft + amountOfFramesThatGetCut,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
// Video starts before cut
|
|
57
|
+
if (assetStart < cutStart && assetEnd > cutStart) {
|
|
58
|
+
const newDuration = a.duration - amountOfFramesThatGetCut;
|
|
59
|
+
return {
|
|
60
|
+
...a,
|
|
61
|
+
startInVideo: cutStart,
|
|
62
|
+
volume: typeof a.volume === 'number'
|
|
63
|
+
? a.volume
|
|
64
|
+
: a.volume.slice(amountOfFramesThatGetCut, newDuration + amountOfFramesThatGetCut),
|
|
65
|
+
duration: newDuration,
|
|
66
|
+
trimLeft: a.trimLeft + amountOfFramesThatGetCut,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
// Video is inside cut, leave
|
|
70
|
+
if (assetStart >= cutStart && assetEnd <= cutEnd) {
|
|
71
|
+
return a;
|
|
72
|
+
}
|
|
73
|
+
// Video is left from cut
|
|
74
|
+
if (assetStart <= cutStart && assetEnd <= cutStart) {
|
|
75
|
+
return null;
|
|
76
|
+
}
|
|
77
|
+
// Video is right from cut
|
|
78
|
+
if (assetStart >= cutStart && assetEnd >= cutStart) {
|
|
79
|
+
return null;
|
|
80
|
+
}
|
|
81
|
+
throw new Error('Unhandled');
|
|
82
|
+
});
|
|
83
|
+
})
|
|
84
|
+
.flat(2)
|
|
85
|
+
.filter(remotion_1.Internals.truthy)
|
|
86
|
+
.map((a) => (0, flatten_volume_array_1.convertAssetToFlattenedVolume)(a));
|
|
87
|
+
};
|
|
88
|
+
exports.splitAssetsIntoSegments = splitAssetsIntoSegments;
|
|
89
|
+
//# sourceMappingURL=split-assets-into-segments.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"split-assets-into-segments.js","sourceRoot":"","sources":["../../src/assets/split-assets-into-segments.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"truncate-utf8-bytes.d.ts","sourceRoot":"","sources":["../../src/assets/truncate-utf8-bytes.ts"],"names":[],"mappings":"AAUA,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,UAkCnE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"truncate-utf8-bytes.js","sourceRoot":"","sources":["../../src/assets/truncate-utf8-bytes.ts"],"names":[],"mappings":";;;AAAA,SAAS,eAAe,CAAC,SAAiB;IACzC,OAAO,SAAS,IAAI,MAAM,IAAI,SAAS,IAAI,MAAM,CAAC;AACnD,CAAC;AAED,SAAS,cAAc,CAAC,SAAiB;IACxC,OAAO,SAAS,IAAI,MAAM,IAAI,SAAS,IAAI,MAAM,CAAC;AACnD,CAAC;AAED,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAEjD,SAAgB,iBAAiB,CAAC,MAAc,EAAE,UAAkB;IACnE,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;QAC/B,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;KACxC;IAED,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC;IACjC,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,IAAI,SAAS,CAAC;IACd,IAAI,OAAO,CAAC;IAEZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,IAAI,CAAC,EAAE;QACvC,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACjC,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAEpB,IACC,eAAe,CAAC,SAAS,CAAC;YAC1B,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EACvC;YACD,CAAC,IAAI,CAAC,CAAC;YACP,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;SACrB;QAED,aAAa,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;QAEpC,IAAI,aAAa,KAAK,UAAU,EAAE;YACjC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;SAC9B;QAED,IAAI,aAAa,GAAG,UAAU,EAAE;YAC/B,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;SAC/C;KACD;IAED,OAAO,MAAM,CAAC;AACf,CAAC;AAlCD,8CAkCC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/assets/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,UAAU,CAAC;AAKhC,oBAAY,WAAW,GAAG,IAAI,CAC7B,MAAM,EACN,OAAO,GAAG,IAAI,GAAG,QAAQ,GAAG,YAAY,CACxC,GAAG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,CAAC;CACrB,CAAC;AAIF,oBAAY,WAAW,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC;AAE5C,oBAAY,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,UAAU,GAAG,QAAQ,CAAC,GAAG;IACnE,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,WAAW,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,oBAAoB,cACrB,MAAM,EAAE,qBACA,MAAM,KACvB,MAuBF,CAAC;AAEF,oBAAY,iBAAiB,GAAG;IAC/B,QAAQ,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,oBAAY,MAAM,GAAG,UAAU,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/assets/types.ts"],"names":[],"mappings":";;;AA0BO,MAAM,oBAAoB,GAAG,CACnC,SAAmB,EACnB,iBAAyB,EAChB,EAAE;IACX,MAAM,YAAY,GAAG,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC3E,IAAI,CAAC,YAAY,EAAE;QAClB,OAAO,iBAAiB,CAAC;KACzB;IAED,MAAM,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,GAAG,YAAY,CAAC;IAEnC,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,CACjC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,KAAK,CAC/C,CAAC;IACF,IAAI,CAAC,WAAW,EAAE;QACjB,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvB,MAAM,IAAI,SAAS,CAClB,6HAA6H,CAC7H,CAAC;KACF;IAED,OAAO;QACN,GAAG,iBAAiB;QACpB,GAAG,EAAE,WAAW,CAAC,GAAG;KACpB,CAAC;AACH,CAAC,CAAC;AA1BW,QAAA,oBAAoB,wBA0B/B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assets-to-ffmpeg-inputs.d.ts","sourceRoot":"","sources":["../src/assets-to-ffmpeg-inputs.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB;YAMxB,MAAM,EAAE;iBACH,OAAO;gBACR,MAAM;SACb,MAAM;MACR,CAAC,MAAM,EAAE,MAAM,CAAC,EAUnB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.assetsToFfmpegInputs = void 0;
|
|
4
|
+
const assetsToFfmpegInputs = ({ assets, isAudioOnly, frameCount, fps, }) => {
|
|
5
|
+
if (isAudioOnly && assets.length === 0) {
|
|
6
|
+
return [
|
|
7
|
+
['-f', 'lavfi'],
|
|
8
|
+
['-i', 'anullsrc'],
|
|
9
|
+
['-t', (frameCount / fps).toFixed(4)],
|
|
10
|
+
];
|
|
11
|
+
}
|
|
12
|
+
return assets.map((path) => ['-i', path]);
|
|
13
|
+
};
|
|
14
|
+
exports.assetsToFfmpegInputs = assetsToFfmpegInputs;
|
|
15
|
+
//# sourceMappingURL=assets-to-ffmpeg-inputs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assets-to-ffmpeg-inputs.js","sourceRoot":"","sources":["../src/assets-to-ffmpeg-inputs.ts"],"names":[],"mappings":";;;AAAO,MAAM,oBAAoB,GAAG,CAAC,EACpC,MAAM,EACN,WAAW,EACX,UAAU,EACV,GAAG,GAMH,EAAsB,EAAE;IACxB,IAAI,WAAW,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QACvC,OAAO;YACN,CAAC,IAAI,EAAE,OAAO,CAAC;YACf,CAAC,IAAI,EAAE,UAAU,CAAC;YAClB,CAAC,IAAI,EAAE,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;SACrC,CAAC;KACF;IAED,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AAC3C,CAAC,CAAC;AApBW,QAAA,oBAAoB,wBAoB/B"}
|
|
@@ -27,8 +27,8 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
27
27
|
};
|
|
28
28
|
var _TimeoutSettings_defaultTimeout, _TimeoutSettings_defaultNavigationTimeout;
|
|
29
29
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
30
|
-
exports.TimeoutSettings = void 0;
|
|
31
|
-
|
|
30
|
+
exports.TimeoutSettings = exports.DEFAULT_TIMEOUT = void 0;
|
|
31
|
+
exports.DEFAULT_TIMEOUT = 30000;
|
|
32
32
|
class TimeoutSettings {
|
|
33
33
|
constructor() {
|
|
34
34
|
_TimeoutSettings_defaultTimeout.set(this, void 0);
|
|
@@ -49,13 +49,13 @@ class TimeoutSettings {
|
|
|
49
49
|
if (__classPrivateFieldGet(this, _TimeoutSettings_defaultTimeout, "f") !== null) {
|
|
50
50
|
return __classPrivateFieldGet(this, _TimeoutSettings_defaultTimeout, "f");
|
|
51
51
|
}
|
|
52
|
-
return DEFAULT_TIMEOUT;
|
|
52
|
+
return exports.DEFAULT_TIMEOUT;
|
|
53
53
|
}
|
|
54
54
|
timeout() {
|
|
55
55
|
if (__classPrivateFieldGet(this, _TimeoutSettings_defaultTimeout, "f") !== null) {
|
|
56
56
|
return __classPrivateFieldGet(this, _TimeoutSettings_defaultTimeout, "f");
|
|
57
57
|
}
|
|
58
|
-
return DEFAULT_TIMEOUT;
|
|
58
|
+
return exports.DEFAULT_TIMEOUT;
|
|
59
59
|
}
|
|
60
60
|
}
|
|
61
61
|
exports.TimeoutSettings = TimeoutSettings;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare type BrowserExecutable = string | null;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser-log.d.ts","sourceRoot":"","sources":["../src/browser-log.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,sBAAsB,EAAE,kBAAkB,EAAC,MAAM,gBAAgB,CAAC;AAE1E,oBAAY,UAAU,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,sBAAsB,EAAE,CAAC;IACrC,IAAI,EAAE,kBAAkB,CAAC;CACzB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser-log.js","sourceRoot":"","sources":["../src/browser-log.ts"],"names":[],"mappings":""}
|
package/dist/browser.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calculate-ffmpeg-filters.d.ts","sourceRoot":"","sources":["../src/calculate-ffmpeg-filters.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,iBAAiB,EAAE,MAAM,EAAC,MAAM,gBAAgB,CAAC;AAIzD,oBAAY,uBAAuB,GAAG;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,sBAAsB;;uBAOf,IAAI,MAAM,EAAE,iBAAiB,CAAC;SAC5C,MAAM;qBACM,MAAM;MACpB,uBAAuB,EAqC1B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calculate-ffmpeg-filters.js","sourceRoot":"","sources":["../src/calculate-ffmpeg-filters.ts"],"names":[],"mappings":";;;AAAA,8EAAuE;AAEvE,2DAAoD;AACpD,uEAAgE;AAOzD,MAAM,sBAAsB,GAAG,CAAC,EACtC,cAAc,EACd,iBAAiB,EACjB,GAAG,EACH,eAAe,GAMf,EAA6B,EAAE;IAC/B,MAAM,oBAAoB,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;QAC1D,OAAO,CACL,iBAAiB,CAAC,GAAG,CAAC,IAAA,mCAAe,EAAC,GAAG,CAAC,GAAG,CAAC,CAAuB;aACpE,QAAQ,GAAG,CAAC,CACd,CAAC;IACH,CAAC,CAAC,CAAC;IACH,OAAO,oBAAoB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACzC,MAAM,aAAa,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACxD,MAAM,cAAc,GAAG,CACtB,CAAC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,YAAY,CAAC;YACtD,GAAG,CACH,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACb,MAAM,YAAY,GAAG,iBAAiB,CAAC,GAAG,CACzC,IAAA,mCAAe,EAAC,KAAK,CAAC,GAAG,CAAC,CACL,CAAC;QACvB,MAAM,kBAAkB,GAAG,IAAA,+CAAqB,EAC/C,oBAAoB,EACpB,KAAK,CACL,CAAC;QAEF,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,eAAe,CAAC;QACpE,OAAO;YACN,MAAM,EAAE,IAAA,+CAAqB,EAAC;gBAC7B,WAAW;gBACX,QAAQ,EAAE,YAAY,CAAC,QAAQ;gBAC/B,YAAY,EAAE,KAAK,CAAC,YAAY;gBAChC,QAAQ,EAAE,aAAa;gBACvB,SAAS,EAAE,cAAc;gBACzB,kBAAkB,EAAE,kBAAkB,CAAC,MAAM;gBAC7C,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,GAAG;gBACH,YAAY,EAAE,KAAK,CAAC,YAAY;aAChC,CAAC;YACF,WAAW;SACX,CAAC;IACH,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC;AA/CW,QAAA,sBAAsB,0BA+CjC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type { Codec } from '
|
|
1
|
+
import type { Codec } from './codec';
|
|
2
2
|
export declare const canUseParallelEncoding: (codec: Codec) => boolean;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"can-use-parallel-encoding.d.ts","sourceRoot":"","sources":["../src/can-use-parallel-encoding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAY,MAAM,UAAU,CAAC;AAE1C,eAAO,MAAM,sBAAsB,UAAW,KAAK,YAMlD,CAAC"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.canUseParallelEncoding = void 0;
|
|
4
|
-
const
|
|
4
|
+
const is_audio_codec_1 = require("./is-audio-codec");
|
|
5
5
|
const canUseParallelEncoding = (codec) => {
|
|
6
|
-
if (
|
|
6
|
+
if ((0, is_audio_codec_1.isAudioCodec)(codec)) {
|
|
7
7
|
return false;
|
|
8
8
|
}
|
|
9
9
|
return codec === 'h264' || codec === 'h264-mkv' || codec === 'h265';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"can-use-parallel-encoding.js","sourceRoot":"","sources":["../src/can-use-parallel-encoding.ts"],"names":[],"mappings":";;;AAAA,uCAA0C;AAEnC,MAAM,sBAAsB,GAAG,CAAC,KAAY,EAAE,EAAE;IACtD,IAAI,oBAAS,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;QAClC,OAAO,KAAK,CAAC;KACb;IAED,OAAO,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,MAAM,CAAC;AACrE,CAAC,CAAC;AANW,QAAA,sBAAsB,0BAMjC"}
|
package/dist/codec.d.ts
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare const validCodecs: readonly ["h264", "h265", "vp8", "vp9", "mp3", "aac", "wav", "prores", "h264-mkv", "gif"];
|
|
2
|
+
export declare type Codec = typeof validCodecs[number];
|
|
3
|
+
export declare type CodecOrUndefined = Codec | undefined;
|
|
4
|
+
export declare const DEFAULT_CODEC: Codec;
|
package/dist/codec.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DEFAULT_CODEC = exports.validCodecs = void 0;
|
|
4
|
+
exports.validCodecs = [
|
|
5
|
+
'h264',
|
|
6
|
+
'h265',
|
|
7
|
+
'vp8',
|
|
8
|
+
'vp9',
|
|
9
|
+
'mp3',
|
|
10
|
+
'aac',
|
|
11
|
+
'wav',
|
|
12
|
+
'prores',
|
|
13
|
+
'h264-mkv',
|
|
14
|
+
'gif',
|
|
15
|
+
];
|
|
16
|
+
exports.DEFAULT_CODEC = 'h264';
|
package/dist/combine-videos.d.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"combine-videos.d.ts","sourceRoot":"","sources":["../src/combine-videos.ts"],"names":[],"mappings":"AAKA,OAAO,EAAC,KAAK,EAAY,MAAM,UAAU,CAAC;AAI1C,eAAO,MAAM,aAAa;WAQlB,MAAM,EAAE;iBACF,MAAM;YACX,MAAM;oBACE,MAAM,KAAK,IAAI;oBACf,MAAM;WACf,KAAK;mBA0CZ,CAAC"}
|
package/dist/combine-videos.js
CHANGED
|
@@ -8,9 +8,10 @@ exports.combineVideos = void 0;
|
|
|
8
8
|
const execa_1 = __importDefault(require("execa"));
|
|
9
9
|
const fs_1 = require("fs");
|
|
10
10
|
const path_1 = require("path");
|
|
11
|
-
const remotion_1 = require("remotion");
|
|
12
11
|
const get_audio_codec_name_1 = require("./get-audio-codec-name");
|
|
12
|
+
const is_audio_codec_1 = require("./is-audio-codec");
|
|
13
13
|
const parse_ffmpeg_progress_1 = require("./parse-ffmpeg-progress");
|
|
14
|
+
const truthy_1 = require("./truthy");
|
|
14
15
|
const combineVideos = async ({ files, filelistDir, output, onProgress, numberOfFrames, codec, fps, numberOfGifLoops, }) => {
|
|
15
16
|
var _a;
|
|
16
17
|
const fileList = files.map((p) => `file '${p}'`).join('\n');
|
|
@@ -18,8 +19,8 @@ const combineVideos = async ({ files, filelistDir, output, onProgress, numberOfF
|
|
|
18
19
|
(0, fs_1.writeFileSync)(fileListTxt, fileList);
|
|
19
20
|
try {
|
|
20
21
|
const task = (0, execa_1.default)('ffmpeg', [
|
|
21
|
-
|
|
22
|
-
|
|
22
|
+
(0, is_audio_codec_1.isAudioCodec)(codec) ? null : '-r',
|
|
23
|
+
(0, is_audio_codec_1.isAudioCodec)(codec) ? null : String(fps),
|
|
23
24
|
'-f',
|
|
24
25
|
'concat',
|
|
25
26
|
'-safe',
|
|
@@ -32,8 +33,8 @@ const combineVideos = async ({ files, filelistDir, output, onProgress, numberOfF
|
|
|
32
33
|
: typeof numberOfGifLoops === 'number'
|
|
33
34
|
? String(numberOfGifLoops)
|
|
34
35
|
: '-1',
|
|
35
|
-
|
|
36
|
-
|
|
36
|
+
(0, is_audio_codec_1.isAudioCodec)(codec) ? null : '-c:v',
|
|
37
|
+
(0, is_audio_codec_1.isAudioCodec)(codec) ? null : codec === 'gif' ? 'gif' : 'copy',
|
|
37
38
|
'-c:a',
|
|
38
39
|
(0, get_audio_codec_name_1.getAudioCodecName)(codec),
|
|
39
40
|
// Set max bitrate up to 1024kbps, will choose lower if that's too much
|
|
@@ -44,7 +45,7 @@ const combineVideos = async ({ files, filelistDir, output, onProgress, numberOfF
|
|
|
44
45
|
'-shortest',
|
|
45
46
|
'-y',
|
|
46
47
|
output,
|
|
47
|
-
].filter(
|
|
48
|
+
].filter(truthy_1.truthy));
|
|
48
49
|
(_a = task.stderr) === null || _a === void 0 ? void 0 : _a.on('data', (data) => {
|
|
49
50
|
if (onProgress) {
|
|
50
51
|
const parsed = (0, parse_ffmpeg_progress_1.parseFfmpegProgress)(data.toString());
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"combine-videos.js","sourceRoot":"","sources":["../src/combine-videos.ts"],"names":[],"mappings":";AAAA,oEAAoE;;;;;;AAEpE,kDAA0B;AAC1B,2BAAoD;AACpD,+BAA0B;AAC1B,uCAA0C;AAC1C,iEAAyD;AACzD,mEAA4D;AAErD,MAAM,aAAa,GAAG,KAAK,EAAE,EACnC,KAAK,EACL,WAAW,EACX,MAAM,EACN,UAAU,EACV,cAAc,EACd,KAAK,GAQL,EAAE,EAAE;;IACJ,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE5D,MAAM,WAAW,GAAG,IAAA,WAAI,EAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IACnD,IAAA,kBAAa,EAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAErC,IAAI;QACH,MAAM,IAAI,GAAG,IAAA,eAAK,EACjB,QAAQ,EACR;YACC,IAAI;YACJ,QAAQ;YACR,OAAO;YACP,GAAG;YACH,IAAI;YACJ,WAAW;YACX,oBAAS,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM;YAC7C,oBAAS,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM;YAC7C,MAAM;YACN,IAAA,wCAAiB,EAAC,KAAK,CAAC;YACxB,WAAW;YACX,IAAI;YACJ,MAAM;SACN,CAAC,MAAM,CAAC,oBAAS,CAAC,MAAM,CAAC,CAC1B,CAAC;QACF,MAAA,IAAI,CAAC,MAAM,0CAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;YACxC,IAAI,UAAU,EAAE;gBACf,MAAM,MAAM,GAAG,IAAA,2CAAmB,EAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACpD,IAAI,MAAM,KAAK,SAAS,EAAE;oBACzB,UAAU,CAAC,MAAM,CAAC,CAAC;iBACnB;aACD;QACF,CAAC,CAAC,CAAC;QAEH,MAAM,IAAI,CAAC;QACX,UAAU,CAAC,cAAc,CAAC,CAAC;QAC3B,CAAC,WAAM,aAAN,WAAM,cAAN,WAAM,GAAI,cAAS,CAAC,CAAC,WAAW,EAAE,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAC;KACtD;IAAC,OAAO,GAAG,EAAE;QACb,CAAC,WAAM,aAAN,WAAM,cAAN,WAAM,GAAI,cAAS,CAAC,CAAC,WAAW,EAAE,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAC;QACtD,MAAM,GAAG,CAAC;KACV;AACF,CAAC,CAAC;AAvDW,QAAA,aAAa,iBAuDxB"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Since audio or video can be base64-encoded, those can be really long strings.
|
|
3
|
+
* Since we track the `src` property for every frame, Node.JS can run out of memory easily. Instead of duplicating the src for every frame, we save memory by replacing the full base 64 encoded data with a string `same-as-[asset-id]-[frame]` referencing a previous asset with the same src.
|
|
4
|
+
*/
|
|
5
|
+
import type { TAsset } from 'remotion';
|
|
6
|
+
export declare const compressAsset: (previousAssets: TAsset[], newAsset: TAsset) => TAsset;
|
|
7
|
+
export declare const isAssetCompressed: (src: string) => boolean;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Since audio or video can be base64-encoded, those can be really long strings.
|
|
4
|
+
* Since we track the `src` property for every frame, Node.JS can run out of memory easily. Instead of duplicating the src for every frame, we save memory by replacing the full base 64 encoded data with a string `same-as-[asset-id]-[frame]` referencing a previous asset with the same src.
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.isAssetCompressed = exports.compressAsset = void 0;
|
|
8
|
+
const compressAsset = (previousAssets, newAsset) => {
|
|
9
|
+
if (newAsset.src.length < 400) {
|
|
10
|
+
return newAsset;
|
|
11
|
+
}
|
|
12
|
+
const assetWithSameSrc = previousAssets.find((a) => a.src === newAsset.src);
|
|
13
|
+
if (!assetWithSameSrc) {
|
|
14
|
+
return newAsset;
|
|
15
|
+
}
|
|
16
|
+
return {
|
|
17
|
+
...newAsset,
|
|
18
|
+
src: `same-as-${assetWithSameSrc.id}-${assetWithSameSrc.frame}`,
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
exports.compressAsset = compressAsset;
|
|
22
|
+
const isAssetCompressed = (src) => {
|
|
23
|
+
return src.startsWith('same-as');
|
|
24
|
+
};
|
|
25
|
+
exports.isAssetCompressed = isAssetCompressed;
|
package/dist/convert-to-pcm.d.ts
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import type { DownloadMap } from './assets/download-map';
|
|
2
|
+
export declare const createFfmpegComplexFilter: (filters: number, downloadMap: DownloadMap) => Promise<{
|
|
3
|
+
complexFilterFlag: [
|
|
4
|
+
string,
|
|
5
|
+
string
|
|
6
|
+
] | null;
|
|
3
7
|
cleanup: () => void;
|
|
4
8
|
}>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-ffmpeg-complex-filter.d.ts","sourceRoot":"","sources":["../src/create-ffmpeg-complex-filter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,uBAAuB,EAAC,MAAM,4BAA4B,CAAC;AAoBnE,eAAO,MAAM,yBAAyB,YAC5B,uBAAuB,EAAE,KAChC,QAAQ;IACV,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IAC3C,OAAO,EAAE,MAAM,IAAI,CAAC;CACpB,CAyBA,CAAC"}
|
|
@@ -1,23 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.createFfmpegComplexFilter = void 0;
|
|
7
|
-
const fs_1 = __importDefault(require("fs"));
|
|
8
|
-
const path_1 = __importDefault(require("path"));
|
|
9
4
|
const create_ffmpeg_merge_filter_1 = require("./create-ffmpeg-merge-filter");
|
|
10
5
|
const ffmpeg_filter_file_1 = require("./ffmpeg-filter-file");
|
|
11
|
-
const
|
|
12
|
-
const createFfmpegComplexFilter = async (filters) => {
|
|
6
|
+
const createFfmpegComplexFilter = async (filters, downloadMap) => {
|
|
13
7
|
if (filters === 0) {
|
|
14
8
|
return { complexFilterFlag: null, cleanup: () => undefined };
|
|
15
9
|
}
|
|
16
10
|
const complexFilter = (0, create_ffmpeg_merge_filter_1.createFfmpegMergeFilter)(filters);
|
|
17
|
-
const { file, cleanup } = await (0, ffmpeg_filter_file_1.makeFfmpegFilterFile)(complexFilter);
|
|
18
|
-
const tempPath = (0, tmp_dir_1.tmpDir)('remotion-complex-filter-script');
|
|
19
|
-
const filterFile = path_1.default.join(tempPath, 'complex-filter.txt');
|
|
20
|
-
await fs_1.default.promises.writeFile(filterFile, complexFilter);
|
|
11
|
+
const { file, cleanup } = await (0, ffmpeg_filter_file_1.makeFfmpegFilterFile)(complexFilter, downloadMap);
|
|
21
12
|
return {
|
|
22
13
|
complexFilterFlag: ['-filter_complex_script', file],
|
|
23
14
|
cleanup,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-ffmpeg-complex-filter.js","sourceRoot":"","sources":["../src/create-ffmpeg-complex-filter.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAoB;AACpB,gDAAwB;AAExB,uCAAiC;AAEjC,MAAM,SAAS,GAAG,CAAC,OAAkC,EAAE,EAAE;IACxD,MAAM,UAAU,GAAG,OAAO;SACxB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACd,OAAO,KAAK,KAAK,CAAC,WAAW,GAAG,CAAC;IAClC,CAAC,CAAC;SACD,IAAI,CAAC,EAAE,CAAC,CAAC;IACX,MAAM,OAAO,GAAG;QACf,uCAAuC;QACvC,UAAU,OAAO,CAAC,MAAM,EAAE;QAC1B,qDAAqD;QACrD,sBAAsB;QACtB,8CAA8C;QAC9C,kBAAkB;KAClB,CAAC;IACF,OAAO,GAAG,UAAU,QAAQ,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;AACjD,CAAC,CAAC;AAEK,MAAM,yBAAyB,GAAG,KAAK,EAC7C,OAAkC,EAIhC,EAAE;IACJ,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;QACpB,OAAO,EAAC,iBAAiB,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,EAAC,CAAC;KAC3D;IAED,MAAM,aAAa,GAAG;QACrB,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;QAC/B,SAAS,CAAC,OAAO,CAAC;KAClB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,MAAM,QAAQ,GAAG,IAAA,gBAAM,EAAC,yBAAyB,CAAC,CAAC;IACnD,MAAM,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC;IAC7D,MAAM,YAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;IAEvD,OAAO;QACN,iBAAiB,EAAE,CAAC,wBAAwB,EAAE,UAAU,CAAC;QACzD,OAAO,EAAE,GAAG,EAAE;;YACb,CAAC,MAAA,YAAE,CAAC,QAAQ,CAAC,EAAE,mCAAI,YAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;gBAC/C,SAAS,EAAE,IAAI;aACf,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBAChB,OAAO,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;gBAC9C,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACnB,OAAO,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;YAC7D,CAAC,CAAC,CAAC;QACJ,CAAC;KACD,CAAC;AACH,CAAC,CAAC;AA9BW,QAAA,yBAAyB,6BA8BpC"}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.createFfmpegMergeFilter = void 0;
|
|
4
|
-
const
|
|
4
|
+
const truthy_1 = require("./truthy");
|
|
5
5
|
const createFfmpegMergeFilter = (inputs) => {
|
|
6
6
|
const leftChannel = new Array(inputs * 2)
|
|
7
7
|
.fill(true)
|
|
8
8
|
.map((_, i) => (i % 2 === 0 ? `c${i}` : null))
|
|
9
|
-
.filter(
|
|
9
|
+
.filter(truthy_1.truthy)
|
|
10
10
|
.join('+');
|
|
11
11
|
const rightChannel = new Array(inputs * 2)
|
|
12
12
|
.fill(true)
|
|
13
13
|
.map((_, i) => (i % 2 === 1 ? `c${i}` : null))
|
|
14
|
-
.filter(
|
|
14
|
+
.filter(truthy_1.truthy)
|
|
15
15
|
.join('+');
|
|
16
16
|
return `[0:a][1:a]amerge=inputs=${inputs},pan=stereo|c0=${leftChannel}|c1=${rightChannel}[a]`;
|
|
17
17
|
};
|
package/dist/crf.d.ts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Codec } from './codec';
|
|
2
|
+
export declare type Crf = number | undefined;
|
|
3
|
+
export declare const getDefaultCrfForCodec: (codec: Codec) => number;
|
|
4
|
+
export declare const getValidCrfRanges: (codec: Codec) => [number, number];
|
|
5
|
+
export declare const validateSelectedCrfAndCodecCombination: (crf: unknown, codec: Codec) => void;
|