【发布时间】:2017-01-15 11:27:23
【问题描述】:
我尝试使用<audio> 标签中加载的声音文件中的网络音频 api 制作一种音量计(作为脉动效果),我的指示器效果与此代码配合良好,我可以从播放音频,我使用该值将不透明效果应用到带有 jquery 的<div>。
但是当我加载脚本时我听不到声音,正在播放音频,正在改变音量,但没有声音。也许我错过了某个地方的连接器?
有什么想法吗?
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
}
}
任何帮助表示赞赏。 谢谢...
【问题讨论】:
-
如果你想要一些输出,你需要设置你的 scriptNode 的输出缓冲区(
out[i] = int[i]如果你想要相同的输出)。或者,如果您想听到源中未处理的声音,您甚至可以直接将源节点连接到目标节点。无论如何,out[i] = 0不会有任何好处。 -
非常感谢,它按预期工作,显然
out[i] = 0是一个真正的错误......
标签: javascript jquery html5-audio