2013-06-03 86 views
3

我正在開發專門用於iPhone的HTML5音頻播放器,並試圖獲得EQ可視化工作。從我發現有兩種方法進行此設置:使用Web Audio API獲取音頻可視化以在iOS上工作


一個,你使用一個XMLHttpRequest按需加載MP3文件:

var request = new XMLHttpRequest(); 
request.open('GET', 'sampler.mp3', true); 
request.responseType = 'arraybuffer'; 
request.addEventListener('load', bufferSound, false); 
request.send(); 

function bufferSound(event) { 

    var request = event.target; 
    var buffer = myAudioContext.createBuffer(request.response, false); 
    source = myAudioContext.createBufferSource(); 
    source.buffer = buffer; 

} 

然後使用source.noteOn和source.noteOff可以播放和暫停音頻。以這種方式工作,我能夠獲得EQ可視化。但是,您必須等到mp3文件完全加載才能開始播放,這在我們的情況下不起作用。


的另一種方式做,這是在頁面上已經有一個<audio>元素,您使用從獲取的音頻數據:

source = myAudioContext.createMediaElementSource(document.querySelector('audio')); 

然後,您使用的音頻標籤的播放和暫停功能。這解決了加載問題,因爲它允許媒體在頁面加載後立即播放......但是,EQ可視化消失了。


兩種方法都顯示EQ在Chrome(WIN)進行測試時,因此似乎有特定的與iOS/iPhone是不是讓我從一個<audio>標籤獲取數據的東西,但將允許我如果我按需加載mp3文件就可以得到它。

...

有什麼想法嗎?

回答

2
+0

那裏是...男人,我看了很長一段時間,沒有看到這個職位。另外我沒有iPhone,所以我必須測試一個朋友,並且還沒有能夠使用它進行調試。無論如何,感謝您的幫助。 – jhallmusic

+0

沒問題。我和你一樣失望。希望Mozilla在實現'MediaElementSource'時沒有相同的問題-_- – idbehold

+0

的確如此......我直接向Apple報告了這個錯誤,但我猜測它可能什麼都不做。 :) – jhallmusic

相關問題