【问题标题】:Supported audio file formats for Chrome?Chrome 支持的音频文件格式?
【发布时间】:2012-01-19 21:55:49
【问题描述】:

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

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

更新

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

【问题讨论】:

    标签: audio google-chrome web-audio-api


    【解决方案1】:

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

    【讨论】:

    • 这很聪明,谢谢。我仍然很惊讶没有更直接的方法可以做到这一点......
    【解决方案2】:

    有!我不知道这有多可靠,但是...

    // 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(); }
    

    我希望这会有所帮助!

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

    【讨论】:

    • 哦,废话,没有仔细阅读您的问题-您说的是用于音频操作的较新API....无论如何,我认为常规的
    • 嗨,阿尔伯特——感谢您的回复。这是一个好的开始,但我实际上希望找到一种从浏览器获取更详细信息的方法。我知道它可以播放某些类型的 .wav 文件,但我需要找出它可以处理的采样率、位深度和采样编码,以及它支持的音频通道数。你知道如何提取那种信息吗?
    【解决方案3】:

    非编程方式是那些网站:

    【讨论】:

      【解决方案4】:

      使用 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;
      })();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-09-02
        • 1970-01-01
        • 2010-12-18
        • 2010-11-09
        • 1970-01-01
        • 1970-01-01
        • 2013-06-03
        • 2012-12-14
        相关资源
        最近更新 更多