【问题标题】:src FFmpeg Binary from Lambda Layers来自 Lambda 层的 src FFmpeg 二进制文件
【发布时间】:2019-05-08 00:46:12
【问题描述】:

如何将 lambda 指向 FFmpeg 静态二进制文件

这是我目前的设置

Input S3 Trigger -> Lambda -> Src Layer -> Output -> S3

Lambda Code-----This Code works on my local Machine the Goal is to get it working on AWS

import json
import subprocess


def lambda_handler(event, context):
    # TODO implement

    print("I am being Triggered")

    p = subprocess.call(
    'ffmpeg -r 1 -loop 1 -i "./S3_Input.png" -i "./S3_File.mp3" -acodec copy -r 1 -shortest -vf scale=1280:720 ep1.flv', shell=True)


    return {
        'statusCode': 200,
        'body': json.dumps('Hello from Lambda!')
    }

【问题讨论】:

    标签: python ffmpeg aws-lambda subprocess


    【解决方案1】:

    来自docs

    图层被解压到函数执行环境的/opt目录中。

    我不确定你是如何在你的层中打包 ffmpeg 的,但假设二进制文件位于顶层,你需要像 /opt/ffmpeg 一样引用它。所以你对subprocess.call() 的第一个参数看起来更像:

    '/opt/ffmpeg -r 1 -loop 1 -i "./S3_Input.png" -i "./S3_File.mp3" -acodec copy -r 1 -shortest -vf scale=1280:720 ep1.flv'
    

    如果二进制嵌套更深,例如。在bin 目录中,您可以像/opt/bin/ffmpeg 一样引用它。

    【讨论】:

    • 它仍然说它没有看到它。我在父目录上运行 ls 并说 opt 目录是空的,即使我的lambs 控制台说图层已连接
    • 确保您的层设置正确:下载层并确保它包含您期望它包含的内容
    • 非常感谢您的回复。我也这样做了。我去了 s3 并下载了 zip 文件,解压缩它们,它们有我期望的内容。
    • 这里有几个不同但相似的项目。也许这些例子会帮助你弄清楚你的东西。它们都包含二进制文件并在 lambdas 中执行它们。这些不使用层,可执行文件与主 lambda zip 文件捆绑在一起。一个运行 git(通过从 Python 启动的 bash 脚本),另一个运行 headless chromium(基本上是 google chrome,没有 GUI)。 1.github.com/WhiteHotLoveTiger/lambda-git 2.github.com/WhiteHotLoveTiger/Headless-Chrome-Screenshots
    • 谢谢!立即查看。
    猜你喜欢
    • 2011-06-04
    • 2017-12-27
    • 1970-01-01
    • 2011-01-09
    • 1970-01-01
    • 1970-01-01
    • 2019-08-28
    • 2010-10-10
    • 2013-11-14
    相关资源
    最近更新 更多