为什么音频上下文在firefox上无法正常工作?

时间:2017-02-17 18:08:14

标签: javascript firefox audio audiocontext

前段时间我制作了this,它使用浏览器的AudioContext来创建Analyser并为我提供音频数据,以便我可以为正在播放的音乐制作动画。

当我完成此操作时,它在Chrome和Firefox中都能完美运行。当我最近尝试它时它仍然在Chrome中工作但在Firefox中无法正常工作。

每当我尝试跳过歌曲或更改Firefox中的音源时,音频停止播放并停止接收分析仪数据。

初始化

//Creating audio
this.audio = document.createElement("audio");
this.audio.setAttribute("loop", true);
this.audio.volume=1;
//Important part
var audioctx = new AudioContext();
var audioSrc = audioctx.createMediaElementSource(this.audio);
var analyser = audioctx.createAnalyser();
var gainNode = audioctx.createGain();
var fakeGainNode = audioctx.createGain();
analyser.smoothingTimeConstant=0.5;
analyser.minDecibels=-100;
analyser.maxDecibels=0;
analyser.fftSize=2048;
//Connecting audioSrc to gainNode
audioSrc.connect(fakeGainNode);
audioSrc.connect(gainNode);
//Connecting gainNode to analyser
gainNode.connect(audioctx.destination);
//Connecting analyser to destination
//analyser.connect(gainNode);
//connect fake gain to analyser
fakeGainNode.connect(analyser);
gainNode.gain.value=0.3;
fakeGainNode.gain.value=0.05;
var size=analyser.frequencyBinCount;
var frequencyData = new Uint8Array(size);

更改来源

this.next = function(){
    var next = ml.next();
    this.songName.innerHTML=next.name;
    this.changeSrc(next.url);
    if(playing)
        this.play();
}

this.prev = function(){
    var prev = ml.prev();
    this.songName.innerHTML=prev.name;
    this.changeSrc(prev.url);
    if(playing)
        this.play();
}

this.changeSrc = function(src){
    this.audio.src=src;
}

所以问题是。我可以做任何事情来解决这个问题吗?或者这只是一个错误,我应该坚持使用Chrome?

编辑: 我已将控制台日志放在有问题的功能中,但所有日志都通过并且没有错误被抛出

0 个答案:

没有答案