用于FFMPEG代码转换的AWS Lambda执行时间



我使用AWS Lambda将文件从WEBM转换为MP4

我使用的是ffmpeg 4.3.1-static版本https://johnvansickle.com/ffmpeg/(我也在无服务器的AWS ffmpeg层(包括de 4.1.3(中对ffmpeg进行了以下测试,但结果更糟(大约慢25%(

我使用Node 10x作为容器。

WEBM size   Time to convert.  Memory Lambda.  Memory used (as shown in log)
80Mb             ~44s              3008            410
40Mb             ~44s              3008            375
80Mb             ~70s              1024            321
40Mb             ~70s              1024            279

所有视频都是80年代的长度。因此,据我所见,WEBM的大小无关紧要,如果视频的长度相同,则需要相同的转换时间。因此,如果视频长度更高,ffmpeg需要更多的时间,而不是如果文件大小更大。。。好奇的;-(

但另一方面,我对Lambda的记忆感到困惑。我知道内存和CPU在Lambda中结合在一起。。。您选择的内存越多,分配的CPU就越多。

但是。。。

  1. 如果ffmpeg有更多的运行空间,为什么它只需要大约300/400Mb
  2. 如何告诉ffmpeg使用更多内存
  3. Lambda有没有加快这一进程的选择

Btw,在所有测试中,所有的ffmpeg都是相同的,并且

cpu使用的参数(

  • 我在ffmpeg参数中添加了cpu used=100,如果我将cpu used=5。。。时间是一样的,所以我想这个参数没用(我不知道为什么(

threads参数(

  • 我还用";线程";参数,但它也没用

我知道这不是一个好的比较,但在一个简单的专用服务器中转换相同的文件大约需要5秒(OVH Centos VPS中有8个vCore和8GB RAM(。

顺便说一句,亚马逊弹性转码器不是一个选项:a( 它非常贵b( 它只需要转换他的配置文件,而我的ffmpeg命令非常复杂(水印、效果等(

在AWS Lambda资源模型中,您可以选择功能所需的内存量,并按比例分配CPU功率和其他资源。例如,选择256MB内存为Lambda函数分配的CPU功率大约是请求128MB两倍,以及512MB内存的一半

从你的例子来看:

WEBM大小转换时间。内存Lambda。使用的内存(如日志所示(

80Mb~44s 3008 41040Mb~44s 3008 375

80Mb~70s 1024 32140Mb~70s 1024 279

Lambda没有因为内存不足而花更长的时间处理,而是因为CPU功率不足,因为CPU功率与内存成正比

最新更新