WAAPISim Polyfill-如何使用.wav回退加载.mp3
WAAPISim Polyfill - how to load .mp3 with .wav fallback
我正在使用WAAPISim Polyfill,使用Web audio API从音频文件进行可视化,以提供跨浏览器支持。polyfill尝试按以下顺序使用以下方法:"WebAudioAPI=>AudioDataAPI=>Flash"。我正在JS中加载这样的音频文件:
// 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"
或"probably"
,则浏览器支持decodeAudioData
中的mp3。
我从polyfill开发人员那里得到了这个响应:
if (typeof window.waapisimContexts != 'undefined'){
loadSound("audio/bird.wav");
} else {
loadSound("audio/bird.mp3");
}
polyfill只有在浏览器要求播放.wav时才会创建waapisimContexts,因此这种方法会查找waapisimContext,并在定义了.wav的情况下加载它。否则,它将加载.mp3。
相关文章:
- 一旦加载并渲染了角度引导typeahead,就使用回调
- 当CDN加载失败时,为字体添加一个本地CSS回退
- 设置计时器以等待为flash回退视频播放器加载swfobject脚本
- 如何为未加载、加载时间过长和被阻止的css文件编写回退
- JQuery/Javascript:如何将一个东西放回页面加载上的位置
- 角度 - 使用具有回退功能的动态路径加载自定义模板
- 检测角度依赖关系 [角度路由、角度资源等] 是否已加载用于 CDN 回退
- 按顺序加载图像,有延迟,无脚本回退
- 比较两种回退机制加载本地jQuery库的方法
- angularjs是否在jQuery的回退时加载
- 检查是否已加载外部样式表以进行回退
- 如果图像已经加载,则jQuery.load()回退
- 当应用程序缓存回退url不可加载时会发生什么
- 什么是通过回调加载谷歌API或谷歌的区别.加载或简单的脚本块
- 引导-当有一个图像加载错误时回退
- 优化器中不支持路径回退(“重新加载”)
- WAAPISim Polyfill-如何使用.wav回退加载.mp3
- requiredjs失败以加载回退
- Javascript - 加载内容、回调和加载
- 画布回退到闪存正在加载图像