我对Lambda函数有一个问题,它试图在AWS上使用ffmpeg作为第三方。该函数本身使用ffmpeg.js库,它在调用函数时在其函数中生成ffmpeg命令。我通过SSH在我的实例上安装了ffmpeg,它仍然给了我相同的错误
命令失败: ffmpeg -i“. ffmpeg:命令未找到
对此有什么建议吗?非常感谢
发布于 2018-02-14 13:21:26
您需要在项目目录中包含ffmpeg的静态构建。
解压缩文件并复制名为ffmpeg的文件,该文件是二进制构建并粘贴到您的项目目录中。
之后,在代码顶部粘贴以下代码片段:
process.env.PATH = process.env.PATH + ':/tmp/'
process.env['FFMPEG_PATH'] = '/tmp/ffmpeg';
const BIN_PATH = process.env['LAMBDA_TASK_ROOT']
rocess.env['PATH'] = process.env['PATH'] + ':' + BIN_PATH;现在,在您的exports.handler中,在函数调用的开头粘贴下面的代码行。它会看起来像这样
exports.handler = function(event, context, callback) {
require('child_process').exec(
'cp /var/task/ffmpeg /tmp/.; chmod 755 /tmp/ffmpeg;',
function (error, stdout, stderr) {
if (error) {
console.log('Erro occured',error);
} else {
var ffmpeg = require('ffmpeg');
// Your task to be performed
}
}
)
}我希望这能帮到你。不要忘了竖起大拇指:)上面的解决方案是针对Node.js语言的
发布于 2019-03-07 11:09:29
我可以在Python中的AWS Lambda上成功地使用ffmpeg:
tar -zxvf ffmpeg-release-amd64-static.tar.xz的Untarffmpeg (以及可选的ffprobe),删除其余的文件。cd进入该文件夹并使用zip -r -X "../archive.zip" *进行压缩在Python代码中,需要将正确的文件路径设置为ffmpeg静态构建,如下所示:
FFMPEG_STATIC = "/var/task/ffmpeg"
# now call ffmpeg with subprocess
import subprocess
subprocess.call([FFMPEG_STATIC, '-i', input_file, output_file])我不需要更改任何文件权限。无论如何,这是行不通的,因为/var/task/似乎是不可写的。
input_file和output_file是您生成的Lambda实例中的本地文件。我将文件从s3下载到/tmp/,并在那里使用ffmpeg进行处理。还要确保为Lambda设置足够的内存和超时(我使用我的工作流的最大设置)。
https://stackoverflow.com/questions/47882810
复制相似问题