使用Web Audio API获取音频可视化以在iOS上工作

问题描述:

我正在开发专门用于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文件就可以得到它。

...

有什么想法吗?

+0

那里是...男人,我看了很长一段时间,没有看到这个职位。另外我没有iPhone,所以我必须测试一个朋友,并且还没有能够使用它进行调试。无论如何,感谢您的帮助。 – jhallmusic

+0

没问题。我和你一样失望。希望Mozilla在实现'MediaElementSource'时没有相同的问题-_- – idbehold

+0

的确如此......我直接向Apple报告了这个错误,但我猜测它可能什么都不做。 :) – jhallmusic