remotion_lambda 0.0.0 → 4.0.232
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/render_media_on_lambda_payload.rb +98 -0
- data/lib/render_progress_payload.rb +19 -0
- data/lib/render_still_on_lambda_payload.rb +60 -0
- data/lib/s3_output_provider.rb +19 -0
- data/lib/sdk.rb +61 -1
- metadata +49 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4610b43a026fe3205b88f0453a764c0b6678579f193b4a6cf132d865377824c4
|
4
|
+
data.tar.gz: a03d483e39b6746607590b51c45d6e2bf2dc354935de9d43c80b896bdfd57bc3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4a3e7b186cc3210354bcbdfacc3d0baf6b0d715b6eca3d3a9abb604055a9457e3b9b11f8ebbb1439ca4a74f202a1116a08c9128964327f1427d4a93f8748506c
|
7
|
+
data.tar.gz: 2777108ff38e738def35a7bd097f9c72ddc943de55e4dfbb31b449565ee7ef868e7c35760b883f8f8826302b054ec4dd8223e9e836701a3d955f8200ab7f95ce
|
@@ -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,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,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,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
|
data/lib/sdk.rb
CHANGED
@@ -1 +1,61 @@
|
|
1
|
-
|
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
|
metadata
CHANGED
@@ -1,21 +1,67 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: remotion_lambda
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 4.0.232
|
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-11-
|
12
|
-
dependencies:
|
11
|
+
date: 2024-11-26 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: aws-sdk-lambda
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 1.0.0
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 1.0.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: json
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 2.0.0
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 2.0.0
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: logger
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 1.0.0
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 1.0.0
|
13
55
|
description: A Ruby SDK for Remotion Lambda
|
14
56
|
email: jonny@remotion.dev
|
15
57
|
executables: []
|
16
58
|
extensions: []
|
17
59
|
extra_rdoc_files: []
|
18
60
|
files:
|
61
|
+
- lib/render_media_on_lambda_payload.rb
|
62
|
+
- lib/render_progress_payload.rb
|
63
|
+
- lib/render_still_on_lambda_payload.rb
|
64
|
+
- lib/s3_output_provider.rb
|
19
65
|
- lib/sdk.rb
|
20
66
|
homepage: https://rubygems.org/gems/remotion_lambda
|
21
67
|
licenses:
|