Amazon web services FFMPEG转码的AWS Lambda执行时间

Amazon web services FFMPEG转码的AWS Lambda执行时间,amazon-web-services,video,ffmpeg,aws-lambda,Amazon Web Services,Video,Ffmpeg,Aws Lambda,我正在使用AWS Lambda将文件从WEBM转换为MP4 我使用的是ffmpeg版本4.3.1-static(我在无服务器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

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

我使用的是ffmpeg版本4.3.1-static(我在无服务器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
所有视频的长度都是80s。据我所知,WEBM的大小无关紧要,如果视频的长度相同,则需要相同的转换时间。因此,如果视频长度更高,ffmpeg需要更多的时间,而不是文件大小更大……奇怪;-)

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

但是

  • 如果ffmpeg还有更多的运行空间,为什么它只需要300/400Mb呢
  • 如何告诉ffmpeg使用更多内存
  • 在Lambda中是否有加速该过程的选项
  • 顺便说一句,在所有测试中,所有ffmpeg都是相同的,并且

    cpu使用参数(参数)

    • 我在ffmpeg中添加了参数cpu used=100,如果我将cpu used=5,这一点都不重要。。。时间是一样的,所以我猜这个参数是无用的(我不知道为什么)
    线程(参数)

    • 我还用“threads”参数做了一些测试,但也没用
    我知道这不是一个很好的比较,但在一个简单的专用服务器(OVH Centos VPS中的8个vCore和8GB RAM)中转换相同的文件大约需要5秒钟

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

    |如果要运行更多,为什么ffmpeg只需要大约300/400Mb

    它不需要更多的内存。它只需要缓存其工作的帧

    |如何告诉ffmpeg使用更多内存

    你不能。Ffmpeg自动分配所需的内存。使用更多只会是浪费,不会加快任何速度

    |在Lambda中是否有加速该过程的选项


    没什么特别的。只有标准的ffmpeg设置。

    您是否将从S3下载WEBM和将MP4上传到S3的次数包括在这些总数中?Lambda RAM大小的实际ffmpeg转换时间是多少?您是否使用相同的ffmpeg选项?此处不包括上载/下载时间;-)所有测试的所有ffmpeg选项。我不明白你的第二个问题:你可以在表中看到3M和1M的lambda内存。我的意思是:你在lambda和VPS上使用相同的ffmpeg运行时选项吗?另外,是否有任何ffmpeg调试/详细选项可以帮助您了解性能差异?它们都是从同一站点获取的相同的4.3.1静态版本。我不认为您在这里衡量的是相同的东西。例如,您指出Lambda层中的ffmpeg慢25%。Lambda层不会对运行时产生任何影响-它只会影响冷启动时间,然后再运行ffmpeg。这就是为什么我试图确保你在比较相似的东西,这样你就知道应该把精力集中在哪里(在冷启动、从S3下载、部署包大小、ffmpeg线程、上传到S3或其他方面)。