Я пытаюсь сделать своего рода измеритель объема (как эффект пульсации) с помощью аудио-аудио api из звукового файла, загруженного в тег <audio>
, мой индикаторный эффект отлично работает с этим кодом , Я могу получить изменения громкости с воспроизводимого звука, и я использую значение для применения эффектов непрозрачности к <div>
с jquery.web audio api volume indicator - no more sound
Но я не могу прислушиваться к звуку, когда загружаю свой скрипт, звук воспроизводится, громкость меняется, но звук отсутствует. Может, я где-то пропустил коннектор?
Любые идеи?
var audio = document.getElementById('sound');
var context = new AudioContext();
var analyser = context.createScriptProcessor(1024, 1, 1);
var source = context.createMediaElementSource(audio);
source.connect(analyser);
analyser.connect(context.destination);
opacify();
function opacify(){
analyser.onaudioprocess = function(e){
var out = e.outputBuffer.getChannelData(0);
var int = e.inputBuffer.getChannelData(0);
var max = 0;
for(var i = 0; i < int.length; i++){
out[i] = 0;
max = int[i] > max ? int[i] : max;
}
$('#artist').css({'opacity': max}); // updates opacity from value
}
}
Любая помощь приветствуется. Спасибо ...
Вам нужно установить выходной буфер вашего сценарияNode, если вы хотите получить какой-то вывод ('out [i] = int [i]', если вы хотите получить такой же результат). Или вы можете просто подключить напрямую sourceNode к destinationNode, если вы хотите прослушивать необработанный звук из источника. Во всяком случае, 'out [i] = 0' ничего не сделает. – Kaiido
Большое спасибо, он работает по назначению, очевидно, 'out [i] = 0' была реальной ошибкой ... – hug