Node.js медленное асинхронное преобразование видео - PullRequest
2 голосов
/ 21 октября 2011

Я написал небольшой веб-сайт / сервис, который может загружать видео с веб-сайта (в настоящее время Youtube), конвертировать его на лету в mp3-файл и отправлять этот файл обратно в качестве ответа.

Например, когда вы запрашиваете http://localhost:8000/v=http://www.youtube.com/watch?v=HhoewflkQu0,, он загружает это видео и отвечает на аудиослой, закодированный в MP3.

Это все работает очень хорошо, моя проблема в том, что это очень медленно, и я не могу понять, почему.


Упрощенный скрипт ведет себя так:

Загрузите видео и запишите его на стандартный ввод ffmpeg, и стандартный вывод перейдет к ответу. Видео (MP4, FLV) -> FFMPEG -> MP3

Я использовал curl, чтобы выяснить, насколько быстро работает скрипт:

$ curl http://localhost:8000/v=http://www.youtube.com/watch?v=HhoewflkQu0

Я получаю только около 5-10 тыс.

Так почему же это так медленно?

  1. Сервер, с которого я загружаю видео, работает медленно.
  2. Медленное преобразование (из-за медленного процессора).
  3. Передача данных между node.js -> FFMPEG медленная.

Я попытался загрузить видео в обычном менеджере загрузок, и я получил около 320 Кб, что является моей обычной скоростью загрузки, поэтому первое, что не является узким местом.

К пунктам 2 и 3 я попытался записать локальный файл в stdin, и у меня получилось около 600 КБ, так что это тоже не так.

Так почему мой сценарий такой медленный и что я могу сделать, чтобы сделать его быстрее?

https://gist.github.com/1304637

Заранее спасибо.

1 Ответ

0 голосов
/ 09 декабря 2016

У меня была эта проблема.Я обновил до последней версии ffmpeg и исправил ее (v.3.2.1 по состоянию на декабрь 2016 г.)

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