我使用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就越多。
但是。。。
- 如果ffmpeg有更多的运行空间,为什么它只需要大约300/400Mb
- 如何告诉ffmpeg使用更多内存
- 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功率与内存成正比