8

我对使用Web Audio API很感兴趣。不幸的是,我的音频文件都是 Chrome 无法解码的深奥格式。(它们是 .wav,但采用 32 位浮点编码以 96 kHz 采样。)

我有什么方法可以查询我的浏览器 (Chrome) 以准确了解它支持哪些音频格式和编码?

更新

我在这里找到了 Chrome 支持的文件格式列表:https ://sites.google.com/a/chromium.org/dev/audio-video

4

4 回答 4

4

您可以通过尝试使用构造加载各种示例文件try...catch并查看哪些文件类型加载而哪些不加载来测试这种事情。请参阅本教程以在 Chrome 中使用 Web 音频 API 加载文件。

于 2011-12-16T00:09:58.457 回答
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 文件,所以我会使用这些:

音频/vnd.wave, 音频/wav, 音频/波, 音频/x-wav

最好的办法是弄清楚你的文件的 MIME 类型是什么(应该是上面的一种),然后用这样的东西检查它:

var canPlayWav = !!myAudio.canPlayType && "" != myAudio.canPlayType('MIME_TYPE_HERE');
if (canPlayWav) { dothis(); } else { dothat(); }

我希望这有帮助!

来源:http ://html5doctor.com/native-audio-in-the-browser/

于 2011-12-14T03:38:43.420 回答
0

非编程方式将是这些网站:

于 2014-04-23T04:23:43.653 回答
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;
})();
于 2014-04-23T17:40:43.553 回答