@remotion/lambda 3.2.31 → 3.2.33
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/api/render-media-on-lambda.d.ts +4 -2
- package/dist/api/render-media-on-lambda.js +3 -1
- package/dist/cli/args.d.ts +2 -2
- package/dist/cli/args.js +1 -5
- package/dist/cli/commands/render/render.js +3 -1
- package/dist/cli/helpers/get-cloudwatch-stream-url.d.ts +8 -0
- package/dist/cli/helpers/get-cloudwatch-stream-url.js +7 -0
- package/dist/functions/helpers/clean-tmpdir.js +1 -1
- package/dist/functions/helpers/concat-videos.d.ts +3 -1
- package/dist/functions/helpers/concat-videos.js +25 -9
- package/dist/functions/helpers/get-custom-out-name.js +1 -1
- package/dist/functions/launch.js +31 -0
- package/dist/functions/renderer.js +3 -0
- package/dist/functions/start.js +2 -0
- package/dist/index.d.ts +2 -1
- package/dist/shared/constants.d.ts +6 -0
- package/package.json +9 -12
- package/remotionlambda.zip +0 -0
|
@@ -31,6 +31,8 @@ export declare type RenderMediaOnLambdaInput = {
|
|
|
31
31
|
downloadBehavior?: DownloadBehavior | null;
|
|
32
32
|
muted?: boolean;
|
|
33
33
|
overwrite?: boolean;
|
|
34
|
+
audioBitrate?: string | null;
|
|
35
|
+
videoBitrate?: string | null;
|
|
34
36
|
webhook?: {
|
|
35
37
|
url: string;
|
|
36
38
|
secret: string | null;
|
|
@@ -60,8 +62,8 @@ export declare type RenderMediaOnLambdaOutput = {
|
|
|
60
62
|
* @param params.webhook Configuration for webhook called upon completion or timeout of the render.
|
|
61
63
|
* @returns {Promise<RenderMediaOnLambdaOutput>} See documentation for detailed structure
|
|
62
64
|
*/
|
|
63
|
-
export declare const renderMediaOnLambda: ({ functionName, serveUrl, inputProps, codec, imageFormat, crf, envVariables, pixelFormat, proResProfile, quality, region, maxRetries, composition, framesPerLambda, privacy, logLevel, frameRange, outName, timeoutInMilliseconds, chromiumOptions, scale, numberOfGifLoops, everyNthFrame, concurrencyPerLambda, downloadBehavior, muted, overwrite, webhook, }: RenderMediaOnLambdaInput) => Promise<RenderMediaOnLambdaOutput>;
|
|
65
|
+
export declare const renderMediaOnLambda: ({ functionName, serveUrl, inputProps, codec, imageFormat, crf, envVariables, pixelFormat, proResProfile, quality, region, maxRetries, composition, framesPerLambda, privacy, logLevel, frameRange, outName, timeoutInMilliseconds, chromiumOptions, scale, numberOfGifLoops, everyNthFrame, concurrencyPerLambda, downloadBehavior, muted, overwrite, audioBitrate, videoBitrate, webhook, }: RenderMediaOnLambdaInput) => Promise<RenderMediaOnLambdaOutput>;
|
|
64
66
|
/**
|
|
65
67
|
* @deprecated Renamed to renderMediaOnLambda()
|
|
66
68
|
*/
|
|
67
|
-
export declare const renderVideoOnLambda: ({ functionName, serveUrl, inputProps, codec, imageFormat, crf, envVariables, pixelFormat, proResProfile, quality, region, maxRetries, composition, framesPerLambda, privacy, logLevel, frameRange, outName, timeoutInMilliseconds, chromiumOptions, scale, numberOfGifLoops, everyNthFrame, concurrencyPerLambda, downloadBehavior, muted, overwrite, webhook, }: RenderMediaOnLambdaInput) => Promise<RenderMediaOnLambdaOutput>;
|
|
69
|
+
export declare const renderVideoOnLambda: ({ functionName, serveUrl, inputProps, codec, imageFormat, crf, envVariables, pixelFormat, proResProfile, quality, region, maxRetries, composition, framesPerLambda, privacy, logLevel, frameRange, outName, timeoutInMilliseconds, chromiumOptions, scale, numberOfGifLoops, everyNthFrame, concurrencyPerLambda, downloadBehavior, muted, overwrite, audioBitrate, videoBitrate, webhook, }: RenderMediaOnLambdaInput) => Promise<RenderMediaOnLambdaOutput>;
|
|
@@ -29,7 +29,7 @@ const validate_serveurl_1 = require("../shared/validate-serveurl");
|
|
|
29
29
|
* @param params.webhook Configuration for webhook called upon completion or timeout of the render.
|
|
30
30
|
* @returns {Promise<RenderMediaOnLambdaOutput>} See documentation for detailed structure
|
|
31
31
|
*/
|
|
32
|
-
const renderMediaOnLambda = async ({ functionName, serveUrl, inputProps, codec, imageFormat, crf, envVariables, pixelFormat, proResProfile, quality, region, maxRetries, composition, framesPerLambda, privacy, logLevel, frameRange, outName, timeoutInMilliseconds, chromiumOptions, scale, numberOfGifLoops, everyNthFrame, concurrencyPerLambda, downloadBehavior, muted, overwrite, webhook, }) => {
|
|
32
|
+
const renderMediaOnLambda = async ({ functionName, serveUrl, inputProps, codec, imageFormat, crf, envVariables, pixelFormat, proResProfile, quality, region, maxRetries, composition, framesPerLambda, privacy, logLevel, frameRange, outName, timeoutInMilliseconds, chromiumOptions, scale, numberOfGifLoops, everyNthFrame, concurrencyPerLambda, downloadBehavior, muted, overwrite, audioBitrate, videoBitrate, webhook, }) => {
|
|
33
33
|
var _a;
|
|
34
34
|
const actualCodec = (0, validate_lambda_codec_1.validateLambdaCodec)(codec);
|
|
35
35
|
(0, validate_serveurl_1.validateServeUrl)(serveUrl);
|
|
@@ -70,6 +70,8 @@ const renderMediaOnLambda = async ({ functionName, serveUrl, inputProps, codec,
|
|
|
70
70
|
muted: muted !== null && muted !== void 0 ? muted : false,
|
|
71
71
|
version: version_1.VERSION,
|
|
72
72
|
overwrite: overwrite !== null && overwrite !== void 0 ? overwrite : false,
|
|
73
|
+
audioBitrate: audioBitrate !== null && audioBitrate !== void 0 ? audioBitrate : null,
|
|
74
|
+
videoBitrate: videoBitrate !== null && videoBitrate !== void 0 ? videoBitrate : null,
|
|
73
75
|
webhook: webhook !== null && webhook !== void 0 ? webhook : null,
|
|
74
76
|
},
|
|
75
77
|
region,
|
package/dist/cli/args.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
/// <reference types="minimist" />
|
|
2
2
|
import type { AwsRegion } from '../pricing/aws-regions';
|
|
3
3
|
import type { Privacy } from '../shared/constants';
|
|
4
4
|
import type { LambdaArchitecture } from '../shared/validate-architecture';
|
|
@@ -27,6 +27,6 @@ declare type LambdaCommandLineOptions = {
|
|
|
27
27
|
webhook: string | undefined;
|
|
28
28
|
['webhook-secret']: string | undefined;
|
|
29
29
|
};
|
|
30
|
-
export declare const parsedLambdaCli: LambdaCommandLineOptions & minimist.ParsedArgs;
|
|
30
|
+
export declare const parsedLambdaCli: LambdaCommandLineOptions & import("minimist").ParsedArgs;
|
|
31
31
|
export declare const forceFlagProvided: boolean;
|
|
32
32
|
export {};
|
package/dist/cli/args.js
CHANGED
|
@@ -1,12 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.forceFlagProvided = exports.parsedLambdaCli = void 0;
|
|
7
4
|
const cli_1 = require("@remotion/cli");
|
|
8
|
-
|
|
9
|
-
exports.parsedLambdaCli = (0, minimist_1.default)(process.argv.slice(2), {
|
|
5
|
+
exports.parsedLambdaCli = cli_1.CliInternals.minimist(process.argv.slice(2), {
|
|
10
6
|
boolean: cli_1.CliInternals.BooleanFlags,
|
|
11
7
|
});
|
|
12
8
|
exports.forceFlagProvided = exports.parsedLambdaCli.f ||
|
|
@@ -42,7 +42,7 @@ const renderCommand = async (args) => {
|
|
|
42
42
|
downloadName,
|
|
43
43
|
outName: outName !== null && outName !== void 0 ? outName : null,
|
|
44
44
|
});
|
|
45
|
-
const { chromiumOptions, crf, envVariables, frameRange, imageFormat, inputProps, logLevel, pixelFormat, proResProfile, puppeteerTimeout, quality, scale, everyNthFrame, numberOfGifLoops, muted, overwrite, } = await cli_1.CliInternals.getCliOptions({
|
|
45
|
+
const { chromiumOptions, crf, envVariables, frameRange, imageFormat, inputProps, logLevel, pixelFormat, proResProfile, puppeteerTimeout, quality, scale, everyNthFrame, numberOfGifLoops, muted, overwrite, audioBitrate, videoBitrate, } = await cli_1.CliInternals.getCliOptions({
|
|
46
46
|
type: 'series',
|
|
47
47
|
isLambda: true,
|
|
48
48
|
codec,
|
|
@@ -82,6 +82,8 @@ const renderCommand = async (args) => {
|
|
|
82
82
|
concurrencyPerLambda: args_1.parsedLambdaCli['concurrency-per-lambda'],
|
|
83
83
|
muted,
|
|
84
84
|
overwrite,
|
|
85
|
+
audioBitrate,
|
|
86
|
+
videoBitrate,
|
|
85
87
|
webhook: args_1.parsedLambdaCli.webhook
|
|
86
88
|
? {
|
|
87
89
|
url: args_1.parsedLambdaCli.webhook,
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { AwsRegion } from '../../client';
|
|
2
|
+
import type { LambdaRoutines } from '../../shared/constants';
|
|
3
|
+
export declare const getCloudwatchStreamUrl: ({ region, functionName, method, renderId, }: {
|
|
4
|
+
region: AwsRegion;
|
|
5
|
+
functionName: string;
|
|
6
|
+
method: LambdaRoutines;
|
|
7
|
+
renderId: string;
|
|
8
|
+
}) => string;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getCloudwatchStreamUrl = void 0;
|
|
4
|
+
const getCloudwatchStreamUrl = ({ region, functionName, method, renderId, }) => {
|
|
5
|
+
return `https://${region}.console.aws.amazon.com/cloudwatch/home?region=${region}#logsV2:log-groups/log-group/$252Faws$252Flambda$252F${functionName}/log-events$3FfilterPattern$3D$2522method$253D${method}$252CrenderId$253D${renderId}$2522`;
|
|
6
|
+
};
|
|
7
|
+
exports.getCloudwatchStreamUrl = getCloudwatchStreamUrl;
|
|
@@ -35,7 +35,7 @@ const deleteAllFilesInAFolderRecursively = (path) => {
|
|
|
35
35
|
const deleteTmpDir = () => {
|
|
36
36
|
exports.deletedFiles = [];
|
|
37
37
|
exports.deletedFilesSize = 0;
|
|
38
|
-
if (
|
|
38
|
+
if (!process.env.VITEST) {
|
|
39
39
|
deleteAllFilesInAFolderRecursively('/tmp');
|
|
40
40
|
}
|
|
41
41
|
};
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import type { AwsRegion } from '../../pricing/aws-regions';
|
|
2
2
|
import type { LambdaCodec } from '../../shared/validate-lambda-codec';
|
|
3
|
-
|
|
3
|
+
import type { EnhancedErrorInfo } from './write-lambda-error';
|
|
4
|
+
export declare const concatVideosS3: ({ bucket, expectedFiles, onProgress, numberOfFrames, renderId, region, codec, expectedBucketOwner, fps, numberOfGifLoops, onErrors, }: {
|
|
4
5
|
bucket: string;
|
|
5
6
|
expectedFiles: number;
|
|
6
7
|
onProgress: (frames: number, encodingStart: number) => void;
|
|
8
|
+
onErrors: (errors: EnhancedErrorInfo[]) => Promise<void>;
|
|
7
9
|
numberOfFrames: number;
|
|
8
10
|
renderId: string;
|
|
9
11
|
region: AwsRegion;
|
|
@@ -28,6 +28,7 @@ const renderer_1 = require("@remotion/renderer");
|
|
|
28
28
|
const fs_1 = __importStar(require("fs"));
|
|
29
29
|
const path_1 = __importStar(require("path"));
|
|
30
30
|
const constants_1 = require("../../shared/constants");
|
|
31
|
+
const inspect_errors_1 = require("./inspect-errors");
|
|
31
32
|
const io_1 = require("./io");
|
|
32
33
|
const timer_1 = require("./timer");
|
|
33
34
|
const getChunkDownloadOutputLocation = ({ outdir, file, }) => {
|
|
@@ -50,11 +51,11 @@ const downloadS3File = async ({ bucket, key, outdir, region, expectedBucketOwner
|
|
|
50
51
|
.on('close', () => resolve());
|
|
51
52
|
});
|
|
52
53
|
};
|
|
53
|
-
const getAllFilesS3 = ({ bucket, expectedFiles, outdir, renderId, region, expectedBucketOwner, }) => {
|
|
54
|
+
const getAllFilesS3 = ({ bucket, expectedFiles, outdir, renderId, region, expectedBucketOwner, onErrors, }) => {
|
|
54
55
|
const alreadyDownloading = {};
|
|
55
56
|
const downloaded = {};
|
|
56
57
|
const getFiles = async () => {
|
|
57
|
-
const prefix = (0, constants_1.
|
|
58
|
+
const prefix = (0, constants_1.rendersPrefix)(renderId);
|
|
58
59
|
const lsTimer = (0, timer_1.timer)('Listing files');
|
|
59
60
|
const contents = await (0, io_1.lambdaLs)({
|
|
60
61
|
bucketName: bucket,
|
|
@@ -63,13 +64,16 @@ const getAllFilesS3 = ({ bucket, expectedFiles, outdir, renderId, region, expect
|
|
|
63
64
|
expectedBucketOwner,
|
|
64
65
|
});
|
|
65
66
|
lsTimer.end();
|
|
66
|
-
return
|
|
67
|
-
|
|
68
|
-
|
|
67
|
+
return {
|
|
68
|
+
filesInBucket: contents
|
|
69
|
+
.filter((c) => { var _a; return (_a = c.Key) === null || _a === void 0 ? void 0 : _a.startsWith((0, constants_1.chunkKey)(renderId)); })
|
|
70
|
+
.map((_) => _.Key),
|
|
71
|
+
errorContents: contents.filter((c) => { var _a; return (_a = c.Key) === null || _a === void 0 ? void 0 : _a.startsWith((0, constants_1.getErrorKeyPrefix)(renderId)); }),
|
|
72
|
+
};
|
|
69
73
|
};
|
|
70
74
|
return new Promise((resolve, reject) => {
|
|
71
75
|
const loop = async () => {
|
|
72
|
-
const filesInBucket = await getFiles();
|
|
76
|
+
const { filesInBucket, errorContents } = await getFiles();
|
|
73
77
|
const checkFinish = () => {
|
|
74
78
|
const areAllFilesDownloaded = Object.keys(downloaded).length === expectedFiles;
|
|
75
79
|
console.log('Checking for finish... ', Object.keys(downloaded), expectedFiles + ' files expected');
|
|
@@ -79,6 +83,17 @@ const getAllFilesS3 = ({ bucket, expectedFiles, outdir, renderId, region, expect
|
|
|
79
83
|
}
|
|
80
84
|
};
|
|
81
85
|
console.log('Found ', filesInBucket);
|
|
86
|
+
const errors = (await (0, inspect_errors_1.inspectErrors)({
|
|
87
|
+
bucket,
|
|
88
|
+
contents: errorContents,
|
|
89
|
+
expectedBucketOwner,
|
|
90
|
+
region,
|
|
91
|
+
renderId,
|
|
92
|
+
})).filter((e) => e.isFatal);
|
|
93
|
+
if (errors.length > 0) {
|
|
94
|
+
await onErrors(errors);
|
|
95
|
+
// Will die here
|
|
96
|
+
}
|
|
82
97
|
filesInBucket.forEach(async (key) => {
|
|
83
98
|
if (alreadyDownloading[key]) {
|
|
84
99
|
return;
|
|
@@ -105,14 +120,14 @@ const getAllFilesS3 = ({ bucket, expectedFiles, outdir, renderId, region, expect
|
|
|
105
120
|
const areAllFilesDownloading = Object.keys(alreadyDownloading).length === expectedFiles;
|
|
106
121
|
if (!areAllFilesDownloading) {
|
|
107
122
|
setTimeout(() => {
|
|
108
|
-
loop();
|
|
123
|
+
loop().catch((err) => reject(err));
|
|
109
124
|
}, 100);
|
|
110
125
|
}
|
|
111
126
|
};
|
|
112
|
-
loop();
|
|
127
|
+
loop().catch((err) => reject(err));
|
|
113
128
|
});
|
|
114
129
|
};
|
|
115
|
-
const concatVideosS3 = async ({ bucket, expectedFiles, onProgress, numberOfFrames, renderId, region, codec, expectedBucketOwner, fps, numberOfGifLoops, }) => {
|
|
130
|
+
const concatVideosS3 = async ({ bucket, expectedFiles, onProgress, numberOfFrames, renderId, region, codec, expectedBucketOwner, fps, numberOfGifLoops, onErrors, }) => {
|
|
116
131
|
var _a;
|
|
117
132
|
const outdir = (0, path_1.join)(renderer_1.RenderInternals.tmpDir(constants_1.CONCAT_FOLDER_TOKEN), 'bucket');
|
|
118
133
|
if ((0, fs_1.existsSync)(outdir)) {
|
|
@@ -128,6 +143,7 @@ const concatVideosS3 = async ({ bucket, expectedFiles, onProgress, numberOfFrame
|
|
|
128
143
|
renderId,
|
|
129
144
|
region,
|
|
130
145
|
expectedBucketOwner,
|
|
146
|
+
onErrors,
|
|
131
147
|
});
|
|
132
148
|
const outfile = (0, path_1.join)(renderer_1.RenderInternals.tmpDir(constants_1.REMOTION_CONCATED_TOKEN), 'concat.' + renderer_1.RenderInternals.getFileExtensionFromCodec(codec, 'final'));
|
|
133
149
|
const combine = (0, timer_1.timer)('Combine videos');
|
|
@@ -10,7 +10,7 @@ const getCustomOutName = ({ renderMetadata, customCredentials, }) => {
|
|
|
10
10
|
return renderMetadata.outName;
|
|
11
11
|
}
|
|
12
12
|
if (renderMetadata.outName.s3OutputProvider) {
|
|
13
|
-
if (!customCredentials && renderMetadata.privacy
|
|
13
|
+
if (!customCredentials && renderMetadata.privacy === 'private') {
|
|
14
14
|
throw new TypeError(`The file was rendered with a custom S3 implementation and is not public, but no custom credentials were passed to downloadMedia().`);
|
|
15
15
|
}
|
|
16
16
|
return {
|
package/dist/functions/launch.js
CHANGED
|
@@ -140,6 +140,8 @@ const innerLaunchHandler = async (params, options) => {
|
|
|
140
140
|
remotion_1.Internals.validateFps(comp.fps, 'passed to a Lambda render', false);
|
|
141
141
|
remotion_1.Internals.validateDimension(comp.height, 'height', 'passed to a Lambda render');
|
|
142
142
|
remotion_1.Internals.validateDimension(comp.width, 'width', 'passed to a Lambda render');
|
|
143
|
+
renderer_1.RenderInternals.validateBitrate(params.audioBitrate, 'audioBitrate');
|
|
144
|
+
renderer_1.RenderInternals.validateBitrate(params.videoBitrate, 'videoBitrate');
|
|
143
145
|
renderer_1.RenderInternals.validateConcurrency(params.concurrencyPerLambda, 'concurrencyPerLambda');
|
|
144
146
|
const realFrameRange = renderer_1.RenderInternals.getRealFrameRange(comp.durationInFrames, params.frameRange);
|
|
145
147
|
const frameCount = renderer_1.RenderInternals.getFramesToRender(realFrameRange, params.everyNthFrame);
|
|
@@ -198,6 +200,8 @@ const innerLaunchHandler = async (params, options) => {
|
|
|
198
200
|
everyNthFrame: params.everyNthFrame,
|
|
199
201
|
concurrencyPerLambda: params.concurrencyPerLambda,
|
|
200
202
|
muted: params.muted,
|
|
203
|
+
audioBitrate: params.audioBitrate,
|
|
204
|
+
videoBitrate: params.videoBitrate,
|
|
201
205
|
};
|
|
202
206
|
return payload;
|
|
203
207
|
});
|
|
@@ -315,6 +319,32 @@ const innerLaunchHandler = async (params, options) => {
|
|
|
315
319
|
});
|
|
316
320
|
});
|
|
317
321
|
};
|
|
322
|
+
const onErrors = async (errors) => {
|
|
323
|
+
var _a;
|
|
324
|
+
console.log('Found Errors', errors);
|
|
325
|
+
if (params.webhook) {
|
|
326
|
+
console.log('Sending webhook with errors');
|
|
327
|
+
await (0, invoke_webhook_1.invokeWebhook)({
|
|
328
|
+
url: params.webhook.url,
|
|
329
|
+
secret: (_a = params.webhook.secret) !== null && _a !== void 0 ? _a : null,
|
|
330
|
+
payload: {
|
|
331
|
+
type: 'error',
|
|
332
|
+
renderId: params.renderId,
|
|
333
|
+
expectedBucketOwner: options.expectedBucketOwner,
|
|
334
|
+
bucketName: params.bucketName,
|
|
335
|
+
errors: errors.slice(0, 5).map((e) => ({
|
|
336
|
+
message: e.message,
|
|
337
|
+
name: e.name,
|
|
338
|
+
stack: e.stack,
|
|
339
|
+
})),
|
|
340
|
+
},
|
|
341
|
+
});
|
|
342
|
+
}
|
|
343
|
+
else {
|
|
344
|
+
console.log('No webhook specified');
|
|
345
|
+
}
|
|
346
|
+
throw new Error('Stopping Lambda function because error occurred: ' + errors[0].stack);
|
|
347
|
+
};
|
|
318
348
|
const fps = comp.fps / params.everyNthFrame;
|
|
319
349
|
const { outfile, cleanupChunksProm, encodingStart } = await (0, concat_videos_1.concatVideosS3)({
|
|
320
350
|
bucket: params.bucketName,
|
|
@@ -327,6 +357,7 @@ const innerLaunchHandler = async (params, options) => {
|
|
|
327
357
|
expectedBucketOwner: options.expectedBucketOwner,
|
|
328
358
|
fps,
|
|
329
359
|
numberOfGifLoops: params.numberOfGifLoops,
|
|
360
|
+
onErrors,
|
|
330
361
|
});
|
|
331
362
|
if (!encodingStop) {
|
|
332
363
|
encodingStop = Date.now();
|
|
@@ -136,6 +136,8 @@ const renderHandler = async (params, options, logs) => {
|
|
|
136
136
|
downloadMap,
|
|
137
137
|
muted: params.muted,
|
|
138
138
|
enforceAudioTrack: true,
|
|
139
|
+
audioBitrate: params.audioBitrate,
|
|
140
|
+
videoBitrate: params.videoBitrate,
|
|
139
141
|
onSlowestFrames: (slowestFrames) => {
|
|
140
142
|
console.log();
|
|
141
143
|
console.log(`Slowest frames:`);
|
|
@@ -195,6 +197,7 @@ const rendererHandler = async (params, options) => {
|
|
|
195
197
|
}
|
|
196
198
|
catch (err) {
|
|
197
199
|
if (process.env.NODE_ENV === 'test') {
|
|
200
|
+
console.log({ err });
|
|
198
201
|
throw err;
|
|
199
202
|
}
|
|
200
203
|
// If this error is encountered, we can just retry as it
|
package/dist/functions/start.js
CHANGED
|
@@ -64,6 +64,8 @@ const startHandler = async (params, options) => {
|
|
|
64
64
|
muted: params.muted,
|
|
65
65
|
overwrite: params.overwrite,
|
|
66
66
|
webhook: params.webhook,
|
|
67
|
+
audioBitrate: params.audioBitrate,
|
|
68
|
+
videoBitrate: params.videoBitrate,
|
|
67
69
|
};
|
|
68
70
|
await (0, aws_clients_1.getLambdaClient)((0, get_current_region_1.getCurrentRegionInFunction)()).send(new client_lambda_1.InvokeCommand({
|
|
69
71
|
FunctionName: process.env.AWS_LAMBDA_FUNCTION_NAME,
|
package/dist/index.d.ts
CHANGED
|
@@ -34,6 +34,7 @@ import type { RenderStillOnLambdaInput, RenderStillOnLambdaOutput } from './api/
|
|
|
34
34
|
import { renderStillOnLambda } from './api/render-still-on-lambda';
|
|
35
35
|
import { validateWebhookSignature } from './api/validate-webhook-signature';
|
|
36
36
|
import type { LambdaLSInput, LambdaLsReturnType } from './functions/helpers/io';
|
|
37
|
+
import type { EnhancedErrorInfo, LambdaErrorInfo } from './functions/helpers/write-lambda-error';
|
|
37
38
|
import { LambdaInternals } from './internals';
|
|
38
39
|
import type { AwsRegion } from './pricing/aws-regions';
|
|
39
40
|
import type { CustomCredentials } from './shared/aws-clients';
|
|
@@ -41,4 +42,4 @@ import type { RenderProgress } from './shared/constants';
|
|
|
41
42
|
import type { WebhookPayload } from './shared/invoke-webhook';
|
|
42
43
|
import type { LambdaArchitecture } from './shared/validate-architecture';
|
|
43
44
|
export { deleteSite, deployFunction, deploySite, downloadMedia, downloadVideo, getFunctions, getUserPolicy, getRolePolicy, getSites, getOrCreateBucket, getRenderProgress, renderVideoOnLambda, renderMediaOnLambda, simulatePermissions, deleteFunction, getFunctionInfo, estimatePrice, LambdaInternals, renderStillOnLambda, getRegions, getAwsClient, presignUrl, deleteRender, validateWebhookSignature, };
|
|
44
|
-
export type { AwsRegion, RenderProgress, DeploySiteInput, DeploySiteOutput, LambdaLsReturnType, LambdaLSInput, DeleteSiteInput, DeleteSiteOutput, EstimatePriceInput, DeployFunctionInput, DeployFunctionOutput, DeleteFunctionInput, GetFunctionInfoInput, FunctionInfo, GetFunctionsInput, GetSitesInput, GetSitesOutput, DownloadMediaInput, DownloadMediaOutput, GetOrCreateBucketInput, GetOrCreateBucketOutput, GetRenderInput, RenderMediaOnLambdaInput, RenderMediaOnLambdaOutput, RenderStillOnLambdaInput, RenderStillOnLambdaOutput, SimulatePermissionsInput, SimulatePermissionsOutput, GetAwsClientInput, GetAwsClientOutput, LambdaArchitecture, CustomCredentials, WebhookPayload, };
|
|
45
|
+
export type { AwsRegion, RenderProgress, DeploySiteInput, DeploySiteOutput, LambdaLsReturnType, LambdaLSInput, DeleteSiteInput, DeleteSiteOutput, EstimatePriceInput, DeployFunctionInput, DeployFunctionOutput, DeleteFunctionInput, GetFunctionInfoInput, FunctionInfo, GetFunctionsInput, GetSitesInput, GetSitesOutput, DownloadMediaInput, DownloadMediaOutput, GetOrCreateBucketInput, GetOrCreateBucketOutput, GetRenderInput, RenderMediaOnLambdaInput, RenderMediaOnLambdaOutput, RenderStillOnLambdaInput, RenderStillOnLambdaOutput, SimulatePermissionsInput, SimulatePermissionsOutput, GetAwsClientInput, GetAwsClientOutput, LambdaArchitecture, CustomCredentials, WebhookPayload, LambdaErrorInfo, EnhancedErrorInfo, };
|
|
@@ -129,6 +129,8 @@ export declare type LambdaPayloads = {
|
|
|
129
129
|
muted: boolean;
|
|
130
130
|
version: string;
|
|
131
131
|
overwrite: boolean;
|
|
132
|
+
audioBitrate: string | null;
|
|
133
|
+
videoBitrate: string | null;
|
|
132
134
|
webhook: WebhookOption;
|
|
133
135
|
};
|
|
134
136
|
launch: {
|
|
@@ -160,6 +162,8 @@ export declare type LambdaPayloads = {
|
|
|
160
162
|
downloadBehavior: DownloadBehavior;
|
|
161
163
|
muted: boolean;
|
|
162
164
|
overwrite: boolean;
|
|
165
|
+
audioBitrate: string | null;
|
|
166
|
+
videoBitrate: string | null;
|
|
163
167
|
webhook: WebhookOption;
|
|
164
168
|
};
|
|
165
169
|
status: {
|
|
@@ -199,6 +203,8 @@ export declare type LambdaPayloads = {
|
|
|
199
203
|
scale: number;
|
|
200
204
|
everyNthFrame: number;
|
|
201
205
|
muted: boolean;
|
|
206
|
+
audioBitrate: string | null;
|
|
207
|
+
videoBitrate: string | null;
|
|
202
208
|
};
|
|
203
209
|
still: {
|
|
204
210
|
type: LambdaRoutines.still;
|
package/package.json
CHANGED
|
@@ -1,17 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@remotion/lambda",
|
|
3
|
-
"version": "3.2.
|
|
3
|
+
"version": "3.2.33",
|
|
4
4
|
"description": "Distributed renderer for Remotion based on AWS Lambda",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"sideEffects": false,
|
|
7
7
|
"bin": {
|
|
8
8
|
"remotion-lambda": "remotion-lambda-cli.js"
|
|
9
9
|
},
|
|
10
|
-
"module": "true",
|
|
11
10
|
"scripts": {
|
|
12
|
-
"testintegration": "
|
|
11
|
+
"testintegration": "vitest src/test/integration --run",
|
|
13
12
|
"lint": "eslint src --ext ts,tsx",
|
|
14
|
-
"test": "
|
|
13
|
+
"test": "vitest src/test/unit --run",
|
|
15
14
|
"watch": "tsc -w",
|
|
16
15
|
"build": "tsc -d && pnpm run buildlambda",
|
|
17
16
|
"buildlambda": "ts-node src/admin/bundle-lambda.ts",
|
|
@@ -32,12 +31,12 @@
|
|
|
32
31
|
"@aws-sdk/client-service-quotas": "3.58.0",
|
|
33
32
|
"@aws-sdk/lib-storage": "3.58.0",
|
|
34
33
|
"@aws-sdk/s3-request-presigner": "3.58.0",
|
|
35
|
-
"@remotion/bundler": "3.2.
|
|
36
|
-
"@remotion/cli": "3.2.
|
|
37
|
-
"@remotion/renderer": "3.2.
|
|
34
|
+
"@remotion/bundler": "3.2.33",
|
|
35
|
+
"@remotion/cli": "3.2.33",
|
|
36
|
+
"@remotion/renderer": "3.2.33",
|
|
38
37
|
"aws-policies": "^1.0.1",
|
|
39
38
|
"mime-types": "2.1.34",
|
|
40
|
-
"remotion": "3.2.
|
|
39
|
+
"remotion": "3.2.33"
|
|
41
40
|
},
|
|
42
41
|
"peerDependencies": {
|
|
43
42
|
"react": ">=16.8.0",
|
|
@@ -45,22 +44,20 @@
|
|
|
45
44
|
},
|
|
46
45
|
"devDependencies": {
|
|
47
46
|
"@jonny/eslint-config": "3.0.266",
|
|
48
|
-
"@types/jest": "^27.0.2",
|
|
49
47
|
"@types/mime-types": "2.1.1",
|
|
50
48
|
"@types/minimist": "1.2.2",
|
|
51
49
|
"@types/node": "^14.14.14",
|
|
52
50
|
"@types/prompt": "^1.1.0",
|
|
53
51
|
"eslint": "8.13.0",
|
|
54
|
-
"jest": "^27.2.4",
|
|
55
52
|
"prettier": "^2.4.1",
|
|
56
53
|
"prettier-plugin-organize-imports": "^2.3.4",
|
|
57
|
-
"ts-jest": "^27.0.5",
|
|
58
54
|
"ts-node": "^10.8.0",
|
|
59
55
|
"typescript": "^4.7.0",
|
|
56
|
+
"vitest": "^0.24.3",
|
|
60
57
|
"zip-lib": "^0.7.2"
|
|
61
58
|
},
|
|
62
59
|
"publishConfig": {
|
|
63
60
|
"access": "public"
|
|
64
61
|
},
|
|
65
|
-
"gitHead": "
|
|
62
|
+
"gitHead": "3c864e5ab73870674d028a1199005ddbabaede12"
|
|
66
63
|
}
|
package/remotionlambda.zip
CHANGED
|
Binary file
|