@remotion/renderer 3.0.3 → 3.0.6
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/calculate-asset-positions.d.ts +0 -1
- package/dist/assets/calculate-asset-positions.js +2 -6
- package/dist/assets/calculate-atempo.d.ts +1 -2
- package/dist/assets/calculate-atempo.js +3 -1
- package/dist/assets/convert-assets-to-file-urls.d.ts +0 -1
- package/dist/assets/convert-assets-to-file-urls.js +0 -1
- package/dist/assets/download-and-map-assets-to-file.d.ts +0 -2
- package/dist/assets/download-and-map-assets-to-file.js +2 -4
- package/dist/assets/download-file.d.ts +0 -1
- package/dist/assets/download-file.js +0 -1
- package/dist/assets/ffmpeg-volume-expression.d.ts +1 -3
- package/dist/assets/ffmpeg-volume-expression.js +3 -6
- package/dist/assets/flatten-volume-array.d.ts +0 -1
- package/dist/assets/flatten-volume-array.js +0 -1
- package/dist/assets/get-audio-channels.d.ts +4 -2
- package/dist/assets/get-audio-channels.js +10 -13
- package/dist/assets/read-file.d.ts +0 -1
- package/dist/assets/read-file.js +0 -1
- package/dist/assets/round-volume-to-avoid-stack-overflow.d.ts +0 -2
- package/dist/assets/round-volume-to-avoid-stack-overflow.js +4 -5
- package/dist/assets/sanitize-filename.d.ts +0 -1
- package/dist/assets/sanitize-filename.js +0 -1
- package/dist/assets/sanitize-filepath.d.ts +0 -1
- package/dist/assets/sanitize-filepath.js +0 -1
- package/dist/assets/truncate-utf8-bytes.d.ts +0 -1
- package/dist/assets/truncate-utf8-bytes.js +0 -1
- package/dist/assets/types.d.ts +0 -4
- package/dist/assets/types.js +0 -1
- package/dist/browser-log.d.ts +0 -1
- package/dist/browser-log.js +0 -1
- package/dist/calculate-ffmpeg-filters.d.ts +7 -11
- package/dist/calculate-ffmpeg-filters.js +19 -31
- package/dist/can-use-parallel-encoding.d.ts +0 -1
- package/dist/can-use-parallel-encoding.js +0 -1
- package/dist/chunk.d.ts +1 -0
- package/dist/chunk.js +11 -0
- package/dist/combine-videos.d.ts +0 -1
- package/dist/combine-videos.js +0 -1
- package/dist/convert-to-pcm.d.ts +6 -0
- package/dist/convert-to-pcm.js +20 -0
- package/dist/create-ffmpeg-complex-filter.d.ts +2 -7
- package/dist/create-ffmpeg-complex-filter.js +8 -34
- package/dist/create-ffmpeg-merge-filter.d.ts +1 -2
- package/dist/create-ffmpeg-merge-filter.js +0 -6
- package/dist/create-silent-audio.d.ts +6 -0
- package/dist/create-silent-audio.js +24 -0
- package/dist/cycle-browser-tabs.d.ts +0 -1
- package/dist/cycle-browser-tabs.js +0 -1
- package/dist/delay-render-embedded-stack.d.ts +0 -1
- package/dist/delay-render-embedded-stack.js +0 -1
- package/dist/delete-directory.d.ts +0 -1
- package/dist/delete-directory.js +7 -3
- package/dist/ensure-frames-in-order.d.ts +0 -1
- package/dist/ensure-frames-in-order.js +0 -1
- package/dist/ensure-output-directory.d.ts +0 -1
- package/dist/ensure-output-directory.js +0 -1
- package/dist/error-handling/handle-javascript-exception.d.ts +0 -2
- package/dist/error-handling/handle-javascript-exception.js +3 -5
- package/dist/error-handling/symbolicate-error.d.ts +0 -1
- package/dist/error-handling/symbolicate-error.js +0 -1
- package/dist/error-handling/symbolicateable-error.d.ts +0 -1
- package/dist/error-handling/symbolicateable-error.js +0 -1
- package/dist/ffmpeg-filter-file.d.ts +4 -0
- package/dist/ffmpeg-filter-file.js +24 -0
- package/dist/ffmpeg-flags.d.ts +0 -1
- package/dist/ffmpeg-flags.js +0 -1
- package/dist/get-audio-codec-name.d.ts +0 -1
- package/dist/get-audio-codec-name.js +0 -1
- package/dist/get-browser-instance.d.ts +0 -1
- package/dist/get-browser-instance.js +0 -1
- package/dist/get-codec-name.d.ts +0 -1
- package/dist/get-codec-name.js +0 -1
- package/dist/get-compositions.d.ts +0 -1
- package/dist/get-compositions.js +0 -1
- package/dist/get-concurrency.d.ts +0 -1
- package/dist/get-concurrency.js +0 -1
- package/dist/get-duration-from-frame-range.d.ts +0 -1
- package/dist/get-duration-from-frame-range.js +0 -1
- package/dist/get-extension-from-codec.d.ts +1 -2
- package/dist/get-extension-from-codec.js +0 -1
- package/dist/get-extension-of-filename.d.ts +1 -0
- package/dist/get-extension-of-filename.js +11 -0
- package/dist/get-frame-to-render.d.ts +0 -1
- package/dist/get-frame-to-render.js +0 -1
- package/dist/get-local-browser-executable.d.ts +0 -1
- package/dist/get-local-browser-executable.js +0 -1
- package/dist/get-port.d.ts +0 -1
- package/dist/get-port.js +0 -1
- package/dist/get-prores-profile-name.d.ts +0 -1
- package/dist/get-prores-profile-name.js +0 -1
- package/dist/image-format.d.ts +0 -1
- package/dist/image-format.js +0 -1
- package/dist/index.d.ts +2 -9
- package/dist/index.js +2 -3
- package/dist/is-serve-url.d.ts +0 -1
- package/dist/is-serve-url.js +0 -1
- package/dist/legacy-webpack-config.d.ts +0 -1
- package/dist/legacy-webpack-config.js +0 -1
- package/dist/make-assets-download-dir.d.ts +0 -1
- package/dist/make-assets-download-dir.js +0 -1
- package/dist/merge-audio-track.d.ts +2 -3
- package/dist/merge-audio-track.js +49 -12
- package/dist/normalize-serve-url.d.ts +0 -1
- package/dist/normalize-serve-url.js +0 -1
- package/dist/open-browser.d.ts +0 -1
- package/dist/open-browser.js +0 -1
- package/dist/p-limit.d.ts +1 -0
- package/dist/p-limit.js +57 -0
- package/dist/parse-browser-error-stack.d.ts +0 -1
- package/dist/parse-browser-error-stack.js +0 -1
- package/dist/parse-ffmpeg-progress.d.ts +0 -1
- package/dist/parse-ffmpeg-progress.js +0 -1
- package/dist/pool.d.ts +0 -1
- package/dist/pool.js +0 -1
- package/dist/prepare-server.d.ts +0 -1
- package/dist/prepare-server.js +0 -1
- package/dist/preprocess-audio-track.d.ts +5 -5
- package/dist/preprocess-audio-track.js +28 -18
- package/dist/prespawn-ffmpeg.d.ts +2 -2
- package/dist/prespawn-ffmpeg.js +0 -16
- package/dist/provide-screenshot.d.ts +0 -1
- package/dist/provide-screenshot.js +0 -1
- package/dist/puppeteer-evaluate.d.ts +0 -2
- package/dist/puppeteer-evaluate.js +3 -4
- package/dist/puppeteer-screenshot.d.ts +0 -1
- package/dist/puppeteer-screenshot.js +0 -1
- package/dist/render-frames.d.ts +1 -9
- package/dist/render-frames.js +2 -4
- package/dist/render-media.d.ts +0 -1
- package/dist/render-media.js +3 -1
- package/dist/render-still.d.ts +1 -2
- package/dist/render-still.js +0 -1
- package/dist/resolve-asset-src.d.ts +0 -1
- package/dist/resolve-asset-src.js +0 -1
- package/dist/sample-rate.d.ts +0 -1
- package/dist/sample-rate.js +0 -1
- package/dist/screenshot-dom-element.d.ts +0 -1
- package/dist/screenshot-dom-element.js +0 -1
- package/dist/screenshot-task.d.ts +0 -1
- package/dist/screenshot-task.js +0 -1
- package/dist/seek-to-frame.d.ts +0 -1
- package/dist/seek-to-frame.js +0 -1
- package/dist/serve-static.d.ts +0 -1
- package/dist/serve-static.js +0 -1
- package/dist/set-props-and-env.d.ts +0 -1
- package/dist/set-props-and-env.js +0 -1
- package/dist/stitch-frames-to-video.d.ts +5 -6
- package/dist/stitch-frames-to-video.js +104 -78
- package/dist/stringify-ffmpeg-filter.d.ts +5 -6
- package/dist/stringify-ffmpeg-filter.js +29 -11
- package/dist/symbolicate-stacktrace.d.ts +2 -4
- package/dist/symbolicate-stacktrace.js +1 -3
- package/dist/tmp-dir.d.ts +0 -1
- package/dist/tmp-dir.js +21 -4
- package/dist/types.d.ts +0 -1
- package/dist/types.js +0 -1
- package/dist/validate-even-dimensions-with-codec.d.ts +0 -1
- package/dist/validate-even-dimensions-with-codec.js +0 -1
- package/dist/validate-ffmpeg.d.ts +0 -2
- package/dist/validate-ffmpeg.js +2 -4
- package/dist/validate-output-filename.d.ts +2 -0
- package/dist/validate-output-filename.js +52 -0
- package/dist/validate-puppeteer-timeout.d.ts +0 -1
- package/dist/validate-puppeteer-timeout.js +0 -1
- package/dist/validate-scale.d.ts +0 -1
- package/dist/validate-scale.js +0 -1
- package/package.json +4 -5
- package/dist/add-silent-audio-if-necessary.d.ts +0 -8
- package/dist/add-silent-audio-if-necessary.d.ts.map +0 -1
- package/dist/add-silent-audio-if-necessary.js +0 -51
- package/dist/add-silent-audio-if-necessary.js.map +0 -1
- package/dist/assets/asset-is-used-at-time.d.ts +0 -3
- package/dist/assets/asset-is-used-at-time.d.ts.map +0 -1
- package/dist/assets/asset-is-used-at-time.js +0 -8
- package/dist/assets/asset-is-used-at-time.js.map +0 -1
- 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/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-asset-audio-details.d.ts +0 -5
- package/dist/assets/get-asset-audio-details.d.ts.map +0 -1
- package/dist/assets/get-asset-audio-details.js +0 -21
- package/dist/assets/get-asset-audio-details.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/get-simulatenous-assets.d.ts +0 -3
- package/dist/assets/get-simulatenous-assets.d.ts.map +0 -1
- package/dist/assets/get-simulatenous-assets.js +0 -14
- package/dist/assets/get-simulatenous-assets.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/split-assets-into-segments.d.ts +0 -6
- package/dist/assets/split-assets-into-segments.d.ts.map +0 -1
- package/dist/assets/split-assets-into-segments.js +0 -89
- package/dist/assets/split-assets-into-segments.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/assets-to-ffmpeg-inputs.d.ts +0 -10
- package/dist/assets-to-ffmpeg-inputs.d.ts.map +0 -1
- package/dist/assets-to-ffmpeg-inputs.js +0 -15
- package/dist/assets-to-ffmpeg-inputs.js.map +0 -1
- 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/combine-videos.d.ts.map +0 -1
- package/dist/combine-videos.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/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-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-extension-from-codec.d.ts.map +0 -1
- package/dist/get-extension-from-codec.js.map +0 -1
- 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/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/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/render.d.ts +0 -45
- package/dist/render.d.ts.map +0 -1
- package/dist/render.js +0 -245
- package/dist/render.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-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/stitcher.d.ts +0 -32
- package/dist/stitcher.d.ts.map +0 -1
- package/dist/stitcher.js +0 -204
- package/dist/stitcher.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-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
|
@@ -5,58 +5,70 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.stitchFramesToVideo = exports.spawnFfmpeg = void 0;
|
|
7
7
|
const execa_1 = __importDefault(require("execa"));
|
|
8
|
+
const fs_1 = __importDefault(require("fs"));
|
|
9
|
+
const path_1 = __importDefault(require("path"));
|
|
8
10
|
const remotion_1 = require("remotion");
|
|
9
|
-
const assets_to_ffmpeg_inputs_1 = require("./assets-to-ffmpeg-inputs");
|
|
10
11
|
const calculate_asset_positions_1 = require("./assets/calculate-asset-positions");
|
|
11
12
|
const convert_assets_to_file_urls_1 = require("./assets/convert-assets-to-file-urls");
|
|
12
13
|
const download_and_map_assets_to_file_1 = require("./assets/download-and-map-assets-to-file");
|
|
13
|
-
const
|
|
14
|
-
const calculate_ffmpeg_filters_1 = require("./calculate-ffmpeg-filters");
|
|
15
|
-
const create_ffmpeg_complex_filter_1 = require("./create-ffmpeg-complex-filter");
|
|
14
|
+
const delete_directory_1 = require("./delete-directory");
|
|
16
15
|
const get_audio_codec_name_1 = require("./get-audio-codec-name");
|
|
17
16
|
const get_codec_name_1 = require("./get-codec-name");
|
|
18
17
|
const get_prores_profile_name_1 = require("./get-prores-profile-name");
|
|
18
|
+
const merge_audio_track_1 = require("./merge-audio-track");
|
|
19
19
|
const parse_ffmpeg_progress_1 = require("./parse-ffmpeg-progress");
|
|
20
|
-
const
|
|
20
|
+
const preprocess_audio_track_1 = require("./preprocess-audio-track");
|
|
21
|
+
const tmp_dir_1 = require("./tmp-dir");
|
|
21
22
|
const validate_even_dimensions_with_codec_1 = require("./validate-even-dimensions-with-codec");
|
|
22
23
|
const validate_ffmpeg_1 = require("./validate-ffmpeg");
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
24
|
+
const packageJsonPath = path_1.default.join(__dirname, '..', 'package.json');
|
|
25
|
+
const packageJson = fs_1.default.existsSync(packageJsonPath)
|
|
26
|
+
? JSON.parse(fs_1.default.readFileSync(packageJsonPath, 'utf-8'))
|
|
27
|
+
: null;
|
|
28
|
+
const getAssetsData = async ({ assets, downloadDir, onDownload, fps, expectedFrames, verbose, ffmpegExecutable, onProgress, }) => {
|
|
28
29
|
const fileUrlAssets = await (0, convert_assets_to_file_urls_1.convertAssetsToFileUrls)({
|
|
29
|
-
assets
|
|
30
|
-
downloadDir
|
|
31
|
-
onDownload:
|
|
30
|
+
assets,
|
|
31
|
+
downloadDir,
|
|
32
|
+
onDownload: onDownload !== null && onDownload !== void 0 ? onDownload : (() => () => undefined),
|
|
32
33
|
});
|
|
33
34
|
(0, download_and_map_assets_to_file_1.markAllAssetsAsDownloaded)();
|
|
34
35
|
const assetPositions = (0, calculate_asset_positions_1.calculateAssetPositions)(fileUrlAssets);
|
|
35
|
-
|
|
36
|
-
const assetAudioDetails = await (0, get_asset_audio_details_1.getAssetAudioDetails)({
|
|
37
|
-
assetPaths: assetPositions.map((a) => a.src),
|
|
38
|
-
});
|
|
39
|
-
const filters = (0, calculate_ffmpeg_filters_1.calculateFfmpegFilters)({
|
|
40
|
-
assetAudioDetails,
|
|
41
|
-
assetPositions,
|
|
42
|
-
fps: options.fps,
|
|
43
|
-
videoTrackCount: isAudioOnly ? 0 : 1,
|
|
44
|
-
});
|
|
45
|
-
if (options.verbose) {
|
|
36
|
+
if (verbose) {
|
|
46
37
|
console.log('asset positions', assetPositions);
|
|
47
38
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
return {
|
|
53
|
-
complexFilterFlag,
|
|
54
|
-
cleanup,
|
|
55
|
-
assetPositions,
|
|
39
|
+
const tempPath = (0, tmp_dir_1.tmpDir)('remotion-audio-mixing');
|
|
40
|
+
const preprocessProgress = new Array(assetPositions.length).fill(0);
|
|
41
|
+
const updateProgress = () => {
|
|
42
|
+
onProgress(preprocessProgress.reduce((a, b) => a + b, 0) / assetPositions.length);
|
|
56
43
|
};
|
|
44
|
+
const preprocessed = (await Promise.all(assetPositions.map(async (asset, index) => {
|
|
45
|
+
const filterFile = path_1.default.join(tempPath, `${index}.wav`);
|
|
46
|
+
const result = await (0, preprocess_audio_track_1.preprocessAudioTrack)({
|
|
47
|
+
ffmpegExecutable: ffmpegExecutable !== null && ffmpegExecutable !== void 0 ? ffmpegExecutable : null,
|
|
48
|
+
outName: filterFile,
|
|
49
|
+
asset,
|
|
50
|
+
expectedFrames,
|
|
51
|
+
fps,
|
|
52
|
+
});
|
|
53
|
+
preprocessProgress[index] = 1;
|
|
54
|
+
updateProgress();
|
|
55
|
+
return result;
|
|
56
|
+
}))).filter(remotion_1.Internals.truthy);
|
|
57
|
+
const outName = path_1.default.join(tempPath, `audio.wav`);
|
|
58
|
+
await (0, merge_audio_track_1.mergeAudioTrack)({
|
|
59
|
+
ffmpegExecutable: ffmpegExecutable !== null && ffmpegExecutable !== void 0 ? ffmpegExecutable : null,
|
|
60
|
+
files: preprocessed,
|
|
61
|
+
outName,
|
|
62
|
+
numberOfSeconds: Number((expectedFrames / fps).toFixed(3)),
|
|
63
|
+
});
|
|
64
|
+
onProgress(1);
|
|
65
|
+
preprocessed.forEach((p) => {
|
|
66
|
+
(0, delete_directory_1.deleteDirectory)(p);
|
|
67
|
+
});
|
|
68
|
+
return outName;
|
|
57
69
|
};
|
|
58
70
|
const spawnFfmpeg = async (options) => {
|
|
59
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
71
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
|
|
60
72
|
remotion_1.Internals.validateDimension(options.height, 'height', 'passed to `stitchFramesToVideo()`');
|
|
61
73
|
remotion_1.Internals.validateDimension(options.width, 'width', 'passed to `stitchFramesToVideo()`');
|
|
62
74
|
remotion_1.Internals.validateFps(options.fps, 'passed to `stitchFramesToVideo()`');
|
|
@@ -89,55 +101,73 @@ const spawnFfmpeg = async (options) => {
|
|
|
89
101
|
}
|
|
90
102
|
remotion_1.Internals.validateSelectedCrfAndCodecCombination(crf, codec);
|
|
91
103
|
remotion_1.Internals.validateSelectedPixelFormatAndCodecCombination(pixelFormat, codec);
|
|
92
|
-
const { complexFilterFlag, cleanup, assetPositions } = await getAssetsData(options);
|
|
93
104
|
const expectedFrames = options.assetsInfo.assets.length;
|
|
105
|
+
const updateProgress = (preStitchProgress, muxProgress) => {
|
|
106
|
+
var _a;
|
|
107
|
+
const totalFrameProgress = 0.5 * preStitchProgress * expectedFrames + muxProgress * 0.5;
|
|
108
|
+
(_a = options.onProgress) === null || _a === void 0 ? void 0 : _a.call(options, Math.round(totalFrameProgress));
|
|
109
|
+
};
|
|
110
|
+
const audio = await getAssetsData({
|
|
111
|
+
assets: options.assetsInfo.assets,
|
|
112
|
+
downloadDir: options.assetsInfo.downloadDir,
|
|
113
|
+
onDownload: options.onDownload,
|
|
114
|
+
fps: options.fps,
|
|
115
|
+
expectedFrames,
|
|
116
|
+
verbose: (_f = options.verbose) !== null && _f !== void 0 ? _f : false,
|
|
117
|
+
ffmpegExecutable: (_g = options.ffmpegExecutable) !== null && _g !== void 0 ? _g : null,
|
|
118
|
+
onProgress: (prog) => updateProgress(prog, 0),
|
|
119
|
+
});
|
|
120
|
+
if (isAudioOnly) {
|
|
121
|
+
if (!audioCodecName) {
|
|
122
|
+
throw new TypeError('exporting audio but has no audio codec name. Report this in the Remotion repo.');
|
|
123
|
+
}
|
|
124
|
+
await (0, execa_1.default)('ffmpeg', [
|
|
125
|
+
'-i',
|
|
126
|
+
audio,
|
|
127
|
+
'-c:a',
|
|
128
|
+
audioCodecName,
|
|
129
|
+
options.force ? '-y' : null,
|
|
130
|
+
options.outputLocation,
|
|
131
|
+
].filter(remotion_1.Internals.truthy));
|
|
132
|
+
(_h = options.onProgress) === null || _h === void 0 ? void 0 : _h.call(options, expectedFrames);
|
|
133
|
+
return {
|
|
134
|
+
getLogs: () => '',
|
|
135
|
+
task: Promise.resolve(),
|
|
136
|
+
};
|
|
137
|
+
}
|
|
94
138
|
const ffmpegArgs = [
|
|
95
139
|
['-r', String(options.fps)],
|
|
96
|
-
...(((
|
|
97
|
-
? [['-i', (
|
|
98
|
-
:
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
fps: options.fps,
|
|
110
|
-
frameCount: options.assetsInfo.assets.length,
|
|
111
|
-
}),
|
|
112
|
-
encoderName
|
|
113
|
-
? // -c:v is the same as -vcodec as -codec:video
|
|
114
|
-
// and specified the video codec.
|
|
115
|
-
['-c:v', encoderName]
|
|
116
|
-
: // If only exporting audio, we drop the video explicitly
|
|
117
|
-
['-vn'],
|
|
118
|
-
...(((_h = options.internalOptions) === null || _h === void 0 ? void 0 : _h.preEncodedFileLocation)
|
|
140
|
+
...(((_j = options.internalOptions) === null || _j === void 0 ? void 0 : _j.preEncodedFileLocation)
|
|
141
|
+
? [['-i', (_k = options.internalOptions) === null || _k === void 0 ? void 0 : _k.preEncodedFileLocation]]
|
|
142
|
+
: [
|
|
143
|
+
['-f', 'image2'],
|
|
144
|
+
['-s', `${options.width}x${options.height}`],
|
|
145
|
+
['-start_number', String(options.assetsInfo.firstFrameIndex)],
|
|
146
|
+
['-i', options.assetsInfo.imageSequenceName],
|
|
147
|
+
]),
|
|
148
|
+
['-i', audio],
|
|
149
|
+
// -c:v is the same as -vcodec as -codec:video
|
|
150
|
+
// and specified the video codec.
|
|
151
|
+
['-c:v', encoderName],
|
|
152
|
+
...(((_l = options.internalOptions) === null || _l === void 0 ? void 0 : _l.preEncodedFileLocation)
|
|
119
153
|
? []
|
|
120
154
|
: [
|
|
121
155
|
proResProfileName ? ['-profile:v', proResProfileName] : null,
|
|
122
156
|
supportsCrf ? ['-crf', String(crf)] : null,
|
|
123
|
-
|
|
157
|
+
['-pix_fmt', pixelFormat],
|
|
124
158
|
// Without explicitly disabling auto-alt-ref,
|
|
125
159
|
// transparent WebM generation doesn't work
|
|
126
160
|
pixelFormat === 'yuva420p' ? ['-auto-alt-ref', '0'] : null,
|
|
127
|
-
|
|
161
|
+
['-b:v', '1M'],
|
|
128
162
|
]),
|
|
129
|
-
'-ar',
|
|
130
|
-
String(sample_rate_1.DEFAULT_SAMPLE_RATE),
|
|
131
|
-
// Stereo sound, even force mono to be stereo
|
|
132
|
-
// Otherwise mixing mono + stereo ends up speeding up the audio
|
|
133
|
-
'-ac',
|
|
134
|
-
'2',
|
|
135
163
|
audioCodecName ? ['-c:a', audioCodecName] : null,
|
|
136
|
-
complexFilterFlag,
|
|
137
|
-
// Ignore audio from image sequence
|
|
138
|
-
isAudioOnly ? null : ['-map', '0:v'],
|
|
139
164
|
// Ignore metadata that may come from remote media
|
|
140
|
-
|
|
165
|
+
['-map_metadata', '-1'],
|
|
166
|
+
[
|
|
167
|
+
'-metadata',
|
|
168
|
+
`comment=` +
|
|
169
|
+
[`Made with Remotion`, packageJson ? packageJson.version : null].join(' '),
|
|
170
|
+
],
|
|
141
171
|
options.force ? '-y' : null,
|
|
142
172
|
options.outputLocation,
|
|
143
173
|
];
|
|
@@ -146,12 +176,12 @@ const spawnFfmpeg = async (options) => {
|
|
|
146
176
|
console.log(ffmpegArgs);
|
|
147
177
|
}
|
|
148
178
|
const ffmpegString = ffmpegArgs.flat(2).filter(Boolean);
|
|
149
|
-
const task = (0, execa_1.default)((
|
|
179
|
+
const task = (0, execa_1.default)((_m = options.ffmpegExecutable) !== null && _m !== void 0 ? _m : 'ffmpeg', ffmpegString, {
|
|
150
180
|
cwd: options.dir,
|
|
151
181
|
});
|
|
152
182
|
let ffmpegOutput = '';
|
|
153
183
|
let isFinished = false;
|
|
154
|
-
(
|
|
184
|
+
(_o = task.stderr) === null || _o === void 0 ? void 0 : _o.on('data', (data) => {
|
|
155
185
|
var _a;
|
|
156
186
|
const str = data.toString();
|
|
157
187
|
ffmpegOutput += str;
|
|
@@ -169,24 +199,20 @@ const spawnFfmpeg = async (options) => {
|
|
|
169
199
|
isFinished = true;
|
|
170
200
|
}
|
|
171
201
|
}
|
|
172
|
-
|
|
202
|
+
updateProgress(1, parsed);
|
|
173
203
|
}
|
|
174
204
|
}
|
|
175
205
|
});
|
|
176
|
-
return { task,
|
|
206
|
+
return { task, getLogs: () => ffmpegOutput };
|
|
177
207
|
};
|
|
178
208
|
exports.spawnFfmpeg = spawnFfmpeg;
|
|
179
209
|
const stitchFramesToVideo = async (options) => {
|
|
180
|
-
const { task,
|
|
210
|
+
const { task, getLogs } = await (0, exports.spawnFfmpeg)(options);
|
|
181
211
|
try {
|
|
182
212
|
await task;
|
|
183
213
|
}
|
|
184
214
|
catch (err) {
|
|
185
215
|
throw new Error(getLogs());
|
|
186
216
|
}
|
|
187
|
-
finally {
|
|
188
|
-
cleanup === null || cleanup === void 0 ? void 0 : cleanup();
|
|
189
|
-
}
|
|
190
217
|
};
|
|
191
218
|
exports.stitchFramesToVideo = stitchFramesToVideo;
|
|
192
|
-
//# sourceMappingURL=stitch-frames-to-video.js.map
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import { AssetVolume } from './assets/types';
|
|
2
|
-
export declare const stringifyFfmpegFilter: ({
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
trimRight: string;
|
|
2
|
+
export declare const stringifyFfmpegFilter: ({ trimLeft, trimRight, channels, startInVideo, volume, fps, playbackRate, durationInFrames, assetDuration, }: {
|
|
3
|
+
trimLeft: number;
|
|
4
|
+
trimRight: number;
|
|
6
5
|
channels: number;
|
|
7
6
|
startInVideo: number;
|
|
8
|
-
simulatenousAssets: number;
|
|
9
7
|
volume: AssetVolume;
|
|
10
8
|
fps: number;
|
|
9
|
+
durationInFrames: number;
|
|
11
10
|
playbackRate: number;
|
|
11
|
+
assetDuration: number | null;
|
|
12
12
|
}) => string;
|
|
13
|
-
//# sourceMappingURL=stringify-ffmpeg-filter.d.ts.map
|
|
@@ -4,31 +4,49 @@ exports.stringifyFfmpegFilter = void 0;
|
|
|
4
4
|
const remotion_1 = require("remotion");
|
|
5
5
|
const calculate_atempo_1 = require("./assets/calculate-atempo");
|
|
6
6
|
const ffmpeg_volume_expression_1 = require("./assets/ffmpeg-volume-expression");
|
|
7
|
-
const
|
|
8
|
-
|
|
7
|
+
const sample_rate_1 = require("./sample-rate");
|
|
8
|
+
const stringifyFfmpegFilter = ({ trimLeft, trimRight, channels, startInVideo, volume, fps, playbackRate, durationInFrames, assetDuration, }) => {
|
|
9
|
+
const startInVideoSeconds = startInVideo / fps;
|
|
9
10
|
const volumeFilter = (0, ffmpeg_volume_expression_1.ffmpegVolumeExpression)({
|
|
10
11
|
volume,
|
|
11
|
-
multiplier: simulatenousAssets,
|
|
12
12
|
startInVideo,
|
|
13
13
|
fps,
|
|
14
14
|
});
|
|
15
|
-
|
|
15
|
+
// Avoid setting filters if possible, as combining them can create noise
|
|
16
|
+
const chunkLength = durationInFrames / fps;
|
|
17
|
+
const actualTrimRight = assetDuration
|
|
18
|
+
? Math.min(trimRight, assetDuration)
|
|
19
|
+
: trimRight;
|
|
20
|
+
const padAtEnd = chunkLength - (actualTrimRight - trimLeft) - startInVideoSeconds;
|
|
21
|
+
return (`[0:a]` +
|
|
16
22
|
[
|
|
17
|
-
|
|
18
|
-
|
|
23
|
+
`aformat=sample_fmts=s32:sample_rates=${sample_rate_1.DEFAULT_SAMPLE_RATE}`,
|
|
24
|
+
// Order matters! First trim the audio
|
|
25
|
+
`atrim=${trimLeft.toFixed(6)}:${actualTrimRight.toFixed(6)}`,
|
|
26
|
+
// then set the tempo
|
|
27
|
+
(0, calculate_atempo_1.calculateATempo)(playbackRate),
|
|
19
28
|
// For n channels, we delay n + 1 channels.
|
|
20
29
|
// This is because `ffprobe` for some audio files reports the wrong amount
|
|
21
30
|
// of channels.
|
|
22
31
|
// This should be fine because FFMPEG documentation states:
|
|
23
32
|
// "Unused delays will be silently ignored."
|
|
24
33
|
// https://ffmpeg.org/ffmpeg-filters.html#adelay
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
34
|
+
startInVideoSeconds === 0
|
|
35
|
+
? null
|
|
36
|
+
: `adelay=${new Array(channels + 1)
|
|
37
|
+
.fill((startInVideoSeconds * 1000).toFixed(0))
|
|
38
|
+
.join('|')}`,
|
|
39
|
+
// set the volume if needed
|
|
40
|
+
volumeFilter.value === '1'
|
|
41
|
+
? null
|
|
42
|
+
: `volume=${volumeFilter.value}:eval=${volumeFilter.eval}`,
|
|
43
|
+
// Only in the end, we pad to the full length.
|
|
44
|
+
padAtEnd > 0.0000001
|
|
45
|
+
? 'apad=pad_len=' + Math.round(padAtEnd * sample_rate_1.DEFAULT_SAMPLE_RATE)
|
|
46
|
+
: null,
|
|
28
47
|
]
|
|
29
48
|
.filter(remotion_1.Internals.truthy)
|
|
30
49
|
.join(',') +
|
|
31
|
-
`[
|
|
50
|
+
`[a0]`);
|
|
32
51
|
};
|
|
33
52
|
exports.stringifyFfmpegFilter = stringifyFfmpegFilter;
|
|
34
|
-
//# sourceMappingURL=stringify-ffmpeg-filter.js.map
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
import { SourceMapConsumer } from 'source-map';
|
|
2
1
|
import { UnsymbolicatedStackFrame } from './parse-browser-error-stack';
|
|
3
|
-
|
|
4
|
-
export declare type ScriptLine = {
|
|
2
|
+
declare type ScriptLine = {
|
|
5
3
|
lineNumber: number;
|
|
6
4
|
content: string;
|
|
7
5
|
highlight: boolean;
|
|
@@ -14,4 +12,4 @@ export declare type SymbolicatedStackFrame = {
|
|
|
14
12
|
originalScriptCode: ScriptLine[] | null;
|
|
15
13
|
};
|
|
16
14
|
export declare const symbolicateStackTrace: (frames: UnsymbolicatedStackFrame[]) => Promise<SymbolicatedStackFrame[]>;
|
|
17
|
-
|
|
15
|
+
export {};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.symbolicateStackTrace =
|
|
3
|
+
exports.symbolicateStackTrace = void 0;
|
|
4
4
|
const remotion_1 = require("remotion");
|
|
5
5
|
const source_map_1 = require("source-map");
|
|
6
6
|
const read_file_1 = require("./assets/read-file");
|
|
@@ -38,7 +38,6 @@ async function getSourceMap(fileUri, fileContents) {
|
|
|
38
38
|
const obj = await fetchUrl(url);
|
|
39
39
|
return new source_map_1.SourceMapConsumer(obj);
|
|
40
40
|
}
|
|
41
|
-
exports.getSourceMap = getSourceMap;
|
|
42
41
|
const fetchUrl = async (url) => {
|
|
43
42
|
const res = await (0, read_file_1.readFile)(url);
|
|
44
43
|
return new Promise((resolve, reject) => {
|
|
@@ -109,4 +108,3 @@ const symbolicateStackTrace = async (frames) => {
|
|
|
109
108
|
.filter(remotion_1.Internals.truthy);
|
|
110
109
|
};
|
|
111
110
|
exports.symbolicateStackTrace = symbolicateStackTrace;
|
|
112
|
-
//# sourceMappingURL=symbolicate-stacktrace.js.map
|
package/dist/tmp-dir.d.ts
CHANGED
package/dist/tmp-dir.js
CHANGED
|
@@ -1,11 +1,29 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
2
21
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
22
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
23
|
};
|
|
5
24
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
25
|
exports.tmpDir = void 0;
|
|
7
|
-
const fs_1 =
|
|
8
|
-
const fs_2 = require("fs");
|
|
26
|
+
const fs_1 = __importStar(require("fs"));
|
|
9
27
|
const os_1 = __importDefault(require("os"));
|
|
10
28
|
const path_1 = __importDefault(require("path"));
|
|
11
29
|
const alphabet = 'abcdefghijklmnopqrstuvwxyz0123456789';
|
|
@@ -26,8 +44,7 @@ const tmpDir = (str) => {
|
|
|
26
44
|
force: true,
|
|
27
45
|
});
|
|
28
46
|
}
|
|
29
|
-
(0,
|
|
47
|
+
(0, fs_1.mkdirSync)(newDir);
|
|
30
48
|
return newDir;
|
|
31
49
|
};
|
|
32
50
|
exports.tmpDir = tmpDir;
|
|
33
|
-
//# sourceMappingURL=tmp-dir.js.map
|
package/dist/types.d.ts
CHANGED
package/dist/types.js
CHANGED
|
@@ -1,4 +1,2 @@
|
|
|
1
1
|
export declare const binaryExists: (name: 'ffmpeg' | 'brew', localFFmpeg: string | null) => Promise<boolean>;
|
|
2
|
-
export declare const isHomebrewInstalled: () => Promise<boolean>;
|
|
3
2
|
export declare const validateFfmpeg: (customFfmpegBinary: string | null) => Promise<void>;
|
|
4
|
-
//# sourceMappingURL=validate-ffmpeg.d.ts.map
|
package/dist/validate-ffmpeg.js
CHANGED
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.validateFfmpeg = exports.
|
|
6
|
+
exports.validateFfmpeg = exports.binaryExists = void 0;
|
|
7
7
|
const execa_1 = __importDefault(require("execa"));
|
|
8
8
|
const fs_1 = require("fs");
|
|
9
9
|
const os_1 = __importDefault(require("os"));
|
|
@@ -39,7 +39,6 @@ exports.binaryExists = binaryExists;
|
|
|
39
39
|
const isHomebrewInstalled = () => {
|
|
40
40
|
return (0, exports.binaryExists)('brew', null);
|
|
41
41
|
};
|
|
42
|
-
exports.isHomebrewInstalled = isHomebrewInstalled;
|
|
43
42
|
const validateFfmpeg = async (customFfmpegBinary) => {
|
|
44
43
|
const ffmpegExists = await (0, exports.binaryExists)('ffmpeg', customFfmpegBinary);
|
|
45
44
|
if (!ffmpegExists) {
|
|
@@ -49,7 +48,7 @@ const validateFfmpeg = async (customFfmpegBinary) => {
|
|
|
49
48
|
process.exit(1);
|
|
50
49
|
}
|
|
51
50
|
console.error('It looks like FFMPEG is not installed');
|
|
52
|
-
if (os_1.default.platform() === 'darwin' && (await
|
|
51
|
+
if (os_1.default.platform() === 'darwin' && (await isHomebrewInstalled())) {
|
|
53
52
|
console.error('Run `brew install ffmpeg` to install ffmpeg');
|
|
54
53
|
}
|
|
55
54
|
else if (os_1.default.platform() === 'win32') {
|
|
@@ -72,4 +71,3 @@ const validateFfmpeg = async (customFfmpegBinary) => {
|
|
|
72
71
|
}
|
|
73
72
|
};
|
|
74
73
|
exports.validateFfmpeg = validateFfmpeg;
|
|
75
|
-
//# sourceMappingURL=validate-ffmpeg.js.map
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validateOutputFilename = void 0;
|
|
4
|
+
const validateOutputFilename = (codec, extension) => {
|
|
5
|
+
if (codec === 'h264') {
|
|
6
|
+
if (extension !== 'mp4' && extension !== 'mkv') {
|
|
7
|
+
throw new TypeError('When using the H264 codec, the output filename must end in .mp4 or .mkv.');
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
if (codec === 'h264-mkv') {
|
|
11
|
+
if (extension !== 'mkv') {
|
|
12
|
+
throw new TypeError('When using the "h264-mkv" codec, the output filename must end in ".mkv".');
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
if (codec === 'h265') {
|
|
16
|
+
if (extension !== 'mp4' && extension !== 'hevc') {
|
|
17
|
+
throw new TypeError('When using H265 codec, the output filename must end in .mp4 or .hevc.');
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
if (codec === 'vp8' || codec === 'vp9') {
|
|
21
|
+
if (extension !== 'webm') {
|
|
22
|
+
throw new TypeError(`When using the ${codec.toUpperCase()} codec, the output filename must end in .webm.`);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
if (codec === 'prores') {
|
|
26
|
+
const allowedProResExtensions = ['mov', 'mkv', 'mxf'];
|
|
27
|
+
if (!extension || !allowedProResExtensions.includes(extension)) {
|
|
28
|
+
throw new TypeError(`When using the 'prores' codec, the output must end in one of those extensions: ${allowedProResExtensions
|
|
29
|
+
.map((a) => `.${a}`)
|
|
30
|
+
.join(', ')}`);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
if (codec === 'mp3') {
|
|
34
|
+
if (extension !== 'mp3') {
|
|
35
|
+
throw new TypeError("When using the 'mp3' codec, the output must end in .mp3");
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
if (codec === 'aac') {
|
|
39
|
+
const allowedAacExtensions = ['aac', '3gp', 'm4a', 'm4b', 'mpg', 'mpeg'];
|
|
40
|
+
if (!extension || !allowedAacExtensions.includes(extension)) {
|
|
41
|
+
throw new TypeError(`When using the 'aac' codec, the output must end in one of those extensions: ${allowedAacExtensions
|
|
42
|
+
.map((a) => `.${a}`)
|
|
43
|
+
.join(', ')}`);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
if (codec === 'wav') {
|
|
47
|
+
if (extension !== 'wav') {
|
|
48
|
+
throw new TypeError("When using the 'wav' codec, the output location must end in .wav.");
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
exports.validateOutputFilename = validateOutputFilename;
|
package/dist/validate-scale.d.ts
CHANGED
package/dist/validate-scale.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@remotion/renderer",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.6",
|
|
4
4
|
"description": "Renderer for Remotion",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -20,11 +20,10 @@
|
|
|
20
20
|
"url": "https://github.com/remotion-dev/remotion/issues"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@remotion/bundler": "3.0.
|
|
23
|
+
"@remotion/bundler": "3.0.6",
|
|
24
24
|
"execa": "5.1.1",
|
|
25
|
-
"p-limit": "3.1.0",
|
|
26
25
|
"puppeteer-core": "13.5.1",
|
|
27
|
-
"remotion": "3.0.
|
|
26
|
+
"remotion": "3.0.6",
|
|
28
27
|
"serve-handler": "6.1.3",
|
|
29
28
|
"source-map": "^0.8.0-beta.0"
|
|
30
29
|
},
|
|
@@ -61,5 +60,5 @@
|
|
|
61
60
|
"publishConfig": {
|
|
62
61
|
"access": "public"
|
|
63
62
|
},
|
|
64
|
-
"gitHead": "
|
|
63
|
+
"gitHead": "507118b6edd67a8e749a81ae19237a55682cd378"
|
|
65
64
|
}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { Codec } from 'remotion';
|
|
2
|
-
export declare const addSilentAudioIfNecessary: ({ durationInFrames, fps, outputLocation, chunkCodec, }: {
|
|
3
|
-
outputLocation: string;
|
|
4
|
-
durationInFrames: number;
|
|
5
|
-
fps: number;
|
|
6
|
-
chunkCodec: Codec;
|
|
7
|
-
}) => Promise<void>;
|
|
8
|
-
//# sourceMappingURL=add-silent-audio-if-necessary.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"add-silent-audio-if-necessary.d.ts","sourceRoot":"","sources":["../src/add-silent-audio-if-necessary.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,KAAK,EAAC,MAAM,UAAU,CAAC;AAK/B,eAAO,MAAM,yBAAyB;oBAMrB,MAAM;sBACJ,MAAM;SACnB,MAAM;gBACC,KAAK;MACd,QAAQ,IAAI,CA0Cf,CAAC"}
|