我有一个按钮。每点击一次,就会播放一段音乐。第二次点击时,音乐继续播放。我也想把音乐形象化。
所以我从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
然后我更改为使用网络音频 API,并将源更改为:
source = context.createBufferSource();
错误消失了。
然后,我需要将其可视化。但具有讽刺意味的是,它只适用于html5 音频!
( http://jsfiddle.net/karenpeng/FvgQF/中的完整代码,它在 jsfiddle 中不起作用,因为我不知道如何正确编写 processing.js 脚本,但它确实在我的电脑上运行)
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();
它没有显示任何内容。
那么有没有办法将它可视化但没有错误并使其一次又一次地恢复?