我对使用Web Audio API很感兴趣。不幸的是,我的音频文件都是 Chrome 无法解码的深奥格式。(它们是 .wav,但采用 32 位浮点编码以 96 kHz 采样。)
我有什么方法可以查询我的浏览器 (Chrome) 以准确了解它支持哪些音频格式和编码?
更新
我在这里找到了 Chrome 支持的文件格式列表:https ://sites.google.com/a/chromium.org/dev/audio-video
我对使用Web Audio API很感兴趣。不幸的是,我的音频文件都是 Chrome 无法解码的深奥格式。(它们是 .wav,但采用 32 位浮点编码以 96 kHz 采样。)
我有什么方法可以查询我的浏览器 (Chrome) 以准确了解它支持哪些音频格式和编码?
更新
我在这里找到了 Chrome 支持的文件格式列表:https ://sites.google.com/a/chromium.org/dev/audio-video
您可以通过尝试使用构造加载各种示例文件try...catch
并查看哪些文件类型加载而哪些不加载来测试这种事情。请参阅本教程以在 Chrome 中使用 Web 音频 API 加载文件。
有!我不知道这有多可靠,但是...
// Need to check the canPlayType first or an exception
// will be thrown for those browsers that don't support it
var myAudio = document.createElement('audio');
if (myAudio.canPlayType) {
// Currently canPlayType(type) returns: "", "maybe" or "probably"
var canPlayMp3 = !!myAudio.canPlayType && "" != myAudio.canPlayType('audio/mpeg');
var canPlayOgg = !!myAudio.canPlayType && "" != myAudio.canPlayType('audio/ogg; codecs="vorbis"');
}
因为我们在这里讨论的是 WAV 文件,所以我会使用这些:
音频/vnd.wave, 音频/wav, 音频/波, 音频/x-wav
最好的办法是弄清楚你的文件的 MIME 类型是什么(应该是上面的一种),然后用这样的东西检查它:
var canPlayWav = !!myAudio.canPlayType && "" != myAudio.canPlayType('MIME_TYPE_HERE');
if (canPlayWav) { dothis(); } else { dothat(); }
我希望这有帮助!
非编程方式将是这些网站:
使用 Lo-Dash:
(function(){
var a = document.createElement('audio'),
types = _(navigator.mimeTypes).pluck('type'),
isAudio = /^audio\//, canPlay = {};
if (a && a.canPlayType) {
types
.push('audio/flac', 'audio/opus', 'audio/webm', 'audio/ogg', 'audio/midi')
.flatten()
.uniq()
.each(function(type){
if (isAudio.test(type)) {
canPlay[type] = !!a.canPlayType(type);
}
});
}
return canPlay;
})();