Skip to main content

通过 PHP 触发渲染

从 v3.3.96 版本开始可用

EXPERIMENTAL

此功能是新功能。请报告您遇到的任何问题。API 可能会在补丁版本之间更改。

要使用 PHP 触发 Lambda 渲染,请使用 composer 安装 remotion/lambda 包。使用与您从 NPM 使用的 remotion 版本相同的版本,并通过在您的 composer.json 中删除 ^ 字符来固定版本。

以下是一个显示如何发起渲染请求并获取其状态的代码片段。在继续之前请注意以下事项:

  • 您首先需要完成 Lambda 设置
  • 设置以下环境变量 - 下面的示例支持 .env 文件:
    • AWS_ACCESS_KEY_ID
    • AWS_SECRET_ACCESS_KEY
    • REMOTION_APP_REGION
    • REMOTION_APP_FUNCTION_NAME
    • REMOTION_APP_SERVE_URL
  • 目前不支持使用 PHP 发送大型输入属性(>200KB)。
render.php
php
<?php
use Aws\Credentials\CredentialProvider;
// We'll assume you use Composer, which will add autoload.php
require_once dirname(__DIR__) . '/vendor/autoload.php';
use Dotenv\Dotenv;
use Remotion\LambdaPhp\PHPClient;
use Remotion\LambdaPhp\RenderParams;
// Load environment variables
// Use "unsafe" because AWS reads environment variables from getenv(), not $_ENV
$dotenv = Dotenv::createUnsafeImmutable(__DIR__);
$dotenv->load();
// Specify the region you deployed to, for example "us-east-1"
$region = getenv('REMOTION_APP_REGION');
// Specify the function you would like to call
$functionName = getenv('REMOTION_APP_FUNCTION_NAME');
// Specify the URL to your Webpack bundle
$serveUrl = getenv('REMOTION_APP_SERVE_URL');
$provider = CredentialProvider::defaultProvider();
// Instantiate the client
$client = new PHPClient($region, $serveUrl, $functionName, $provider);
// Initiate the param object and customize as needed
$params = new RenderParams();
$params->setComposition('react-svg');
// Set input props
$params->setInputProps(['message' => 'yo whats up']);
// Execute the render and get the response
$renderResponse = $client->renderMediaOnLambda($params);
// Output render response
print_r($renderResponse);
// Get render progress
$renderId = $renderResponse->renderId;
$bucketName = $renderResponse->bucketName;
$renderProgressResponse = $client->getRenderProgress($renderId, $bucketName);
while (!$renderProgressResponse->done) {
// Render is not done
// Get the render progress
$renderProgress = $renderProgressResponse->overallProgress;
// Output render progress
print_r("progress: " . ($renderProgress * 100) . "%\n");
// Wait 1 second
sleep(1);
// Get render progress again
$renderProgressResponse = $client->getRenderProgress($renderId, $bucketName);
}
print_r("Render is done!\n");
render.php
php
<?php
use Aws\Credentials\CredentialProvider;
// We'll assume you use Composer, which will add autoload.php
require_once dirname(__DIR__) . '/vendor/autoload.php';
use Dotenv\Dotenv;
use Remotion\LambdaPhp\PHPClient;
use Remotion\LambdaPhp\RenderParams;
// Load environment variables
// Use "unsafe" because AWS reads environment variables from getenv(), not $_ENV
$dotenv = Dotenv::createUnsafeImmutable(__DIR__);
$dotenv->load();
// Specify the region you deployed to, for example "us-east-1"
$region = getenv('REMOTION_APP_REGION');
// Specify the function you would like to call
$functionName = getenv('REMOTION_APP_FUNCTION_NAME');
// Specify the URL to your Webpack bundle
$serveUrl = getenv('REMOTION_APP_SERVE_URL');
$provider = CredentialProvider::defaultProvider();
// Instantiate the client
$client = new PHPClient($region, $serveUrl, $functionName, $provider);
// Initiate the param object and customize as needed
$params = new RenderParams();
$params->setComposition('react-svg');
// Set input props
$params->setInputProps(['message' => 'yo whats up']);
// Execute the render and get the response
$renderResponse = $client->renderMediaOnLambda($params);
// Output render response
print_r($renderResponse);
// Get render progress
$renderId = $renderResponse->renderId;
$bucketName = $renderResponse->bucketName;
$renderProgressResponse = $client->getRenderProgress($renderId, $bucketName);
while (!$renderProgressResponse->done) {
// Render is not done
// Get the render progress
$renderProgress = $renderProgressResponse->overallProgress;
// Output render progress
print_r("progress: " . ($renderProgress * 100) . "%\n");
// Wait 1 second
sleep(1);
// Get render progress again
$renderProgressResponse = $client->getRenderProgress($renderId, $bucketName);
}
print_r("Render is done!\n");

更新日志

  • v4.0.15:字段现在是有类型的。->setInputProps() 现在按预期工作,为您将输入属性序列化为 JSON。
  • v4.0.6:响应有效载荷结构已更改。请查看此页面的历史记录以查看以前的结构。

另请参阅