Skip to main content

通过 Python 触发渲染

从 v4.0.15 版本开始可用

EXPERIMENTAL

此功能是新功能。请报告您遇到的任何问题。

要使用 Python 触发 Lambda 渲染,请使用 pip 安装 remotion-lambda 包,通过在您的 Python 项目中执行 pip install remotion-lambda 来安装。请使用与您从 NPM 使用的 remotion 版本相同的版本,例如 pip install remotion-lambda==4.0.15(请参阅最新版本)。

破坏性更改

4.0.82

  • data 字段现在是 input_props
  • RenderParams 已重命名为 RenderMediaParams
  • RenderProgress 已重命名为 RenderMediaProgress
  • RenderResponse 现在是 RenderMediaResponse,并且其字段已更新:renderId 现在是 render_idbucketName 已更改为 bucket_name
  • 已添加以下类型:CostsInfoPrivacyValidStillImageFormatsLogLevelOpenGlRendererChromiumOptionsCustomCredentialsWithoutSensitiveDataCustomCredentialsOutNameInputObjectPlayInBrowserDownloadDeleteAfter。这些可以用于 RenderMediaParamsRenderStillParams 上的字段。

在继续之前请注意以下事项:

  • 您首先需要完成 Lambda 设置
  • 目前不支持使用 Python 发送大型输入属性(>200KB)。

渲染视频

以下是一个显示如何发起渲染请求并获取其状态的代码片段。

render_media.py
python
from remotion_lambda import RenderMediaParams, Privacy, ValidStillImageFormats
from remotion_lambda import RemotionClient
import os
from dotenv import load_dotenv
load_dotenv()
# Load env variables
REMOTION_APP_REGION = os.getenv('REMOTION_APP_REGION')
if not REMOTION_APP_REGION:
raise Exception("REMOTION_APP_REGION is not set")
REMOTION_APP_FUNCTION_NAME = os.getenv('REMOTION_APP_FUNCTION_NAME')
if not REMOTION_APP_FUNCTION_NAME:
raise Exception("REMOTION_APP_FUNCTION_NAME is not set")
REMOTION_APP_SERVE_URL = os.getenv('REMOTION_APP_SERVE_URL')
if not REMOTION_APP_SERVE_URL:
raise Exception("REMOTION_APP_SERVE_URL is not set")
# Construct client
client = RemotionClient(region=REMOTION_APP_REGION,
serve_url=REMOTION_APP_SERVE_URL,
function_name=REMOTION_APP_FUNCTION_NAME)
# Set render request
render_params = RenderMediaParams(
composition="react-svg",
privacy=Privacy.PUBLIC,
image_format=ValidStillImageFormats.JPEG,
input_props={
'hi': 'there'
},
)
render_response = client.render_media_on_lambda(render_params)
if render_response:
# Execute render request
print("Render ID:", render_response.render_id)
print("Bucket name:", render_response.bucket_name)
# Execute progress request
progress_response = client.get_render_progress(
render_id=render_response.render_id, bucket_name=render_response.bucket_name)
while progress_response and not progress_response.done:
print("Overall progress")
print(str(progress_response.overallProgress * 100) + "%")
progress_response = client.get_render_progress(
render_id=render_response.render_id, bucket_name=render_response.bucket_name)
print("Render done!", progress_response.outputFile)
render_media.py
python
from remotion_lambda import RenderMediaParams, Privacy, ValidStillImageFormats
from remotion_lambda import RemotionClient
import os
from dotenv import load_dotenv
load_dotenv()
# Load env variables
REMOTION_APP_REGION = os.getenv('REMOTION_APP_REGION')
if not REMOTION_APP_REGION:
raise Exception("REMOTION_APP_REGION is not set")
REMOTION_APP_FUNCTION_NAME = os.getenv('REMOTION_APP_FUNCTION_NAME')
if not REMOTION_APP_FUNCTION_NAME:
raise Exception("REMOTION_APP_FUNCTION_NAME is not set")
REMOTION_APP_SERVE_URL = os.getenv('REMOTION_APP_SERVE_URL')
if not REMOTION_APP_SERVE_URL:
raise Exception("REMOTION_APP_SERVE_URL is not set")
# Construct client
client = RemotionClient(region=REMOTION_APP_REGION,
serve_url=REMOTION_APP_SERVE_URL,
function_name=REMOTION_APP_FUNCTION_NAME)
# Set render request
render_params = RenderMediaParams(
composition="react-svg",
privacy=Privacy.PUBLIC,
image_format=ValidStillImageFormats.JPEG,
input_props={
'hi': 'there'
},
)
render_response = client.render_media_on_lambda(render_params)
if render_response:
# Execute render request
print("Render ID:", render_response.render_id)
print("Bucket name:", render_response.bucket_name)
# Execute progress request
progress_response = client.get_render_progress(
render_id=render_response.render_id, bucket_name=render_response.bucket_name)
while progress_response and not progress_response.done:
print("Overall progress")
print(str(progress_response.overallProgress * 100) + "%")
progress_response = client.get_render_progress(
render_id=render_response.render_id, bucket_name=render_response.bucket_name)
print("Render done!", progress_response.outputFile)

渲染图像

以下是一个显示如何发起静态图像渲染的代码片段。请注意,它不需要监视渲染进度。

render_still.py
python
from remotion_lambda import RenderStillParams, Privacy, ValidStillImageFormats
from remotion_lambda import RemotionClient
import os
from dotenv import load_dotenv
load_dotenv()
# Load env variables
REMOTION_APP_REGION = os.getenv('REMOTION_APP_REGION')
if not REMOTION_APP_REGION:
raise Exception("REMOTION_APP_REGION is not set")
REMOTION_APP_FUNCTION_NAME = os.getenv('REMOTION_APP_FUNCTION_NAME')
if not REMOTION_APP_FUNCTION_NAME:
raise Exception("REMOTION_APP_FUNCTION_NAME is not set")
REMOTION_APP_SERVE_URL = os.getenv('REMOTION_APP_SERVE_URL')
if not REMOTION_APP_SERVE_URL:
raise Exception("REMOTION_APP_SERVE_URL is not set")
# Construct client
client = RemotionClient(region=REMOTION_APP_REGION,
serve_url=REMOTION_APP_SERVE_URL,
function_name=REMOTION_APP_FUNCTION_NAME)
# Set render still request
render_params = RenderStillParams(
composition="still-helloworld",
privacy=Privacy.PUBLIC,
image_format=ValidStillImageFormats.JPEG,
input_props={
'message': 'Hello from props!'
},
)
render_response = client.render_still_on_lambda(render_params)
if render_response:
# Execute render request
print("Render ID:", render_response.render_id)
print("Bucket name:", render_response.bucket_name)
print("Render done! File at ", render_response.url)
render_still.py
python
from remotion_lambda import RenderStillParams, Privacy, ValidStillImageFormats
from remotion_lambda import RemotionClient
import os
from dotenv import load_dotenv
load_dotenv()
# Load env variables
REMOTION_APP_REGION = os.getenv('REMOTION_APP_REGION')
if not REMOTION_APP_REGION:
raise Exception("REMOTION_APP_REGION is not set")
REMOTION_APP_FUNCTION_NAME = os.getenv('REMOTION_APP_FUNCTION_NAME')
if not REMOTION_APP_FUNCTION_NAME:
raise Exception("REMOTION_APP_FUNCTION_NAME is not set")
REMOTION_APP_SERVE_URL = os.getenv('REMOTION_APP_SERVE_URL')
if not REMOTION_APP_SERVE_URL:
raise Exception("REMOTION_APP_SERVE_URL is not set")
# Construct client
client = RemotionClient(region=REMOTION_APP_REGION,
serve_url=REMOTION_APP_SERVE_URL,
function_name=REMOTION_APP_FUNCTION_NAME)
# Set render still request
render_params = RenderStillParams(
composition="still-helloworld",
privacy=Privacy.PUBLIC,
image_format=ValidStillImageFormats.JPEG,
input_props={
'message': 'Hello from props!'
},
)
render_response = client.render_still_on_lambda(render_params)
if render_response:
# Execute render request
print("Render ID:", render_response.render_id)
print("Bucket name:", render_response.bucket_name)
print("Render done! File at ", render_response.url)

参见