使用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文件就可以得到它。
...
有什么想法吗?
那里是...男人,我看了很长一段时间,没有看到这个职位。另外我没有iPhone,所以我必须测试一个朋友,并且还没有能够使用它进行调试。无论如何,感谢您的帮助。 – jhallmusic
没问题。我和你一样失望。希望Mozilla在实现'MediaElementSource'时没有相同的问题-_- – idbehold
的确如此......我直接向Apple报告了这个错误,但我猜测它可能什么都不做。 :) – jhallmusic