Skip to main content

从 PHP 触发渲染

从 v3.3.96 起可用

🌐 available from v3.3.96

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

🌐 To trigger a Lambda render using PHP, install the remotion/lambda package using composer. Use the same version as the remotion version you are using from NPM and pin the version by removing the ^ character in your composer.json.

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

🌐 Below is a snippet showing how to initiate a render request and get its status. Note the following before continuing:

  • 你首先需要完成 Lambda 设置
  • 设置以下环境变量——下面的示例支持 .env 文件:
    • AWS_ACCESS_KEY_ID
    • AWS_SECRET_ACCESS_KEY
    • REMOTION_APP_REGION
    • REMOTION_APP_FUNCTION_NAME
    • REMOTION_APP_SERVE_URL
render.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");

更新日志

🌐 Changelog

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

另请参阅

🌐 See also