python - 在 AWS Lambda 函数中使用 python 运行 ffmpeg 命令的问题

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

我的用例是使用 ffmpeg 连接文件。我通过指定要连接的文件的 S3 URL(在文本文件/tmp/files.txt 中)来做到这一点。
下面是命令以及我使用 Python 运行它的方式:

ffmpeg_cmd = "ffmpeg -f concat -safe 0 -protocol_whitelist file,http,https,tcp,tls -i /tmp/files.txt -c copy /tmp/output.mp4"
subprocess.run(ffmpeg_cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
当我在我的 Windows 机器上运行同一个 Python 文件时,它工作得非常好。但是当它在 AWS Lambda 函数上运行时,它会失败。请在下面找到我得到的错误:

"errorMessage": "[Errno 2] No such file or directory: 'ffmpeg -f concat -safe 0 -protocol_whitelist file,http,https,tcp,tls -i /tmp/files.txt -c copy /tmp/output.mp4'", "errorType": "FileNotFoundError"


我做对了吗?我想是的,因为它在我的 Windows PC 上运行良好。
如果有人遇到此问题并已解决,请帮助我解决此问题。

最佳答案

FFMPEG 未预安装在 Lambda 运行时环境中。它必须明确部署为 Lambda 层或与您的 Lambda 函数捆绑并上传。如果您确实部署了它,那么 ffmpeg二进制文件可能无法执行或不在您的 PATH 中。
以下是部署 FFMPEG 的一些选项:

  • ffmpeg-aws-lambda-layer
  • ffmpeg-lambda-layer
  • install FFMPEG on Lambda

  • 我测试了一个没有 FFMPEG 二进制文件的简单 Lambda Python 函数,并准确地看到了您所看到的错误消息。这证明 ffmpeg二进制文件未安装在您的 Lambda 环境中或未安装在您的 PATH 中。上传的实际位置ffmpeg二进制文件取决于您将其上传到的位置,但通常位于 /var/task/ 下如果您将二进制文件作为 Lambda 层的一部分或在 /opt/ 下上传如果作为 Lambda 包的一部分部署。而不是简单地尝试执行ffmpeg ,您可能希望列出这些位置中的文件以验证您已部署的内容。

    关于python - 在 AWS Lambda 函数中使用 python 运行 ffmpeg 命令的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67080673/

    相关文章:

    FFMPEG - 裁剪和填充视频(保持 3840x1920 但带有黑色边框)

    python - 使用外部 dowload_url 将包注册到 PyPi

    python - Anaconda jupyter 笔记本无法在 Mac 上启动

    bash - Amazon 中支持 VPC 的可用性区域

    c++ - 自定义 AVIOContext 的未定义 AVFormatContext 持续时间

    c++ - 如何创建一个使用开源 C 项目的 C++ 控制台应用程序

    python - 当我在开始时得到几行新行时,如何从字母表开始打印

    python - 使用 python 将抓取的数据直接保存到 azure blob 存储

    amazon-web-services - 为什么 Kube 服务没有将 SSL 证书附加到 AWS NLB?

    amazon-web-services - 使用 CloudFormation 在现有 AWS S3 存储桶中创建文本文件