API веб-аудио - запись в MP3?

Я спрашиваю, потому что я не мог найти ответ нигде. Я успешно выполнил RecorderJS, чтобы записать вход микрофона в JS. Тем не менее, записанный файл WAV, который приводит к большим файлам. Я ищу способ записи с помощью JS непосредственно в MP3 или кодирования бит каким-то образом в MP3 вместо WAV.

Как это можно сделать? Есть ли функция веб-аудио API, которая может это сделать или JS MP3-кодировщик какой-то?

Ответы

Ответ 1

Единственный Javascript MP3-кодер, который я видел, это https://github.com/akrennmair/libmp3lame-js, который является портом, использующим emscripten. Он должен быть медленным, и я никогда не использовал его.

Я не знаю каких-либо написанных пользователем Javascript MP3-кодеров, и кодирование не распространяется на API веб-аудио.

Ответ 2

Там есть библиотека, написанная в чистом javascript, называемом lamejs. Чтобы кодировать mp3 из необработанного звука. Это намного быстрее, чем emscripten компиляции libmp3lame. https://github.com/zhuker/lamejs

Пример использования:

lib = new lamejs();
mp3encoder = new lib.Mp3Encoder(1, 44100, 128); //mono 44.1khz encode to 128kbps
samples = new Int16Array(44100); //one second of silence
var mp3 = mp3encoder.encodeBuffer(samples); //encode mp3

Ответ 3

Я был расстроен этой проблемой и существующими решениями, поэтому я придумал что-то более простое:

https://github.com/sb2702/audioRecord.js

Использование

Создайте объект рекордера (async, потому что требуется разрешение пользователя)

    Recorder.new(function(recorder){ 

    }); 

Начать запись

         recorder.start();        

Остановка записи

         recorder.stop();    

Экспорт в mp3

         recorder.exportMP3(function(mp3Blob){ 

            console.log("Here is your blob: " + URL.createObjectURL(mp3Blob));

          });

В основном на основе RecorderJS, но изменил некоторые вещи для экспорта в mp3 файлы и не нужно гадать с помощью AudioContext/navigator.getUs

Ответ 4

Я нашел красивую библиотеку с живыми демонстрациями: MediaStreamRecorder

Одно из демо: Аудиозапись

RecordRTC также может быть полезна, но MSR кажется проще начать с.

Ответ 5

Кодирование в более мелкие форматы в настоящее время поддерживается только Firefox:

Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit) Not supported 25.0 (25.0) Not supported Not supported Not supported

Поддерживается только функция AFAIK OGG. Но лучше OGG, чем WAV.

Ответ 6

Чтобы записать mp3 с помощью javascript без каких-либо других фреймворков с помощью веб-рабочего, вы можете использовать этот проект: https://github.com/nusofthq/Recordmp3js, который тоже очень хорошо объясняется здесь:

https://nusofthq.com/blog/recording-mp3-using-only-html5-and-javascript-recordmp3-js/

С этим можно также записать в .mp3 файл и сделать его загружаемым.