Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

141
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!