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

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

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 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!