ffmpeg - 如何在 AWS lambda 中导入 fluent-ffmpeg?
问题描述
我正在尝试在 AWS Lambda 中使用fluent-ffmpeg,但无法正确设置。在我的 index.js 的顶部:
import ffmpeg from "fluent-ffmpeg";
但它始终是未定义的。
ffmpeg === undefined
.
我正在使用无服务器并将 ffmpeg 作为一个层包含在内。
无服务器.yaml
functions:
createGifFromVideo:
handler: src/services/createGifFromVideo/index.handler
layers:
- { Ref: FfmpegLambdaLayer }
events:
- sns: arn:aws:sns:us-east-1:${self:custom.accountId}:NewVideoPostContentTopic-${self:provider.stage}
layers:
ffmpeg:
path: src/layers
包.json
{
"name": "createGifFromVideo",
"version": "1.0.0",
"main": "index.js",
"license": "MIT",
"private": true,
"dependencies": {
"fluent-ffmpeg": "^2.1.2"
}
}
据我所知,上传的 lambda 似乎是正确构造的。Webpack 使用 fluent-ffmpeg 构建文件并链接到 ffmpeg 层。
我可以加载其他包。它只是 fluent-ffmpeg 回来了undefined
。
从文档中它提到传递FFMPEG_PATH
和FFPROBE_PATH
作为环境变量。这些对层有必要吗?
我会很感激看到一个有效的配置。
解决方案
问题原来是环境变量的问题。使用 FFmpeg 作为层时,假设它位于名为 的目录中ffmpeg
,请使用以下环境变量:
FFMPEG_PATH: /opt/ffmpeg/ffmpeg
FFPROBE_PATH: /opt/ffmpeg/ffprobe
推荐阅读
- html - CSS:在 iOS 13 上禁用滚动反弹效果
- gradle - Gadle - 将 jar 文件包含到 jar 文件中
- puppeteer - Puppeteer => 如何在标签的循环中访问所有内容
- ajax - symfony 在表单中嵌入 Ajax 字段
- python - 将现有的 ModelSerializer 与 JSONResponse 一起使用
- java - 在 antlr 访问者模式中,如何从一种方法导航到另一种方法
- python - 目前正在学习从文件中读取
- android - 我的“JobIntentService”在后台运行不佳
- ruby-on-rails - 如何使用 FactoryBot 修复 rspec 测试中的“未定义方法”枚举?
- c# - 如何使用正则表达式在and和 and之间创建一个数组?