tutorial the not howler grabar following examples attribute and javascript html5 mp3 wav web-audio

javascript - the - Web Audio API-¿grabar en MP3?



web audio recorder html5 (6)

Lo pregunto porque no pude encontrar la respuesta en ningún lado. He implementado exitosamente RecorderJS para grabar la entrada del micrófono en JS. Sin embargo, el archivo grabado es WAV, lo que da como resultado archivos grandes. Estoy buscando una manera de grabar con JS directamente a MP3, o codificar los bits de alguna manera a MP3 en lugar de WAV.

¿Cómo puede hacerse esto? ¿Existe una función de API de audio web que pueda hacer eso o un codificador JS MP3 de algún tipo?



El único codificador de Javascript MP3 que he visto es https://github.com/akrennmair/libmp3lame-js , que es un puerto que utiliza emscripten. Se supone que es lento, y nunca lo he usado.

No conozco ningún codificador de MP3 Javascript de escritura nativa, y la codificación no está cubierta por la Web Audio API.


Hay una biblioteca escrita en javascript puro, llamada lamejs. Para codificar mp3s de audio en bruto. Es mucho más rápido que compilación emscripten de libmp3lame. https://github.com/zhuker/lamejs

Ejemplo de uso:

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



Me sentí frustrado con este problema y con las soluciones existentes, por lo que se me ocurrió algo más simple:

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

Uso

Crear un objeto grabador (asíncrono porque requiere permiso del usuario)

Recorder.new(function(recorder){ });

Iniciar la grabación

recorder.start();

Detiene la grabación

recorder.stop();

Exportar como mp3

recorder.exportMP3(function(mp3Blob){ console.log("Here is your blob: " + URL.createObjectURL(mp3Blob)); });

Principalmente basado en RecorderJS, pero cambió algunas cosas para exportar a archivos mp3 y no tener que jugar con AudioContext / navigator.getUs