我的用例是使用 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 二进制文件的简单 Lambda Python 函数,并准确地看到了您所看到的错误消息。这证明
ffmpeg
二进制文件未安装在您的 Lambda 环境中或未安装在您的 PATH 中。上传的实际位置ffmpeg
二进制文件取决于您将其上传到的位置,但通常位于 /var/task/
下如果您将二进制文件作为 Lambda 层的一部分或在 /opt/
下上传如果作为 Lambda 包的一部分部署。而不是简单地尝试执行ffmpeg
,您可能希望列出这些位置中的文件以验证您已部署的内容。
关于python - 在 AWS Lambda 函数中使用 python 运行 ffmpeg 命令的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67080673/