2011-12-14 17 views
5

Sono interessato all'utilizzo dello Web Audio API. Sfortunatamente i miei file audio sono tutti in un formato esoterico che Chrome non è in grado di decodificare. (Sono .wavs, ma campionati a 96 kHz con codifica float a 32 bit.)Formati di file audio supportati per Chrome?

Esiste un modo per interrogare il mio browser (Chrome) per scoprire esattamente quali formati audio e codifiche supporta?

UPDATE

ho trovato un elenco dei formati di file supportati da Chrome qui: https://sites.google.com/a/chromium.org/dev/audio-video

risposta

3

Si potrebbe verificare questo genere di cose, cercando di caricare una serie di file di esempio utilizzando un costrutto try...catch, e vedere quali tipi di file di carico e quali no. Vedi this tutorial per caricare i file con l'API Web Audio in Chrome.

+0

Questo è intelligente, grazie. Sono comunque sorpreso che non ci sia un modo più diretto per farlo anche se ... –

0

che ci sia! Non so quanto è affidabile questo è, ma ...

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

Dal momento che stiamo parlando di file WAV qui, userei queste:

audio/vnd.wave, audio/wav, audio/wave, audio/x-wav

La cosa migliore da fare è quello di capire che tipo MIME del file è (dovrebbe essere uno dei precedenti), e poi controllare che con qualcosa di simile:

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

Spero che questo aiuta!

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

+0

Oh merda, non ha letto la tua domanda con attenzione - stai parlando di una nuova API per la manipolazione dell'audio .... in entrambi i casi, penso che sia normale L'API

+0

Hey Albert - grazie per la risposta. Questo è un buon inizio ma in realtà speravo di trovare un modo per ottenere informazioni leggermente più dettagliate dal browser. So che può riprodurre alcuni tipi di file .wav, ma ho bisogno di scoprire quali frequenze di campionamento, profondità di bit e codifiche di esempio è in grado di gestire, nonché il numero di canali audio che supporta. Hai idea di come estrarre quel tipo di informazioni? –

0

Utilizzando 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; 
})(); 
Problemi correlati