remotion_lambda 4.0.237 → 4.0.239

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 817382860723edb867b6d78f22c21a1555bc3576a0ee5a19867e065aee857698
4
- data.tar.gz: '0250259ebd44d459edddb82fb135f22ab9ed6ebd58e932ade180d4ac85162855'
3
+ metadata.gz: 2d38d8efe0d337ebb8e9b4c0290533ff73c2bba9baf61f9c9766cdac6e10f36f
4
+ data.tar.gz: 9be850bb66038f044750c997f615728063be6c7b8e039c26f28b54ad528e4973
5
5
  SHA512:
6
- metadata.gz: 319cb6605bedbdedc3c8e291c655cb30b5f2caa3ee3e08f2821ceadb00c6195c49e5494fc156db30de7789988793bf4c07f2eac5beede5c43d21abef948f579e
7
- data.tar.gz: a8d5f00288ac1bbc13cd9479f4d737a65a05cf125e77d3c1419671ac89d806ac790a5c155c605069997634492d309ca63f907488e9d2e5b170f22bd86332894e
6
+ metadata.gz: 5e038228cc7154881877d8a69c04164067791123fd8bbc81128ae5da0c1c41bacadccb4563bced7d25a5042b20ff1988a87586697a65377ffdc12e0979b6a9ed
7
+ data.tar.gz: 91002c2eb01cf29a621d4f14edbfa10d79a81b7711f50fefb727a7175e618425f2160a6013aa3eee1271f66e5b2c4384ea8599c0fb4cb5c9f5fbf366ca891d0e
data/README.md ADDED
@@ -0,0 +1,7 @@
1
+ # Remotion Lambda Ruby SDK
2
+ Do not open issues or pull requests here.
3
+ The actual source code is located in the [Remotion repository](https://remotion.dev/github).
4
+ This repository is automatically updated when a new version of Remotion is released.
5
+
6
+ ## Installation
7
+ Visit https://www.remotion.dev/docs/lambda/ruby to learn how to install the Remotion Lambda Ruby SDK.
@@ -0,0 +1,98 @@
1
+ require_relative 'version'
2
+
3
+ def get_render_media_on_lambda_payload(
4
+ bucket_name: nil,
5
+ codec:,
6
+ audio_bitrate: nil,
7
+ audio_codec: nil,
8
+ color_space: nil,
9
+ composition: nil,
10
+ concurrency_per_lambda: 1,
11
+ crf: nil,
12
+ delete_after: nil,
13
+ download_behavior: nil,
14
+ encoding_buffer_size: nil,
15
+ encoding_max_rate: nil,
16
+ env_variables: {},
17
+ every_nth_frame: 1,
18
+ force_height: nil,
19
+ force_path_style: false,
20
+ force_width: nil,
21
+ frame_range: nil,
22
+ frames_per_lambda: nil,
23
+ image_format: "jpeg",
24
+ input_props: {},
25
+ jpeg_quality: 80,
26
+ log_level: "info",
27
+ max_retries: 1,
28
+ metadata: {},
29
+ muted: false,
30
+ number_of_gif_loops: 0,
31
+ offthread_video_cache_size_in_bytes: nil,
32
+ out_name: nil,
33
+ overwrite: false,
34
+ pixel_format: nil,
35
+ prefer_lossless: false,
36
+ privacy: "public",
37
+ pro_res_profile: nil,
38
+ renderer_function_name: nil,
39
+ scale: 1,
40
+ serve_url: "testbed-v6",
41
+ timeout_in_milliseconds: 30000,
42
+ video_bitrate: nil,
43
+ webhook: nil,
44
+ x264_preset: nil,
45
+ chromium_options: {}
46
+ )
47
+
48
+ payload = {
49
+ audioBitrate: audio_bitrate,
50
+ audioCodec: audio_codec,
51
+ codec: codec,
52
+ colorSpace: color_space,
53
+ composition: composition,
54
+ concurrencyPerLambda: concurrency_per_lambda,
55
+ chromiumOptions: chromium_options,
56
+ crf: crf,
57
+ deleteAfter: delete_after,
58
+ downloadBehavior: download_behavior,
59
+ encodingBufferSize: encoding_buffer_size,
60
+ encodingMaxRate: encoding_max_rate,
61
+ envVariables: env_variables,
62
+ everyNthFrame: every_nth_frame,
63
+ forceHeight: force_height,
64
+ forcePathStyle: force_path_style,
65
+ forceWidth: force_width,
66
+ frameRange: frame_range,
67
+ framesPerLambda: frames_per_lambda,
68
+ imageFormat: image_format,
69
+ inputProps: {
70
+ type: "payload",
71
+ payload: JSON.generate(input_props)
72
+ },
73
+ jpegQuality: jpeg_quality,
74
+ logLevel: log_level,
75
+ maxRetries: max_retries,
76
+ metadata: metadata,
77
+ muted: muted,
78
+ numberOfGifLoops: number_of_gif_loops,
79
+ offthreadVideoCacheSizeInBytes: offthread_video_cache_size_in_bytes,
80
+ outName: out_name,
81
+ overwrite: overwrite,
82
+ pixelFormat: pixel_format,
83
+ preferLossless: prefer_lossless,
84
+ privacy: privacy,
85
+ proResProfile: pro_res_profile,
86
+ rendererFunctionName: renderer_function_name,
87
+ scale: scale,
88
+ serveUrl: serve_url,
89
+ timeoutInMilliseconds: timeout_in_milliseconds,
90
+ type: "start",
91
+ version: VERSION,
92
+ videoBitrate: video_bitrate,
93
+ webhook: webhook,
94
+ x264Preset: x264_preset,
95
+ bucketName: bucket_name
96
+ }
97
+ payload
98
+ end
@@ -0,0 +1,29 @@
1
+ require_relative 'render_media_on_lambda_payload'
2
+ require 'json'
3
+
4
+ # Call get_render_media_on_lambda with sample data
5
+ payload = get_render_media_on_lambda_payload(
6
+ codec: "h264",
7
+ metadata: {
8
+ Author: "Lunar"
9
+ },
10
+ bucket_name: nil,
11
+ composition: "react-svg",
12
+ webhook: {
13
+ customData: {
14
+ hi: "there",
15
+ },
16
+ secret: "abc",
17
+ url: "https://example.com",
18
+ },
19
+ download_behavior: {
20
+ fileName: "hi",
21
+ type: "download",
22
+ },
23
+ input_props: {
24
+ hi: "there",
25
+ }
26
+ )
27
+
28
+ # Print as JSON
29
+ puts JSON.generate(payload)
@@ -0,0 +1,19 @@
1
+ def get_render_progress_payload(
2
+ render_id:,
3
+ bucket_name:,
4
+ force_path_style: false,
5
+ log_level: 'info',
6
+ s3_output_provider: nil
7
+ )
8
+ payload = {
9
+ "type" => "status",
10
+ "renderId" => render_id,
11
+ "bucketName" => bucket_name,
12
+ "version" => VERSION,
13
+ "forcePathStyle" => force_path_style,
14
+ "logLevel" => log_level,
15
+ "s3OutputProvider" => s3_output_provider
16
+ }
17
+
18
+ payload
19
+ end
@@ -0,0 +1,24 @@
1
+ require_relative 'sdk'
2
+ require_relative 's3_output_provider'
3
+ require_relative 'render_progress_payload'
4
+
5
+ require 'json'
6
+
7
+ # Sample data
8
+ render_id = "abcdef"
9
+ bucket_name = "remotion-render"
10
+
11
+ # Call get_render_progress_payload with sample data
12
+ payload = get_render_progress_payload(
13
+ render_id: render_id,
14
+ bucket_name: bucket_name,
15
+ s3_output_provider: RemotionLambda::S3OutputProvider.new(
16
+ access_key_id: 'accessKeyId',
17
+ endpoint: 'https://s3.us-east-1.amazonaws.com',
18
+ region: 'us-east-1',
19
+ secret_access_key: 'secretAccessKey'
20
+ )
21
+ )
22
+
23
+ # Print as JSON
24
+ puts JSON.generate(payload)
@@ -0,0 +1,60 @@
1
+ require_relative 'version'
2
+
3
+ def get_render_still_on_lambda_payload(
4
+ bucket_name: nil,
5
+ composition: nil,
6
+ delete_after: nil,
7
+ download_behavior: nil,
8
+ env_variables: {},
9
+ force_height: nil,
10
+ force_path_style: false,
11
+ force_width: nil,
12
+ image_format: "jpeg",
13
+ input_props: {},
14
+ jpeg_quality: 80,
15
+ log_level: "info",
16
+ max_retries: 1,
17
+ metadata: {},
18
+ offthread_video_cache_size_in_bytes: nil,
19
+ out_name: nil,
20
+ overwrite: false,
21
+ privacy: "public",
22
+ scale: 1,
23
+ serve_url: "testbed-v6",
24
+ timeout_in_milliseconds: 30000,
25
+ chromium_options: {},
26
+ frame: 0
27
+ )
28
+
29
+ payload = {
30
+ composition: composition,
31
+ chromiumOptions: chromium_options,
32
+ deleteAfter: delete_after,
33
+ downloadBehavior: download_behavior,
34
+ envVariables: env_variables,
35
+ forceHeight: force_height,
36
+ forcePathStyle: force_path_style,
37
+ forceWidth: force_width,
38
+ imageFormat: image_format,
39
+ inputProps: {
40
+ type: "payload",
41
+ payload: JSON.generate(input_props)
42
+ },
43
+ jpegQuality: jpeg_quality,
44
+ logLevel: log_level,
45
+ maxRetries: max_retries,
46
+ offthreadVideoCacheSizeInBytes: offthread_video_cache_size_in_bytes,
47
+ outName: out_name,
48
+ privacy: privacy,
49
+ scale: scale,
50
+ serveUrl: serve_url,
51
+ timeoutInMilliseconds: timeout_in_milliseconds,
52
+ type: "still",
53
+ version: VERSION,
54
+ bucketName: bucket_name,
55
+ attempt: 1,
56
+ streamed: false,
57
+ frame: frame,
58
+ }
59
+ payload
60
+ end
@@ -0,0 +1,15 @@
1
+ require_relative 'render_still_on_lambda_payload'
2
+ require 'json'
3
+
4
+ payload = get_render_still_on_lambda_payload(
5
+ composition: "still-helloworld",
6
+ download_behavior: {
7
+ type: "play-in-browser",
8
+ },
9
+ input_props: {
10
+ message: "Hello from props!",
11
+ }
12
+ )
13
+
14
+ # Print as JSON
15
+ puts JSON.generate(payload)
@@ -0,0 +1,19 @@
1
+ module RemotionLambda
2
+ class S3OutputProvider
3
+ def initialize(access_key_id:, endpoint:, region:, secret_access_key:)
4
+ @region = region
5
+ @access_key_id = access_key_id
6
+ @secret_access_key = secret_access_key
7
+ @endpoint = endpoint
8
+ end
9
+
10
+ def to_json(*args)
11
+ {
12
+ region: @region,
13
+ accessKeyId: @access_key_id,
14
+ secretAccessKey: @secret_access_key,
15
+ endpoint: @endpoint
16
+ }.to_json(*args)
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,61 @@
1
+ require 'aws-sdk-lambda'
2
+ require 'json'
3
+ require 'logger'
4
+ require_relative 'version'
5
+
6
+ module RemotionLambda
7
+ class Client
8
+ attr_reader :bucket_name, :serve_url
9
+
10
+ def initialize(
11
+ region: ENV.fetch('AWS_REGION', 'us-east-1'),
12
+ aws_profile: nil
13
+ )
14
+ @region = region
15
+ @aws_profile = aws_profile
16
+ @lambda_client = create_lambda_client
17
+ end
18
+
19
+ def get_render_progress(function_name, payload)
20
+ body = invoke(function_name, payload)
21
+ raise "Failed to fetch progress: #{body['message']}" if body["type"] == "error"
22
+ body
23
+ end
24
+
25
+ def render_media_on_lambda(function_name, payload)
26
+ body = invoke(function_name, payload)
27
+ raise "Failed to call renderMediaOnLambda: #{body['message']}" if body["type"] == "error"
28
+ body
29
+ end
30
+
31
+ def render_still_on_lambda(function_name, payload)
32
+ body = invoke(function_name, payload)
33
+ raise "Failed to call renderStillOnLambda: #{body['message']}" if body["type"] == "error"
34
+ body
35
+ end
36
+
37
+ private
38
+
39
+ # Lambda methods
40
+ def invoke(function_name, payload)
41
+ response = @lambda_client.invoke({
42
+ function_name: function_name,
43
+ payload: JSON.generate(payload)
44
+ })
45
+
46
+ JSON.parse(response.payload.string)
47
+ end
48
+
49
+ def create_lambda_client
50
+ Aws::Lambda::Client.new(region: @region, credentials: aws_credentials)
51
+ end
52
+
53
+ def aws_credentials
54
+ if @aws_profile
55
+ Aws::SharedCredentials.new(profile_name: @aws_profile)
56
+ else
57
+ Aws::Credentials.new(ENV['AWS_ACCESS_KEY_ID'], ENV['AWS_SECRET_ACCESS_KEY'])
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1 @@
1
+ VERSION = "4.0.239"
@@ -0,0 +1,14 @@
1
+ require 'aws-sdk-lambda'
2
+ require 'json'
3
+ require 'logger'
4
+ require_relative 'remotion_lambda/version'
5
+ require_relative 'remotion_lambda/render_media_on_lambda_payload'
6
+ require_relative 'remotion_lambda/render_progress_payload'
7
+ require_relative 'remotion_lambda/render_still_on_lambda_payload'
8
+ require_relative 'remotion_lambda/s3_output_provider'
9
+ require_relative 'remotion_lambda/sdk'
10
+
11
+ module RemotionLambda
12
+ # This module serves as the namespace for the RemotionLambda gem.
13
+ # Add any top-level methods, constants, or configuration here if needed.
14
+ end
@@ -0,0 +1,29 @@
1
+ require_relative 'render_media_on_lambda_payload'
2
+ require 'json'
3
+
4
+ # Call get_render_media_on_lambda with sample data
5
+ payload = get_render_media_on_lambda_payload(
6
+ codec: "h264",
7
+ metadata: {
8
+ Author: "Lunar"
9
+ },
10
+ bucket_name: nil,
11
+ composition: "react-svg",
12
+ webhook: {
13
+ customData: {
14
+ hi: "there",
15
+ },
16
+ secret: "abc",
17
+ url: "https://example.com",
18
+ },
19
+ download_behavior: {
20
+ fileName: "hi",
21
+ type: "download",
22
+ },
23
+ input_props: {
24
+ hi: "there",
25
+ }
26
+ )
27
+
28
+ # Print as JSON
29
+ puts JSON.generate(payload)
@@ -0,0 +1,24 @@
1
+ require_relative 'sdk'
2
+ require_relative 's3_output_provider'
3
+ require_relative 'render_progress_payload'
4
+
5
+ require 'json'
6
+
7
+ # Sample data
8
+ render_id = "abcdef"
9
+ bucket_name = "remotion-render"
10
+
11
+ # Call get_render_progress_payload with sample data
12
+ payload = get_render_progress_payload(
13
+ render_id: render_id,
14
+ bucket_name: bucket_name,
15
+ s3_output_provider: RemotionLambda::S3OutputProvider.new(
16
+ access_key_id: 'accessKeyId',
17
+ endpoint: 'https://s3.us-east-1.amazonaws.com',
18
+ region: 'us-east-1',
19
+ secret_access_key: 'secretAccessKey'
20
+ )
21
+ )
22
+
23
+ # Print as JSON
24
+ puts JSON.generate(payload)
@@ -0,0 +1,15 @@
1
+ require_relative 'render_still_on_lambda_payload'
2
+ require 'json'
3
+
4
+ payload = get_render_still_on_lambda_payload(
5
+ composition: "still-helloworld",
6
+ download_behavior: {
7
+ type: "play-in-browser",
8
+ },
9
+ input_props: {
10
+ message: "Hello from props!",
11
+ }
12
+ )
13
+
14
+ # Print as JSON
15
+ puts JSON.generate(payload)
@@ -0,0 +1,35 @@
1
+ require_relative 'sdk'
2
+ require_relative 'render_media_on_lambda_payload'
3
+ require_relative 'render_progress_payload'
4
+
5
+ client = RemotionLambda::Client.new(
6
+ region: 'eu-central-1',
7
+ )
8
+
9
+ function_name = ENV.fetch('REMOTION_APP_FUNCTION_NAME')
10
+
11
+ payload = get_render_media_on_lambda_payload(
12
+ composition: "still-helloworld",
13
+ download_behavior: {
14
+ type: "play-in-browser",
15
+ },
16
+ codec: "h264",
17
+ input_props: {
18
+ message: "Hello from props!",
19
+ }
20
+ )
21
+
22
+ res = client.render_media_on_lambda(function_name, payload)
23
+ puts res
24
+ while true
25
+ render_progress_payload = get_render_progress_payload(
26
+ render_id: res["renderId"],
27
+ bucket_name: res["bucketName"],
28
+ )
29
+ progress = client.get_render_progress(function_name, render_progress_payload)
30
+ puts progress["overallProgress"]
31
+ break if progress["done"]
32
+ break if progress["fatalErrorEncountered"]
33
+ sleep 1
34
+ end
35
+
@@ -0,0 +1,21 @@
1
+ require_relative 'sdk'
2
+ require_relative 'render_still_on_lambda_payload'
3
+
4
+ client = RemotionLambda::Client.new(
5
+ region: 'eu-central-1',
6
+ )
7
+
8
+ function_name = ENV.fetch('REMOTION_APP_FUNCTION_NAME')
9
+
10
+ payload = get_render_still_on_lambda_payload(
11
+ composition: "still-helloworld",
12
+ download_behavior: {
13
+ type: "play-in-browser",
14
+ },
15
+ input_props: {
16
+ message: "Hello from props!",
17
+ }
18
+ )
19
+
20
+ res = client.render_still_on_lambda(function_name, payload)
21
+ puts res
data/lib/version.rb ADDED
@@ -0,0 +1 @@
1
+ VERSION = "4.0.237"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: remotion_lambda
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.237
4
+ version: 4.0.239
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonny Burger
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-12-09 00:00:00.000000000 Z
11
+ date: 2024-12-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk-lambda
@@ -58,11 +58,28 @@ executables: []
58
58
  extensions: []
59
59
  extra_rdoc_files: []
60
60
  files:
61
+ - README.md
62
+ - lib/remotion_lambda.rb
63
+ - lib/remotion_lambda/render_media_on_lambda_payload.rb
64
+ - lib/remotion_lambda/render_media_on_lambda_payload_spec.rb
65
+ - lib/remotion_lambda/render_progress_payload.rb
66
+ - lib/remotion_lambda/render_progress_payload_spec.rb
67
+ - lib/remotion_lambda/render_still_on_lambda_payload.rb
68
+ - lib/remotion_lambda/render_still_on_lambda_payload_spec.rb
69
+ - lib/remotion_lambda/s3_output_provider.rb
70
+ - lib/remotion_lambda/sdk.rb
71
+ - lib/remotion_lambda/version.rb
61
72
  - lib/render_media_on_lambda_payload.rb
73
+ - lib/render_media_on_lambda_payload_spec.rb
62
74
  - lib/render_progress_payload.rb
75
+ - lib/render_progress_payload_spec.rb
63
76
  - lib/render_still_on_lambda_payload.rb
77
+ - lib/render_still_on_lambda_payload_spec.rb
64
78
  - lib/s3_output_provider.rb
65
79
  - lib/sdk.rb
80
+ - lib/test_render_spec_media.rb
81
+ - lib/test_render_spec_still.rb
82
+ - lib/version.rb
66
83
  homepage: https://rubygems.org/gems/remotion_lambda
67
84
  licenses:
68
85
  - MIT