para online formatos descargar convertir convertidor javascript wav audio-recording getusermedia

online - Conversión de WAV a cualquier formato de audio comprimido en JavaScript del lado del cliente



formatos de video para html5 (5)

Estoy grabando audio desde getUserMedia({audio:true}); en el navegador con Recorder.js y luego exportarlo como un archivo WAV porque esa es la única opción que proporciona la biblioteca.

Un archivo de 1 minuto y 20 segundos tiene un tamaño de 14.1 MB. Necesito subir el audio a un servidor y debo hacerlo rápido. ¿Cómo convierto el audio WAV en cualquier otro formato comprimido para reducir el tamaño del archivo?

No me importa convertir a

  • MP3
  • Opus
  • WebM
  • Ogg
  • FLAC
  • cualquier otro formato que conozcas

Si a partir de ahora no hay manera de convertir a alguno de estos formatos, ¿cómo puedo comprimir el archivo WAV en el cliente?

PD: Hice muchas búsquedas para encontrar cualquier cosa que convierta WAV en JS, pero no encontré nada. libmp3lame.js no funciona en Chrome.

¡Gracias!


Estaba enfrentando el mismo problema y se me ocurrió una solución bastante rápida y sucia:

  • zip el archivo wav con zip.js (funciona con Chrome, Firefox, Safari 6 e Internet Explorer 10)

Más información ver Documentación zip.js

Al menos esto reduce mucho el tamaño, el archivo es aproximadamente un 75% más pequeño, por lo que la compresión 1: 4

ACTUALIZACIÓN: tal vez echar un vistazo a esto: https://webrtc.github.io/samples/

Es una aplicación de chat para Chrome y Firefox desarrollada por google, supongo que con un tipo de licencia CC



Lo que realmente desea es la "API de grabación" de mediaStream, en la que se está trabajando actualmente. Hasta que esté disponible, aconsejo usar emscriptem en la fuente C / C ++, y considere ejecutarlo en un trabajador web para evitar bloquear la interfaz de usuario y otras pestañas.


Pude lograr la compresión utilizando opus.js ,

Puede encontrar mi implementación aquí: recordOpus , pero hay un retén, el mío está acoplado con el lado del servidor, y uso el servidor node.js ...


Tuve un problema similar (también usando recorder.js) y he logrado resolverlo utilizando el excelente proyecto videoconverter.js que incluye un puerto de ffmpeg a Javascript usando emscripen. La desventaja de esto es que el archivo ffmpeg.js tiene aproximadamente 25Mb.

exportWAV función exportWAV existente en recorderWorker.js para devolver tanto una reproducción WAV (para HTML5 <audio> ) como una Blob que contiene un archivo MP2 codificado:

function encodeWAV(samples) { var buffer = new ArrayBuffer(44 + samples.length * 2); var view = new DataView(buffer); /* ... various writing methods */ return { wavdata: new Blob([buffer], { type: "audio/wav" }), mp2data: ffmpeg_convert(buffer) }; } function ffmpeg_convert(buffer) { console.log("starting mp2 conversion"); var args = "-i input -f mp2 output.mp2"; var results = ffmpeg_run({ arguments: args.split(" "), files: [ { data: new Uint8Array(buffer), "name": "input" } ] }); if (results) { var file = results[0]; console.log("File recieved", file.name, file.data); return new Blob([file.data], { type: "audio/mpeg" }); } return null; }

Este método se puede usar para codificar el WAV a cualquier códec compatible con libavcodec de ffmpeg