我对使用Web Audio API感兴趣。不幸的是,我的音频文件都是一种深奥的格式,Chrome无法解码。 (它们是.wavs,但采用32位浮点编码以96 kHz采样。)
我有什么方法可以查询我的浏览器(Chrome)以确切了解它支持哪种音频格式和编码?
更新
我在这里找到了Chrome支持的文件格式列表:https://sites.google.com/a/chromium.org/dev/audio-video
答案 0 :(得分:4)
您可以尝试使用try...catch
构造加载各种示例文件,并查看哪些文件类型加载,哪些文件类型不加载,从而测试此类问题。有关使用Chrome中的Web Audio API加载文件的信息,请参阅this tutorial。
答案 1 :(得分:0)
有!我不知道这有多可靠,但是......
// 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文件,我会使用这些:
audio/vnd.wave, audio/wav, audio/wave, audio/x-wav
最好的办法是弄清楚你的文件的MIME类型是什么(应该是上面的一种),然后用这样的东西检查:
var canPlayWav = !!myAudio.canPlayType && "" != myAudio.canPlayType('MIME_TYPE_HERE');
if (canPlayWav) { dothis(); } else { dothat(); }
我希望这有帮助!
答案 2 :(得分:0)
非程序化的方式是那些网站:
答案 3 :(得分:0)
使用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;
})();