2011-12-14 20 views
5

Estoy interesado en utilizar el Web Audio API. Lamentablemente, mis archivos de audio están en un formato esotérico que Chrome no puede decodificar. (Son .wavs, pero se muestrean a 96 kHz con codificación de flotación de 32 bits).¿Formatos de archivo de audio admitidos para Chrome?

¿Hay alguna forma de que consulte mi navegador (Chrome) para averiguar exactamente qué formatos de audio y codificaciones admite?

ACTUALIZACIÓN

he encontrado una lista de formatos de archivo compatibles con Chrome aquí: https://sites.google.com/a/chromium.org/dev/audio-video

Respuesta

3

Se podría probar este tipo de cosas, tratando de cargar una variedad de archivos de ejemplo utilizando una construcción try...catch, y ver qué tipos de archivos de carga y cuáles no. Consulte this tutorial para cargar archivos con Web Audio API en Chrome.

+0

Esto es inteligente, gracias. Todavía estoy sorprendido de que no haya una forma más directa de hacerlo ... –

0

hay! No sé qué tan confiable es esto, pero ...

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

Ya que estamos hablando acerca de los archivos WAV aquí, me gustaría utilizar estas:

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

Lo mejor que puede hacer es averiguar cuál es el tipo MIME de su archivo (debe ser uno de los anteriores), y luego comprobar que con algo como esto:

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

espero que esto ayude!

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

+0

Oh mierda, no leyó su pregunta con cuidado: estás hablando de una API más nueva para la manipulación del audio ... de cualquier manera, creo que el

+0

Hola Albert, gracias por la respuesta. Este es un buen comienzo, pero en realidad estaba esperando encontrar una manera de obtener información un poco más detallada del navegador. Sé que puede reproducir ALGUNOS tipos de archivos .wav, pero necesito averiguar qué frecuencias de muestreo, profundidades de bits y codificaciones de muestra puede manejar, así como cuántos canales de audio admite. ¿Tienes alguna idea de cómo extraer ESE tipo de información? –

0

Usando 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; 
})(); 
Cuestiones relacionadas