remotion_lambda 4.0.237 → 4.0.240

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 817382860723edb867b6d78f22c21a1555bc3576a0ee5a19867e065aee857698
4
- data.tar.gz: '0250259ebd44d459edddb82fb135f22ab9ed6ebd58e932ade180d4ac85162855'
3
+ metadata.gz: db049b473a23e60d311ca20b122b62815f3088332510a2051f33045758cbbb6f
4
+ data.tar.gz: 6e432c043aed7350b21b59cbbb892d41a9575a392a8c9d82bd3dfec4b2179205
5
5
  SHA512:
6
- metadata.gz: 319cb6605bedbdedc3c8e291c655cb30b5f2caa3ee3e08f2821ceadb00c6195c49e5494fc156db30de7789988793bf4c07f2eac5beede5c43d21abef948f579e
7
- data.tar.gz: a8d5f00288ac1bbc13cd9479f4d737a65a05cf125e77d3c1419671ac89d806ac790a5c155c605069997634492d309ca63f907488e9d2e5b170f22bd86332894e
6
+ metadata.gz: b611b0056001c614b1c1d625406eb37c09820d56fd32215258a5af7475c024479c770e319435556ba2fe63c3e6b3ed37a554b8396ef96f6dbbcef3763b496246
7
+ data.tar.gz: 758f064428317292f1dd3efeca70435512eb80e4d096b02228be2f44cbcf9bd650d87ac11d5117b22b4a5572a22958b926647f7037c4c7dff6877e12388f13f5
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.240"
@@ -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.240
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-13 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