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 файл и сделать его загружаемым.