@remotion/renderer 4.0.120 → 4.0.121
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/browser/BrowserPage.js +29 -10
- package/dist/call-ffmpeg.d.ts +1 -0
- package/dist/can-concatenate-seamlessly.d.ts +3 -0
- package/dist/can-concatenate-seamlessly.js +7 -0
- package/dist/client.d.ts +49 -49
- package/dist/combine-audio.d.ts +6 -1
- package/dist/combine-audio.js +33 -12
- package/dist/combine-video-streams-seamlessly.d.ts +3 -0
- package/dist/combine-video-streams-seamlessly.js +8 -0
- package/dist/combine-video-streams.d.ts +4 -1
- package/dist/combine-video-streams.js +9 -3
- package/dist/compress-audio.d.ts +13 -0
- package/dist/compress-audio.js +28 -0
- package/dist/create-audio.d.ts +21 -0
- package/dist/create-audio.js +82 -0
- package/dist/create-combined-video.d.ts +18 -0
- package/dist/create-combined-video.js +27 -0
- package/dist/create-ffmpeg-complex-filter.d.ts +1 -4
- package/dist/get-extension-from-audio-codec.d.ts +2 -0
- package/dist/get-extension-from-audio-codec.js +19 -0
- package/dist/get-silent-parts.d.ts +1 -1
- package/dist/index.d.ts +28 -26
- package/dist/mux-video-and-audio.d.ts +5 -1
- package/dist/mux-video-and-audio.js +12 -3
- package/dist/options/gl.d.ts +3 -3
- package/dist/options/index.d.ts +10 -10
- package/dist/options/log-level.d.ts +2 -2
- package/dist/options/options-map.d.ts +39 -39
- package/dist/options/prefer-lossless.d.ts +12 -2
- package/dist/options/prefer-lossless.js +19 -4
- package/dist/options/x264-preset.d.ts +2 -2
- package/dist/provide-screenshot.d.ts +2 -2
- package/dist/provide-screenshot.js +2 -1
- package/dist/puppeteer-screenshot.d.ts +1 -1
- package/dist/puppeteer-screenshot.js +1 -0
- package/dist/render-frames.js +2 -1
- package/dist/screenshot-dom-element.d.ts +2 -2
- package/dist/screenshot-dom-element.js +2 -1
- package/dist/screenshot-task.d.ts +2 -2
- package/dist/screenshot-task.js +11 -9
- package/dist/should-seamless.d.ts +3 -0
- package/dist/should-seamless.js +7 -0
- package/dist/stitch-frames-to-video.d.ts +1 -0
- package/dist/take-frame-and-compose.js +1 -0
- package/package.json +9 -9
|
@@ -195,16 +195,35 @@ class Page extends EventEmitter_1.EventEmitter {
|
|
|
195
195
|
return __classPrivateFieldGet(this, _Page_frameManager, "f").mainFrame();
|
|
196
196
|
}
|
|
197
197
|
async setViewport(viewport) {
|
|
198
|
-
const
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
198
|
+
const fromSurface = !process.env.DISABLE_FROM_SURFACE;
|
|
199
|
+
const request = fromSurface
|
|
200
|
+
? {
|
|
201
|
+
mobile: false,
|
|
202
|
+
width: viewport.width,
|
|
203
|
+
height: viewport.height,
|
|
204
|
+
deviceScaleFactor: viewport.deviceScaleFactor,
|
|
205
|
+
screenOrientation: {
|
|
206
|
+
angle: 0,
|
|
207
|
+
type: 'portraitPrimary',
|
|
208
|
+
},
|
|
209
|
+
}
|
|
210
|
+
: {
|
|
211
|
+
mobile: false,
|
|
212
|
+
width: viewport.width,
|
|
213
|
+
height: viewport.height,
|
|
214
|
+
deviceScaleFactor: 1,
|
|
215
|
+
screenHeight: viewport.height,
|
|
216
|
+
screenWidth: viewport.width,
|
|
217
|
+
scale: viewport.deviceScaleFactor,
|
|
218
|
+
viewport: {
|
|
219
|
+
height: viewport.height * viewport.deviceScaleFactor,
|
|
220
|
+
width: viewport.width * viewport.deviceScaleFactor,
|
|
221
|
+
scale: 1,
|
|
222
|
+
x: 0,
|
|
223
|
+
y: 0,
|
|
224
|
+
},
|
|
225
|
+
};
|
|
226
|
+
const { value } = await __classPrivateFieldGet(this, _Page_client, "f").send('Emulation.setDeviceMetricsOverride', request);
|
|
208
227
|
return value;
|
|
209
228
|
}
|
|
210
229
|
setDefaultNavigationTimeout(timeout) {
|
package/dist/call-ffmpeg.d.ts
CHANGED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.canConcatSeamlessly = void 0;
|
|
4
|
+
const canConcatSeamlessly = (audioCodec, codec) => {
|
|
5
|
+
return audioCodec === 'aac' && codec === 'h264';
|
|
6
|
+
};
|
|
7
|
+
exports.canConcatSeamlessly = canConcatSeamlessly;
|
package/dist/client.d.ts
CHANGED
|
@@ -350,7 +350,7 @@ export declare const BrowserSafeApis: {
|
|
|
350
350
|
webhookCustomDataOption: {
|
|
351
351
|
name: string;
|
|
352
352
|
cliFlag: "webhook-custom-data";
|
|
353
|
-
description: (type: "
|
|
353
|
+
description: (type: "ssr" | "cli") => import("react/jsx-runtime").JSX.Element;
|
|
354
354
|
ssrName: "customData";
|
|
355
355
|
docLink: string;
|
|
356
356
|
type: Record<string, unknown> | null;
|
|
@@ -424,19 +424,19 @@ export declare const BrowserSafeApis: {
|
|
|
424
424
|
cliFlag: "gl";
|
|
425
425
|
docLink: string;
|
|
426
426
|
name: string;
|
|
427
|
-
type: "
|
|
427
|
+
type: "angle" | "swangle" | "egl" | "swiftshader" | "vulkan" | "angle-egl" | null;
|
|
428
428
|
ssrName: string;
|
|
429
429
|
description: () => import("react/jsx-runtime").JSX.Element;
|
|
430
430
|
getValue: ({ commandLine }: {
|
|
431
431
|
commandLine: Record<string, unknown>;
|
|
432
432
|
}) => {
|
|
433
|
-
value: "
|
|
433
|
+
value: "angle" | "swangle" | "egl" | "swiftshader" | "vulkan" | "angle-egl";
|
|
434
434
|
source: string;
|
|
435
435
|
} | {
|
|
436
436
|
value: null;
|
|
437
437
|
source: string;
|
|
438
438
|
};
|
|
439
|
-
setConfig: (value: "
|
|
439
|
+
setConfig: (value: "angle" | "swangle" | "egl" | "swiftshader" | "vulkan" | "angle-egl" | null) => void;
|
|
440
440
|
};
|
|
441
441
|
enableLambdaInsights: {
|
|
442
442
|
name: string;
|
|
@@ -543,17 +543,17 @@ export declare const BrowserSafeApis: {
|
|
|
543
543
|
description: () => import("react/jsx-runtime").JSX.Element;
|
|
544
544
|
ssrName: "x264Preset";
|
|
545
545
|
docLink: string;
|
|
546
|
-
type: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "
|
|
546
|
+
type: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo" | null;
|
|
547
547
|
getValue: ({ commandLine }: {
|
|
548
548
|
commandLine: Record<string, unknown>;
|
|
549
549
|
}) => {
|
|
550
|
-
value: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "
|
|
550
|
+
value: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo";
|
|
551
551
|
source: string;
|
|
552
552
|
} | {
|
|
553
553
|
value: null;
|
|
554
554
|
source: string;
|
|
555
555
|
};
|
|
556
|
-
setConfig: (profile: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "
|
|
556
|
+
setConfig: (profile: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo" | null) => void;
|
|
557
557
|
};
|
|
558
558
|
logLevelOption: {
|
|
559
559
|
cliFlag: "log";
|
|
@@ -564,11 +564,11 @@ export declare const BrowserSafeApis: {
|
|
|
564
564
|
getValue: ({ commandLine }: {
|
|
565
565
|
commandLine: Record<string, unknown>;
|
|
566
566
|
}) => {
|
|
567
|
-
value: "
|
|
567
|
+
value: "error" | "verbose" | "info" | "warn";
|
|
568
568
|
source: string;
|
|
569
569
|
};
|
|
570
|
-
setConfig: (newLogLevel: "
|
|
571
|
-
type: "
|
|
570
|
+
setConfig: (newLogLevel: "error" | "verbose" | "info" | "warn") => void;
|
|
571
|
+
type: "error" | "verbose" | "info" | "warn";
|
|
572
572
|
};
|
|
573
573
|
delayRenderTimeoutInMillisecondsOption: {
|
|
574
574
|
name: string;
|
|
@@ -706,17 +706,17 @@ export declare const BrowserSafeApis: {
|
|
|
706
706
|
description: () => import("react/jsx-runtime").JSX.Element;
|
|
707
707
|
ssrName: "x264Preset";
|
|
708
708
|
docLink: string;
|
|
709
|
-
type: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "
|
|
709
|
+
type: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo" | null;
|
|
710
710
|
getValue: ({ commandLine }: {
|
|
711
711
|
commandLine: Record<string, unknown>;
|
|
712
712
|
}) => {
|
|
713
|
-
value: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "
|
|
713
|
+
value: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo";
|
|
714
714
|
source: string;
|
|
715
715
|
} | {
|
|
716
716
|
value: null;
|
|
717
717
|
source: string;
|
|
718
718
|
};
|
|
719
|
-
setConfig: (profile: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "
|
|
719
|
+
setConfig: (profile: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo" | null) => void;
|
|
720
720
|
};
|
|
721
721
|
readonly audioBitrate: {
|
|
722
722
|
name: string;
|
|
@@ -847,11 +847,11 @@ export declare const BrowserSafeApis: {
|
|
|
847
847
|
getValue: ({ commandLine }: {
|
|
848
848
|
commandLine: Record<string, unknown>;
|
|
849
849
|
}) => {
|
|
850
|
-
value: "
|
|
850
|
+
value: "error" | "verbose" | "info" | "warn";
|
|
851
851
|
source: string;
|
|
852
852
|
};
|
|
853
|
-
setConfig: (newLogLevel: "
|
|
854
|
-
type: "
|
|
853
|
+
setConfig: (newLogLevel: "error" | "verbose" | "info" | "warn") => void;
|
|
854
|
+
type: "error" | "verbose" | "info" | "warn";
|
|
855
855
|
};
|
|
856
856
|
readonly timeoutInMilliseconds: {
|
|
857
857
|
name: string;
|
|
@@ -927,11 +927,11 @@ export declare const BrowserSafeApis: {
|
|
|
927
927
|
getValue: ({ commandLine }: {
|
|
928
928
|
commandLine: Record<string, unknown>;
|
|
929
929
|
}) => {
|
|
930
|
-
value: "
|
|
930
|
+
value: "error" | "verbose" | "info" | "warn";
|
|
931
931
|
source: string;
|
|
932
932
|
};
|
|
933
|
-
setConfig: (newLogLevel: "
|
|
934
|
-
type: "
|
|
933
|
+
setConfig: (newLogLevel: "error" | "verbose" | "info" | "warn") => void;
|
|
934
|
+
type: "error" | "verbose" | "info" | "warn";
|
|
935
935
|
};
|
|
936
936
|
readonly timeoutInMilliseconds: {
|
|
937
937
|
name: string;
|
|
@@ -992,11 +992,11 @@ export declare const BrowserSafeApis: {
|
|
|
992
992
|
getValue: ({ commandLine }: {
|
|
993
993
|
commandLine: Record<string, unknown>;
|
|
994
994
|
}) => {
|
|
995
|
-
value: "
|
|
995
|
+
value: "error" | "verbose" | "info" | "warn";
|
|
996
996
|
source: string;
|
|
997
997
|
};
|
|
998
|
-
setConfig: (newLogLevel: "
|
|
999
|
-
type: "
|
|
998
|
+
setConfig: (newLogLevel: "error" | "verbose" | "info" | "warn") => void;
|
|
999
|
+
type: "error" | "verbose" | "info" | "warn";
|
|
1000
1000
|
};
|
|
1001
1001
|
readonly timeoutInMilliseconds: {
|
|
1002
1002
|
name: string;
|
|
@@ -1057,11 +1057,11 @@ export declare const BrowserSafeApis: {
|
|
|
1057
1057
|
getValue: ({ commandLine }: {
|
|
1058
1058
|
commandLine: Record<string, unknown>;
|
|
1059
1059
|
}) => {
|
|
1060
|
-
value: "
|
|
1060
|
+
value: "error" | "verbose" | "info" | "warn";
|
|
1061
1061
|
source: string;
|
|
1062
1062
|
};
|
|
1063
|
-
setConfig: (newLogLevel: "
|
|
1064
|
-
type: "
|
|
1063
|
+
setConfig: (newLogLevel: "error" | "verbose" | "info" | "warn") => void;
|
|
1064
|
+
type: "error" | "verbose" | "info" | "warn";
|
|
1065
1065
|
};
|
|
1066
1066
|
readonly timeoutInMilliseconds: {
|
|
1067
1067
|
name: string;
|
|
@@ -1137,11 +1137,11 @@ export declare const BrowserSafeApis: {
|
|
|
1137
1137
|
getValue: ({ commandLine }: {
|
|
1138
1138
|
commandLine: Record<string, unknown>;
|
|
1139
1139
|
}) => {
|
|
1140
|
-
value: "
|
|
1140
|
+
value: "error" | "verbose" | "info" | "warn";
|
|
1141
1141
|
source: string;
|
|
1142
1142
|
};
|
|
1143
|
-
setConfig: (newLogLevel: "
|
|
1144
|
-
type: "
|
|
1143
|
+
setConfig: (newLogLevel: "error" | "verbose" | "info" | "warn") => void;
|
|
1144
|
+
type: "error" | "verbose" | "info" | "warn";
|
|
1145
1145
|
};
|
|
1146
1146
|
readonly timeoutInMilliseconds: {
|
|
1147
1147
|
name: string;
|
|
@@ -1268,17 +1268,17 @@ export declare const BrowserSafeApis: {
|
|
|
1268
1268
|
description: () => import("react/jsx-runtime").JSX.Element;
|
|
1269
1269
|
ssrName: "x264Preset";
|
|
1270
1270
|
docLink: string;
|
|
1271
|
-
type: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "
|
|
1271
|
+
type: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo" | null;
|
|
1272
1272
|
getValue: ({ commandLine }: {
|
|
1273
1273
|
commandLine: Record<string, unknown>;
|
|
1274
1274
|
}) => {
|
|
1275
|
-
value: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "
|
|
1275
|
+
value: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo";
|
|
1276
1276
|
source: string;
|
|
1277
1277
|
} | {
|
|
1278
1278
|
value: null;
|
|
1279
1279
|
source: string;
|
|
1280
1280
|
};
|
|
1281
|
-
setConfig: (profile: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "
|
|
1281
|
+
setConfig: (profile: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo" | null) => void;
|
|
1282
1282
|
};
|
|
1283
1283
|
readonly encodingMaxRate: {
|
|
1284
1284
|
name: string;
|
|
@@ -1355,11 +1355,11 @@ export declare const BrowserSafeApis: {
|
|
|
1355
1355
|
getValue: ({ commandLine }: {
|
|
1356
1356
|
commandLine: Record<string, unknown>;
|
|
1357
1357
|
}) => {
|
|
1358
|
-
value: "
|
|
1358
|
+
value: "error" | "verbose" | "info" | "warn";
|
|
1359
1359
|
source: string;
|
|
1360
1360
|
};
|
|
1361
|
-
setConfig: (newLogLevel: "
|
|
1362
|
-
type: "
|
|
1361
|
+
setConfig: (newLogLevel: "error" | "verbose" | "info" | "warn") => void;
|
|
1362
|
+
type: "error" | "verbose" | "info" | "warn";
|
|
1363
1363
|
};
|
|
1364
1364
|
readonly timeoutInMilliseconds: {
|
|
1365
1365
|
name: string;
|
|
@@ -1420,11 +1420,11 @@ export declare const BrowserSafeApis: {
|
|
|
1420
1420
|
getValue: ({ commandLine }: {
|
|
1421
1421
|
commandLine: Record<string, unknown>;
|
|
1422
1422
|
}) => {
|
|
1423
|
-
value: "
|
|
1423
|
+
value: "error" | "verbose" | "info" | "warn";
|
|
1424
1424
|
source: string;
|
|
1425
1425
|
};
|
|
1426
|
-
setConfig: (newLogLevel: "
|
|
1427
|
-
type: "
|
|
1426
|
+
setConfig: (newLogLevel: "error" | "verbose" | "info" | "warn") => void;
|
|
1427
|
+
type: "error" | "verbose" | "info" | "warn";
|
|
1428
1428
|
};
|
|
1429
1429
|
readonly deleteAfter: {
|
|
1430
1430
|
name: string;
|
|
@@ -1503,11 +1503,11 @@ export declare const BrowserSafeApis: {
|
|
|
1503
1503
|
getValue: ({ commandLine }: {
|
|
1504
1504
|
commandLine: Record<string, unknown>;
|
|
1505
1505
|
}) => {
|
|
1506
|
-
value: "
|
|
1506
|
+
value: "error" | "verbose" | "info" | "warn";
|
|
1507
1507
|
source: string;
|
|
1508
1508
|
};
|
|
1509
|
-
setConfig: (newLogLevel: "
|
|
1510
|
-
type: "
|
|
1509
|
+
setConfig: (newLogLevel: "error" | "verbose" | "info" | "warn") => void;
|
|
1510
|
+
type: "error" | "verbose" | "info" | "warn";
|
|
1511
1511
|
};
|
|
1512
1512
|
readonly timeoutInMilliseconds: {
|
|
1513
1513
|
name: string;
|
|
@@ -1616,17 +1616,17 @@ export declare const BrowserSafeApis: {
|
|
|
1616
1616
|
description: () => import("react/jsx-runtime").JSX.Element;
|
|
1617
1617
|
ssrName: "x264Preset";
|
|
1618
1618
|
docLink: string;
|
|
1619
|
-
type: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "
|
|
1619
|
+
type: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo" | null;
|
|
1620
1620
|
getValue: ({ commandLine }: {
|
|
1621
1621
|
commandLine: Record<string, unknown>;
|
|
1622
1622
|
}) => {
|
|
1623
|
-
value: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "
|
|
1623
|
+
value: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo";
|
|
1624
1624
|
source: string;
|
|
1625
1625
|
} | {
|
|
1626
1626
|
value: null;
|
|
1627
1627
|
source: string;
|
|
1628
1628
|
};
|
|
1629
|
-
setConfig: (profile: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "
|
|
1629
|
+
setConfig: (profile: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo" | null) => void;
|
|
1630
1630
|
};
|
|
1631
1631
|
readonly encodingMaxRate: {
|
|
1632
1632
|
name: string;
|
|
@@ -1688,11 +1688,11 @@ export declare const BrowserSafeApis: {
|
|
|
1688
1688
|
getValue: ({ commandLine }: {
|
|
1689
1689
|
commandLine: Record<string, unknown>;
|
|
1690
1690
|
}) => {
|
|
1691
|
-
value: "
|
|
1691
|
+
value: "error" | "verbose" | "info" | "warn";
|
|
1692
1692
|
source: string;
|
|
1693
1693
|
};
|
|
1694
|
-
setConfig: (newLogLevel: "
|
|
1695
|
-
type: "
|
|
1694
|
+
setConfig: (newLogLevel: "error" | "verbose" | "info" | "warn") => void;
|
|
1695
|
+
type: "error" | "verbose" | "info" | "warn";
|
|
1696
1696
|
};
|
|
1697
1697
|
readonly delayRenderTimeoutInMilliseconds: {
|
|
1698
1698
|
name: string;
|
|
@@ -1798,11 +1798,11 @@ export declare const BrowserSafeApis: {
|
|
|
1798
1798
|
getValue: ({ commandLine }: {
|
|
1799
1799
|
commandLine: Record<string, unknown>;
|
|
1800
1800
|
}) => {
|
|
1801
|
-
value: "
|
|
1801
|
+
value: "error" | "verbose" | "info" | "warn";
|
|
1802
1802
|
source: string;
|
|
1803
1803
|
};
|
|
1804
|
-
setConfig: (newLogLevel: "
|
|
1805
|
-
type: "
|
|
1804
|
+
setConfig: (newLogLevel: "error" | "verbose" | "info" | "warn") => void;
|
|
1805
|
+
type: "error" | "verbose" | "info" | "warn";
|
|
1806
1806
|
};
|
|
1807
1807
|
readonly scale: {
|
|
1808
1808
|
name: string;
|
package/dist/combine-audio.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import type { AudioCodec } from './audio-codec';
|
|
2
2
|
import type { LogLevel } from './log-level';
|
|
3
|
+
import type { CancelSignal } from './make-cancel-signal';
|
|
3
4
|
export declare const durationOf1Frame: number;
|
|
4
5
|
export declare const getClosestAlignedTime: (targetTime: number) => number;
|
|
5
|
-
export declare const createCombinedAudio: ({ seamless, filelistDir, files, indent, logLevel, audioBitrate, resolvedAudioCodec, output, chunkDurationInSeconds, addRemotionMetadata, }: {
|
|
6
|
+
export declare const createCombinedAudio: ({ seamless, filelistDir, files, indent, logLevel, audioBitrate, resolvedAudioCodec, output, chunkDurationInSeconds, addRemotionMetadata, binariesDirectory, fps, cancelSignal, onProgress, }: {
|
|
6
7
|
seamless: boolean;
|
|
7
8
|
filelistDir: string;
|
|
8
9
|
files: string[];
|
|
@@ -13,4 +14,8 @@ export declare const createCombinedAudio: ({ seamless, filelistDir, files, inden
|
|
|
13
14
|
output: string;
|
|
14
15
|
chunkDurationInSeconds: number;
|
|
15
16
|
addRemotionMetadata: boolean;
|
|
17
|
+
binariesDirectory: string | null;
|
|
18
|
+
fps: number;
|
|
19
|
+
cancelSignal: CancelSignal | undefined;
|
|
20
|
+
onProgress: (frames: number) => void;
|
|
16
21
|
}) => Promise<string>;
|
package/dist/combine-audio.js
CHANGED
|
@@ -17,12 +17,14 @@ const getClosestAlignedTime = (targetTime) => {
|
|
|
17
17
|
return nearestFrameIndexForTargetTime * exports.durationOf1Frame;
|
|
18
18
|
};
|
|
19
19
|
exports.getClosestAlignedTime = getClosestAlignedTime;
|
|
20
|
-
const encodeAudio = async ({ files, resolvedAudioCodec, audioBitrate, filelistDir, output, indent, logLevel, addRemotionMetadata, }) => {
|
|
20
|
+
const encodeAudio = async ({ files, resolvedAudioCodec, audioBitrate, filelistDir, output, indent, logLevel, addRemotionMetadata, fps, binariesDirectory, cancelSignal, onProgress, }) => {
|
|
21
21
|
var _a;
|
|
22
22
|
const fileList = files.map((p) => `file '${p}'`).join('\n');
|
|
23
23
|
const fileListTxt = (0, path_1.join)(filelistDir, 'audio-files.txt');
|
|
24
24
|
(0, fs_1.writeFileSync)(fileListTxt, fileList);
|
|
25
|
+
const startCombining = Date.now();
|
|
25
26
|
const command = [
|
|
27
|
+
'-hide_banner',
|
|
26
28
|
'-f',
|
|
27
29
|
'concat',
|
|
28
30
|
'-safe',
|
|
@@ -41,32 +43,39 @@ const encodeAudio = async ({ files, resolvedAudioCodec, audioBitrate, filelistDi
|
|
|
41
43
|
'-y',
|
|
42
44
|
output,
|
|
43
45
|
];
|
|
46
|
+
logger_1.Log.verbose({ indent, logLevel }, `Combining audio with re-encoding, command: ${command.join(' ')}`);
|
|
44
47
|
try {
|
|
45
48
|
const task = (0, call_ffmpeg_1.callFf)({
|
|
46
49
|
args: command,
|
|
47
50
|
bin: 'ffmpeg',
|
|
48
51
|
indent,
|
|
49
52
|
logLevel,
|
|
53
|
+
binariesDirectory,
|
|
54
|
+
cancelSignal,
|
|
50
55
|
});
|
|
51
56
|
(_a = task.stderr) === null || _a === void 0 ? void 0 : _a.on('data', (data) => {
|
|
52
|
-
const
|
|
57
|
+
const utf8 = data.toString('utf8');
|
|
58
|
+
const parsed = (0, parse_ffmpeg_progress_1.parseFfmpegProgress)(utf8, fps);
|
|
53
59
|
if (parsed === undefined) {
|
|
54
|
-
logger_1.Log.verbose({ indent, logLevel },
|
|
60
|
+
logger_1.Log.verbose({ indent, logLevel }, utf8);
|
|
55
61
|
}
|
|
56
62
|
else {
|
|
63
|
+
onProgress(parsed);
|
|
57
64
|
logger_1.Log.verbose({ indent, logLevel }, `Encoded ${parsed} audio frames`);
|
|
58
65
|
}
|
|
59
66
|
});
|
|
60
67
|
await task;
|
|
68
|
+
logger_1.Log.verbose({ indent, logLevel }, `Encoded audio in ${Date.now() - startCombining}ms`);
|
|
61
69
|
return output;
|
|
62
70
|
}
|
|
63
71
|
catch (e) {
|
|
64
|
-
(0, fs_1.rmSync)(
|
|
72
|
+
(0, fs_1.rmSync)(fileListTxt, { recursive: true });
|
|
65
73
|
throw e;
|
|
66
74
|
}
|
|
67
75
|
};
|
|
68
|
-
const combineAudioSeamlessly = async ({ files, filelistDir, indent, logLevel, output, chunkDurationInSeconds, addRemotionMetadata, }) => {
|
|
76
|
+
const combineAudioSeamlessly = async ({ files, filelistDir, indent, logLevel, output, chunkDurationInSeconds, addRemotionMetadata, fps, binariesDirectory, cancelSignal, onProgress, }) => {
|
|
69
77
|
var _a;
|
|
78
|
+
const startConcatenating = Date.now();
|
|
70
79
|
const fileList = files
|
|
71
80
|
.map((p, i) => {
|
|
72
81
|
const isLast = i === files.length - 1;
|
|
@@ -97,6 +106,7 @@ const combineAudioSeamlessly = async ({ files, filelistDir, indent, logLevel, ou
|
|
|
97
106
|
const fileListTxt = (0, path_1.join)(filelistDir, 'audio-files.txt');
|
|
98
107
|
(0, fs_1.writeFileSync)(fileListTxt, fileList);
|
|
99
108
|
const command = [
|
|
109
|
+
'-hide_banner',
|
|
100
110
|
'-f',
|
|
101
111
|
'concat',
|
|
102
112
|
'-safe',
|
|
@@ -111,32 +121,35 @@ const combineAudioSeamlessly = async ({ files, filelistDir, indent, logLevel, ou
|
|
|
111
121
|
'-y',
|
|
112
122
|
output,
|
|
113
123
|
];
|
|
124
|
+
logger_1.Log.verbose({ indent, logLevel }, `Combining AAC audio seamlessly, command: ${command.join(' ')}`);
|
|
114
125
|
try {
|
|
115
126
|
const task = (0, call_ffmpeg_1.callFf)({
|
|
116
127
|
args: command,
|
|
117
128
|
bin: 'ffmpeg',
|
|
118
129
|
indent,
|
|
119
130
|
logLevel,
|
|
131
|
+
binariesDirectory,
|
|
132
|
+
cancelSignal,
|
|
120
133
|
});
|
|
121
134
|
(_a = task.stderr) === null || _a === void 0 ? void 0 : _a.on('data', (data) => {
|
|
122
|
-
const
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
else {
|
|
135
|
+
const utf8 = data.toString('utf8');
|
|
136
|
+
const parsed = (0, parse_ffmpeg_progress_1.parseFfmpegProgress)(utf8, fps);
|
|
137
|
+
if (parsed !== undefined) {
|
|
138
|
+
onProgress(parsed);
|
|
127
139
|
logger_1.Log.verbose({ indent, logLevel }, `Encoded ${parsed} audio frames`);
|
|
128
140
|
}
|
|
129
141
|
});
|
|
130
142
|
await task;
|
|
143
|
+
logger_1.Log.verbose({ indent, logLevel }, `Combined audio seamlessly in ${Date.now() - startConcatenating}ms`);
|
|
131
144
|
return output;
|
|
132
145
|
}
|
|
133
146
|
catch (e) {
|
|
134
|
-
(0, fs_1.rmSync)(
|
|
147
|
+
(0, fs_1.rmSync)(fileListTxt, { recursive: true });
|
|
135
148
|
console.log(e);
|
|
136
149
|
throw e;
|
|
137
150
|
}
|
|
138
151
|
};
|
|
139
|
-
const createCombinedAudio = ({ seamless, filelistDir, files, indent, logLevel, audioBitrate, resolvedAudioCodec, output, chunkDurationInSeconds, addRemotionMetadata, }) => {
|
|
152
|
+
const createCombinedAudio = ({ seamless, filelistDir, files, indent, logLevel, audioBitrate, resolvedAudioCodec, output, chunkDurationInSeconds, addRemotionMetadata, binariesDirectory, fps, cancelSignal, onProgress, }) => {
|
|
140
153
|
if (seamless) {
|
|
141
154
|
return combineAudioSeamlessly({
|
|
142
155
|
filelistDir,
|
|
@@ -146,6 +159,10 @@ const createCombinedAudio = ({ seamless, filelistDir, files, indent, logLevel, a
|
|
|
146
159
|
output,
|
|
147
160
|
chunkDurationInSeconds,
|
|
148
161
|
addRemotionMetadata,
|
|
162
|
+
binariesDirectory,
|
|
163
|
+
fps,
|
|
164
|
+
cancelSignal,
|
|
165
|
+
onProgress,
|
|
149
166
|
});
|
|
150
167
|
}
|
|
151
168
|
return encodeAudio({
|
|
@@ -157,6 +174,10 @@ const createCombinedAudio = ({ seamless, filelistDir, files, indent, logLevel, a
|
|
|
157
174
|
indent,
|
|
158
175
|
logLevel,
|
|
159
176
|
addRemotionMetadata,
|
|
177
|
+
binariesDirectory,
|
|
178
|
+
fps,
|
|
179
|
+
cancelSignal,
|
|
180
|
+
onProgress,
|
|
160
181
|
});
|
|
161
182
|
};
|
|
162
183
|
exports.createCombinedAudio = createCombinedAudio;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.combineVideoStreamsSeamlessly = void 0;
|
|
4
|
+
const combineVideoStreamsSeamlessly = ({ files }) => {
|
|
5
|
+
const fileList = `concat:${files.join('|')}`;
|
|
6
|
+
return fileList;
|
|
7
|
+
};
|
|
8
|
+
exports.combineVideoStreamsSeamlessly = combineVideoStreamsSeamlessly;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { Codec } from './codec';
|
|
2
2
|
import type { LogLevel } from './log-level';
|
|
3
|
-
|
|
3
|
+
import type { CancelSignal } from './make-cancel-signal';
|
|
4
|
+
export declare const combineVideoStreams: ({ fps, codec, filelistDir, numberOfGifLoops, output, indent, logLevel, onProgress, files, addRemotionMetadata, binariesDirectory, cancelSignal, }: {
|
|
4
5
|
fps: number;
|
|
5
6
|
codec: Codec;
|
|
6
7
|
filelistDir: string;
|
|
@@ -11,4 +12,6 @@ export declare const combineVideoStreams: ({ fps, codec, filelistDir, numberOfGi
|
|
|
11
12
|
onProgress: (p: number) => void;
|
|
12
13
|
files: string[];
|
|
13
14
|
addRemotionMetadata: boolean;
|
|
15
|
+
binariesDirectory: string | null;
|
|
16
|
+
cancelSignal: CancelSignal | undefined;
|
|
14
17
|
}) => Promise<string>;
|
|
@@ -9,12 +9,13 @@ const convert_number_of_gif_loops_to_ffmpeg_1 = require("./convert-number-of-gif
|
|
|
9
9
|
const logger_1 = require("./logger");
|
|
10
10
|
const parse_ffmpeg_progress_1 = require("./parse-ffmpeg-progress");
|
|
11
11
|
const truthy_1 = require("./truthy");
|
|
12
|
-
const combineVideoStreams = async ({ fps, codec, filelistDir, numberOfGifLoops, output, indent, logLevel, onProgress, files, addRemotionMetadata, }) => {
|
|
12
|
+
const combineVideoStreams = async ({ fps, codec, filelistDir, numberOfGifLoops, output, indent, logLevel, onProgress, files, addRemotionMetadata, binariesDirectory, cancelSignal, }) => {
|
|
13
13
|
var _a;
|
|
14
14
|
const fileList = files.map((p) => `file '${p}'`).join('\n');
|
|
15
15
|
const fileListTxt = (0, path_1.join)(filelistDir, 'video-files.txt');
|
|
16
16
|
(0, fs_1.writeFileSync)(fileListTxt, fileList);
|
|
17
17
|
const command = [
|
|
18
|
+
'-hide_banner',
|
|
18
19
|
'-r',
|
|
19
20
|
String(fps),
|
|
20
21
|
'-f',
|
|
@@ -37,15 +38,19 @@ const combineVideoStreams = async ({ fps, codec, filelistDir, numberOfGifLoops,
|
|
|
37
38
|
'-y',
|
|
38
39
|
output,
|
|
39
40
|
].filter(truthy_1.truthy);
|
|
41
|
+
const startTime = Date.now();
|
|
42
|
+
logger_1.Log.verbose({ indent, logLevel }, `Combining video without re-encoding, command: ${command.join(' ')}`);
|
|
40
43
|
try {
|
|
41
44
|
const task = (0, call_ffmpeg_1.callFf)({
|
|
42
45
|
args: command,
|
|
43
46
|
bin: 'ffmpeg',
|
|
44
47
|
indent,
|
|
45
48
|
logLevel,
|
|
49
|
+
binariesDirectory,
|
|
50
|
+
cancelSignal,
|
|
46
51
|
});
|
|
47
52
|
(_a = task.stderr) === null || _a === void 0 ? void 0 : _a.on('data', (data) => {
|
|
48
|
-
const parsed = (0, parse_ffmpeg_progress_1.parseFfmpegProgress)(data.toString('utf8'));
|
|
53
|
+
const parsed = (0, parse_ffmpeg_progress_1.parseFfmpegProgress)(data.toString('utf8'), fps);
|
|
49
54
|
if (parsed === undefined) {
|
|
50
55
|
logger_1.Log.verbose({ indent, logLevel }, data.toString('utf8'));
|
|
51
56
|
}
|
|
@@ -55,10 +60,11 @@ const combineVideoStreams = async ({ fps, codec, filelistDir, numberOfGifLoops,
|
|
|
55
60
|
}
|
|
56
61
|
});
|
|
57
62
|
await task;
|
|
63
|
+
logger_1.Log.verbose({ indent, logLevel }, `Finished combining video in ${Date.now() - startTime}ms`);
|
|
58
64
|
return output;
|
|
59
65
|
}
|
|
60
66
|
catch (e) {
|
|
61
|
-
(0, fs_1.rmSync)(
|
|
67
|
+
(0, fs_1.rmSync)(fileListTxt, { recursive: true });
|
|
62
68
|
throw e;
|
|
63
69
|
}
|
|
64
70
|
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { AudioCodec } from './audio-codec';
|
|
2
|
+
import type { LogLevel } from './log-level';
|
|
3
|
+
import type { CancelSignal } from './make-cancel-signal';
|
|
4
|
+
export declare const compressAudio: ({ audioCodec, outName, binariesDirectory, indent, logLevel, audioBitrate, cancelSignal, inName, }: {
|
|
5
|
+
audioCodec: AudioCodec;
|
|
6
|
+
outName: string;
|
|
7
|
+
indent: boolean;
|
|
8
|
+
logLevel: LogLevel;
|
|
9
|
+
binariesDirectory: string | null;
|
|
10
|
+
audioBitrate: string | null;
|
|
11
|
+
cancelSignal: CancelSignal | undefined;
|
|
12
|
+
inName: string;
|
|
13
|
+
}) => Promise<void>;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.compressAudio = void 0;
|
|
4
|
+
const audio_codec_1 = require("./audio-codec");
|
|
5
|
+
const call_ffmpeg_1 = require("./call-ffmpeg");
|
|
6
|
+
const truthy_1 = require("./truthy");
|
|
7
|
+
const compressAudio = async ({ audioCodec, outName, binariesDirectory, indent, logLevel, audioBitrate, cancelSignal, inName, }) => {
|
|
8
|
+
const args = [
|
|
9
|
+
['-i', inName],
|
|
10
|
+
['-c:a', (0, audio_codec_1.mapAudioCodecToFfmpegAudioCodecName)(audioCodec)],
|
|
11
|
+
audioCodec === 'aac' ? ['-f', 'adts'] : null,
|
|
12
|
+
audioCodec ? ['-b:a', audioBitrate || '320k'] : null,
|
|
13
|
+
audioCodec === 'aac' ? '-cutoff' : null,
|
|
14
|
+
audioCodec === 'aac' ? '18000' : null,
|
|
15
|
+
['-y', outName],
|
|
16
|
+
]
|
|
17
|
+
.filter(truthy_1.truthy)
|
|
18
|
+
.flat(2);
|
|
19
|
+
await (0, call_ffmpeg_1.callFf)({
|
|
20
|
+
bin: 'ffmpeg',
|
|
21
|
+
args,
|
|
22
|
+
indent,
|
|
23
|
+
logLevel,
|
|
24
|
+
binariesDirectory,
|
|
25
|
+
cancelSignal,
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
exports.compressAudio = compressAudio;
|