AWS Lambda错误:找不到ffmpeg。

3
我正在构建一个需要使用ffmpeg的Lambda函数。出现的错误是:
ERROR :: Error: Cannot find ffmpeg

与问题相关的代码如下...
process.env['PATH'] = process.env['PATH'] + "/" + process.env['LAMBDA_TASK_ROOT']
process.env['PATH'] = process.env['PATH'] + ':/tmp/'

var ffmpeg = require('fluent-ffmpeg')

exports.handler = (event, context, callback) => {

   var proc = new ffmpeg();

   proc.addInput('testfile.mp4)
   .on('start', function(ffmpegCommand) {
    })
   .on('progress', function(data) {
   })
   .on('end', function() {
   })
   .on('error', function(error) {
     /// ERROR IS HERE
   })
   .outputOptions(['-hls_time 10'])
   .output(fileName + '.m3u8')
   .run();

}

这是我的ZIP结构:

./ffmpeg
./ffprobe
./index.js
./node_modules
./node_modules/aws-sdk
./node_modules/ffmpeg
./node_modules/fluent-ffmpeg
./package.json

我看过很多文章,有人提到需要对ffmpeg和ffprobe进行chmod操作,我尝试使用chmod 755对两个可执行文件进行操作,但并没有起作用。

我也看到了需要更改路径的相关内容,我尝试了一些方法,但仍然失败。我不确定该从哪里开始,或者如何进一步诊断我所做的错误。非常感谢您的帮助!


请检查我对类似问题的回答:https://dev59.com/r5Xfa4cB1Zd3GeqPbCsH - helloV
1个回答

0

除了 fluent-ffmpeg,您还需要安装:

npm install @ffmpeg-installer/ffmpeg
npm install @ffprobe-installer/ffprobe

接下来,您需要先获取路径,然后使用以下代码设置FFmpeg和ffprobe的路径:

const ffmpeg = require('fluent-ffmpeg'); // first require this

const ffmpegPath = require('@ffmpeg-installer/ffmpeg').path;

ffmpeg.setFfmpegPath(ffmpegPath);

const ffprobePath = require('@ffprobe-installer/ffprobe').path;

ffmpeg.setFfprobePath(ffprobePath);

在之前的步骤完成后,实现返回一个Promise的函数(视频元数据)

ffprobe第一个参数是本地视频的路径,第二个参数是匿名函数,可以返回包含元数据的resolve或带有错误信息的reject。

const videoInformation = () => {
    return new Promise((resolve,reject) => {
        ffmpeg.ffprobe('./Fishes - 16166.mp4', (err,info)=>{
            if(err) {
                reject(err)
            } else {
                resolve(info)
            }
        })
    })
}

这部分将返回视频的元数据

try {
    const data = await videoInformation();
    console.log(data)
} catch (err){
    console.log(err)
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接