Требуется ли async.js для одновременной обработки нескольких преобразований ffmpeg? - PullRequest
0 голосов
/ 16 февраля 2019

Я пытаюсь конвертировать видео YouTube в mp3 через мой сервер Node.js, используя 'ytdl-core' и 'fluent-ffmpeg'.Поскольку сервер предназначен для одновременной обработки нескольких запросов, я подумал, нужен ли async.js для преобразования видео в эффективный по времени способ.

Интересно, однако, что при тестированииобработка нескольких запросов с использованием и без использования async.js, результат, кажется, одинаков в обоих направлениях - время, необходимое для преобразования 3 видео, одинаково.

Вот код, который я использую безasync.js:

server.get('/download/:id', (req, res) => {

  const id = req.params.id;
  let stream = ytdl(`https://www.youtube.com/watch?v=${id}`);

  ffmpeg(stream)
    .audioCodec('libmp3lame')
    .audioBitrate(128)
    .toFormat('mp3')
    .save(`public/downloads/${id}.mp3`)
    .on('error', err => {
      console.log(err);
    })
    .on('end', () => {
      console.log('file downloaded');
      send(req, `public/downloads/${id}.mp3`).pipe(res);
    });
});

И этот код использует async.js:

let queue = async.queue((task, callback) => {
  let stream = ytdl(`https://www.youtube.com/watch?v=${task.id}`);

  ffmpeg(stream)
  .audioCodec('libmp3lame')
  .audioBitrate(128)
  .toFormat('mp3')
  .save(`public/downloads/${task.id}.mp3`)
  .on('error', err => {
    console.log(err);
    callback(err)
  })
  .on('end', () => {
    send(task.req, `public/downloads/${task.id}.mp3`).pipe(task.res);
    callback('file sucessfully downloaded');
  });
}, 5);

queue.drain = function() {
  console.log('all items downloaded');
}

server.get('/download/:id', (req, res) => {
  queue.push({req: req, id: req.params.id, res: res}, err => {
    console.log(err);
  });
});

У кого-нибудь есть идеи, почему оба метода завершают преобразование примерно в одно и то же время?Я полагаю, что использование async.js должно завершить преобразование видео быстрее из-за параллельной обработки, но это не так.

Любые мысли будут высоко оценены!

...