Javascript WAAPISim Polyfill-如何使用.wav回退加载.mp3
我正在使用从音频文件可视化的跨浏览器支持,使用。polyfill尝试按此顺序使用以下方法:“WebAudioAPI=>AudioDataAPI=>Flash”。我正在加载JS中的音频文件,如下所示:Javascript WAAPISim Polyfill-如何使用.wav回退加载.mp3,javascript,audio,web-audio-api,polyfills,Javascript,Audio,Web Audio Api,Polyfills,我正在使用从音频文件可视化的跨浏览器支持,使用。polyfill尝试按此顺序使用以下方法:“WebAudioAPI=>AudioDataAPI=>Flash”。我正在加载JS中的音频文件,如下所示: // load the specified sound function loadSound(url) { var request = new XMLHttpRequest(); request.open('GET', url, true); request.response
// load the specified sound
function loadSound(url) {
var request = new XMLHttpRequest();
request.open('GET', url, true);
request.responseType = 'arraybuffer';
// When loaded decode the data
request.onload = function() {
// decode the data
context.decodeAudioData(request.response, function(buffer) {
// when the audio is decoded play the sound
playSound(buffer);
}, onError);
}
request.send();
}
loadSound("audio/bird.wav");
如polyfill文档中所述,此polyfill仅支持此方法的wav格式。“来自ArrayBuffer和decodeAudioData的createBuffer仅支持wav格式。”
现在,它只加载了一个.wav,但我想为支持它的浏览器加载一个.mp3(较小的文件)。如何检测实现是否与.mp3一起工作并相应地加载正确的文件
如果:
(new Audio()).canPlayType("audio/mp3")
返回
“maybe”
或“mayby”
,然后浏览器在解码音频数据中支持mp3我从polyfill开发者那里得到了以下响应:
if (typeof window.waapisimContexts != 'undefined'){
loadSound("audio/bird.wav");
} else {
loadSound("audio/bird.mp3");
}
polyfill仅在浏览器要求其播放.wav时才创建waapisimContexts,因此这种方法会查找waapisimContexts并加载.wav(如果已定义)。否则,它将加载.mp3