FFMPEG не работает в лямбда-функции AWS - PullRequest
0 голосов
/ 26 января 2019

Я пытаюсь преобразовать видеофайл в аудиофайл с помощью лямбда-функции AWS всякий раз, когда файл загружается в корзину S3. Поэтому я использую FFMPEG для преобразования видеофайла в аудио. Но я продолжаю получать эту ошибку при конвертации видео файла. Я видел подобные вопросы, но ни одно из решений не работает для меня. Так что, если кто-нибудь знает, пожалуйста, поделитесь своими решениями.

Сообщение об ошибке

    TypeError: Cannot create property 'stack' on string 
'Could not find ffmpeg executable, tried "/var/task/node_modules/@ffmpeg-installer/linux-x64/ffmpeg" and "/var/task/node_modules/@ffmpeg-installer/ffmpeg/node_modules/@ffmpeg-installer/linux-x64/ffmpeg"'

Код

    const
    ffmpegPath = require("@ffmpeg-installer/ffmpeg").path,
    ffmpeg = require("fluent-ffmpeg");

    // set ffmpeg package path
    ffmpeg.setFfmpegPath(ffmpegPath);
    function convert(input, output, callback) {
        ffmpeg(input)
            .output(output)
            .on('end', function() {                    
                console.log('conversion ended');
                callback(null);
            }).on('error', function(err){
                console.log('error: ', err.code, err.msg);
                callback(err);
            }).run();
    }

    exports.handler = function (event, context, callback) {
        const key = decodeURIComponent(event.Records[0].s3.object.key.replace(/\+/g, ' '));
        console.log("key ", key);
        console.log("event ", event.Records[0].s3);
        convert(key, `/tmp/${key}.mp3`, function(err){
            if(!err) {
                console.log('conversion complete');
            } else {
                console.log('Error');
            }
        });
    }


    const
        ffmpegPath = require("@ffmpeg-installer/ffmpeg").path,
        ffmpeg = require("fluent-ffmpeg");

    // set ffmpeg package path
    ffmpeg.setFfmpegPath(ffmpegPath);
    function convert(input, output, callback) {
        ffmpeg(input)
            .output(output)
            .on('end', function() {                    
                console.log('conversion ended');
                callback(null);
            }).on('error', function(err){
                console.log('error: ', err.code, err.msg);
                callback(err);
            }).run();
    }

    exports.handler = function (event, context, callback) {
        const key = decodeURIComponent(event.Records[0].s3.object.key.replace(/\+/g, ' '));
        console.log("key ", key);
        console.log("event ", event.Records[0].s3);
        convert(key, `/tmp/${key}.mp3`, function(err){
            if(!err) {
                console.log('conversion complete');
            } else {
                console.log('Error');
            }
        });
    }

package.json

    "dependencies": {
    "@ffmpeg-installer/ffmpeg": "^1.0.17",
    "fluent-ffmpeg": "^2.1.2",
    "fs": "0.0.1-security"
  }

1 Ответ

0 голосов
/ 29 января 2019

ffmpeg должен быть установлен, пакет npm не устанавливает ffmpeg, только привязки.но вы можете использовать лямбда-слои, к счастью, под https://github.com/mthenw/awesome-layers указан слой ffmpeg, который вы можете включить в свой проект

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...