Remotion Lambda工作原理
本文描述了当触发Remotion Lambda视频渲染时执行的过程。
note
本文解释了从版本4.0.165开始的Lambda架构。
以前,Lambda函数不使用响应流,并且将块保存到S3中。
1 使用
renderMediaOnLambda()
调用单个Lambda函数 - 直接调用或通过调用此API的CLI。此调用称为主函数。
2 主函数访问传递给它的
Serve URL
的无头浏览器。
3 主函数根据传递的组合ID找到组合,并运行
属性分辨率
算法,以确定应传递给视频的属性以及元数据(例如帧持续时间)。
4 基于视频的确定持续时间和
并发性
,会生成多个渲染器函数,这些函数负责渲染视频的一部分。
5 渲染器函数使用
AWS Lambda响应流
来报告进度以及二进制视频块。
6 主函数将进度报告合并为简洁的progress.json
文件,并定期上传到S3。
7
getRenderProgress()
API查询S3存储桶中的progress.json
文件,并返回渲染的进度。
8 一旦所有块都到达主函数,它们会被无缝连接。目前连接算法不是公共API。
9 主函数将最终视频上传到S3并关闭。
常见问题
我可以自己制作分布式渲染器吗?
目前无法公开使用块的无缝连接。
您可以使用 frameRange
和 audioCodec: "pcm-16"
渲染块,然后使用 FFmpeg 进行连接。
构建分布式渲染器很困难,不建议大多数人这样做。