@remotion/cloudrun 4.0.18 → 4.0.20

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.
@@ -1,13 +1,13 @@
1
1
 
2
- > @remotion/cloudrun@4.0.17 build /Users/jonathanburger/remotion-v4/packages/cloudrun
2
+ > @remotion/cloudrun@4.0.19 build /Users/jonathanburger/remotion/packages/cloudrun
3
3
  > tsc -d && cp src/shared/sa-permissions.json dist/shared/sa-permissions.json && pnpm run buildContainer && pnpm run tarInstaller
4
4
 
5
5
 
6
- > @remotion/cloudrun@4.0.17 buildContainer /Users/jonathanburger/remotion-v4/packages/cloudrun
6
+ > @remotion/cloudrun@4.0.19 buildContainer /Users/jonathanburger/remotion/packages/cloudrun
7
7
  > ts-node src/admin/bundle-renderLogic.ts
8
8
 
9
9
  distribution bundled.
10
10
 
11
- > @remotion/cloudrun@4.0.17 tarInstaller /Users/jonathanburger/remotion-v4/packages/cloudrun
11
+ > @remotion/cloudrun@4.0.19 tarInstaller /Users/jonathanburger/remotion/packages/cloudrun
12
12
  > ts-node src/admin/bundle-installer.ts
13
13
 
@@ -9,4 +9,6 @@ export declare const downloadFile: ({ bucketName, gsutilURI, downloadName, }: {
9
9
  bucketName: string;
10
10
  gsutilURI: string;
11
11
  downloadName: string;
12
- }) => Promise<string>;
12
+ }) => Promise<{
13
+ outputPath: string;
14
+ }>;
@@ -4,7 +4,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.downloadFile = void 0;
7
- const fs_1 = __importDefault(require("fs"));
7
+ const renderer_1 = require("@remotion/renderer");
8
+ const node_path_1 = __importDefault(require("node:path"));
8
9
  const get_cloud_storage_client_1 = require("./helpers/get-cloud-storage-client");
9
10
  /**
10
11
  * @description Downloads a file from a GCP storage bucket.
@@ -16,14 +17,11 @@ const get_cloud_storage_client_1 = require("./helpers/get-cloud-storage-client")
16
17
  const downloadFile = async ({ bucketName, gsutilURI, downloadName, }) => {
17
18
  const cloudStorageClient = (0, get_cloud_storage_client_1.getCloudStorageClient)();
18
19
  const fileName = gsutilURI.replace(`gs://${bucketName}/`, '');
19
- // check if out folder exists, if not, create it
20
- if (!fs_1.default.existsSync('out')) {
21
- fs_1.default.mkdirSync('out');
22
- }
23
- const destination = `out/${downloadName}`;
20
+ const outputPath = node_path_1.default.resolve(process.cwd(), downloadName);
21
+ renderer_1.RenderInternals.ensureOutputDirectory(outputPath);
24
22
  await cloudStorageClient.bucket(bucketName).file(fileName).download({
25
- destination,
23
+ destination: outputPath,
26
24
  });
27
- return destination;
25
+ return { outputPath };
28
26
  };
29
27
  exports.downloadFile = downloadFile;
@@ -36,6 +36,9 @@ const renderCommand = async (args, remotionRoot) => {
36
36
  if (!composition) {
37
37
  log_1.Log.info('No compositions passed. Fetching compositions...');
38
38
  (0, validate_serveurl_1.validateServeUrl)(serveUrl);
39
+ if (!serveUrl.startsWith('https://') && !serveUrl.startsWith('http://')) {
40
+ throw Error('Passing the shorthand serve URL without composition name is currently not supported.\n Make sure to pass a composition name after the shorthand serve URL or pass the complete serveURL without composition name to get to choose between all compositions.');
41
+ }
39
42
  const server = renderer_1.RenderInternals.prepareServer({
40
43
  concurrency: 1,
41
44
  indent: false,
@@ -45,7 +48,7 @@ const renderCommand = async (args, remotionRoot) => {
45
48
  webpackConfigOrServeUrl: serveUrl,
46
49
  });
47
50
  const { compositionId } = await cli_1.CliInternals.getCompositionWithDimensionOverride({
48
- args,
51
+ args: args.slice(1),
49
52
  compositionIdFromUi: null,
50
53
  browserExecutable,
51
54
  chromiumOptions,
@@ -215,7 +218,7 @@ Codec = ${codec} (${codecReason})
215
218
  if (downloadName) {
216
219
  log_1.Log.info('');
217
220
  log_1.Log.info('downloading file...');
218
- const destination = await (0, download_file_1.downloadFile)({
221
+ const { outputPath: destination } = await (0, download_file_1.downloadFile)({
219
222
  bucketName: res.bucketName,
220
223
  gsutilURI: res.cloudStorageUri,
221
224
  downloadName,
@@ -23,6 +23,9 @@ const stillCommand = async (args, remotionRoot) => {
23
23
  if (!composition) {
24
24
  log_1.Log.info('No compositions passed. Fetching compositions...');
25
25
  (0, validate_serveurl_1.validateServeUrl)(serveUrl);
26
+ if (!serveUrl.startsWith('https://') && !serveUrl.startsWith('http://')) {
27
+ throw Error('Passing the shorthand serve URL without composition name is currently not supported.\n Make sure to pass a composition name after the shorthand serve URL or pass the complete serveURL without composition name to get to choose between all compositions.');
28
+ }
26
29
  const server = renderer_1.RenderInternals.prepareServer({
27
30
  concurrency: 1,
28
31
  indent: false,
@@ -32,7 +35,7 @@ const stillCommand = async (args, remotionRoot) => {
32
35
  webpackConfigOrServeUrl: serveUrl,
33
36
  });
34
37
  const { compositionId } = await cli_1.CliInternals.getCompositionWithDimensionOverride({
35
- args,
38
+ args: args.slice(1),
36
39
  compositionIdFromUi: null,
37
40
  indent: false,
38
41
  serveUrlOrWebpackUrl: serveUrl,
@@ -118,7 +121,7 @@ ${downloadName ? ` Downloaded File = ${downloadName}` : ''}
118
121
  if (downloadName) {
119
122
  log_1.Log.info('');
120
123
  log_1.Log.info('downloading file...');
121
- const destination = await (0, download_file_1.downloadFile)({
124
+ const { outputPath: destination } = await (0, download_file_1.downloadFile)({
122
125
  bucketName: res.bucketName,
123
126
  gsutilURI: res.cloudStorageUri,
124
127
  downloadName,
@@ -49,31 +49,31 @@ export declare const CloudRunPayload: z.ZodDiscriminatedUnion<"type", [z.ZodObje
49
49
  enforceAudioTrack: z.ZodBoolean;
50
50
  preferLossless: z.ZodBoolean;
51
51
  }, "strip", z.ZodTypeAny, {
52
- type: "media";
53
52
  serveUrl: string;
53
+ envVariables: Record<string, string>;
54
+ jpegQuality: number;
55
+ scale: number;
56
+ logLevel: "error" | "verbose" | "info" | "warn";
54
57
  composition: string;
58
+ imageFormat: "png" | "jpeg" | "none";
59
+ delayRenderTimeoutInMilliseconds: number;
60
+ type: "media";
55
61
  codec: "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif";
56
- serializedInputPropsWithCustomSchema: string;
57
- jpegQuality: number;
58
- audioCodec: "mp3" | "aac" | "pcm-16" | "opus" | null;
59
- audioBitrate: string | null;
60
- videoBitrate: string | null;
61
62
  crf: number | null;
63
+ frameRange: ((number | [number, number]) & (number | [number, number] | undefined)) | null;
62
64
  pixelFormat: "yuv420p" | "yuva420p" | "yuv422p" | "yuv444p" | "yuv420p10le" | "yuv422p10le" | "yuv444p10le" | "yuva444p10le";
63
- imageFormat: "png" | "jpeg" | "none";
64
- scale: number;
65
65
  proResProfile: "4444-xq" | "4444" | "hq" | "standard" | "light" | "proxy" | null;
66
66
  everyNthFrame: number;
67
67
  numberOfGifLoops: number | null;
68
- frameRange: ((number | [number, number]) & (number | [number, number] | undefined)) | null;
69
- envVariables: Record<string, string>;
70
68
  muted: boolean;
71
- outputBucket: string;
72
- logLevel: "error" | "verbose" | "info" | "warn";
73
- delayRenderTimeoutInMilliseconds: number;
74
- concurrency: string | number | null;
69
+ audioBitrate: string | null;
70
+ videoBitrate: string | null;
75
71
  enforceAudioTrack: boolean;
72
+ audioCodec: "mp3" | "aac" | "pcm-16" | "opus" | null;
73
+ concurrency: string | number | null;
76
74
  preferLossless: boolean;
75
+ serializedInputPropsWithCustomSchema: string;
76
+ outputBucket: string;
77
77
  forceHeight?: number | null | undefined;
78
78
  forceWidth?: number | null | undefined;
79
79
  chromiumOptions?: {
@@ -86,31 +86,31 @@ export declare const CloudRunPayload: z.ZodDiscriminatedUnion<"type", [z.ZodObje
86
86
  outName?: string | undefined;
87
87
  privacy?: "public" | "private" | undefined;
88
88
  }, {
89
- type: "media";
90
89
  serveUrl: string;
90
+ envVariables: Record<string, string>;
91
+ jpegQuality: number;
92
+ scale: number;
93
+ logLevel: "error" | "verbose" | "info" | "warn";
91
94
  composition: string;
95
+ imageFormat: "png" | "jpeg" | "none";
96
+ delayRenderTimeoutInMilliseconds: number;
97
+ type: "media";
92
98
  codec: "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "gif";
93
- serializedInputPropsWithCustomSchema: string;
94
- jpegQuality: number;
95
- audioCodec: "mp3" | "aac" | "pcm-16" | "opus" | null;
96
- audioBitrate: string | null;
97
- videoBitrate: string | null;
98
99
  crf: number | null;
100
+ frameRange: ((number | [number, number]) & (number | [number, number] | undefined)) | null;
99
101
  pixelFormat: "yuv420p" | "yuva420p" | "yuv422p" | "yuv444p" | "yuv420p10le" | "yuv422p10le" | "yuv444p10le" | "yuva444p10le";
100
- imageFormat: "png" | "jpeg" | "none";
101
- scale: number;
102
102
  proResProfile: "4444-xq" | "4444" | "hq" | "standard" | "light" | "proxy" | null;
103
103
  everyNthFrame: number;
104
104
  numberOfGifLoops: number | null;
105
- frameRange: ((number | [number, number]) & (number | [number, number] | undefined)) | null;
106
- envVariables: Record<string, string>;
107
105
  muted: boolean;
108
- outputBucket: string;
109
- logLevel: "error" | "verbose" | "info" | "warn";
110
- delayRenderTimeoutInMilliseconds: number;
111
- concurrency: string | number | null;
106
+ audioBitrate: string | null;
107
+ videoBitrate: string | null;
112
108
  enforceAudioTrack: boolean;
109
+ audioCodec: "mp3" | "aac" | "pcm-16" | "opus" | null;
110
+ concurrency: string | number | null;
113
111
  preferLossless: boolean;
112
+ serializedInputPropsWithCustomSchema: string;
113
+ outputBucket: string;
114
114
  forceHeight?: number | null | undefined;
115
115
  forceWidth?: number | null | undefined;
116
116
  chromiumOptions?: {
@@ -159,18 +159,18 @@ export declare const CloudRunPayload: z.ZodDiscriminatedUnion<"type", [z.ZodObje
159
159
  delayRenderTimeoutInMilliseconds: z.ZodNumber;
160
160
  logLevel: z.ZodEnum<["verbose", "info", "warn", "error"]>;
161
161
  }, "strip", z.ZodTypeAny, {
162
- type: "still";
162
+ privacy: "public" | "private";
163
163
  serveUrl: string;
164
- composition: string;
165
- serializedInputPropsWithCustomSchema: string;
166
- imageFormat: "png" | "jpeg" | "pdf" | "webp";
167
- scale: number;
168
164
  envVariables: Record<string, string>;
169
- outputBucket: string;
170
- privacy: "public" | "private";
165
+ scale: number;
171
166
  logLevel: "error" | "verbose" | "info" | "warn";
172
- delayRenderTimeoutInMilliseconds: number;
167
+ composition: string;
168
+ imageFormat: "png" | "jpeg" | "pdf" | "webp";
173
169
  frame: number;
170
+ delayRenderTimeoutInMilliseconds: number;
171
+ type: "still";
172
+ serializedInputPropsWithCustomSchema: string;
173
+ outputBucket: string;
174
174
  forceHeight?: number | null | undefined;
175
175
  forceWidth?: number | null | undefined;
176
176
  jpegQuality?: number | undefined;
@@ -183,18 +183,18 @@ export declare const CloudRunPayload: z.ZodDiscriminatedUnion<"type", [z.ZodObje
183
183
  } | undefined;
184
184
  outName?: string | undefined;
185
185
  }, {
186
- type: "still";
186
+ privacy: "public" | "private";
187
187
  serveUrl: string;
188
- composition: string;
189
- serializedInputPropsWithCustomSchema: string;
190
- imageFormat: "png" | "jpeg" | "pdf" | "webp";
191
- scale: number;
192
188
  envVariables: Record<string, string>;
193
- outputBucket: string;
194
- privacy: "public" | "private";
189
+ scale: number;
195
190
  logLevel: "error" | "verbose" | "info" | "warn";
196
- delayRenderTimeoutInMilliseconds: number;
191
+ composition: string;
192
+ imageFormat: "png" | "jpeg" | "pdf" | "webp";
197
193
  frame: number;
194
+ delayRenderTimeoutInMilliseconds: number;
195
+ type: "still";
196
+ serializedInputPropsWithCustomSchema: string;
197
+ outputBucket: string;
198
198
  forceHeight?: number | null | undefined;
199
199
  forceWidth?: number | null | undefined;
200
200
  jpegQuality?: number | undefined;
@@ -212,12 +212,12 @@ declare const renderFailResponsePayload: z.ZodObject<{
212
212
  error: z.ZodString;
213
213
  stack: z.ZodString;
214
214
  }, "strip", z.ZodTypeAny, {
215
- status: "error";
216
215
  error: string;
216
+ status: "error";
217
217
  stack: string;
218
218
  }, {
219
- status: "error";
220
219
  error: string;
220
+ status: "error";
221
221
  stack: string;
222
222
  }>;
223
223
  declare const renderStillOnCloudrunResponsePayload: z.ZodObject<{
@@ -229,16 +229,16 @@ declare const renderStillOnCloudrunResponsePayload: z.ZodObject<{
229
229
  renderId: z.ZodString;
230
230
  privacy: z.ZodEnum<["public-read", "project-private"]>;
231
231
  }, "strip", z.ZodTypeAny, {
232
- status: "success";
233
232
  privacy: "public-read" | "project-private";
233
+ status: "success";
234
234
  cloudStorageUri: string;
235
235
  size: number;
236
236
  bucketName: string;
237
237
  renderId: string;
238
238
  publicUrl?: string | null | undefined;
239
239
  }, {
240
- status: "success";
241
240
  privacy: "public-read" | "project-private";
241
+ status: "success";
242
242
  cloudStorageUri: string;
243
243
  size: number;
244
244
  bucketName: string;
@@ -254,16 +254,16 @@ declare const renderMediaOnCloudrunResponsePayload: z.ZodObject<{
254
254
  renderId: z.ZodString;
255
255
  privacy: z.ZodEnum<["public-read", "project-private"]>;
256
256
  }, "strip", z.ZodTypeAny, {
257
- status: "success";
258
257
  privacy: "public-read" | "project-private";
258
+ status: "success";
259
259
  cloudStorageUri: string;
260
260
  size: number;
261
261
  bucketName: string;
262
262
  renderId: string;
263
263
  publicUrl?: string | null | undefined;
264
264
  }, {
265
- status: "success";
266
265
  privacy: "public-read" | "project-private";
266
+ status: "success";
267
267
  cloudStorageUri: string;
268
268
  size: number;
269
269
  bucketName: string;
@@ -278,15 +278,15 @@ declare const cloudRunCrashResponse: z.ZodObject<{
278
278
  requestCrashTime: z.ZodString;
279
279
  requestElapsedTimeInSeconds: z.ZodNumber;
280
280
  }, "strip", z.ZodTypeAny, {
281
- message: "Service crashed without sending a response. Check the logs in GCP console.";
282
281
  status: "crash";
282
+ message: "Service crashed without sending a response. Check the logs in GCP console.";
283
283
  cloudRunEndpoint: string;
284
284
  requestStartTime: string;
285
285
  requestCrashTime: string;
286
286
  requestElapsedTimeInSeconds: number;
287
287
  }, {
288
- message: "Service crashed without sending a response. Check the logs in GCP console.";
289
288
  status: "crash";
289
+ message: "Service crashed without sending a response. Check the logs in GCP console.";
290
290
  cloudRunEndpoint: string;
291
291
  requestStartTime: string;
292
292
  requestCrashTime: string;
@@ -17,13 +17,7 @@ const validateServeUrl = async (serveUrl) => {
17
17
  .file(fileName)
18
18
  .exists();
19
19
  if (!exists) {
20
- throw new Error('serveURL ERROR. File "' +
21
- fileName +
22
- '" not found in bucket "' +
23
- bucketName +
24
- '". Is your site name correct - "' +
25
- siteName +
26
- '"?');
20
+ throw new Error(`serveURL ERROR. File "${fileName}" not found in bucket "${bucketName}". Is your site name correct - "${siteName}"?`);
27
21
  }
28
22
  }
29
23
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@remotion/cloudrun",
3
- "version": "4.0.18",
3
+ "version": "4.0.20",
4
4
  "description": "GCP Cloud Run alternative to lambda rendering",
5
5
  "main": "dist/index.js",
6
6
  "dependencies": {
@@ -12,10 +12,10 @@
12
12
  "@google-cloud/logging": "^10.5.0",
13
13
  "google-auth-library": "^8.7.0",
14
14
  "zod": "^3.21.4",
15
- "@remotion/bundler": "4.0.18",
16
- "@remotion/cli": "4.0.18",
17
- "@remotion/renderer": "4.0.18",
18
- "remotion": "4.0.18"
15
+ "@remotion/bundler": "4.0.20",
16
+ "@remotion/cli": "4.0.20",
17
+ "remotion": "4.0.20",
18
+ "@remotion/renderer": "4.0.20"
19
19
  },
20
20
  "devDependencies": {
21
21
  "@jonny/eslint-config": "3.0.266",
@@ -26,7 +26,7 @@
26
26
  "prettier-plugin-organize-imports": "^3.2.2",
27
27
  "ts-node": "^10.8.0",
28
28
  "vitest": "0.24.3",
29
- "@remotion/compositor-linux-x64-gnu": "4.0.18"
29
+ "@remotion/compositor-linux-x64-gnu": "4.0.20"
30
30
  },
31
31
  "exports": {
32
32
  "./package.json": "./package.json",
@@ -1,2 +0,0 @@
1
- export declare const RENDER_MEDIA_SUBCOMMAND = "media";
2
- export declare const renderMediaSubcommand: (args: string[], remotionRoot: string) => Promise<void>;
@@ -1,156 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.renderMediaSubcommand = exports.RENDER_MEDIA_SUBCOMMAND = void 0;
4
- const cli_1 = require("@remotion/cli");
5
- const render_media_on_cloudrun_1 = require("../../../api/render-media-on-cloudrun");
6
- // import {validateMaxRetries} from '../../../shared/validate-retries';
7
- const config_1 = require("@remotion/cli/config");
8
- const renderer_1 = require("@remotion/renderer");
9
- const download_file_1 = require("../../../api/download-file");
10
- const validate_serveurl_1 = require("../../../shared/validate-serveurl");
11
- const args_1 = require("../../args");
12
- const log_1 = require("../../log");
13
- const renderArgsCheck_1 = require("./helpers/renderArgsCheck");
14
- exports.RENDER_MEDIA_SUBCOMMAND = 'media';
15
- const renderMediaSubcommand = async (args, remotionRoot) => {
16
- var _a;
17
- const { serveUrl, cloudRunUrl, outName, forceBucketName, downloadName, privacy, region, } = await (0, renderArgsCheck_1.renderArgsCheck)(exports.RENDER_MEDIA_SUBCOMMAND, args);
18
- const { codec, reason: codecReason } = cli_1.CliInternals.getFinalOutputCodec({
19
- cliFlag: cli_1.CliInternals.parsedCli.codec,
20
- downloadName,
21
- outName: outName !== null && outName !== void 0 ? outName : null,
22
- configFile: (_a = config_1.ConfigInternals.getOutputCodecOrUndefined()) !== null && _a !== void 0 ? _a : null,
23
- uiCodec: null,
24
- });
25
- const imageFormat = args_1.parsedCloudrunCli['image-format'];
26
- const audioCodec = args_1.parsedCloudrunCli['audio-codec'];
27
- const { chromiumOptions, crf, envVariables, frameRange, inputProps, logLevel, puppeteerTimeout, pixelFormat, proResProfile, jpegQuality, scale, everyNthFrame, numberOfGifLoops, muted, audioBitrate, videoBitrate, height, width, browserExecutable, port, } = await cli_1.CliInternals.getCliOptions({
28
- type: 'series',
29
- isLambda: true,
30
- remotionRoot,
31
- });
32
- let composition = args[1];
33
- if (!composition) {
34
- log_1.Log.info('No compositions passed. Fetching compositions...');
35
- (0, validate_serveurl_1.validateServeUrl)(serveUrl);
36
- const server = renderer_1.RenderInternals.prepareServer({
37
- concurrency: 1,
38
- indent: false,
39
- port,
40
- remotionRoot,
41
- verbose: renderer_1.RenderInternals.isEqualOrBelowLogLevel(logLevel, 'verbose'),
42
- webpackConfigOrServeUrl: serveUrl,
43
- });
44
- const { compositionId } = await cli_1.CliInternals.getCompositionWithDimensionOverride({
45
- args,
46
- compositionIdFromUi: null,
47
- browserExecutable,
48
- chromiumOptions,
49
- envVariables,
50
- height,
51
- indent: false,
52
- inputProps,
53
- port,
54
- puppeteerInstance: undefined,
55
- serveUrlOrWebpackUrl: serveUrl,
56
- timeoutInMilliseconds: puppeteerTimeout,
57
- verbose: renderer_1.RenderInternals.isEqualOrBelowLogLevel(logLevel, 'verbose'),
58
- width,
59
- server: await server,
60
- });
61
- composition = compositionId;
62
- }
63
- // Todo: Check cloudRunUrl is valid, as the error message is obtuse
64
- cli_1.CliInternals.Log.info(cli_1.CliInternals.chalk.gray(`
65
- Cloud Run Service URL = ${cloudRunUrl}
66
- Region = ${region}
67
- Type = media
68
- Composition = ${composition}
69
- Codec = ${codec}
70
- Output Bucket = ${forceBucketName}
71
- Output File = ${outName !== null && outName !== void 0 ? outName : 'out.mp4'}
72
- Output File Privacy = ${privacy}
73
- ${downloadName ? ` Downloaded File = ${downloadName}` : ''}
74
- `.trim()));
75
- log_1.Log.info();
76
- const renderStart = Date.now();
77
- const progressBar = cli_1.CliInternals.createOverwriteableCliOutput({
78
- quiet: cli_1.CliInternals.quietFlagProvided(),
79
- cancelSignal: null,
80
- updatesDontOverwrite: false,
81
- indent: false,
82
- });
83
- const renderProgress = {
84
- doneIn: null,
85
- progress: 0,
86
- };
87
- const updateProgress = () => {
88
- progressBar.update([
89
- `Rendering on Cloud Run: `,
90
- cli_1.CliInternals.makeProgressBar(renderProgress.progress),
91
- `${renderProgress.doneIn === null ? 'Rendering' : 'Rendered'}`,
92
- renderProgress.doneIn === null
93
- ? `${Math.round(renderProgress.progress * 100)}%`
94
- : cli_1.CliInternals.chalk.gray(`${renderProgress.doneIn}ms`),
95
- ].join(' '), false);
96
- };
97
- const updateRenderProgress = (progress) => {
98
- renderProgress.progress = progress;
99
- updateProgress();
100
- };
101
- const res = await (0, render_media_on_cloudrun_1.renderMediaOnCloudrun)({
102
- cloudRunUrl,
103
- serveUrl,
104
- region,
105
- inputProps,
106
- codec: codec,
107
- imageFormat,
108
- crf: crf !== null && crf !== void 0 ? crf : undefined,
109
- envVariables,
110
- pixelFormat,
111
- proResProfile,
112
- jpegQuality,
113
- composition,
114
- privacy,
115
- frameRange: frameRange !== null && frameRange !== void 0 ? frameRange : undefined,
116
- outName,
117
- chromiumOptions,
118
- scale,
119
- numberOfGifLoops,
120
- everyNthFrame,
121
- muted,
122
- audioBitrate,
123
- videoBitrate,
124
- forceHeight: height,
125
- forceWidth: width,
126
- audioCodec,
127
- forceBucketName,
128
- updateRenderProgress,
129
- logLevel: config_1.ConfigInternals.Logging.getLogLevel(),
130
- });
131
- renderProgress.doneIn = Date.now() - renderStart;
132
- updateProgress();
133
- log_1.Log.info(`
134
-
135
- `);
136
- log_1.Log.info(cli_1.CliInternals.chalk.blueBright(`
137
- ${res.publicUrl ? `Public URL = ${decodeURIComponent(res.publicUrl)}` : ``}
138
- Cloud Storage Uri = ${res.cloudStorageUri}
139
- Size (KB) = ${Math.round(Number(res.size) / 1000)}
140
- Bucket Name = ${res.bucketName}
141
- Privacy = ${res.privacy}
142
- Render ID = ${res.renderId}
143
- Codec = ${codec} (${codecReason})
144
- `.trim()));
145
- if (downloadName) {
146
- log_1.Log.info('');
147
- log_1.Log.info('downloading file...');
148
- const destination = await (0, download_file_1.downloadFile)({
149
- bucketName: res.bucketName,
150
- gsutilURI: res.cloudStorageUri,
151
- downloadName,
152
- });
153
- log_1.Log.info(cli_1.CliInternals.chalk.blueBright(`Downloaded file to ${destination}!`));
154
- }
155
- };
156
- exports.renderMediaSubcommand = renderMediaSubcommand;
@@ -1,2 +0,0 @@
1
- export declare const RENDER_STILL_SUBCOMMAND = "still";
2
- export declare const renderStillSubcommand: (args: string[], remotionRoot: string) => Promise<void>;
@@ -1,123 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.renderStillSubcommand = exports.RENDER_STILL_SUBCOMMAND = void 0;
4
- const cli_1 = require("@remotion/cli");
5
- const config_1 = require("@remotion/cli/config");
6
- const renderer_1 = require("@remotion/renderer");
7
- const download_file_1 = require("../../../api/download-file");
8
- const render_still_on_cloudrun_1 = require("../../../api/render-still-on-cloudrun");
9
- const validate_serveurl_1 = require("../../../shared/validate-serveurl");
10
- const log_1 = require("../../log");
11
- const renderArgsCheck_1 = require("./helpers/renderArgsCheck");
12
- exports.RENDER_STILL_SUBCOMMAND = 'still';
13
- const renderStillSubcommand = async (args, remotionRoot) => {
14
- var _a, _b;
15
- const { serveUrl, cloudRunUrl, outName, forceBucketName, privacy, downloadName, region, } = await (0, renderArgsCheck_1.renderArgsCheck)(exports.RENDER_STILL_SUBCOMMAND, args);
16
- const { chromiumOptions, envVariables, inputProps, logLevel, puppeteerTimeout, jpegQuality, stillFrame, scale, height, width, browserExecutable, port, } = await cli_1.CliInternals.getCliOptions({
17
- type: 'still',
18
- isLambda: true,
19
- remotionRoot,
20
- });
21
- let composition = args[1];
22
- if (!composition) {
23
- log_1.Log.info('No compositions passed. Fetching compositions...');
24
- (0, validate_serveurl_1.validateServeUrl)(serveUrl);
25
- const server = renderer_1.RenderInternals.prepareServer({
26
- concurrency: 1,
27
- indent: false,
28
- port,
29
- remotionRoot,
30
- verbose: renderer_1.RenderInternals.isEqualOrBelowLogLevel(logLevel, 'verbose'),
31
- webpackConfigOrServeUrl: serveUrl,
32
- });
33
- const { compositionId } = await cli_1.CliInternals.getCompositionWithDimensionOverride({
34
- args,
35
- compositionIdFromUi: null,
36
- indent: false,
37
- serveUrlOrWebpackUrl: serveUrl,
38
- verbose: renderer_1.RenderInternals.isEqualOrBelowLogLevel(logLevel, 'verbose'),
39
- browserExecutable,
40
- chromiumOptions,
41
- envVariables,
42
- inputProps,
43
- port,
44
- puppeteerInstance: undefined,
45
- timeoutInMilliseconds: puppeteerTimeout,
46
- height,
47
- width,
48
- server: await server,
49
- });
50
- composition = compositionId;
51
- }
52
- const { format: imageFormat, source: imageFormatReason } = cli_1.CliInternals.determineFinalStillImageFormat({
53
- downloadName,
54
- outName: outName !== null && outName !== void 0 ? outName : null,
55
- cliFlag: (_a = cli_1.CliInternals.parsedCli['image-format']) !== null && _a !== void 0 ? _a : null,
56
- isLambda: true,
57
- fromUi: null,
58
- configImageFormat: (_b = config_1.ConfigInternals.getUserPreferredStillImageFormat()) !== null && _b !== void 0 ? _b : null,
59
- });
60
- log_1.Log.verbose(`Image format: (${imageFormat}), ${imageFormatReason}`);
61
- // Todo: Check cloudRunUrl is valid, as the error message is obtuse
62
- cli_1.CliInternals.Log.info(cli_1.CliInternals.chalk.gray(`
63
- Cloud Run Service URL = ${cloudRunUrl}
64
- Region = ${region}
65
- Type = still
66
- Composition = ${composition}
67
- Output Bucket = ${forceBucketName}
68
- Output File = ${outName !== null && outName !== void 0 ? outName : 'out.png'}
69
- Output File Privacy = ${privacy}
70
- ${downloadName ? ` Downloaded File = ${downloadName}` : ''}
71
- `.trim()));
72
- log_1.Log.info();
73
- const renderStart = Date.now();
74
- const progressBar = cli_1.CliInternals.createOverwriteableCliOutput({
75
- quiet: cli_1.CliInternals.quietFlagProvided(),
76
- cancelSignal: null,
77
- updatesDontOverwrite: false,
78
- indent: false,
79
- });
80
- let doneIn = null;
81
- const updateProgress = (newline) => {
82
- progressBar.update([
83
- `Rendering on Cloud Run:`,
84
- `${doneIn === null ? '...' : `Rendered in ${doneIn}ms`}`,
85
- ].join(' '), newline);
86
- };
87
- const res = await (0, render_still_on_cloudrun_1.renderStillOnCloudrun)({
88
- cloudRunUrl,
89
- serveUrl,
90
- region,
91
- inputProps,
92
- imageFormat,
93
- composition,
94
- privacy,
95
- envVariables,
96
- frame: stillFrame,
97
- jpegQuality,
98
- chromiumOptions,
99
- scale,
100
- forceHeight: height,
101
- forceWidth: width,
102
- forceBucketName,
103
- outName,
104
- logLevel: config_1.ConfigInternals.Logging.getLogLevel(),
105
- });
106
- doneIn = Date.now() - renderStart;
107
- updateProgress(true);
108
- log_1.Log.info(cli_1.CliInternals.chalk.gray(`Cloud Storage Uri = ${res.cloudStorageUri}`));
109
- log_1.Log.info(cli_1.CliInternals.chalk.gray(`Render ID = ${res.renderId}`));
110
- log_1.Log.info(cli_1.CliInternals.chalk.gray(`${Math.round(Number(res.size) / 1000)} KB, Privacy: ${res.privacy}, Bucket: ${res.bucketName}`));
111
- log_1.Log.info(cli_1.CliInternals.chalk.blue(`○ ${res.publicUrl}`));
112
- if (downloadName) {
113
- log_1.Log.info('');
114
- log_1.Log.info('downloading file...');
115
- const destination = await (0, download_file_1.downloadFile)({
116
- bucketName: res.bucketName,
117
- gsutilURI: res.cloudStorageUri,
118
- downloadName,
119
- });
120
- log_1.Log.info(cli_1.CliInternals.chalk.blueBright(`Downloaded file to ${destination}!`));
121
- }
122
- };
123
- exports.renderStillSubcommand = renderStillSubcommand;