@remotion/lambda 4.0.0-audio.0 → 4.0.0-audio.11
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/LICENSE.md +8 -8
- package/dist/admin/bundle-lambda.d.ts +0 -0
- package/dist/admin/bundle-lambda.js +21 -4
- package/dist/admin/generate-etag-list.d.ts +1 -0
- package/dist/admin/generate-etag-list.js +14 -0
- package/dist/admin/make-layer-public.d.ts +0 -0
- package/dist/admin/make-layer-public.js +30 -8
- package/dist/api/bucket-exists.d.ts +1 -1
- package/dist/api/bucket-exists.js +1 -1
- package/dist/api/clean-items.d.ts +1 -1
- package/dist/api/clean-items.js +3 -6
- package/dist/api/create-bucket.d.ts +1 -1
- package/dist/api/create-bucket.js +1 -1
- package/dist/api/create-function.d.ts +4 -3
- package/dist/api/create-function.js +26 -4
- package/dist/api/delete-function.d.ts +2 -2
- package/dist/api/delete-function.js +1 -1
- package/dist/api/delete-render.d.ts +19 -0
- package/dist/api/delete-render.js +66 -0
- package/dist/api/delete-site.d.ts +2 -2
- package/dist/api/delete-site.js +1 -6
- package/dist/api/deploy-function.d.ts +4 -3
- package/dist/api/deploy-function.js +11 -4
- package/dist/api/deploy-site.d.ts +13 -4
- package/dist/api/deploy-site.js +60 -22
- package/dist/api/download-media.d.ts +15 -2
- package/dist/api/download-media.js +15 -3
- package/dist/api/estimate-price.d.ts +3 -3
- package/dist/api/estimate-price.js +1 -1
- package/dist/api/get-aws-client.d.ts +8 -4
- package/dist/api/get-aws-client.js +15 -4
- package/dist/api/get-buckets.d.ts +1 -1
- package/dist/api/get-buckets.js +27 -10
- package/dist/api/get-compositions-on-lambda.d.ts +31 -0
- package/dist/api/get-compositions-on-lambda.js +56 -0
- package/dist/api/get-function-info.d.ts +3 -4
- package/dist/api/get-function-info.js +1 -1
- package/dist/api/get-functions.d.ts +3 -5
- package/dist/api/get-functions.js +3 -4
- package/dist/api/get-or-create-bucket.d.ts +3 -2
- package/dist/api/get-or-create-bucket.js +6 -11
- package/dist/api/get-regions.d.ts +7 -3
- package/dist/api/get-regions.js +6 -3
- package/dist/api/get-render-progress.d.ts +7 -4
- package/dist/api/get-render-progress.js +6 -2
- package/dist/api/get-sites.d.ts +4 -4
- package/dist/api/get-sites.js +1 -2
- package/dist/api/iam-validation/role-permissions.d.ts +2 -1
- package/dist/api/iam-validation/role-permissions.js +0 -0
- package/dist/api/iam-validation/simulate-rule.d.ts +1 -1
- package/dist/api/iam-validation/simulate-rule.js +0 -22
- package/dist/api/iam-validation/simulate.d.ts +3 -3
- package/dist/api/iam-validation/simulate.js +25 -6
- package/dist/api/iam-validation/suggested-policy.d.ts +0 -0
- package/dist/api/iam-validation/suggested-policy.js +0 -0
- package/dist/api/iam-validation/user-permissions.d.ts +1 -1
- package/dist/api/iam-validation/user-permissions.js +1 -8
- package/dist/api/mock-functions.d.ts +6 -7
- package/dist/api/mock-functions.js +0 -0
- package/dist/api/presign-url.d.ts +5 -5
- package/dist/api/presign-url.js +9 -4
- package/dist/api/render-media-on-lambda.d.ts +40 -17
- package/dist/api/render-media-on-lambda.js +90 -38
- package/dist/api/render-still-on-lambda.d.ts +14 -7
- package/dist/api/render-still-on-lambda.js +60 -31
- package/dist/api/speculate-function-name.d.ts +14 -0
- package/dist/api/speculate-function-name.js +22 -0
- package/dist/api/upload-dir.d.ts +6 -5
- package/dist/api/upload-dir.js +60 -52
- package/dist/api/validate-webhook-signature.d.ts +13 -0
- package/dist/api/validate-webhook-signature.js +32 -0
- package/dist/cli/args.d.ts +13 -5
- package/dist/cli/args.js +1 -5
- package/dist/cli/commands/compositions/index.d.ts +2 -0
- package/dist/cli/commands/compositions/index.js +44 -0
- package/dist/cli/commands/functions/deploy.d.ts +0 -0
- package/dist/cli/commands/functions/deploy.js +10 -6
- package/dist/cli/commands/functions/index.d.ts +0 -0
- package/dist/cli/commands/functions/index.js +16 -17
- package/dist/cli/commands/functions/ls.d.ts +0 -0
- package/dist/cli/commands/functions/ls.js +6 -7
- package/dist/cli/commands/functions/rm.d.ts +0 -0
- package/dist/cli/commands/functions/rm.js +0 -0
- package/dist/cli/commands/functions/rmall.d.ts +0 -0
- package/dist/cli/commands/functions/rmall.js +0 -0
- package/dist/cli/commands/policies/policies.d.ts +0 -0
- package/dist/cli/commands/policies/policies.js +0 -0
- package/dist/cli/commands/policies/role.d.ts +0 -0
- package/dist/cli/commands/policies/role.js +0 -0
- package/dist/cli/commands/policies/user.d.ts +0 -0
- package/dist/cli/commands/policies/user.js +0 -0
- package/dist/cli/commands/policies/validate.d.ts +0 -0
- package/dist/cli/commands/policies/validate.js +0 -0
- package/dist/cli/commands/quotas/increase.d.ts +0 -0
- package/dist/cli/commands/quotas/increase.js +28 -8
- package/dist/cli/commands/quotas/index.d.ts +0 -0
- package/dist/cli/commands/quotas/index.js +8 -9
- package/dist/cli/commands/quotas/list.d.ts +0 -0
- package/dist/cli/commands/quotas/list.js +0 -0
- package/dist/cli/commands/regions.d.ts +0 -0
- package/dist/cli/commands/regions.js +6 -2
- package/dist/cli/commands/render/progress.d.ts +11 -7
- package/dist/cli/commands/render/progress.js +66 -48
- package/dist/cli/commands/render/render.d.ts +1 -1
- package/dist/cli/commands/render/render.js +80 -25
- package/dist/cli/commands/sites/create.d.ts +1 -1
- package/dist/cli/commands/sites/create.js +25 -26
- package/dist/cli/commands/sites/index.d.ts +1 -1
- package/dist/cli/commands/sites/index.js +15 -16
- package/dist/cli/commands/sites/ls.d.ts +0 -0
- package/dist/cli/commands/sites/ls.js +10 -12
- package/dist/cli/commands/sites/rm.d.ts +0 -0
- package/dist/cli/commands/sites/rm.js +8 -19
- package/dist/cli/commands/sites/rmall.d.ts +0 -0
- package/dist/cli/commands/sites/rmall.js +7 -19
- package/dist/cli/commands/still.d.ts +1 -1
- package/dist/cli/commands/still.js +34 -27
- package/dist/cli/get-aws-region.d.ts +1 -1
- package/dist/cli/get-aws-region.js +2 -1
- package/dist/cli/help.d.ts +0 -0
- package/dist/cli/help.js +0 -0
- package/dist/cli/helpers/confirm.d.ts +0 -0
- package/dist/cli/helpers/confirm.js +0 -0
- package/dist/cli/helpers/date-string.d.ts +0 -0
- package/dist/cli/helpers/date-string.js +0 -0
- package/dist/cli/helpers/find-function-name.d.ts +0 -0
- package/dist/cli/helpers/find-function-name.js +37 -7
- package/dist/cli/helpers/progress-bar.d.ts +9 -3
- package/dist/cli/helpers/progress-bar.js +20 -8
- package/dist/cli/helpers/quit.d.ts +0 -0
- package/dist/cli/helpers/quit.js +0 -0
- package/dist/cli/helpers/yes-or-no.d.ts +0 -0
- package/dist/cli/helpers/yes-or-no.js +0 -0
- package/dist/cli/index.d.ts +1 -1
- package/dist/cli/index.js +30 -9
- package/dist/cli/is-cli.d.ts +0 -0
- package/dist/cli/is-cli.js +0 -0
- package/dist/cli/log.d.ts +0 -0
- package/dist/cli/log.js +0 -0
- package/dist/client.d.ts +10 -2
- package/dist/client.js +11 -1
- package/dist/defaults.d.ts +0 -0
- package/dist/defaults.js +5 -1
- package/dist/functions/chunk-optimization/plan-frame-ranges.d.ts +2 -6
- package/dist/functions/chunk-optimization/plan-frame-ranges.js +7 -19
- package/dist/functions/chunk-optimization/types.d.ts +0 -11
- package/dist/functions/chunk-optimization/types.js +0 -0
- package/dist/functions/compositions.d.ts +8 -0
- package/dist/functions/compositions.js +58 -0
- package/dist/functions/helpers/best-frames-per-lambda-param.d.ts +0 -0
- package/dist/functions/helpers/best-frames-per-lambda-param.js +0 -0
- package/dist/functions/helpers/calculate-chunk-times.d.ts +1 -1
- package/dist/functions/helpers/calculate-chunk-times.js +0 -0
- package/dist/functions/helpers/calculate-price-from-bucket.d.ts +4 -4
- package/dist/functions/helpers/calculate-price-from-bucket.js +0 -0
- package/dist/functions/helpers/check-if-render-exists.d.ts +3 -0
- package/dist/functions/helpers/check-if-render-exists.js +14 -0
- package/dist/functions/helpers/clean-tmpdir.d.ts +0 -0
- package/dist/functions/helpers/clean-tmpdir.js +1 -1
- package/dist/functions/helpers/concat-videos.d.ts +19 -7
- package/dist/functions/helpers/concat-videos.js +41 -33
- package/dist/functions/helpers/create-post-render-data.d.ts +6 -6
- package/dist/functions/helpers/create-post-render-data.js +5 -12
- package/dist/functions/helpers/delete-chunks.d.ts +3 -3
- package/dist/functions/helpers/delete-chunks.js +0 -0
- package/dist/functions/helpers/expected-out-name.d.ts +4 -2
- package/dist/functions/helpers/expected-out-name.js +27 -6
- package/dist/functions/helpers/find-output-file-in-bucket.d.ts +5 -3
- package/dist/functions/helpers/find-output-file-in-bucket.js +17 -9
- package/dist/functions/helpers/format-costs-info.d.ts +1 -1
- package/dist/functions/helpers/format-costs-info.js +0 -0
- package/dist/functions/helpers/get-browser-instance.d.ts +2 -1
- package/dist/functions/helpers/get-browser-instance.js +5 -3
- package/dist/functions/helpers/get-chromium-executable-path.d.ts +1 -1
- package/dist/functions/helpers/get-chromium-executable-path.js +3 -2
- package/dist/functions/helpers/get-cleanup-progress.d.ts +2 -2
- package/dist/functions/helpers/get-cleanup-progress.js +0 -0
- package/dist/functions/helpers/get-current-architecture.d.ts +1 -1
- package/dist/functions/helpers/get-current-architecture.js +0 -0
- package/dist/functions/helpers/get-current-region.d.ts +1 -1
- package/dist/functions/helpers/get-current-region.js +0 -0
- package/dist/functions/helpers/get-custom-out-name.d.ts +6 -0
- package/dist/functions/helpers/get-custom-out-name.js +31 -0
- package/dist/functions/helpers/get-encoding-metadata.d.ts +6 -9
- package/dist/functions/helpers/get-encoding-metadata.js +7 -17
- package/dist/functions/helpers/get-files-in-folder.d.ts +0 -0
- package/dist/functions/helpers/get-files-in-folder.js +0 -0
- package/dist/functions/helpers/get-files-to-delete.d.ts +0 -0
- package/dist/functions/helpers/get-files-to-delete.js +3 -3
- package/dist/functions/helpers/get-final-encoding-status.d.ts +3 -5
- package/dist/functions/helpers/get-final-encoding-status.js +1 -4
- package/dist/functions/helpers/get-folder-size.d.ts +0 -0
- package/dist/functions/helpers/get-folder-size.js +0 -0
- package/dist/functions/helpers/get-lambdas-invoked-stats.d.ts +5 -4
- package/dist/functions/helpers/get-lambdas-invoked-stats.js +2 -10
- package/dist/functions/helpers/get-output-url-from-metadata.d.ts +3 -2
- package/dist/functions/helpers/get-output-url-from-metadata.js +2 -2
- package/dist/functions/helpers/get-overall-progress.d.ts +2 -1
- package/dist/functions/helpers/get-overall-progress.js +7 -5
- package/dist/functions/helpers/get-post-render-data.d.ts +2 -2
- package/dist/functions/helpers/get-post-render-data.js +0 -0
- package/dist/functions/helpers/get-progress.d.ts +6 -4
- package/dist/functions/helpers/get-progress.js +65 -46
- package/dist/functions/helpers/get-render-metadata.d.ts +2 -2
- package/dist/functions/helpers/get-render-metadata.js +0 -0
- package/dist/functions/helpers/get-rendered-frames-progress.d.ts +8 -0
- package/dist/functions/helpers/get-rendered-frames-progress.js +37 -0
- package/dist/functions/helpers/get-retry-stats.d.ts +1 -1
- package/dist/functions/helpers/get-retry-stats.js +1 -1
- package/dist/functions/helpers/get-time-to-finish.d.ts +1 -1
- package/dist/functions/helpers/get-time-to-finish.js +0 -0
- package/dist/functions/helpers/inspect-errors.d.ts +3 -3
- package/dist/functions/helpers/inspect-errors.js +0 -0
- package/dist/functions/helpers/io.d.ts +24 -6
- package/dist/functions/helpers/io.js +36 -8
- package/dist/functions/helpers/is-enosp-err.d.ts +0 -0
- package/dist/functions/helpers/is-enosp-err.js +0 -0
- package/dist/functions/helpers/is-warm.d.ts +0 -0
- package/dist/functions/helpers/is-warm.js +0 -0
- package/dist/functions/helpers/make-timeout-error.d.ts +8 -0
- package/dist/functions/helpers/make-timeout-error.js +35 -0
- package/dist/functions/helpers/make-timeout-message.d.ts +6 -0
- package/dist/functions/helpers/make-timeout-message.js +31 -0
- package/dist/functions/helpers/min-max.d.ts +1 -1
- package/dist/functions/helpers/min-max.js +1 -1
- package/dist/functions/helpers/print-cloudwatch-helper.d.ts +2 -2
- package/dist/functions/helpers/print-cloudwatch-helper.js +0 -0
- package/dist/functions/helpers/print-concurrency-curve.d.ts +0 -0
- package/dist/functions/helpers/print-concurrency-curve.js +0 -0
- package/dist/functions/helpers/read-with-progress.d.ts +6 -3
- package/dist/functions/helpers/read-with-progress.js +16 -4
- package/dist/functions/helpers/timer.d.ts +0 -0
- package/dist/functions/helpers/timer.js +0 -0
- package/dist/functions/helpers/validate-composition.d.ts +13 -4
- package/dist/functions/helpers/validate-composition.js +15 -2
- package/dist/functions/helpers/write-lambda-error.d.ts +2 -2
- package/dist/functions/helpers/write-lambda-error.js +2 -0
- package/dist/functions/helpers/write-post-render-data.d.ts +2 -2
- package/dist/functions/helpers/write-post-render-data.js +2 -0
- package/dist/functions/index.d.ts +3 -2
- package/dist/functions/index.js +29 -10
- package/dist/functions/info.d.ts +2 -2
- package/dist/functions/info.js +2 -1
- package/dist/functions/launch.d.ts +2 -1
- package/dist/functions/launch.js +369 -126
- package/dist/functions/progress.d.ts +2 -2
- package/dist/functions/progress.js +10 -1
- package/dist/functions/renderer.d.ts +1 -1
- package/dist/functions/renderer.js +144 -79
- package/dist/functions/start.d.ts +6 -2
- package/dist/functions/start.js +45 -6
- package/dist/functions/still.d.ts +1 -1
- package/dist/functions/still.js +81 -23
- package/dist/index.d.ts +57 -21
- package/dist/index.js +27 -5
- package/dist/internals.d.ts +1 -1
- package/dist/internals.js +0 -0
- package/dist/pricing/aws-regions.d.ts +2 -1
- package/dist/pricing/aws-regions.js +31 -1
- package/dist/pricing/price-per-1-s.d.ts +1 -1
- package/dist/pricing/price-per-1-s.js +413 -39
- package/dist/regions.d.ts +0 -0
- package/dist/regions.js +0 -0
- package/dist/shared/await.d.ts +0 -0
- package/dist/shared/await.js +0 -0
- package/dist/shared/aws-clients.d.ts +17 -3
- package/dist/shared/aws-clients.js +118 -26
- package/dist/shared/bundle-site.d.ts +2 -6
- package/dist/shared/bundle-site.js +0 -0
- package/dist/shared/call-lambda.d.ts +3 -3
- package/dist/shared/call-lambda.js +0 -0
- package/dist/shared/check-credentials.d.ts +0 -0
- package/dist/shared/check-credentials.js +5 -2
- package/dist/shared/chunk-progress.d.ts +9 -0
- package/dist/shared/chunk-progress.js +2034 -0
- package/dist/shared/cleanup-serialized-input-props.d.ts +7 -0
- package/dist/shared/cleanup-serialized-input-props.js +19 -0
- package/dist/shared/constants.d.ts +124 -37
- package/dist/shared/constants.js +21 -10
- package/dist/shared/content-disposition-header.d.ts +7 -0
- package/dist/shared/content-disposition-header.js +19 -0
- package/dist/shared/convert-to-serve-url.d.ts +6 -2
- package/dist/shared/convert-to-serve-url.js +1 -5
- package/dist/shared/deserialize-input-props.d.ts +8 -0
- package/dist/shared/deserialize-input-props.js +26 -0
- package/dist/shared/docs-url.d.ts +0 -0
- package/dist/shared/docs-url.js +0 -0
- package/dist/shared/function-zip-path.d.ts +2 -1
- package/dist/shared/function-zip-path.js +3 -2
- package/dist/shared/get-account-id.d.ts +1 -1
- package/dist/shared/get-account-id.js +4 -6
- package/dist/shared/get-aws-urls.d.ts +14 -0
- package/dist/shared/get-aws-urls.js +12 -0
- package/dist/shared/get-etag.d.ts +1 -0
- package/dist/shared/get-etag.js +24 -0
- package/dist/shared/get-function-version.d.ts +2 -3
- package/dist/shared/get-function-version.js +0 -0
- package/dist/shared/get-most-expensive-chunks.d.ts +8 -0
- package/dist/shared/get-most-expensive-chunks.js +26 -0
- package/dist/shared/get-s3-operations.d.ts +10 -0
- package/dist/shared/get-s3-operations.js +36 -0
- package/dist/shared/hosted-layers.d.ts +89 -3
- package/dist/shared/hosted-layers.js +443 -134
- package/dist/shared/invoke-webhook.d.ts +44 -0
- package/dist/shared/invoke-webhook.js +89 -0
- package/dist/shared/is-in-lambda.d.ts +0 -0
- package/dist/shared/is-in-lambda.js +5 -1
- package/dist/shared/lambda-version-string.d.ts +1 -0
- package/dist/shared/lambda-version-string.js +7 -0
- package/dist/shared/make-s3-key.d.ts +1 -0
- package/dist/shared/make-s3-key.js +11 -0
- package/dist/shared/make-s3-url.d.ts +1 -1
- package/dist/shared/make-s3-url.js +0 -0
- package/dist/shared/p-limit.d.ts +1 -0
- package/dist/shared/p-limit.js +57 -0
- package/dist/shared/parse-chunk-key.d.ts +4 -0
- package/dist/shared/parse-chunk-key.js +14 -0
- package/dist/shared/parse-lambda-initialized-key.d.ts +0 -0
- package/dist/shared/parse-lambda-initialized-key.js +0 -0
- package/dist/shared/parse-lambda-timings-key.d.ts +0 -0
- package/dist/shared/parse-lambda-timings-key.js +0 -0
- package/dist/shared/random-hash.d.ts +2 -2
- package/dist/shared/random-hash.js +1 -1
- package/dist/shared/read-dir.d.ts +9 -0
- package/dist/shared/read-dir.js +57 -0
- package/dist/shared/return-values.d.ts +9 -7
- package/dist/shared/return-values.js +0 -1
- package/dist/shared/serialize-input-props.d.ts +8 -0
- package/dist/shared/serialize-input-props.js +42 -0
- package/dist/shared/sleep.d.ts +0 -0
- package/dist/shared/sleep.js +0 -0
- package/dist/shared/stream-to-string.d.ts +2 -1
- package/dist/shared/stream-to-string.js +0 -0
- package/dist/shared/truthy.d.ts +3 -0
- package/dist/shared/truthy.js +7 -0
- package/dist/shared/validate-architecture.d.ts +0 -0
- package/dist/shared/validate-architecture.js +0 -0
- package/dist/shared/validate-aws-region.d.ts +1 -1
- package/dist/shared/validate-aws-region.js +0 -0
- package/dist/shared/validate-bucketname.d.ts +5 -0
- package/dist/shared/validate-bucketname.js +19 -1
- package/dist/shared/validate-custom-role-arn.d.ts +1 -0
- package/dist/shared/validate-custom-role-arn.js +11 -0
- package/dist/shared/validate-disk-size-in-mb.d.ts +0 -0
- package/dist/shared/validate-disk-size-in-mb.js +0 -0
- package/dist/shared/validate-download-behavior.d.ts +1 -0
- package/dist/shared/validate-download-behavior.js +21 -0
- package/dist/shared/validate-frames-per-lambda.d.ts +4 -1
- package/dist/shared/validate-frames-per-lambda.js +4 -3
- package/dist/shared/validate-lambda-codec.d.ts +4 -0
- package/dist/shared/validate-lambda-codec.js +30 -0
- package/dist/shared/validate-memory-size.d.ts +0 -0
- package/dist/shared/validate-memory-size.js +0 -0
- package/dist/shared/validate-outname.d.ts +3 -2
- package/dist/shared/validate-outname.js +13 -3
- package/dist/shared/validate-presign-expiration.d.ts +0 -2
- package/dist/shared/validate-presign-expiration.js +7 -7
- package/dist/shared/validate-privacy.d.ts +1 -1
- package/dist/shared/validate-privacy.js +2 -2
- package/dist/shared/validate-retention-period.d.ts +0 -0
- package/dist/shared/validate-retention-period.js +0 -0
- package/dist/shared/validate-retries.d.ts +0 -0
- package/dist/shared/validate-retries.js +0 -0
- package/dist/shared/validate-serveurl.d.ts +0 -0
- package/dist/shared/validate-serveurl.js +0 -0
- package/dist/shared/validate-site-name.d.ts +0 -0
- package/dist/shared/validate-site-name.js +0 -0
- package/dist/shared/validate-timeout.d.ts +0 -0
- package/dist/shared/validate-timeout.js +0 -0
- package/package.json +59 -34
- package/remotionlambda-arm64.zip +0 -0
- package/remotionlambda-x64.zip +0 -0
- package/remotionlambda.zip +0 -0
- package/.prettierrc.js +0 -14
- package/client.d.ts +0 -1
- package/client.js +0 -1
- package/dist/api/enable-s3-website.d.ts +0 -5
- package/dist/api/enable-s3-website.js +0 -16
- package/dist/cli/helpers/format-bytes.d.ts +0 -6
- package/dist/cli/helpers/format-bytes.js +0 -103
- package/dist/cli/helpers/get-cloudwatch-stream-url.d.ts +0 -8
- package/dist/cli/helpers/get-cloudwatch-stream-url.js +0 -7
- package/dist/functions/chunk-optimization/can-use-optimization.d.ts +0 -6
- package/dist/functions/chunk-optimization/can-use-optimization.js +0 -23
- package/dist/functions/chunk-optimization/collect-data.d.ts +0 -9
- package/dist/functions/chunk-optimization/collect-data.js +0 -27
- package/dist/functions/chunk-optimization/get-frame-ranges-from-profile.d.ts +0 -3
- package/dist/functions/chunk-optimization/get-frame-ranges-from-profile.js +0 -11
- package/dist/functions/chunk-optimization/get-profile-duration.d.ts +0 -3
- package/dist/functions/chunk-optimization/get-profile-duration.js +0 -18
- package/dist/functions/chunk-optimization/is-valid-profile.d.ts +0 -2
- package/dist/functions/chunk-optimization/is-valid-profile.js +0 -12
- package/dist/functions/chunk-optimization/optimize-invocation-order.d.ts +0 -2
- package/dist/functions/chunk-optimization/optimize-invocation-order.js +0 -19
- package/dist/functions/chunk-optimization/optimize-profile.d.ts +0 -9
- package/dist/functions/chunk-optimization/optimize-profile.js +0 -74
- package/dist/functions/chunk-optimization/s3-optimization-file.d.ts +0 -17
- package/dist/functions/chunk-optimization/s3-optimization-file.js +0 -45
- package/dist/functions/chunk-optimization/simulate-frame-ranges.d.ts +0 -7
- package/dist/functions/chunk-optimization/simulate-frame-ranges.js +0 -47
- package/dist/functions/chunk-optimization/sort-by-duration.d.ts +0 -2
- package/dist/functions/chunk-optimization/sort-by-duration.js +0 -25
- package/dist/shared/chunk.d.ts +0 -1
- package/dist/shared/chunk.js +0 -11
- package/tsconfig.json +0 -16
|
@@ -1,20 +1,29 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.progressHandler = void 0;
|
|
4
|
+
const version_1 = require("remotion/version");
|
|
4
5
|
const constants_1 = require("../shared/constants");
|
|
5
6
|
const get_current_region_1 = require("./helpers/get-current-region");
|
|
6
7
|
const get_progress_1 = require("./helpers/get-progress");
|
|
7
8
|
const progressHandler = (lambdaParams, options) => {
|
|
9
|
+
var _a;
|
|
8
10
|
if (lambdaParams.type !== constants_1.LambdaRoutines.status) {
|
|
9
11
|
throw new TypeError('Expected status type');
|
|
10
12
|
}
|
|
13
|
+
if (lambdaParams.version !== version_1.VERSION) {
|
|
14
|
+
if (!lambdaParams.version) {
|
|
15
|
+
throw new Error(`Version mismatch: When calling getRenderProgress(), you called the function ${process.env.AWS_LAMBDA_FUNCTION_NAME} which has the version ${version_1.VERSION} but the @remotion/lambda package is an older version. Deploy a new function and use it to call getRenderProgress(). See: https://www.remotion.dev/docs/lambda/upgrading`);
|
|
16
|
+
}
|
|
17
|
+
throw new Error(`Version mismatch: When calling getRenderProgress(), you passed ${process.env.AWS_LAMBDA_FUNCTION_NAME} as the function, which has the version ${version_1.VERSION}, but the @remotion/lambda package you used to invoke the function has version ${lambdaParams.version}. Deploy a new function and use it to call getRenderProgress(). See: https://www.remotion.dev/docs/lambda/upgrading`);
|
|
18
|
+
}
|
|
11
19
|
return (0, get_progress_1.getProgress)({
|
|
12
20
|
bucketName: lambdaParams.bucketName,
|
|
13
21
|
renderId: lambdaParams.renderId,
|
|
14
22
|
expectedBucketOwner: options.expectedBucketOwner,
|
|
15
23
|
region: (0, get_current_region_1.getCurrentRegionInFunction)(),
|
|
16
24
|
memorySizeInMb: Number(process.env.AWS_LAMBDA_FUNCTION_MEMORY_SIZE),
|
|
17
|
-
|
|
25
|
+
timeoutInMilliseconds: options.timeoutInMilliseconds,
|
|
26
|
+
customCredentials: (_a = lambdaParams.s3OutputProvider) !== null && _a !== void 0 ? _a : null,
|
|
18
27
|
});
|
|
19
28
|
};
|
|
20
29
|
exports.progressHandler = progressHandler;
|
|
@@ -8,23 +8,31 @@ const client_lambda_1 = require("@aws-sdk/client-lambda");
|
|
|
8
8
|
const renderer_1 = require("@remotion/renderer");
|
|
9
9
|
const fs_1 = __importDefault(require("fs"));
|
|
10
10
|
const path_1 = __importDefault(require("path"));
|
|
11
|
-
const
|
|
11
|
+
const version_1 = require("remotion/version");
|
|
12
12
|
const aws_clients_1 = require("../shared/aws-clients");
|
|
13
|
+
const chunk_progress_1 = require("../shared/chunk-progress");
|
|
13
14
|
const constants_1 = require("../shared/constants");
|
|
14
|
-
const
|
|
15
|
+
const deserialize_input_props_1 = require("../shared/deserialize-input-props");
|
|
15
16
|
const get_browser_instance_1 = require("./helpers/get-browser-instance");
|
|
17
|
+
const get_chromium_executable_path_1 = require("./helpers/get-chromium-executable-path");
|
|
16
18
|
const get_current_region_1 = require("./helpers/get-current-region");
|
|
17
|
-
const get_files_in_folder_1 = require("./helpers/get-files-in-folder");
|
|
18
|
-
const get_folder_size_1 = require("./helpers/get-folder-size");
|
|
19
19
|
const io_1 = require("./helpers/io");
|
|
20
20
|
const write_lambda_error_1 = require("./helpers/write-lambda-error");
|
|
21
21
|
const renderHandler = async (params, options, logs) => {
|
|
22
|
-
var _a
|
|
22
|
+
var _a;
|
|
23
23
|
if (params.type !== constants_1.LambdaRoutines.renderer) {
|
|
24
24
|
throw new Error('Params must be renderer');
|
|
25
25
|
}
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
if (params.launchFunctionConfig.version !== version_1.VERSION) {
|
|
27
|
+
throw new Error(`The version of the function that was specified as "rendererFunctionName" is ${version_1.VERSION} but the version of the function that invoked the render is ${params.launchFunctionConfig.version}. Please make sure that the version of the function that is specified as "rendererFunctionName" is the same as the version of the function that is invoked.`);
|
|
28
|
+
}
|
|
29
|
+
const inputPropsPromise = (0, deserialize_input_props_1.deserializeInputProps)({
|
|
30
|
+
bucketName: params.bucketName,
|
|
31
|
+
expectedBucketOwner: options.expectedBucketOwner,
|
|
32
|
+
region: (0, get_current_region_1.getCurrentRegionInFunction)(),
|
|
33
|
+
serialized: params.inputProps,
|
|
34
|
+
});
|
|
35
|
+
const browserInstance = await (0, get_browser_instance_1.getBrowserInstance)(renderer_1.RenderInternals.isEqualOrBelowLogLevel(params.logLevel, 'verbose'), (_a = params.chromiumOptions) !== null && _a !== void 0 ? _a : {});
|
|
28
36
|
const outputPath = renderer_1.RenderInternals.tmpDir('remotion-render-');
|
|
29
37
|
if (typeof params.chunk !== 'number') {
|
|
30
38
|
throw new Error('must pass chunk');
|
|
@@ -40,79 +48,126 @@ const renderHandler = async (params, options, logs) => {
|
|
|
40
48
|
startDate: start,
|
|
41
49
|
};
|
|
42
50
|
const outdir = renderer_1.RenderInternals.tmpDir(constants_1.RENDERER_PATH_TOKEN);
|
|
43
|
-
const
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
durationInFrames: params.durationInFrames,
|
|
48
|
-
fps: params.fps,
|
|
49
|
-
height: params.height,
|
|
50
|
-
width: params.width,
|
|
51
|
-
},
|
|
52
|
-
imageFormat: params.imageFormat,
|
|
53
|
-
inputProps: params.inputProps,
|
|
54
|
-
frameRange: params.frameRange,
|
|
55
|
-
onProgress: ({ renderedFrames, encodedFrames, stitchStage }) => {
|
|
56
|
-
if (renderedFrames % 10 === 0 &&
|
|
57
|
-
remotion_1.Internals.Logging.isEqualOrBelowLogLevel(params.logLevel, 'verbose')) {
|
|
58
|
-
console.log(`Rendered ${renderedFrames} frames, encoded ${encodedFrames} frames, stage = ${stitchStage}`);
|
|
59
|
-
}
|
|
60
|
-
const duration = renderer_1.RenderInternals.getDurationFromFrameRange(params.frameRange, params.durationInFrames);
|
|
61
|
-
if (renderedFrames === duration) {
|
|
62
|
-
console.log('Rendered all frames!');
|
|
63
|
-
}
|
|
64
|
-
chunkTimingData.timings[renderedFrames] = Date.now() - start;
|
|
65
|
-
},
|
|
66
|
-
parallelism: 1,
|
|
67
|
-
onStart: () => {
|
|
68
|
-
(0, io_1.lambdaWriteFile)({
|
|
69
|
-
privacy: 'private',
|
|
70
|
-
bucketName: params.bucketName,
|
|
71
|
-
body: JSON.stringify({
|
|
72
|
-
filesCleaned: clean_tmpdir_1.deletedFilesSize,
|
|
73
|
-
filesInTmp: fs_1.default.readdirSync('/tmp'),
|
|
74
|
-
isWarm: options.isWarm,
|
|
75
|
-
deletedFiles: clean_tmpdir_1.deletedFiles,
|
|
76
|
-
tmpSize: (0, get_folder_size_1.getFolderSizeRecursively)('/tmp'),
|
|
77
|
-
tmpDirFiles: (0, get_files_in_folder_1.getFolderFiles)('/tmp'),
|
|
78
|
-
}),
|
|
79
|
-
key: (0, constants_1.lambdaInitializedKey)({
|
|
80
|
-
renderId: params.renderId,
|
|
81
|
-
chunk: params.chunk,
|
|
82
|
-
attempt: params.attempt,
|
|
83
|
-
}),
|
|
84
|
-
region: (0, get_current_region_1.getCurrentRegionInFunction)(),
|
|
85
|
-
expectedBucketOwner: options.expectedBucketOwner,
|
|
86
|
-
});
|
|
87
|
-
},
|
|
88
|
-
puppeteerInstance: browserInstance,
|
|
89
|
-
serveUrl: params.serveUrl,
|
|
90
|
-
quality: params.quality,
|
|
91
|
-
envVariables: params.envVariables,
|
|
92
|
-
dumpBrowserLogs: remotion_1.Internals.Logging.isEqualOrBelowLogLevel(params.logLevel, 'verbose'),
|
|
93
|
-
onBrowserLog: (log) => {
|
|
94
|
-
logs.push(log);
|
|
95
|
-
},
|
|
96
|
-
outputLocation,
|
|
51
|
+
const chunkCodec = params.codec === 'gif' || params.codec === 'h264'
|
|
52
|
+
? 'h264-mkv'
|
|
53
|
+
: params.codec;
|
|
54
|
+
const outputLocation = path_1.default.join(outdir, `localchunk-${String(params.chunk).padStart(8, '0')}.${renderer_1.RenderInternals.getFileExtensionFromCodec(chunkCodec, renderer_1.RenderInternals.getDefaultAudioCodec({
|
|
97
55
|
codec: params.codec,
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
56
|
+
preferLossless: true,
|
|
57
|
+
}))}`);
|
|
58
|
+
const downloadMap = renderer_1.RenderInternals.makeDownloadMap();
|
|
59
|
+
const downloads = {};
|
|
60
|
+
const inputProps = await inputPropsPromise;
|
|
61
|
+
await new Promise((resolve, reject) => {
|
|
62
|
+
var _a, _b;
|
|
63
|
+
(0, renderer_1.renderMedia)({
|
|
64
|
+
composition: {
|
|
65
|
+
id: params.composition,
|
|
66
|
+
durationInFrames: params.durationInFrames,
|
|
67
|
+
fps: params.fps,
|
|
68
|
+
height: params.height,
|
|
69
|
+
width: params.width,
|
|
70
|
+
},
|
|
71
|
+
imageFormat: params.imageFormat,
|
|
72
|
+
inputProps,
|
|
73
|
+
frameRange: params.frameRange,
|
|
74
|
+
onProgress: ({ renderedFrames, encodedFrames, stitchStage }) => {
|
|
75
|
+
if (renderedFrames % 5 === 0 &&
|
|
76
|
+
renderer_1.RenderInternals.isEqualOrBelowLogLevel(params.logLevel, 'verbose')) {
|
|
77
|
+
console.log(`Rendered ${renderedFrames} frames, encoded ${encodedFrames} frames, stage = ${stitchStage}`);
|
|
78
|
+
(0, chunk_progress_1.writeLambdaInitializedFile)({
|
|
79
|
+
attempt: params.attempt,
|
|
80
|
+
bucketName: params.bucketName,
|
|
81
|
+
chunk: params.chunk,
|
|
82
|
+
expectedBucketOwner: options.expectedBucketOwner,
|
|
83
|
+
framesRendered: renderedFrames,
|
|
84
|
+
renderId: params.renderId,
|
|
85
|
+
}).catch((err) => reject(err));
|
|
107
86
|
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
87
|
+
const allFrames = renderer_1.RenderInternals.getFramesToRender(params.frameRange, params.everyNthFrame);
|
|
88
|
+
if (renderedFrames === allFrames.length) {
|
|
89
|
+
console.log('Rendered all frames!');
|
|
90
|
+
}
|
|
91
|
+
chunkTimingData.timings[renderedFrames] = Date.now() - start;
|
|
92
|
+
},
|
|
93
|
+
concurrency: params.concurrencyPerLambda,
|
|
94
|
+
onStart: () => {
|
|
95
|
+
(0, chunk_progress_1.writeLambdaInitializedFile)({
|
|
96
|
+
attempt: params.attempt,
|
|
97
|
+
bucketName: params.bucketName,
|
|
98
|
+
chunk: params.chunk,
|
|
99
|
+
expectedBucketOwner: options.expectedBucketOwner,
|
|
100
|
+
framesRendered: 0,
|
|
101
|
+
renderId: params.renderId,
|
|
102
|
+
}).catch((err) => reject(err));
|
|
103
|
+
},
|
|
104
|
+
puppeteerInstance: browserInstance,
|
|
105
|
+
serveUrl: params.serveUrl,
|
|
106
|
+
quality: params.quality,
|
|
107
|
+
envVariables: params.envVariables,
|
|
108
|
+
dumpBrowserLogs: (_a = params.dumpBrowserLogs) !== null && _a !== void 0 ? _a : renderer_1.RenderInternals.isEqualOrBelowLogLevel(params.logLevel, 'verbose'),
|
|
109
|
+
verbose: renderer_1.RenderInternals.isEqualOrBelowLogLevel(params.logLevel, 'verbose'),
|
|
110
|
+
onBrowserLog: (log) => {
|
|
111
|
+
logs.push(log);
|
|
112
|
+
},
|
|
113
|
+
outputLocation,
|
|
114
|
+
codec: chunkCodec,
|
|
115
|
+
crf: (_b = params.crf) !== null && _b !== void 0 ? _b : undefined,
|
|
116
|
+
pixelFormat: params.pixelFormat,
|
|
117
|
+
proResProfile: params.proResProfile,
|
|
118
|
+
onDownload: (src) => {
|
|
119
|
+
console.log('Downloading', src);
|
|
120
|
+
downloads[src] = 0;
|
|
121
|
+
return ({ percent, downloaded }) => {
|
|
122
|
+
if (percent === null) {
|
|
123
|
+
console.log(`Download progress (${src}): ${downloaded} bytes. Don't know final size of download, no Content-Length header.`);
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
if (
|
|
127
|
+
// Only report every 10% change
|
|
128
|
+
downloads[src] > percent - 0.1 &&
|
|
129
|
+
percent !== 1) {
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
downloads[src] = percent;
|
|
133
|
+
console.log(`Download progress (${src}): ${downloaded} bytes, ${(percent * 100).toFixed(1)}%`);
|
|
134
|
+
if (percent === 1) {
|
|
135
|
+
console.log(`Download complete: ${src}`);
|
|
136
|
+
}
|
|
137
|
+
};
|
|
138
|
+
},
|
|
139
|
+
overwrite: false,
|
|
140
|
+
chromiumOptions: params.chromiumOptions,
|
|
141
|
+
scale: params.scale,
|
|
142
|
+
timeoutInMilliseconds: params.timeoutInMilliseconds,
|
|
143
|
+
port: null,
|
|
144
|
+
everyNthFrame: params.everyNthFrame,
|
|
145
|
+
numberOfGifLoops: null,
|
|
146
|
+
internal: {
|
|
147
|
+
downloadMap,
|
|
148
|
+
},
|
|
149
|
+
muted: params.muted,
|
|
150
|
+
enforceAudioTrack: true,
|
|
151
|
+
audioBitrate: params.audioBitrate,
|
|
152
|
+
videoBitrate: params.videoBitrate,
|
|
153
|
+
onSlowestFrames: (slowestFrames) => {
|
|
154
|
+
console.log();
|
|
155
|
+
console.log(`Slowest frames:`);
|
|
156
|
+
slowestFrames.forEach(({ frame, time }) => {
|
|
157
|
+
console.log(`Frame ${frame} (${time.toFixed(3)}ms)`);
|
|
158
|
+
});
|
|
159
|
+
},
|
|
160
|
+
// Lossless flag takes priority over audio codec
|
|
161
|
+
// https://github.com/remotion-dev/remotion/issues/1647
|
|
162
|
+
// Special flag only in Lambda renderer which improves the audio quality
|
|
163
|
+
audioCodec: null,
|
|
164
|
+
preferLossless: true,
|
|
165
|
+
browserExecutable: (0, get_chromium_executable_path_1.executablePath)(),
|
|
166
|
+
})
|
|
167
|
+
.then(() => resolve())
|
|
168
|
+
.catch((err) => reject(err));
|
|
113
169
|
});
|
|
114
170
|
const endRendered = Date.now();
|
|
115
|
-
console.log('Adding silent audio, chunk', params.chunk);
|
|
116
171
|
const condensedTimingData = {
|
|
117
172
|
...chunkTimingData,
|
|
118
173
|
timings: Object.values(chunkTimingData.timings),
|
|
@@ -127,6 +182,8 @@ const renderHandler = async (params, options, logs) => {
|
|
|
127
182
|
region: (0, get_current_region_1.getCurrentRegionInFunction)(),
|
|
128
183
|
privacy: params.privacy,
|
|
129
184
|
expectedBucketOwner: options.expectedBucketOwner,
|
|
185
|
+
downloadBehavior: null,
|
|
186
|
+
customCredentials: null,
|
|
130
187
|
});
|
|
131
188
|
await Promise.all([
|
|
132
189
|
fs_1.default.promises.rm(outputLocation, { recursive: true }),
|
|
@@ -134,16 +191,19 @@ const renderHandler = async (params, options, logs) => {
|
|
|
134
191
|
(0, io_1.lambdaWriteFile)({
|
|
135
192
|
bucketName: params.bucketName,
|
|
136
193
|
body: JSON.stringify(condensedTimingData, null, 2),
|
|
137
|
-
key:
|
|
194
|
+
key: (0, constants_1.lambdaTimingsKey)({
|
|
138
195
|
renderId: params.renderId,
|
|
139
196
|
chunk: params.chunk,
|
|
140
197
|
rendered: endRendered,
|
|
141
198
|
start,
|
|
142
|
-
})
|
|
199
|
+
}),
|
|
143
200
|
region: (0, get_current_region_1.getCurrentRegionInFunction)(),
|
|
144
201
|
privacy: 'private',
|
|
145
202
|
expectedBucketOwner: options.expectedBucketOwner,
|
|
203
|
+
downloadBehavior: null,
|
|
204
|
+
customCredentials: null,
|
|
146
205
|
}),
|
|
206
|
+
renderer_1.RenderInternals.cleanDownloadMap(downloadMap),
|
|
147
207
|
]);
|
|
148
208
|
};
|
|
149
209
|
const rendererHandler = async (params, options) => {
|
|
@@ -155,11 +215,16 @@ const rendererHandler = async (params, options) => {
|
|
|
155
215
|
await renderHandler(params, options, logs);
|
|
156
216
|
}
|
|
157
217
|
catch (err) {
|
|
218
|
+
if (process.env.NODE_ENV === 'test') {
|
|
219
|
+
console.log({ err });
|
|
220
|
+
throw err;
|
|
221
|
+
}
|
|
158
222
|
// If this error is encountered, we can just retry as it
|
|
159
223
|
// is a very rare error to occur
|
|
160
224
|
const isBrowserError = err.message.includes('FATAL:zygote_communication_linux.cc') ||
|
|
161
225
|
err.message.includes('error while loading shared libraries: libnss3.so');
|
|
162
|
-
const
|
|
226
|
+
const shouldNotRetry = err.name === 'CancelledError';
|
|
227
|
+
const willRetry = (isBrowserError || params.retriesLeft > 0) && !shouldNotRetry;
|
|
163
228
|
console.log('Error occurred');
|
|
164
229
|
console.log(err);
|
|
165
230
|
await (0, write_lambda_error_1.writeLambdaError)({
|
|
@@ -1,5 +1,9 @@
|
|
|
1
|
-
import { LambdaPayload } from '../shared/constants';
|
|
2
|
-
|
|
1
|
+
import type { LambdaPayload } from '../shared/constants';
|
|
2
|
+
declare type Options = {
|
|
3
|
+
expectedBucketOwner: string;
|
|
4
|
+
};
|
|
5
|
+
export declare const startHandler: (params: LambdaPayload, options: Options) => Promise<{
|
|
3
6
|
bucketName: string;
|
|
4
7
|
renderId: string;
|
|
5
8
|
}>;
|
|
9
|
+
export {};
|
package/dist/functions/start.js
CHANGED
|
@@ -2,26 +2,50 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.startHandler = void 0;
|
|
4
4
|
const client_lambda_1 = require("@aws-sdk/client-lambda");
|
|
5
|
-
const
|
|
5
|
+
const version_1 = require("remotion/version");
|
|
6
6
|
const get_or_create_bucket_1 = require("../api/get-or-create-bucket");
|
|
7
7
|
const aws_clients_1 = require("../shared/aws-clients");
|
|
8
8
|
const constants_1 = require("../shared/constants");
|
|
9
|
+
const convert_to_serve_url_1 = require("../shared/convert-to-serve-url");
|
|
9
10
|
const random_hash_1 = require("../shared/random-hash");
|
|
10
11
|
const get_current_region_1 = require("./helpers/get-current-region");
|
|
11
|
-
const
|
|
12
|
-
|
|
12
|
+
const io_1 = require("./helpers/io");
|
|
13
|
+
const startHandler = async (params, options) => {
|
|
14
|
+
var _a, _b;
|
|
13
15
|
if (params.type !== constants_1.LambdaRoutines.start) {
|
|
14
16
|
throw new TypeError('Expected type start');
|
|
15
17
|
}
|
|
16
|
-
|
|
18
|
+
if (params.version !== version_1.VERSION) {
|
|
19
|
+
if (!params.version) {
|
|
20
|
+
throw new Error(`Version mismatch: When calling renderMediaOnLambda(), you called the function ${process.env.AWS_LAMBDA_FUNCTION_NAME} which has the version ${version_1.VERSION} but the @remotion/lambda package is an older version. Deploy a new function and use it to call renderMediaOnLambda(). See: https://www.remotion.dev/docs/lambda/upgrading`);
|
|
21
|
+
}
|
|
22
|
+
throw new Error(`Version mismatch: When calling renderMediaOnLambda(), you passed ${process.env.AWS_LAMBDA_FUNCTION_NAME} as the function, which has the version ${version_1.VERSION}, but the @remotion/lambda package you used to invoke the function has version ${params.version}. Deploy a new function and use it to call renderMediaOnLambda(). See: https://www.remotion.dev/docs/lambda/upgrading`);
|
|
23
|
+
}
|
|
24
|
+
const region = (0, get_current_region_1.getCurrentRegionInFunction)();
|
|
25
|
+
const bucketName = (_a = params.bucketName) !== null && _a !== void 0 ? _a : (await (0, get_or_create_bucket_1.getOrCreateBucket)({
|
|
17
26
|
region: (0, get_current_region_1.getCurrentRegionInFunction)(),
|
|
27
|
+
})).bucketName;
|
|
28
|
+
const realServeUrl = (0, convert_to_serve_url_1.convertToServeUrl)({
|
|
29
|
+
urlOrId: params.serveUrl,
|
|
30
|
+
region,
|
|
31
|
+
bucketName,
|
|
18
32
|
});
|
|
19
33
|
const renderId = (0, random_hash_1.randomHash)({ randomInTests: true });
|
|
34
|
+
const initialFile = (0, io_1.lambdaWriteFile)({
|
|
35
|
+
bucketName,
|
|
36
|
+
downloadBehavior: null,
|
|
37
|
+
region,
|
|
38
|
+
body: 'Render was initialized',
|
|
39
|
+
expectedBucketOwner: options.expectedBucketOwner,
|
|
40
|
+
key: (0, constants_1.initalizedMetadataKey)(renderId),
|
|
41
|
+
privacy: 'private',
|
|
42
|
+
customCredentials: null,
|
|
43
|
+
});
|
|
20
44
|
const payload = {
|
|
21
45
|
type: constants_1.LambdaRoutines.launch,
|
|
22
46
|
framesPerLambda: params.framesPerLambda,
|
|
23
47
|
composition: params.composition,
|
|
24
|
-
serveUrl:
|
|
48
|
+
serveUrl: realServeUrl,
|
|
25
49
|
inputProps: params.inputProps,
|
|
26
50
|
bucketName,
|
|
27
51
|
renderId,
|
|
@@ -34,12 +58,26 @@ const startHandler = async (params) => {
|
|
|
34
58
|
quality: params.quality,
|
|
35
59
|
maxRetries: params.maxRetries,
|
|
36
60
|
privacy: params.privacy,
|
|
37
|
-
logLevel: (
|
|
61
|
+
logLevel: (_b = params.logLevel) !== null && _b !== void 0 ? _b : 'info',
|
|
38
62
|
frameRange: params.frameRange,
|
|
39
63
|
outName: params.outName,
|
|
40
64
|
timeoutInMilliseconds: params.timeoutInMilliseconds,
|
|
41
65
|
chromiumOptions: params.chromiumOptions,
|
|
42
66
|
scale: params.scale,
|
|
67
|
+
numberOfGifLoops: params.numberOfGifLoops,
|
|
68
|
+
everyNthFrame: params.everyNthFrame,
|
|
69
|
+
concurrencyPerLambda: params.concurrencyPerLambda,
|
|
70
|
+
downloadBehavior: params.downloadBehavior,
|
|
71
|
+
muted: params.muted,
|
|
72
|
+
overwrite: params.overwrite,
|
|
73
|
+
webhook: params.webhook,
|
|
74
|
+
audioBitrate: params.audioBitrate,
|
|
75
|
+
videoBitrate: params.videoBitrate,
|
|
76
|
+
forceHeight: params.forceHeight,
|
|
77
|
+
forceWidth: params.forceWidth,
|
|
78
|
+
rendererFunctionName: params.rendererFunctionName,
|
|
79
|
+
audioCodec: params.audioCodec,
|
|
80
|
+
dumpBrowserLogs: params.dumpBrowserLogs,
|
|
43
81
|
};
|
|
44
82
|
await (0, aws_clients_1.getLambdaClient)((0, get_current_region_1.getCurrentRegionInFunction)()).send(new client_lambda_1.InvokeCommand({
|
|
45
83
|
FunctionName: process.env.AWS_LAMBDA_FUNCTION_NAME,
|
|
@@ -47,6 +85,7 @@ const startHandler = async (params) => {
|
|
|
47
85
|
Payload: JSON.stringify(payload),
|
|
48
86
|
InvocationType: 'Event',
|
|
49
87
|
}));
|
|
88
|
+
await initialFile;
|
|
50
89
|
return {
|
|
51
90
|
bucketName,
|
|
52
91
|
renderId,
|
package/dist/functions/still.js
CHANGED
|
@@ -8,18 +8,23 @@ const client_lambda_1 = require("@aws-sdk/client-lambda");
|
|
|
8
8
|
const renderer_1 = require("@remotion/renderer");
|
|
9
9
|
const fs_1 = __importDefault(require("fs"));
|
|
10
10
|
const path_1 = __importDefault(require("path"));
|
|
11
|
-
const
|
|
11
|
+
const version_1 = require("remotion/version");
|
|
12
12
|
const estimate_price_1 = require("../api/estimate-price");
|
|
13
13
|
const get_or_create_bucket_1 = require("../api/get-or-create-bucket");
|
|
14
14
|
const aws_clients_1 = require("../shared/aws-clients");
|
|
15
|
+
const cleanup_serialized_input_props_1 = require("../shared/cleanup-serialized-input-props");
|
|
15
16
|
const constants_1 = require("../shared/constants");
|
|
17
|
+
const convert_to_serve_url_1 = require("../shared/convert-to-serve-url");
|
|
18
|
+
const deserialize_input_props_1 = require("../shared/deserialize-input-props");
|
|
16
19
|
const make_s3_url_1 = require("../shared/make-s3-url");
|
|
17
20
|
const random_hash_1 = require("../shared/random-hash");
|
|
21
|
+
const validate_download_behavior_1 = require("../shared/validate-download-behavior");
|
|
18
22
|
const validate_outname_1 = require("../shared/validate-outname");
|
|
19
23
|
const validate_privacy_1 = require("../shared/validate-privacy");
|
|
20
24
|
const expected_out_name_1 = require("./helpers/expected-out-name");
|
|
21
25
|
const format_costs_info_1 = require("./helpers/format-costs-info");
|
|
22
26
|
const get_browser_instance_1 = require("./helpers/get-browser-instance");
|
|
27
|
+
const get_chromium_executable_path_1 = require("./helpers/get-chromium-executable-path");
|
|
23
28
|
const get_current_architecture_1 = require("./helpers/get-current-architecture");
|
|
24
29
|
const get_current_region_1 = require("./helpers/get-current-region");
|
|
25
30
|
const get_output_url_from_metadata_1 = require("./helpers/get-output-url-from-metadata");
|
|
@@ -27,26 +32,55 @@ const io_1 = require("./helpers/io");
|
|
|
27
32
|
const validate_composition_1 = require("./helpers/validate-composition");
|
|
28
33
|
const write_lambda_error_1 = require("./helpers/write-lambda-error");
|
|
29
34
|
const innerStillHandler = async (lambdaParams, renderId, options) => {
|
|
30
|
-
var _a, _b, _c;
|
|
35
|
+
var _a, _b, _c, _d;
|
|
31
36
|
if (lambdaParams.type !== constants_1.LambdaRoutines.still) {
|
|
32
37
|
throw new TypeError('Expected still type');
|
|
33
38
|
}
|
|
39
|
+
if (lambdaParams.version !== version_1.VERSION) {
|
|
40
|
+
if (!lambdaParams.version) {
|
|
41
|
+
throw new Error(`Version mismatch: When calling renderStillOnLambda(), you called the function ${process.env.AWS_LAMBDA_FUNCTION_NAME} which has the version ${version_1.VERSION} but the @remotion/lambda package is an older version. Deploy a new function and use it to call renderStillOnLambda(). See: https://www.remotion.dev/docs/lambda/upgrading`);
|
|
42
|
+
}
|
|
43
|
+
throw new Error(`Version mismatch: When calling renderStillOnLambda(), you passed ${process.env.AWS_LAMBDA_FUNCTION_NAME} as the function, which has the version ${version_1.VERSION}, but the @remotion/lambda package you used to invoke the function has version ${lambdaParams.version}. Deploy a new function and use it to call renderStillOnLambda(). See: https://www.remotion.dev/docs/lambda/upgrading`);
|
|
44
|
+
}
|
|
45
|
+
(0, validate_download_behavior_1.validateDownloadBehavior)(lambdaParams.downloadBehavior);
|
|
34
46
|
(0, validate_privacy_1.validatePrivacy)(lambdaParams.privacy);
|
|
35
|
-
(0, validate_outname_1.validateOutname)(lambdaParams.outName);
|
|
47
|
+
(0, validate_outname_1.validateOutname)(lambdaParams.outName, null, null);
|
|
36
48
|
const start = Date.now();
|
|
37
|
-
const [
|
|
38
|
-
(0, get_or_create_bucket_1.getOrCreateBucket)({
|
|
49
|
+
const [bucketName, browserInstance] = await Promise.all([
|
|
50
|
+
(_a = lambdaParams.bucketName) !== null && _a !== void 0 ? _a : (0, get_or_create_bucket_1.getOrCreateBucket)({
|
|
39
51
|
region: (0, get_current_region_1.getCurrentRegionInFunction)(),
|
|
40
|
-
}),
|
|
41
|
-
(0, get_browser_instance_1.getBrowserInstance)(
|
|
52
|
+
}).then((b) => b.bucketName),
|
|
53
|
+
(0, get_browser_instance_1.getBrowserInstance)(renderer_1.RenderInternals.isEqualOrBelowLogLevel(lambdaParams.logLevel, 'verbose'), (_b = lambdaParams.chromiumOptions) !== null && _b !== void 0 ? _b : {}),
|
|
42
54
|
]);
|
|
43
55
|
const outputDir = renderer_1.RenderInternals.tmpDir('remotion-render-');
|
|
44
56
|
const outputPath = path_1.default.join(outputDir, 'output');
|
|
57
|
+
const downloadMap = renderer_1.RenderInternals.makeDownloadMap();
|
|
58
|
+
const region = (0, get_current_region_1.getCurrentRegionInFunction)();
|
|
59
|
+
const inputProps = await (0, deserialize_input_props_1.deserializeInputProps)({
|
|
60
|
+
bucketName,
|
|
61
|
+
expectedBucketOwner: options.expectedBucketOwner,
|
|
62
|
+
region,
|
|
63
|
+
serialized: lambdaParams.inputProps,
|
|
64
|
+
});
|
|
65
|
+
const serveUrl = (0, convert_to_serve_url_1.convertToServeUrl)({
|
|
66
|
+
urlOrId: lambdaParams.serveUrl,
|
|
67
|
+
region,
|
|
68
|
+
bucketName,
|
|
69
|
+
});
|
|
45
70
|
const composition = await (0, validate_composition_1.validateComposition)({
|
|
46
|
-
serveUrl
|
|
71
|
+
serveUrl,
|
|
47
72
|
browserInstance,
|
|
48
73
|
composition: lambdaParams.composition,
|
|
49
|
-
inputProps
|
|
74
|
+
inputProps,
|
|
75
|
+
envVariables: lambdaParams.envVariables,
|
|
76
|
+
ffmpegExecutable: null,
|
|
77
|
+
ffprobeExecutable: null,
|
|
78
|
+
chromiumOptions: lambdaParams.chromiumOptions,
|
|
79
|
+
timeoutInMilliseconds: lambdaParams.timeoutInMilliseconds,
|
|
80
|
+
port: null,
|
|
81
|
+
downloadMap,
|
|
82
|
+
forceHeight: lambdaParams.forceHeight,
|
|
83
|
+
forceWidth: lambdaParams.forceWidth,
|
|
50
84
|
});
|
|
51
85
|
const renderMetadata = {
|
|
52
86
|
startedDate: Date.now(),
|
|
@@ -55,18 +89,21 @@ const innerStillHandler = async (lambdaParams, renderId, options) => {
|
|
|
55
89
|
compositionId: lambdaParams.composition,
|
|
56
90
|
estimatedTotalLambdaInvokations: 1,
|
|
57
91
|
estimatedRenderLambdaInvokations: 1,
|
|
58
|
-
siteId: (0, make_s3_url_1.getServeUrlHash)(
|
|
92
|
+
siteId: (0, make_s3_url_1.getServeUrlHash)(serveUrl),
|
|
59
93
|
totalChunks: 1,
|
|
60
94
|
type: 'still',
|
|
61
|
-
usesOptimizationProfile: false,
|
|
62
95
|
imageFormat: lambdaParams.imageFormat,
|
|
63
96
|
inputProps: lambdaParams.inputProps,
|
|
64
|
-
lambdaVersion:
|
|
97
|
+
lambdaVersion: version_1.VERSION,
|
|
65
98
|
framesPerLambda: 1,
|
|
66
99
|
memorySizeInMb: Number(process.env.AWS_LAMBDA_FUNCTION_MEMORY_SIZE),
|
|
67
100
|
region: (0, get_current_region_1.getCurrentRegionInFunction)(),
|
|
68
101
|
renderId,
|
|
69
102
|
outName: (_c = lambdaParams.outName) !== null && _c !== void 0 ? _c : undefined,
|
|
103
|
+
privacy: lambdaParams.privacy,
|
|
104
|
+
everyNthFrame: 1,
|
|
105
|
+
frameRange: [lambdaParams.frame, lambdaParams.frame],
|
|
106
|
+
audioCodec: null,
|
|
70
107
|
};
|
|
71
108
|
await (0, io_1.lambdaWriteFile)({
|
|
72
109
|
bucketName,
|
|
@@ -75,33 +112,50 @@ const innerStillHandler = async (lambdaParams, renderId, options) => {
|
|
|
75
112
|
region: (0, get_current_region_1.getCurrentRegionInFunction)(),
|
|
76
113
|
privacy: 'private',
|
|
77
114
|
expectedBucketOwner: options.expectedBucketOwner,
|
|
115
|
+
downloadBehavior: null,
|
|
116
|
+
customCredentials: null,
|
|
78
117
|
});
|
|
79
118
|
await (0, renderer_1.renderStill)({
|
|
80
119
|
composition,
|
|
81
120
|
output: outputPath,
|
|
82
|
-
serveUrl
|
|
83
|
-
dumpBrowserLogs:
|
|
121
|
+
serveUrl,
|
|
122
|
+
dumpBrowserLogs: (_d = lambdaParams.dumpBrowserLogs) !== null && _d !== void 0 ? _d : renderer_1.RenderInternals.isEqualOrBelowLogLevel(lambdaParams.logLevel, 'verbose'),
|
|
84
123
|
envVariables: lambdaParams.envVariables,
|
|
85
|
-
frame:
|
|
124
|
+
frame: renderer_1.RenderInternals.convertToPositiveFrameIndex({
|
|
125
|
+
frame: lambdaParams.frame,
|
|
126
|
+
durationInFrames: composition.durationInFrames,
|
|
127
|
+
}),
|
|
86
128
|
imageFormat: lambdaParams.imageFormat,
|
|
87
|
-
inputProps
|
|
129
|
+
inputProps,
|
|
88
130
|
overwrite: false,
|
|
89
131
|
puppeteerInstance: browserInstance,
|
|
90
132
|
quality: lambdaParams.quality,
|
|
91
133
|
chromiumOptions: lambdaParams.chromiumOptions,
|
|
92
134
|
scale: lambdaParams.scale,
|
|
135
|
+
timeoutInMilliseconds: lambdaParams.timeoutInMilliseconds,
|
|
136
|
+
downloadMap,
|
|
137
|
+
browserExecutable: (0, get_chromium_executable_path_1.executablePath)(),
|
|
93
138
|
});
|
|
94
|
-
const { key
|
|
139
|
+
const { key, renderBucketName, customCredentials } = (0, expected_out_name_1.getExpectedOutName)(renderMetadata, bucketName, (0, expected_out_name_1.getCredentialsFromOutName)(lambdaParams.outName));
|
|
95
140
|
const { size } = await fs_1.default.promises.stat(outputPath);
|
|
96
141
|
await (0, io_1.lambdaWriteFile)({
|
|
97
142
|
bucketName: renderBucketName,
|
|
98
|
-
key
|
|
143
|
+
key,
|
|
99
144
|
privacy: lambdaParams.privacy,
|
|
100
145
|
body: fs_1.default.createReadStream(outputPath),
|
|
101
146
|
expectedBucketOwner: options.expectedBucketOwner,
|
|
102
147
|
region: (0, get_current_region_1.getCurrentRegionInFunction)(),
|
|
148
|
+
downloadBehavior: lambdaParams.downloadBehavior,
|
|
149
|
+
customCredentials,
|
|
103
150
|
});
|
|
104
|
-
await
|
|
151
|
+
await Promise.all([
|
|
152
|
+
fs_1.default.promises.rm(outputPath, { recursive: true }),
|
|
153
|
+
(0, cleanup_serialized_input_props_1.cleanupSerializedInputProps)({
|
|
154
|
+
bucketName,
|
|
155
|
+
region: (0, get_current_region_1.getCurrentRegionInFunction)(),
|
|
156
|
+
serialized: lambdaParams.inputProps,
|
|
157
|
+
}),
|
|
158
|
+
]);
|
|
105
159
|
const estimatedPrice = (0, estimate_price_1.estimatePrice)({
|
|
106
160
|
durationInMiliseconds: Date.now() - start + 100,
|
|
107
161
|
memorySizeInMb: Number(process.env.AWS_LAMBDA_FUNCTION_MEMORY_SIZE),
|
|
@@ -112,8 +166,9 @@ const innerStillHandler = async (lambdaParams, renderId, options) => {
|
|
|
112
166
|
// overestimate the price, but will only have a miniscule effect (~0.2%)
|
|
113
167
|
diskSizeInMb: constants_1.MAX_EPHEMERAL_STORAGE_IN_MB,
|
|
114
168
|
});
|
|
169
|
+
renderer_1.RenderInternals.cleanDownloadMap(downloadMap);
|
|
115
170
|
return {
|
|
116
|
-
output: (0, get_output_url_from_metadata_1.getOutputUrlFromMetadata)(renderMetadata, bucketName),
|
|
171
|
+
output: (0, get_output_url_from_metadata_1.getOutputUrlFromMetadata)(renderMetadata, bucketName, customCredentials),
|
|
117
172
|
size,
|
|
118
173
|
bucketName,
|
|
119
174
|
estimatedPrice: (0, format_costs_info_1.formatCostsInfo)(estimatedPrice),
|
|
@@ -121,6 +176,7 @@ const innerStillHandler = async (lambdaParams, renderId, options) => {
|
|
|
121
176
|
};
|
|
122
177
|
};
|
|
123
178
|
const stillHandler = async (params, options) => {
|
|
179
|
+
var _a;
|
|
124
180
|
if (params.type !== constants_1.LambdaRoutines.still) {
|
|
125
181
|
throw new Error('Params must be renderer');
|
|
126
182
|
}
|
|
@@ -145,10 +201,12 @@ const stillHandler = async (params, options) => {
|
|
|
145
201
|
// @ts-expect-error
|
|
146
202
|
Payload: JSON.stringify(retryPayload),
|
|
147
203
|
}));
|
|
148
|
-
const
|
|
204
|
+
const bucketName = (_a = params.bucketName) !== null && _a !== void 0 ? _a : (await (0, get_or_create_bucket_1.getOrCreateBucket)({
|
|
149
205
|
region: (0, get_current_region_1.getCurrentRegionInFunction)(),
|
|
150
|
-
});
|
|
151
|
-
|
|
206
|
+
})).bucketName;
|
|
207
|
+
// `await` elided on purpose here; using `void` to mark it as intentional
|
|
208
|
+
// eslint-disable-next-line no-void
|
|
209
|
+
void (0, write_lambda_error_1.writeLambdaError)({
|
|
152
210
|
bucketName,
|
|
153
211
|
errorInfo: {
|
|
154
212
|
chunk: null,
|