如何在aws lambda机器上安装ffmpeg?

时间:2017-10-31 20:58:16

标签: amazon-web-services ffmpeg aws-lambda

我正在尝试在使用ffmpeg的aws lambda上运行节点js脚本。为此,我需要在机器上安装ffmpeg。

我看过文档,但是我找不到如何连接到运行lambda的机器。

4 个答案:

答案 0 :(得分:5)

您永远不会连接Lambda运行的“机器”。该函数没有运行单个机器,直到第一次调用该函数时才会部署该函数。 Lambda在一个或多个容器中运行,这些容器在请求进入时按需创建和删除。您必须在Lambda的部署包本身中包含任何类似ffmpeg的内容,因此每次将您的功能部署到容器时它都会存在。< / p>

您在函数的部署包中包含的任何二进制文件都需要为Amazon Linux构建,这是Lambda运行的操作系统。您可以use an EC2 server to build the binaries或搜索已经为Lambda打包ffmpeg并使其可用的人。

答案 1 :(得分:4)

要在AWS Lambda中尽快使用ffmpeg,只需使用预构建的lambda层即可,该层位于:https://serverlessrepo.aws.amazon.com/applications/arn:aws:serverlessrepo:us-east-1:145266761615:applications~ffmpeg-lambda-layer

只需部署此层,然后将is附加到您的功能上即可。 要调用ffmpeg,只需在lambda函数中使用“ / opt / bin / ffmpeg”路径即可。

该层保存在Git中: https://github.com/serverlesspub/ffmpeg-aws-lambda-layer

答案 2 :(得分:3)

您还可以在以下位置找到{@ {1}}的预编译版本:https://johnvansickle.com/ffmpeg/

(我使用的是ffmpeg版本)

提示:不要忘记为二进制文件aws-lambdax86_64设置正确的+x权限。

答案 3 :(得分:3)

这在Python中对我有效:

  1. 如@Xeroxoid所述,获取ffmpeg from here的静态版本
  2. 使用tar -zxvf ffmpeg-release-amd64-static.tar.xz
  3. 解压缩
  4. 从文件夹中获取文件ffmpeg(以及可选的ffprobe)。
  5. 将ffmpeg裸文件(不带子文件夹)放入您的lambda代码所在的文件夹中。
  6. cd进入此文件夹,并用zip -r -X "../archive.zip" *压缩
  7. 将压缩文件上传到AWS Lambda。

为ffmpeg设置正确的文件路径,如下所示:

FFMPEG_STATIC = "/var/task/ffmpeg"
import subprocess
subprocess.call([FFMPEG_STATIC, '-i', input_file, output_file])