通过 Go 触发渲染
EXPERIMENTAL
该功能是新功能。请报告您遇到的任何问题。
要使用 Go 触发 Lambda 渲染,您可以使用 Remotion Lambda Go 客户端。请注意以下内容:
- 您首先需要完成 Lambda 设置。
- 目前不支持使用 Go 发送大型输入属性(>200KB)。
- 请始终将 Go 客户端的版本与您部署的 Lambda 函数的版本匹配。否则,由于版本不匹配,调用将失败!
main.gogo
package mainimport ("fmt""log""os""github.com/go-playground/validator/v10""github.com/joho/godotenv""github.com/remotion-dev/lambda_go_sdk")type ValidationError struct {Field stringMessage string}func msgForTag(fe validator.FieldError) string {switch fe.Tag() {case "required":return "This field is required"}return fe.Error() // default error}func main() {// Load the environment variables from the .env fileerr := godotenv.Load()if err != nil {log.Fatal(err)}// Specify the URL to your Webpack bundleserveUrl := os.Getenv("REMOTION_APP_SERVE_URL")// Specify the function you would like to callfunctionName := os.Getenv("REMOTION_APP_FUNCTION_NAME")// Specify the region you deployed to, for example "us-east-1"region := os.Getenv("REMOTION_APP_REGION")// Set parameters for renderrenderInputRequest := lambda_go_sdk.RemotionOptions{ServeUrl: serveUrl,FunctionName: functionName,Region: region,// The data that composition will useInputProps: map[string]interface{}{"data": "Let's play",},Composition: "main", // The composition to use}// Execute the render processrenderResponse, renderError := lambda_go_sdk.RenderMediaOnLambda(renderInputRequest)// Check if there are validation errorsif renderError != nil {validationOut := make([]ValidationError, len(renderError.(validator.ValidationErrors)))for i, fieldError := range renderError.(validator.ValidationErrors) {validationOut[i] = ValidationError{fieldError.Field(), msgForTag(fieldError)}}for _, apiError := range validationOut {fmt.Printf("%s: %s\n", apiError.Field, apiError.Message)}return}fmt.Print(renderResponse.RenderId)/// Get bucket informationfmt.Printf("bucketName: %s\nRenderId: %s\n", renderResponse.RenderId, renderResponse.RenderId)// Render Progress requestrenderProgressInputRequest := lambda_go_sdk.RenderConfig{FunctionName: functionName,Region: region,RenderId: renderResponse.RenderId,BucketName: renderResponse.BucketName,LogLevel: "info",}// Execute getting the render progressrenderProgressResponse, renderProgressError := lambda_go_sdk.GetRenderProgress(renderProgressInputRequest)// Check if we have errorif renderProgressError != nil {log.Fatalf("%s %s", "Invalid render progress response", renderProgressError)}// Get the overall render progressfmt.Printf("overallprogress: %f ", renderProgressResponse.OverallProgress)}
main.gogo
package mainimport ("fmt""log""os""github.com/go-playground/validator/v10""github.com/joho/godotenv""github.com/remotion-dev/lambda_go_sdk")type ValidationError struct {Field stringMessage string}func msgForTag(fe validator.FieldError) string {switch fe.Tag() {case "required":return "This field is required"}return fe.Error() // default error}func main() {// Load the environment variables from the .env fileerr := godotenv.Load()if err != nil {log.Fatal(err)}// Specify the URL to your Webpack bundleserveUrl := os.Getenv("REMOTION_APP_SERVE_URL")// Specify the function you would like to callfunctionName := os.Getenv("REMOTION_APP_FUNCTION_NAME")// Specify the region you deployed to, for example "us-east-1"region := os.Getenv("REMOTION_APP_REGION")// Set parameters for renderrenderInputRequest := lambda_go_sdk.RemotionOptions{ServeUrl: serveUrl,FunctionName: functionName,Region: region,// The data that composition will useInputProps: map[string]interface{}{"data": "Let's play",},Composition: "main", // The composition to use}// Execute the render processrenderResponse, renderError := lambda_go_sdk.RenderMediaOnLambda(renderInputRequest)// Check if there are validation errorsif renderError != nil {validationOut := make([]ValidationError, len(renderError.(validator.ValidationErrors)))for i, fieldError := range renderError.(validator.ValidationErrors) {validationOut[i] = ValidationError{fieldError.Field(), msgForTag(fieldError)}}for _, apiError := range validationOut {fmt.Printf("%s: %s\n", apiError.Field, apiError.Message)}return}fmt.Print(renderResponse.RenderId)/// Get bucket informationfmt.Printf("bucketName: %s\nRenderId: %s\n", renderResponse.RenderId, renderResponse.RenderId)// Render Progress requestrenderProgressInputRequest := lambda_go_sdk.RenderConfig{FunctionName: functionName,Region: region,RenderId: renderResponse.RenderId,BucketName: renderResponse.BucketName,LogLevel: "info",}// Execute getting the render progressrenderProgressResponse, renderProgressError := lambda_go_sdk.GetRenderProgress(renderProgressInputRequest)// Check if we have errorif renderProgressError != nil {log.Fatalf("%s %s", "Invalid render progress response", renderProgressError)}// Get the overall render progressfmt.Printf("overallprogress: %f ", renderProgressResponse.OverallProgress)}
更新日志
v4.0.6
:响应有效载荷结构已更改。请查看此页面的历史记录以查看以前的结构。