Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

147
Vistas
¿Cómo transmito un archivo de audio a nodejs mientras aún se está grabando?

Estoy usando la API de grabación de MediaStream para grabar audio en el navegador, así (cortesía https://github.com/bryanjenningz/record-audio ):

 const recordAudio = () => new Promise(async resolve => { // This wants to be secure. It will throw unless served from https:// or localhost. const stream = await navigator.mediaDevices.getUserMedia({ audio: true }); const mediaRecorder = new MediaRecorder(stream); let audioChunks = []; mediaRecorder.addEventListener('dataavailable', event => { audioChunks.push(event.data); console.log("Got audioChunk!!", event.data.size, event.data.type); // mediaRecorder.requestData() }); const start = () => { audioChunks = []; mediaRecorder.start(1000); // milliseconds per recorded chunk }; const stop = () => new Promise(resolve => { mediaRecorder.addEventListener('stop', () => { const audioBlob = new Blob(audioChunks, { type: 'audio/mpeg' }); const audioUrl = URL.createObjectURL(audioBlob); const audio = new Audio(audioUrl); const play = () => audio.play(); resolve({ audioChunks, audioBlob, audioUrl, play }); }); mediaRecorder.stop(); }); resolve({ start, stop }); });

Me gustaría modificar este código para comenzar a transmitir a nodejs mientras aún está grabando. Entiendo que el encabezado no estará completo hasta que termine la grabación. Puedo dar cuenta de eso en nodejs, o tal vez pueda vivir con encabezados no válidos, porque de todos modos lo introduciré en ffmpeg en nodejs. ¿Cómo hago esto?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

El truco es cuando inicia su grabadora, hágalo así : mediaRecorder.start(timeSlice) , donde timeSlice es la cantidad de milisegundos que el navegador espera antes de emitir un evento de datos dataavailable con una gota de datos.

Luego, en su controlador de eventos para dataavailable , llama al servidor:

 mediaRecorder.addEventListener('dataavailable', event => { myHTTPLibrary.post(event.data); });

Esa es la solución general. No es posible insertar un ejemplo aquí, porque un entorno limitado de código no puede pedirle que use su cámara web, pero he creado uno aquí . Simplemente envía sus datos a Request Bin , donde puede ver el flujo de datos.

Hay algunas otras cosas en las que deberá pensar si desea volver a unir el video o el audio. La publicación del blog toca eso.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda