作成後にAudioContext
を削除する方法はありますか?
_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?
}
_
これを試しましたが、事後に新しいコンテキストを作成できません:analyzers.forEach(function(analyzer){analyzer.disconnect(analyzer.context.destination)})
Ubuntu Linux14.04でChrome 36を使用しています。
実際には、ページにAudioContext
を1つだけ含める必要があります。
ドキュメントから:「ほとんどのユースケースでは、ドキュメントごとに1つのAudioContextのみが使用されます。」
私はあなたが今までに必要 1つ以上になる理由を本当に考えることができません。複数のコンテキストを作成する原因となった特定の問題が発生しましたか?
AudioContext.close()はコンテキストのハードウェアを解放しますが、それがchromeおよびfirefoxの最近のバージョンでのみ使用可能であることを確認してください。IEどうやら。ドキュメントを確認してください: https://developer.mozilla.org/en-US/docs/Web/API/AudioContext/close
それを変数に参照します。var myAudioCtx = new AudioContext();
次に、電話して破壊するmyAudioCtx.close();
それでおしまい。
1つのページに5つ以上が埋め込まれるとすぐに、Chrome(Firefoxではない)で機能するメディアプレーヤーウィジェットに取り組んでいました。
単一のAudioContext
を作成してグローバルに保存し、各インスタンスで共有AudioContext
を使用できることを発見しました。動作は同じように見えます。複数のバッファと複数の宛先を接続すると、オーディオがすべてミックスされます。
タイミングに使用する場合はさらに手間がかかる可能性がありますが、JSコードを使用してオンザフライで生成された1つ以上のオーディオストリームを再生する場合は、単一のAudioContext
を共有すると問題なく機能します。