2015-04-01 37 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