@remotion/renderer 2.6.12 → 2.6.15
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/.turbo/turbo-build.log +2 -2
- package/.turbo/turbo-lint.log +21 -0
- package/.turbo/turbo-test.log +40 -39
- package/dist/assets/sanitize-filepath.d.ts.map +1 -1
- package/dist/assets/sanitize-filepath.js +2 -1
- package/dist/assets/sanitize-filepath.js.map +1 -1
- package/dist/create-ffmpeg-complex-filter.d.ts +4 -1
- package/dist/create-ffmpeg-complex-filter.d.ts.map +1 -1
- package/dist/get-extension-from-codec.d.ts +1 -1
- package/dist/puppeteer-screenshot.d.ts +0 -1
- package/dist/puppeteer-screenshot.d.ts.map +1 -1
- package/dist/screenshot-dom-element.d.ts +0 -1
- package/dist/screenshot-dom-element.d.ts.map +1 -1
- package/dist/screenshot-task.d.ts +0 -1
- package/dist/screenshot-task.d.ts.map +1 -1
- package/package.json +4 -4
- package/dist/get-pro-res-profile-name.d.ts +0 -3
- package/dist/get-pro-res-profile-name.d.ts.map +0 -1
- package/dist/get-pro-res-profile-name.js +0 -26
- package/dist/get-pro-res-profile-name.js.map +0 -1
- package/dist/render-video.d.ts +0 -39
- package/dist/render-video.d.ts.map +0 -1
- package/dist/render-video.js +0 -138
- package/dist/render-video.js.map +0 -1
- package/dist/run-ffmpeg-command.d.ts +0 -6
- package/dist/run-ffmpeg-command.d.ts.map +0 -1
- package/dist/run-ffmpeg-command.js +0 -25
- package/dist/run-ffmpeg-command.js.map +0 -1
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
[35m@remotion/renderer:build: [0mcache hit, replaying output [
|
|
1
|
+
[35m@remotion/renderer:build: [0mcache hit, replaying output [2m6ded6d86765e71ec[0m
|
|
2
2
|
[35m@remotion/renderer:build: [0m
|
|
3
|
-
[35m@remotion/renderer:build: [0m> @remotion/renderer@2.6.
|
|
3
|
+
[35m@remotion/renderer:build: [0m> @remotion/renderer@2.6.14 build /Users/jonathanburger/remotion/packages/renderer
|
|
4
4
|
[35m@remotion/renderer:build: [0m> tsc -d
|
|
5
5
|
[35m@remotion/renderer:build: [0m
|
package/.turbo/turbo-lint.log
CHANGED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
[34m@remotion/renderer:lint: [0mcache hit, replaying output [2m039a3ea7d5fb2d3b[0m
|
|
2
|
+
[34m@remotion/renderer:lint: [0m
|
|
3
|
+
[34m@remotion/renderer:lint: [0m> @remotion/renderer@2.6.14 lint /Users/jonathanburger/remotion/packages/renderer
|
|
4
|
+
[34m@remotion/renderer:lint: [0m> eslint src --ext ts,tsx
|
|
5
|
+
[34m@remotion/renderer:lint: [0m
|
|
6
|
+
[34m@remotion/renderer:lint: [0m
|
|
7
|
+
[34m@remotion/renderer:lint: [0m/Users/jonathanburger/remotion/packages/renderer/src/assets/ffmpeg-volume-expression.ts
|
|
8
|
+
[34m@remotion/renderer:lint: [0m 76:1 warning Unexpected 'todo' comment: 'TODO: Should remove irrelevant frames' no-warning-comments
|
|
9
|
+
[34m@remotion/renderer:lint: [0m
|
|
10
|
+
[34m@remotion/renderer:lint: [0m/Users/jonathanburger/remotion/packages/renderer/src/ensure-frames-in-order.ts
|
|
11
|
+
[34m@remotion/renderer:lint: [0m 21:72 warning Async arrow function has no 'await' expression require-await
|
|
12
|
+
[34m@remotion/renderer:lint: [0m
|
|
13
|
+
[34m@remotion/renderer:lint: [0m/Users/jonathanburger/remotion/packages/renderer/src/provide-screenshot.ts
|
|
14
|
+
[34m@remotion/renderer:lint: [0m 18:21 warning Async arrow function has no 'await' expression require-await
|
|
15
|
+
[34m@remotion/renderer:lint: [0m
|
|
16
|
+
[34m@remotion/renderer:lint: [0m/Users/jonathanburger/remotion/packages/renderer/src/test/validate-config-stitcher.test.ts
|
|
17
|
+
[34m@remotion/renderer:lint: [0m 17:34 warning Async arrow function has no 'await' expression require-await
|
|
18
|
+
[34m@remotion/renderer:lint: [0m 29:33 warning Async arrow function has no 'await' expression require-await
|
|
19
|
+
[34m@remotion/renderer:lint: [0m
|
|
20
|
+
[34m@remotion/renderer:lint: [0m✖ 5 problems (0 errors, 5 warnings)
|
|
21
|
+
[34m@remotion/renderer:lint: [0m
|
package/.turbo/turbo-test.log
CHANGED
|
@@ -1,39 +1,40 @@
|
|
|
1
|
-
[
|
|
2
|
-
[
|
|
3
|
-
[
|
|
4
|
-
[
|
|
5
|
-
[
|
|
6
|
-
[
|
|
7
|
-
[
|
|
8
|
-
[
|
|
9
|
-
[
|
|
10
|
-
[
|
|
11
|
-
[
|
|
12
|
-
[
|
|
13
|
-
[
|
|
14
|
-
[
|
|
15
|
-
[
|
|
16
|
-
[
|
|
17
|
-
[
|
|
18
|
-
[
|
|
19
|
-
[
|
|
20
|
-
[
|
|
21
|
-
[
|
|
22
|
-
[
|
|
23
|
-
[
|
|
24
|
-
[
|
|
25
|
-
[
|
|
26
|
-
[
|
|
27
|
-
[
|
|
28
|
-
[
|
|
29
|
-
[
|
|
30
|
-
[
|
|
31
|
-
[
|
|
32
|
-
[
|
|
33
|
-
[
|
|
34
|
-
[
|
|
35
|
-
[
|
|
36
|
-
[
|
|
37
|
-
[
|
|
38
|
-
[
|
|
39
|
-
[
|
|
1
|
+
[35m@remotion/renderer:test: [0mcache hit, replaying output [2m21f71927c0503c53[0m
|
|
2
|
+
[35m@remotion/renderer:test: [0m
|
|
3
|
+
[35m@remotion/renderer:test: [0m> @remotion/renderer@2.6.14 test /Users/jonathanburger/remotion/packages/renderer
|
|
4
|
+
[35m@remotion/renderer:test: [0m> jest
|
|
5
|
+
[35m@remotion/renderer:test: [0m
|
|
6
|
+
[35m@remotion/renderer:test: [0mwatchman warning: Recrawled this watch 109 times, most recently because:
|
|
7
|
+
[35m@remotion/renderer:test: [0mMustScanSubDirs UserDroppedTo resolve, please review the information on
|
|
8
|
+
[35m@remotion/renderer:test: [0mhttps://facebook.github.io/watchman/docs/troubleshooting.html#recrawl
|
|
9
|
+
[35m@remotion/renderer:test: [0mTo clear this warning, run:
|
|
10
|
+
[35m@remotion/renderer:test: [0m`watchman watch-del '/Users/jonathanburger/remotion' ; watchman watch-project '/Users/jonathanburger/remotion'`
|
|
11
|
+
[35m@remotion/renderer:test: [0m
|
|
12
|
+
[35m@remotion/renderer:test: [0mPASS src/test/ffmpeg-filters.test.ts (9.806 s)
|
|
13
|
+
[35m@remotion/renderer:test: [0mPASS src/test/ffmpeg-volume-expression.test.ts (9.204 s)
|
|
14
|
+
[35m@remotion/renderer:test: [0mPASS src/test/split-assets-into-segments.test.tsx (9.892 s)
|
|
15
|
+
[35m@remotion/renderer:test: [0mPASS src/test/parse-ffmpeg-version.test.ts (10.099 s)
|
|
16
|
+
[35m@remotion/renderer:test: [0mPASS src/test/dont-skip-assets.test.ts (10.173 s)
|
|
17
|
+
[35m@remotion/renderer:test: [0mPASS src/test/serve-url.test.js
|
|
18
|
+
[35m@remotion/renderer:test: [0mPASS src/test/avoid-asset-zero-length.test.ts
|
|
19
|
+
[35m@remotion/renderer:test: [0mPASS src/test/asset-compression.test.ts
|
|
20
|
+
[35m@remotion/renderer:test: [0mPASS src/test/handle-weird-file-names.test.ts
|
|
21
|
+
[35m@remotion/renderer:test: [0mPASS src/test/asset-is-used-at-time.test.ts
|
|
22
|
+
[35m@remotion/renderer:test: [0mPASS src/test/serve-url.test.ts
|
|
23
|
+
[35m@remotion/renderer:test: [0mPASS src/test/calculate-atempo.test.ts
|
|
24
|
+
[35m@remotion/renderer:test: [0mPASS src/test/get-audio-channels.test.ts
|
|
25
|
+
[35m@remotion/renderer:test: [0mPASS src/test/parse-ffmpeg-progress.test.ts
|
|
26
|
+
[35m@remotion/renderer:test: [0mPASS src/test/sanitize-file-path.test.ts
|
|
27
|
+
[35m@remotion/renderer:test: [0mPASS src/test/avoid-ffmpeg-stackoverflow.test.ts
|
|
28
|
+
[35m@remotion/renderer:test: [0mPASS src/test/download-file.test.ts
|
|
29
|
+
[35m@remotion/renderer:test: [0mPASS src/test/flatten-volume-array.test.tsx
|
|
30
|
+
[35m@remotion/renderer:test: [0mPASS src/test/validate-config-stitcher.test.ts
|
|
31
|
+
[35m@remotion/renderer:test: [0mPASS src/test/render-still.test.ts
|
|
32
|
+
[35m@remotion/renderer:test: [0mPASS src/test/webpack-to-serve-url.test.ts
|
|
33
|
+
[35m@remotion/renderer:test: [0mPASS src/test/validate-config.test.ts (13.034 s)
|
|
34
|
+
[35m@remotion/renderer:test: [0mPASS src/test/asset-calculation.test.tsx (19.103 s)
|
|
35
|
+
[35m@remotion/renderer:test: [0m
|
|
36
|
+
[35m@remotion/renderer:test: [0mTest Suites: 23 passed, 23 total
|
|
37
|
+
[35m@remotion/renderer:test: [0mTests: 63 passed, 63 total
|
|
38
|
+
[35m@remotion/renderer:test: [0mSnapshots: 0 total
|
|
39
|
+
[35m@remotion/renderer:test: [0mTime: 21.783 s
|
|
40
|
+
[35m@remotion/renderer:test: [0mRan all test suites.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sanitize-filepath.d.ts","sourceRoot":"","sources":["../../src/assets/sanitize-filepath.ts"],"names":[],"mappings":"
|
|
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"}
|
|
@@ -6,9 +6,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.sanitizeFilePath = void 0;
|
|
7
7
|
const path_1 = __importDefault(require("path"));
|
|
8
8
|
const sanitize_filename_1 = require("./sanitize-filename");
|
|
9
|
+
const pathSeparators = /[/\\]/;
|
|
9
10
|
const sanitizeFilePath = (pathToSanitize) => {
|
|
10
11
|
return pathToSanitize
|
|
11
|
-
.split(
|
|
12
|
+
.split(pathSeparators)
|
|
12
13
|
.map((s) => (0, sanitize_filename_1.sanitizeFilename)(s))
|
|
13
14
|
.join(path_1.default.sep);
|
|
14
15
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sanitize-filepath.js","sourceRoot":"","sources":["../../src/assets/sanitize-filepath.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AACxB,2DAAqD;
|
|
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"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { FfmpegFilterCalculation } from './calculate-ffmpeg-filters';
|
|
2
2
|
export declare const createFfmpegComplexFilter: (filters: FfmpegFilterCalculation[]) => Promise<{
|
|
3
|
-
complexFilterFlag: [
|
|
3
|
+
complexFilterFlag: [
|
|
4
|
+
string,
|
|
5
|
+
string
|
|
6
|
+
] | null;
|
|
4
7
|
cleanup: () => void;
|
|
5
8
|
}>;
|
|
6
9
|
//# sourceMappingURL=create-ffmpeg-complex-filter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-ffmpeg-complex-filter.d.ts","sourceRoot":"","sources":["../src/create-ffmpeg-complex-filter.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,uBAAuB,EAAC,MAAM,4BAA4B,CAAC;AAmBnE,eAAO,MAAM,yBAAyB,YAC5B,uBAAuB,EAAE,KAChC,QAAQ;IACV,iBAAiB,EAAE,
|
|
1
|
+
{"version":3,"file":"create-ffmpeg-complex-filter.d.ts","sourceRoot":"","sources":["../src/create-ffmpeg-complex-filter.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,uBAAuB,EAAC,MAAM,4BAA4B,CAAC;AAmBnE,eAAO,MAAM,yBAAyB,YAC5B,uBAAuB,EAAE,KAChC,QAAQ;IACV,iBAAiB,EAAE;QAAC,MAAM;QAAE,MAAM;KAAC,GAAG,IAAI,CAAC;IAC3C,OAAO,EAAE,MAAM,IAAI,CAAC;CACpB,CA2BA,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { Codec } from 'remotion';
|
|
2
|
-
export declare const getFileExtensionFromCodec: (codec: Codec, type: 'chunk' | 'final') => "mp3" | "aac" | "wav" | "
|
|
2
|
+
export declare const getFileExtensionFromCodec: (codec: Codec, type: 'chunk' | 'final') => "mp3" | "aac" | "wav" | "webm" | "mp4" | "mkv" | "mov";
|
|
3
3
|
//# sourceMappingURL=get-extension-from-codec.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"puppeteer-screenshot.d.ts","sourceRoot":"","sources":["../src/puppeteer-screenshot.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"puppeteer-screenshot.d.ts","sourceRoot":"","sources":["../src/puppeteer-screenshot.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,IAAI,EAAE,iBAAiB,EAAC,MAAM,gBAAgB,CAAC;AAGvD,eAAO,MAAM,UAAU,SAChB,IAAI,YACD,iBAAiB,KACxB,QAAQ,MAAM,GAAG,MAAM,GAAG,IAAI,CAyFhC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"screenshot-dom-element.d.ts","sourceRoot":"","sources":["../src/screenshot-dom-element.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"screenshot-dom-element.d.ts","sourceRoot":"","sources":["../src/screenshot-dom-element.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAC,WAAW,EAAC,MAAM,UAAU,CAAC;AAGrC,eAAO,MAAM,oBAAoB;UAM1B,UAAU,IAAI;iBACP,WAAW;aACf,MAAM,GAAG,SAAS;;;;;MAKxB,QAAQ,MAAM,CA2BjB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"screenshot-task.d.ts","sourceRoot":"","sources":["../src/screenshot-task.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"screenshot-task.d.ts","sourceRoot":"","sources":["../src/screenshot-task.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,IAAI,EAAE,iBAAiB,EAAS,MAAM,gBAAgB,CAAC;AAG3E,eAAO,MAAM,eAAe,SACrB,IAAI,UACF,KAAK,GAAG,MAAM,WACb,iBAAiB,KACxB,QAAQ,MAAM,GAAG,MAAM,CAqCzB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@remotion/renderer",
|
|
3
|
-
"version": "2.6.
|
|
3
|
+
"version": "2.6.15",
|
|
4
4
|
"description": "Renderer for Remotion",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -20,11 +20,11 @@
|
|
|
20
20
|
"url": "https://github.com/remotion-dev/remotion/issues"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@remotion/bundler": "2.6.
|
|
23
|
+
"@remotion/bundler": "2.6.15",
|
|
24
24
|
"execa": "5.1.1",
|
|
25
25
|
"p-limit": "3.1.0",
|
|
26
26
|
"puppeteer-core": "13.1.2",
|
|
27
|
-
"remotion": "2.6.
|
|
27
|
+
"remotion": "2.6.15",
|
|
28
28
|
"serve-handler": "6.1.3"
|
|
29
29
|
},
|
|
30
30
|
"peerDependencies": {
|
|
@@ -58,5 +58,5 @@
|
|
|
58
58
|
"publishConfig": {
|
|
59
59
|
"access": "public"
|
|
60
60
|
},
|
|
61
|
-
"gitHead": "
|
|
61
|
+
"gitHead": "b175877d7ce5e0bbcb9d923cc98546fd6c748b44"
|
|
62
62
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"get-pro-res-profile-name.d.ts","sourceRoot":"","sources":["../src/get-pro-res-profile-name.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAE,aAAa,EAAC,MAAM,UAAU,CAAC;AAE9C,eAAO,MAAM,oBAAoB,UACzB,KAAK,iBACG,aAAa,GAAG,SAAS,KACtC,MAAM,GAAG,IAqBX,CAAC"}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getProResProfileName = void 0;
|
|
4
|
-
const getProResProfileName = (codec, proResProfile) => {
|
|
5
|
-
if (codec !== 'prores') {
|
|
6
|
-
return null;
|
|
7
|
-
}
|
|
8
|
-
switch (proResProfile) {
|
|
9
|
-
case '4444-xq':
|
|
10
|
-
return '5';
|
|
11
|
-
case '4444':
|
|
12
|
-
return '4';
|
|
13
|
-
case 'hq':
|
|
14
|
-
return '3';
|
|
15
|
-
case 'standard':
|
|
16
|
-
return '2';
|
|
17
|
-
case 'light':
|
|
18
|
-
return '1';
|
|
19
|
-
case 'proxy':
|
|
20
|
-
return '0';
|
|
21
|
-
default:
|
|
22
|
-
return '3';
|
|
23
|
-
}
|
|
24
|
-
};
|
|
25
|
-
exports.getProResProfileName = getProResProfileName;
|
|
26
|
-
//# sourceMappingURL=get-pro-res-profile-name.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"get-pro-res-profile-name.js","sourceRoot":"","sources":["../src/get-pro-res-profile-name.ts"],"names":[],"mappings":";;;AAEO,MAAM,oBAAoB,GAAG,CACnC,KAAY,EACZ,aAAwC,EACxB,EAAE;IAClB,IAAI,KAAK,KAAK,QAAQ,EAAE;QACvB,OAAO,IAAI,CAAC;KACZ;IAED,QAAQ,aAAa,EAAE;QACtB,KAAK,SAAS;YACb,OAAO,GAAG,CAAC;QACZ,KAAK,MAAM;YACV,OAAO,GAAG,CAAC;QACZ,KAAK,IAAI;YACR,OAAO,GAAG,CAAC;QACZ,KAAK,UAAU;YACd,OAAO,GAAG,CAAC;QACZ,KAAK,OAAO;YACX,OAAO,GAAG,CAAC;QACZ,KAAK,OAAO;YACX,OAAO,GAAG,CAAC;QACZ;YACC,OAAO,GAAG,CAAC;KACZ;AACF,CAAC,CAAC;AAxBW,QAAA,oBAAoB,wBAwB/B"}
|
package/dist/render-video.d.ts
DELETED
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import type { Browser as PuppeteerBrowser } from 'puppeteer-core';
|
|
2
|
-
import { Browser, Codec, FfmpegExecutable, FrameRange, PixelFormat, ProResProfile, TCompMetadata } from 'remotion';
|
|
3
|
-
export declare type RenderMediaOnDownload = (src: string) => void;
|
|
4
|
-
export declare type StitchingState = 'encoding' | 'muxing';
|
|
5
|
-
export declare type RenderMediaOnProgress = (progress: {
|
|
6
|
-
renderedFrames: number;
|
|
7
|
-
encodedFrames: number;
|
|
8
|
-
encodedDoneIn: number | null;
|
|
9
|
-
renderedDoneIn: number | null;
|
|
10
|
-
stitchStage: StitchingState;
|
|
11
|
-
}) => void;
|
|
12
|
-
export declare type RenderMediaOptions = {
|
|
13
|
-
proResProfile: ProResProfile | undefined;
|
|
14
|
-
parallelism: number | null;
|
|
15
|
-
parallelEncoding: boolean;
|
|
16
|
-
crf: number | null;
|
|
17
|
-
outputDir: string;
|
|
18
|
-
config: TCompMetadata;
|
|
19
|
-
imageFormat: 'png' | 'jpeg' | 'none';
|
|
20
|
-
ffmpegExecutable: FfmpegExecutable;
|
|
21
|
-
inputProps: object;
|
|
22
|
-
pixelFormat: PixelFormat;
|
|
23
|
-
codec: Codec;
|
|
24
|
-
envVariables: Record<string, string>;
|
|
25
|
-
quality: number | undefined;
|
|
26
|
-
frameRange: FrameRange | null;
|
|
27
|
-
browser: Browser;
|
|
28
|
-
serveUrl: string;
|
|
29
|
-
openedBrowser: PuppeteerBrowser;
|
|
30
|
-
overwrite: boolean;
|
|
31
|
-
absoluteOutputFile: string;
|
|
32
|
-
onProgress?: RenderMediaOnProgress;
|
|
33
|
-
fileExtension: string | null;
|
|
34
|
-
bundled: string;
|
|
35
|
-
onDownload: (src: string) => void;
|
|
36
|
-
dumpBrowserLogs: boolean;
|
|
37
|
-
};
|
|
38
|
-
export declare const renderMedia: ({ parallelism, proResProfile, parallelEncoding, crf, outputDir, config, imageFormat, ffmpegExecutable, inputProps, pixelFormat, codec, envVariables, quality, frameRange, browser, serveUrl, openedBrowser, absoluteOutputFile, onProgress, overwrite, fileExtension, bundled, onDownload, dumpBrowserLogs, }: RenderMediaOptions) => Promise<void>;
|
|
39
|
-
//# sourceMappingURL=render-video.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"render-video.d.ts","sourceRoot":"","sources":["../src/render-video.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,OAAO,IAAI,gBAAgB,EAAC,MAAM,gBAAgB,CAAC;AAChE,OAAO,EACN,OAAO,EACP,KAAK,EACL,gBAAgB,EAChB,UAAU,EAEV,WAAW,EACX,aAAa,EACb,aAAa,EACb,MAAM,UAAU,CAAC;AAIlB,oBAAY,qBAAqB,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;AAE1D,oBAAY,cAAc,GAAG,UAAU,GAAG,QAAQ,CAAC;AAEnD,oBAAY,qBAAqB,GAAG,CAAC,QAAQ,EAAE;IAC9C,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,WAAW,EAAE,cAAc,CAAC;CAC5B,KAAK,IAAI,CAAC;AAEX,oBAAY,kBAAkB,GAAG;IAChC,aAAa,EAAE,aAAa,GAAG,SAAS,CAAC;IACzC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,aAAa,CAAC;IACtB,WAAW,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;IACrC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,WAAW,CAAC;IACzB,KAAK,EAAE,KAAK,CAAC;IACb,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,gBAAgB,CAAC;IAChC,SAAS,EAAE,OAAO,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,qBAAqB,CAAC;IACnC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,eAAe,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,eAAO,MAAM,WAAW,kTAyBrB,kBAAkB,kBAuIpB,CAAC"}
|
package/dist/render-video.js
DELETED
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.renderMedia = void 0;
|
|
7
|
-
const fs_1 = __importDefault(require("fs"));
|
|
8
|
-
const path_1 = __importDefault(require("path"));
|
|
9
|
-
const remotion_1 = require("remotion");
|
|
10
|
-
const stitcher_1 = require("./stitcher");
|
|
11
|
-
const render_1 = require("./render");
|
|
12
|
-
const renderMedia = async ({ parallelism, proResProfile, parallelEncoding, crf, outputDir, config, imageFormat, ffmpegExecutable, inputProps, pixelFormat, codec, envVariables, quality, frameRange, browser, serveUrl, openedBrowser, absoluteOutputFile, onProgress, overwrite, fileExtension, bundled, onDownload, dumpBrowserLogs, }) => {
|
|
13
|
-
var _a, _b;
|
|
14
|
-
let stitchStage = 'encoding';
|
|
15
|
-
let stitcherFfmpeg;
|
|
16
|
-
let preStitcher;
|
|
17
|
-
let encodedFrames = 0;
|
|
18
|
-
let renderedFrames = 0;
|
|
19
|
-
let preEncodedFileLocation;
|
|
20
|
-
let renderedDoneIn = null;
|
|
21
|
-
let encodedDoneIn = null;
|
|
22
|
-
const renderStart = Date.now();
|
|
23
|
-
const callUpdate = () => {
|
|
24
|
-
onProgress === null || onProgress === void 0 ? void 0 : onProgress({
|
|
25
|
-
encodedDoneIn,
|
|
26
|
-
encodedFrames,
|
|
27
|
-
renderedDoneIn,
|
|
28
|
-
renderedFrames,
|
|
29
|
-
stitchStage,
|
|
30
|
-
});
|
|
31
|
-
};
|
|
32
|
-
if (parallelEncoding) {
|
|
33
|
-
if (typeof crf !== 'number') {
|
|
34
|
-
throw new TypeError('CRF is unexpectedly not a number');
|
|
35
|
-
}
|
|
36
|
-
preEncodedFileLocation = path_1.default.join(outputDir, 'pre-encode.' + fileExtension);
|
|
37
|
-
preStitcher = await (0, stitcher_1.spawnFfmpeg)({
|
|
38
|
-
dir: outputDir,
|
|
39
|
-
width: config.width,
|
|
40
|
-
height: config.height,
|
|
41
|
-
fps: config.fps,
|
|
42
|
-
outputLocation: preEncodedFileLocation,
|
|
43
|
-
force: true,
|
|
44
|
-
imageFormat,
|
|
45
|
-
pixelFormat,
|
|
46
|
-
codec,
|
|
47
|
-
proResProfile,
|
|
48
|
-
crf,
|
|
49
|
-
parallelism,
|
|
50
|
-
onProgress: (frame) => {
|
|
51
|
-
encodedFrames = frame;
|
|
52
|
-
callUpdate();
|
|
53
|
-
},
|
|
54
|
-
verbose: remotion_1.Internals.Logging.isEqualOrBelowLogLevel('verbose'),
|
|
55
|
-
parallelEncoding,
|
|
56
|
-
webpackBundle: bundled,
|
|
57
|
-
ffmpegExecutable,
|
|
58
|
-
assetsInfo: { assets: [] },
|
|
59
|
-
});
|
|
60
|
-
stitcherFfmpeg = preStitcher.task;
|
|
61
|
-
}
|
|
62
|
-
const { assetsInfo } = await (0, render_1.renderFrames)({
|
|
63
|
-
config,
|
|
64
|
-
onFrameUpdate: (frame) => {
|
|
65
|
-
renderedFrames = frame;
|
|
66
|
-
callUpdate();
|
|
67
|
-
},
|
|
68
|
-
parallelism,
|
|
69
|
-
outputDir,
|
|
70
|
-
onStart: () => {
|
|
71
|
-
renderedFrames = 0;
|
|
72
|
-
callUpdate();
|
|
73
|
-
},
|
|
74
|
-
inputProps,
|
|
75
|
-
envVariables,
|
|
76
|
-
imageFormat,
|
|
77
|
-
quality,
|
|
78
|
-
browser,
|
|
79
|
-
frameRange: frameRange !== null && frameRange !== void 0 ? frameRange : null,
|
|
80
|
-
puppeteerInstance: openedBrowser,
|
|
81
|
-
writeFrame: async (buffer) => {
|
|
82
|
-
var _a;
|
|
83
|
-
(_a = stitcherFfmpeg === null || stitcherFfmpeg === void 0 ? void 0 : stitcherFfmpeg.stdin) === null || _a === void 0 ? void 0 : _a.write(buffer);
|
|
84
|
-
},
|
|
85
|
-
serveUrl,
|
|
86
|
-
dumpBrowserLogs,
|
|
87
|
-
});
|
|
88
|
-
if (stitcherFfmpeg) {
|
|
89
|
-
(_a = stitcherFfmpeg === null || stitcherFfmpeg === void 0 ? void 0 : stitcherFfmpeg.stdin) === null || _a === void 0 ? void 0 : _a.end();
|
|
90
|
-
await stitcherFfmpeg;
|
|
91
|
-
(_b = preStitcher === null || preStitcher === void 0 ? void 0 : preStitcher.cleanup) === null || _b === void 0 ? void 0 : _b.call(preStitcher);
|
|
92
|
-
}
|
|
93
|
-
const closeBrowserPromise = openedBrowser.close();
|
|
94
|
-
renderedDoneIn = Date.now() - renderStart;
|
|
95
|
-
callUpdate();
|
|
96
|
-
if (typeof crf !== 'number') {
|
|
97
|
-
throw new TypeError('CRF is unexpectedly not a number');
|
|
98
|
-
}
|
|
99
|
-
const dirName = path_1.default.dirname(absoluteOutputFile);
|
|
100
|
-
if (!fs_1.default.existsSync(dirName)) {
|
|
101
|
-
fs_1.default.mkdirSync(dirName, {
|
|
102
|
-
recursive: true,
|
|
103
|
-
});
|
|
104
|
-
}
|
|
105
|
-
const stitchStart = Date.now();
|
|
106
|
-
await (0, stitcher_1.stitchFramesToVideo)({
|
|
107
|
-
dir: outputDir,
|
|
108
|
-
width: config.width,
|
|
109
|
-
height: config.height,
|
|
110
|
-
fps: config.fps,
|
|
111
|
-
outputLocation: absoluteOutputFile,
|
|
112
|
-
preEncodedFileLocation,
|
|
113
|
-
force: overwrite,
|
|
114
|
-
imageFormat,
|
|
115
|
-
pixelFormat,
|
|
116
|
-
codec,
|
|
117
|
-
proResProfile,
|
|
118
|
-
crf,
|
|
119
|
-
assetsInfo,
|
|
120
|
-
parallelism,
|
|
121
|
-
ffmpegExecutable,
|
|
122
|
-
onProgress: (frame) => {
|
|
123
|
-
stitchStage = 'muxing';
|
|
124
|
-
encodedFrames = frame;
|
|
125
|
-
callUpdate();
|
|
126
|
-
},
|
|
127
|
-
// TODO: Optimization, Now can download before!
|
|
128
|
-
onDownload,
|
|
129
|
-
webpackBundle: bundled,
|
|
130
|
-
verbose: remotion_1.Internals.Logging.isEqualOrBelowLogLevel('verbose'),
|
|
131
|
-
});
|
|
132
|
-
encodedFrames = config.durationInFrames;
|
|
133
|
-
encodedDoneIn = Date.now() - stitchStart;
|
|
134
|
-
callUpdate();
|
|
135
|
-
await closeBrowserPromise;
|
|
136
|
-
};
|
|
137
|
-
exports.renderMedia = renderMedia;
|
|
138
|
-
//# sourceMappingURL=render-video.js.map
|
package/dist/render-video.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"render-video.js","sourceRoot":"","sources":["../src/render-video.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import execa from 'execa';
|
|
2
|
-
export declare const ENABLE_WASM_FFMPEG = true;
|
|
3
|
-
export declare const wasmFfmpeg: import("@ffmpeg/ffmpeg").FFmpeg;
|
|
4
|
-
export declare const load: Promise<void>;
|
|
5
|
-
export declare const runFfmpegCommand: (args: string[], isRenderBad: boolean, options?: execa.Options<string> | undefined) => Promise<execa.ExecaReturnValue<string>>;
|
|
6
|
-
//# sourceMappingURL=run-ffmpeg-command.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"run-ffmpeg-command.d.ts","sourceRoot":"","sources":["../src/run-ffmpeg-command.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,eAAO,MAAM,kBAAkB,OAAO,CAAC;AAEvC,eAAO,MAAM,UAAU,iCAA4B,CAAC;AACpD,eAAO,MAAM,IAAI,eAAoB,CAAC;AAEtC,eAAO,MAAM,gBAAgB,SACtB,MAAM,EAAE,eACD,OAAO,yFAgBpB,CAAC"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.runFfmpegCommand = exports.load = exports.wasmFfmpeg = exports.ENABLE_WASM_FFMPEG = void 0;
|
|
7
|
-
const ffmpeg_1 = require("@ffmpeg/ffmpeg");
|
|
8
|
-
const execa_1 = __importDefault(require("execa"));
|
|
9
|
-
const fs_1 = __importDefault(require("fs"));
|
|
10
|
-
exports.ENABLE_WASM_FFMPEG = true;
|
|
11
|
-
exports.wasmFfmpeg = ffmpeg_1.createFFmpeg({ log: true });
|
|
12
|
-
exports.load = exports.wasmFfmpeg.load();
|
|
13
|
-
const runFfmpegCommand = async (args, isRenderBad, options) => {
|
|
14
|
-
await exports.load;
|
|
15
|
-
await exports.wasmFfmpeg.run(...args);
|
|
16
|
-
if (isRenderBad) {
|
|
17
|
-
await fs_1.default.promises.writeFile('./hi.mp4',
|
|
18
|
-
// eslint-disable-next-line new-cap
|
|
19
|
-
exports.wasmFfmpeg.FS('readFile', 'hi.mp4'));
|
|
20
|
-
}
|
|
21
|
-
console.log('wasm done');
|
|
22
|
-
return execa_1.default('ffmpeg', args, options);
|
|
23
|
-
};
|
|
24
|
-
exports.runFfmpegCommand = runFfmpegCommand;
|
|
25
|
-
//# sourceMappingURL=run-ffmpeg-command.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"run-ffmpeg-command.js","sourceRoot":"","sources":["../src/run-ffmpeg-command.ts"],"names":[],"mappings":";;;;;;AAAA,2CAA4C;AAC5C,kDAA0B;AAC1B,4CAAoB;AAEP,QAAA,kBAAkB,GAAG,IAAI,CAAC;AAE1B,QAAA,UAAU,GAAG,qBAAY,CAAC,EAAC,GAAG,EAAE,IAAI,EAAC,CAAC,CAAC;AACvC,QAAA,IAAI,GAAG,kBAAU,CAAC,IAAI,EAAE,CAAC;AAE/B,MAAM,gBAAgB,GAAG,KAAK,EACpC,IAAc,EACd,WAAoB,EACpB,OAAuB,EACtB,EAAE;IACH,MAAM,YAAI,CAAC;IAEX,MAAM,kBAAU,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;IAC9B,IAAI,WAAW,EAAE;QAChB,MAAM,YAAE,CAAC,QAAQ,CAAC,SAAS,CAC1B,UAAU;QACV,mCAAmC;QACnC,kBAAU,CAAC,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,CACnC,CAAC;KACF;IAED,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACzB,OAAO,eAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AACvC,CAAC,CAAC;AAlBW,QAAA,gBAAgB,oBAkB3B"}
|