webaudio vocoder tutorial the spec play examples data abstracting javascript web-audio

javascript - tutorial - web audio vocoder



Error al construir ''AudioContext'': el número de contextos de hardware alcanzó el máximo (4)

¿Hay alguna forma de eliminar un AudioContext después de haberlo creado?

var analyzers = []; var contexts = []; try { for(var i = 0; i<20; i++) { contexts[i] = new AudioContext(); analyzers[i] = contexts[i].createAnalyser(); } }catch(e) { console.log(e); // too many contexts created -- how do I remove them? }

He intentado esto, pero no me permite crear nuevos contextos después del hecho: analyzers.forEach(function(analyzer){analyzer.disconnect(analyzer.context.destination)})

Estoy usando Chrome 36 en Ubuntu Linux 14.04.



Estaba trabajando en un widget de reproductor de medios que se rompió en Chrome (pero no en Firefox) tan pronto como más de cinco se incrustaron en una sola página.

Descubrí que puede crear un solo AudioContext y almacenarlo globalmente, luego hacer que cada instancia solo use el AudioContext compartido. Parece que no funciona de manera diferente: puede adjuntar varios buffers y múltiples destinos y todo el audio se mezcla.

Esto podría requerir más esfuerzo si lo está utilizando para la sincronización, pero para la reproducción de uno o más flujos de audio generados sobre la marcha con el código JS, compartir un solo AudioContext funciona bien.


Realmente deberías tener solo un AudioContext en la página.

De la documentación: "En la mayoría de los casos de uso, solo se utiliza un único AudioContext por documento".

Realmente no puedo pensar en una razón por la que alguna vez necesitarías más de una. ¿Hay algún problema específico con el que te has encontrado para crear varios contextos?


Referenciarlo a una variable, es decir:
var myAudioCtx = new AudioContext();
Entonces destruye llamando
myAudioCtx.close();
Eso es.