2015-04-01 106 views
2

我正在开发使用Createjs和Web Audio API的HTML5画布交互式作品。尽管Chrome和Firefox使用webkitAudioContext而不使用Safari,但我仍然设法在Chrome/Firefox/Safari中使用音频。但是,由于某些原因,过滤器无法在Safari中使用,但声音仍在播放。过滤器可以在Chrome/FF中运行。Web Audio API过滤器在Safari中不起作用

我有我的过滤器设置是这样的:

var sound = new Audio(); 
sound.src = './sounds/sound.mp3'; 
sound.autoplay = false; 
sound.loop = true; 
soundSource = context.createMediaElementSource(sound); 
var soundFilter = context.createBiquadFilter(); 
soundFilter.type = "lowpass"; 
soundFilter.frequency.value = 500; 
soundSource.connect(soundFilter); 
soundFilter.connect(context.destination); 

难道我在不知不觉中使用过时的术语或东西吗?在线项目可以在here找到。干杯。

UPDATE:这已被WebKit团队认为是一个真正的bug,并且会被修补。 Full details here

回答

3

显然Safari doesn't implement createMediaElementSource correctly。因此,不是通过Web Audio节点重定向声音,而是直接将声音播放到音频设备。

为什么不能使用BufferSourceNode有什么特别的理由吗?它使你跳过额外的箍环来获取声音文件并对其进行解码,但它应该起作用。

+0

我想你的意思是“filter.LOWPASS”,而不是“soundFilter.LOWPASS”。我知道“filter.LOWPASS”现在已被弃用,但不幸的是使用“filter.LOWPASS”在Safari中播放没有区别。我使用的音频包装在

+0

是的,除非我错过了什么,monkeypatch是过时的项目,并不是真正的浏览器垫片。奇怪[我找到了一个过滤器的例子](http://webaudioapi.com/samples/filter/)在Safari中工作,但我不知道为什么。 – 2015-04-01 17:14:52

+0

你是对的,要在这种情况下使用monkeypatch,你必须使用旧的常量,并让补丁使它在新的浏览器上工作。假设“这种情况”是我认为的那样,显然这不是。 – aldel 2015-04-01 19:37:37