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

96
Vistas
Navegador Audio en vivo Eliminar retraso de almacenamiento en búfer

Estoy tratando de implementar una función en la que un cliente pueda grabar audio ( MediaRecorder ) y enviarlo a un servidor. Luego, el servidor crea un enlace donde un cliente diferente puede descargar la transmisión en vivo.

Y todo funciona bien, excepto por un detalle: la transmisión se retrasa alrededor de 4 segundos. Creo que esto tiene que ver con el almacenamiento en búfer del audioNode.

Esto es lo que creo que está sucediendo: el audioNode espera hasta que haya 4 segundos de sonido disponibles. Dado que el sonido se crea en vivo, debe esperar 4 segundos para que los datos estén disponibles.

Entonces mi pregunta es: ¿cómo puedo deshabilitar o reducir el tamaño del búfer de un nodo de audio?

Estoy usando electron como mi "navegador" o como se llame.

La solicitud http (flujo de descarga) se ve así:

ingrese la descripción de la imagen aquí

En el código javascript, simplemente adjunto el enlace a mi sourceNode:

 audioNode = document.getElementById("callAudio") audioNode.volume = 1.0 const audioSourceNode = document.getElementById("callAudioSource") const audioContext = new window.AudioContext() const audioTrack = audioContext.createMediaElementSource(audioNode) const audioGain = audioContext.createGain() const audioDestination = audioContext.createMediaStreamDestination(); const audioTrack.connect(audioGain).connect(audioDestination) audioSourceNode.setAttribute("src", "http://localhost:12347") audioNode.load() audioNode.play().then(() => { console.debug("started playing after:", currentTime) playing = true })

El audioNode en sí se ve así:

 <audio controls id="callAudio" class="audioControls" crossorigin="anonymous" preload="none"> <source src="" id="callAudioSource"></src> </audio>

La depuración me dice que tardó aproximadamente 4,2 segundos en comenzar a jugar.

Cuando observo esta transmisión desde la perspectiva de mi servidor, veo que tengo un retraso de menos de 10 ms. Por lo tanto, esto no puede deberse a que el servidor produzca un retraso.

about 4 years ago · Juan Pablo Isaza
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