我正在開發專門用於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文件就可以得到它。
...
有什麼想法嗎?
那裏是...男人,我看了很長一段時間,沒有看到這個職位。另外我沒有iPhone,所以我必須測試一個朋友,並且還沒有能夠使用它進行調試。無論如何,感謝您的幫助。 – jhallmusic
沒問題。我和你一樣失望。希望Mozilla在實現'MediaElementSource'時沒有相同的問題-_- – idbehold
的確如此......我直接向Apple報告了這個錯誤,但我猜測它可能什麼都不做。 :) – jhallmusic