通过 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.phpphp
<?phpuse Aws\Credentials\CredentialProvider;// We'll assume you use Composer, which will add autoload.phprequire_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 responseprint_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 progressprint_r("progress: " . ($renderProgress * 100) . "%\n");// Wait 1 secondsleep(1);// Get render progress again$renderProgressResponse = $client->getRenderProgress($renderId, $bucketName);}print_r("Render is done!\n");
render.phpphp
<?phpuse Aws\Credentials\CredentialProvider;// We'll assume you use Composer, which will add autoload.phprequire_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 responseprint_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 progressprint_r("progress: " . ($renderProgress * 100) . "%\n");// Wait 1 secondsleep(1);// Get render progress again$renderProgressResponse = $client->getRenderProgress($renderId, $bucketName);}print_r("Render is done!\n");
更新日志
v4.0.15
:字段现在是有类型的。->setInputProps()
现在按预期工作,为您将输入属性序列化为 JSON。v4.0.6
:响应有效载荷结构已更改。请查看此页面的历史记录以查看以前的结构。