【问题标题】:How to Install ffmpeg on aws lambda machine?如何在 aws lambda 机器上安装 ffmpeg?
【发布时间】:2017-10-31 20:58:15
【问题描述】:

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

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

【问题讨论】:

  • 你不能。如果您想要 ffmpeg,那么您要么必须将其与压缩代码一起上传,要么在运行时将其下载到 Lambda 容器的本地文件系统。如果它位于 ZIP 文件的根目录中,那么我相信它安装在 /var/task 中,但它没有 +x 权限,因此您需要在 Lambda 代码中添加这些权限。在 Lambda 中运行 ffmpeg 相当痛苦。有各种 Github 项目试图让在 Lambda 中使用 fffmpeg 变得更简单(例如 fluent-ffmpeg),但没有一个项目能够解决构建 ffmpeg 二进制文件并使用正确权限安装它的问题。

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


【解决方案1】:

这在 Python 中适用于我:

  1. 获取 ffmpeg from here 的静态构建,正如 @Xeroxoid 已经提到的那样
  2. tar -zxvf ffmpeg-release-amd64-static.tar.xz解压缩
  3. 从文件夹中获取文件ffmpeg(以及可选的ffprobe)。
  4. 将裸 ffmpeg 文件(不包括子文件夹)放在与 lambda 代码相同的文件夹中。
  5. cd 进入此文件夹并使用 zip -r -X "../archive.zip" * 压缩
  6. 将压缩文件上传到 AWS Lambda。

像这样为 ffmpeg 设置正确的文件路径:

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

【讨论】:

  • 为我们工作谢谢!只需要为路径做./ffmpeg
  • 为什么这不是赞成和正确的答案。奇迹般有效。这里还有更多信息:medium.com/dev-genius/…
【解决方案2】:

您永远不会连接到运行 Lambda 的“机器”。该函数没有在单台机器上运行,并且该函数甚至在第一次调用之前都没有部署。 Lambda 在一个或多个容器中运行,这些容器在请求进入时根据需要创建和删除。您必须在 Lambda 的部署包本身中包含任何类似 ffmpeg 的内容,因此每次将您的函数部署到容器时它都会在那里。

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

【讨论】:

    【解决方案3】:

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

    只需部署这一层,然后附加到您的函数。 要调用 ffmpeg,只需在 lambda 函数中使用“/opt/bin/ffmpeg”路径。

    图层在 Git 中维护: https://github.com/serverlesspub/ffmpeg-aws-lambda-layer

    【讨论】:

      【解决方案4】:

      您还可以在这里找到由这个酷哥主持的aws-lambdaffmpeg 的预编译版本:https://johnvansickle.com/ffmpeg/

      (我选择了x86_64 构建)

      提示:不要忘记为二进制文件ffmpegffprobe 设置正确的+x 权限(如果需要)。

      【讨论】:

      • 如何将包中添加可执行文件的目录添加到路径中?根据上面的链接,我有一个包含 ffmpeg 的 lambda,但是对 which ffmpeg 的调用返回 null(这意味着它没有找到我的可执行文件)。
      猜你喜欢
      • 2020-06-21
      • 1970-01-01
      • 2019-11-09
      • 1970-01-01
      • 2017-11-27
      • 1970-01-01
      • 1970-01-01
      • 2023-03-13
      • 2017-02-15
      相关资源
      最近更新 更多