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

320
Vistas
Obtener un blob vacío de MediaRecorder cuando Web Audio API está en silencio

Estoy grabando el lienzo animado (WebGL) y la salida de Web Audio API juntos como un video usando la clase MediaRecorder JS. Todo funciona como se esperaba si se está reproduciendo algo de audio, pero cuando no, aparece un blob vacío al detener la instancia de MediaRecorder .

A continuación se muestra parte de mi código:

 const chunks = []; var recorder = null, captureStream = null; function dataAvailable(event) { chunks.push(event.data); } function startCapture() { const streamDestination = audio.context.createMediaStreamDestination(); masterGain.connect(streamDestination); captureStream = canvas.captureStream(); // This line adds audio to the recording if audio is playing // but if audio isn't playing at the moment, I get empty chunks // at the end of recording captureStream.addTrack(streamDestination.stream.getAudioTracks()[0]); recorder = new MediaRecorder(captureStream); recorder.ondataavailable = dataAvailable; recorder.onstop = exportVideo; recorder.start(); } function exportVideo() { // Here chunks will be empty if Web Audio API // didn't played anything during recording new Blob(chunks, {'type': 'video/webm'}); ... }

¿Cómo obtener una grabación adecuada cuando Web Audio está en silencio?

Usando Chrome v92 en Windows 10.

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

0

Creo que este es https://crbug.com/1223382 que abrí hace un mes, pero que no tuvo mucha tracción desde entonces.

Básicamente, todavía tienen muchos problemas para lidiar con pistas silenciadas.

Como solución temporal, podría obligar a que su pista nunca se silencie conectando un oscilador a un GainNode cuya ganancia esté configurada en 0 y conecte este GainNode a su flujo de destino.

 const streamDestination = audio.context.createMediaStreamDestination(); const osc = audio.context.createOscillator(); const gainNode = audio.context.createGain(); gainNode.gain.value = 0; osc.connect(gainNode); gainNode.connect(streamDestination); // then your current code masterGain.connect(streamDestination); captureStream = canvas.captureStream(); ...

Un violín con este fragmento , arreglando mi caso de reproducción del informe de error .

Advertencias :

  • Esto no es bueno para los árboles, pero en comparación con una animación WebGL y un MediaRecorder en vivo, supongo que puede verse como un costo mínimo.
  • Esto producirá archivos multimedia con una pista de audio, en silencio, pero no silenciada.

Ps: es posible que también desee pasar un segmento de tiempo (relativamente pequeño) en MediaRecorder.start(timeslice) para solucionar este otro error relacionado , lo que podría suceder si, por alguna razón, uno de sus lienzos o flujo de audio se silenciara (por ejemplo, si deja de dibujar en su lienzo por más de 5s).

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