Как из audioBuffer сделать mp3?
Доброго времени суток, прошу прощения, но данная тема меня ставит в тупик уже второй день, имхо никогда не касался web audio api и спать уже перестал. Может найдутся сдесь люди, которые помогут решить проблему.
Вобщем суть следующая: Пишу приложение на react. все ок. до того момента, пока мне не стало надо, загружать аудио файлы. они беруться из разных мест и в разном формате. Это может быть wave, wav. mp3, acc и так далее, в общем все, у чего есть mime type - audio/*. С загрузкой проблем нет. input file, form data и все ок. НО!!!!!!! Для того, что бы не расходовать трафик и не грузить сервер излишними данными, нужно на стороне клиента сжимать ( конвертировать/перекодировать ) файл в формат mp3 и сжать его до определенного размера. Пример, который мне нравиться (админы это не реклама, а пример): вот тут. Начав разбираться в этой теме, я спокойно получаю буффер файла: const reader = new FileReader();lve(resultBuffer); reader.readAsArrayBuffer(input.files[0]); reader.addEventListener('load', ({ target }) => { if (!target.result) { return; } this.audioCtx.decodeAudioData(buffer) .then(audioBuffer => { // собсна audioBuffer это и есть нужный буффер }); }, false); После получения буффера, нужно как то конвертировать/перекодировать этот буффер в mp3, вот с такими параметрами: Код:
ffmpeg -i sound.mp3 -ar 32000 -ac 2 -b:a 64K -f mp3 result.mp3 С отправкой проблемы нет. А вот как конвертировать его? Почему-то не могу найти никаких либ для таких манипуляций. если кто-то даст разумный совет или покажет куда смотреть, буду очень благодарен. Заранее спасибо. |
|
SuperZen, lamejs конверирует только из wav. если переводить буфер в формат wav а потом конвертировать в mp3 браузер тухнет на несколько 10-15 секунд. Спасибо за ссылку. но не помогло. пытаюсь найти способ все таки конвертировать буфер в мп3.
|
То что он тухнет - это нормально, кодирование - тяжёлый процесс, который занимает время, а javascript - однопоточен.
Решение: вынести кодирование в web-worker или посмотреть не предлагает ли библиотека асинхронного варианта. |
Часовой пояс GMT +3, время: 15:03. |