ボタンがあります。クリックするたびに音楽が再生されます。2 回目にクリックすると、音楽が再開します。音楽も視覚化したい。
だから私はhtml5オーディオから始めます( http://jsfiddle.net/karenpeng/PAW7r/の完全なコード):
$("#1").click(function(){
audio1.src = '1.mp3';
audio1.controls = true;
audio1.autoplay = true;
audio1.loop = true;
source = context.createMediaElementSource(audio1);
source.connect(analyser);
analyser.connect(context.destination);
});
しかし、複数回クリックすると、console.log エラー:
Uncaught Error: INVALID_STATE_ERR: DOM Exception 11
次に、 Web Audio APIを使用するように変更し、ソースを次のように変更します。
source = context.createBufferSource();
エラーはなくなりました。
そして、それを視覚化する必要があります。しかし皮肉なことに、これはhtml5 audioでしか機能しません!
( http://jsfiddle.net/karenpeng/FvgQF/の完全なコード、jsfiddle cuzでは機能しません。処理.jsスクリプトを適切に記述する方法がわかりませんが、私のPCでは実行されます)
var audio = new Audio();
audio.src = '2.mp3';
audio.controls = true;
audio.autoplay = true;
audio.loop=true;
var context = new webkitAudioContext();
var analyser = context.createAnalyser();
var source = context.createMediaElementSource(audio);
source.connect(analyser);
analyser.connect(context.destination);
var freqData = new Uint8Array(analyser.frequencyBinCount);
analyser.getByteFrequencyData(freqData);
//visualization using freqData
ソースを次のように変更すると:
source = context.createBufferSource();
何も表示されません。
それで、それを視覚化しながらエラーなしで、何度も再開できるようにする方法はありますか?