Я экспериментирую с WebAudio и загружаю звук со следующим кодом javascript.
function playAudio(){
var audio = document.getElementById('music');
var audioContext = new webkitAudioContext();
var analyser = audioContext.createAnalyser();
var source = audioContext.createMediaElementSource(audio);
source.connect(analyser);
analyser.connect(audioContext.destination);
audio.play();
}
Я также хочу проанализировать звук, который можно визуализировать с помощью холста, поэтому analyser
. В первый раз он работает нормально, но если я запускаю эту функцию дважды, я получаю сообщение об ошибке.
> playAudio(); // works fine, i can hear a sound
> playAudio(); // error
InvalidStateError: Failed to execute 'createMediaElementSource' on 'AudioContext': invalid HTMLMediaElement.
Что вызывает эту ошибку? Я знаю, что ошибка вызвана этой строкой кода:
var source = audioContext.createMediaElementSource(audio);
Я создаю новый аудиоконтекст, поэтому я предполагаю, что могу повторно использовать один и тот же аудиоэлемент в своем html.