Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

316
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda