Amazon web services FFMPEG转码的AWS Lambda执行时间
我正在使用AWS Lambda将文件从WEBM转换为MP4 我使用的是ffmpeg版本4.3.1-static(我在无服务器AWS ffmpeg层(包括de 4.1.3)中也对ffmpeg进行了以下测试),但结果更糟(大约慢25%) 我使用Node 10x作为容器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
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中添加了参数cpu used=100,如果我将cpu used=5,这一点都不重要。。。时间是一样的,所以我猜这个参数是无用的(我不知道为什么)
- 我还用“threads”参数做了一些测试,但也没用
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或其他方面)。