S3 Преобразование видео в аудио файл с использованием Node js (лямбда-функция) - PullRequest
0 голосов
/ 19 января 2019

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

Пример кода:

var ffmpeg = require('fluent-ffmpeg');
/**
 *    input - string, path of input file
 *    output - string, path of output file
 *    callback - function, node-style callback fn (error, result)        
 */
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: ', e.code, e.msg);
            callback(err);
        }).run();
}

convert('./df.mp4', './output.mp3', function(err){
  if(!err) {
      console.log('conversion complete');
      //...

  }
});

Спасибо,

1 Ответ

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

Вам просто нужно установить событие в контейнере s3 - поставить объект - для запуска лямбда-функции (вы получите доступ к описанию объекта, загруженного в этот сегмент S3 через первый параметр лямбда-функции).

Если вы можете преобразовать видеофайл в аудио на вашем локальном компьютере, используя некоторые внешние библиотеки, то вам нужно создать zip-файл, содержащий вашу лямбда-функцию (в корне zip-файла), а также зависимости.

Это довольно просто в случае с Node.Создайте новую папку, запустите npm init, установите необходимые модули, создайте файл index.js, куда вы поместите свой код Node.Zip все содержимое этой папки (не сама папка).Когда вы создаете новую лямбда-функцию, выберите загрузку этого zip-файла.

Если вам интересно, как программно обмениваться данными с ресурсами AWS и манипулировать ими, отметьте aws-sdk, который можно импортировать как модуль и использоватьэто для этой цели.

Так что в основном вам нужно внутри вашей лямбда-функции разобрать аргумент event (первый параметр), чтобы получить ведро и ключ загруженного объекта.Затем вы вызовете метод s3.getObject, чтобы получить данные.Обработайте данные с вашей собственной логикой.Вызовите s3.putObject, чтобы сохранить вновь преобразованные данные в новом местоположении S3.

Lambda имеет доступ к собственной локальной файловой системе, если ваш код должен хранить там некоторые данные.Вам просто нужно указать абсолютный путь к файлу, например /tmp/output.mp3.Чтобы получить его, вы можете использовать модуль fs.Затем вы можете продолжить с s3.putObject.

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