Frustrante, non esiste un tipo universalmente riproducibile. WAV è il più vicino, ma è abbastanza grande e non è supportato in IE9. Avrai bisogno di avere più tipi disponibili e scegliere un tipo che il browser può riprodurre.
Per fare ciò, utilizzare il rilevamento della funzione , non il rilevamento del browser. I tipi di file multimediali supportati da ogni browser cambieranno nel tempo, quindi il codice che presuppone che Firefox non possa riprodurre MP3 sarà probabilmente superato da qualche anno, quando Mozilla lo adotterà (dopo la scadenza dei brevetti). Utilizzare canPlayType, che indica se un determinato formato è supportato:
var audio = new Audio();
if(audio.canPlayType("audio/mpeg") == "probably") {
playSound("myMedia.mp3");
} else if(audio.canPlayType("audio/webm") == "probably") {
playSound("myMedia.webm");
}
// do checks for other types...
Inoltre, se si sta scrivendo il tag audio in formato HTML, è possibile utilizzare più <source>
tag, e il browser giocherà il primo che può:
<audio controls="controls">
<source src="mymedia.ogg" type="audio/ogg" />
<source src="mymedia.mp3" type="audio/mpeg" />
Update your browser! This sentence is fallback content for browsers that do not support the audio element at all.
</audio>
Se si desidera testare il supporto audio Ogg, probabilmente si desidera testare specificamente Ogg Vorbis. Ogg è un formato "contenitore" che può contenere hypothetically use other codecs oltre a Vorbis e Theora (ad esempio, Opus format).È possibile verificare per Ogg Vorbis in questo modo:
audio.canPlayType('audio/ogg; codecs="vorbis"') == "probably";
Nota che canPlayType
ha tre possibili valori di ritorno:
- "probabilmente" - il tipo di supporto può quasi certamente essere giocato
- " forse " - il tipo di supporto potrebbe essere compatibile con. Questo è ciò che viene restituito quando si chiede del supporto generale di Ogg in un browser che supporta Ogg per codec specifici (ad esempio Vorbis e Theora). Un file Ogg può utilizzare un codec che non è supportato dal browser, quindi se non si specifica il codec, il browser può solo supporre che sia in grado di riprodurlo.
- ""(la stringa vuota) - il tipo di supporto non è certamente giocabile
Se si voleva davvero per verificare il supporto ogg, allora invece di prova per "probabilmente", è potrebbe verificare una stringa non vuota (cioè di prova sia per "probabilmente" o "forse"), in questo modo:
// test for *any* Ogg codecs
if(audio.canPlayType("audio/ogg") != "") {
playSound("myMedia.ogg");
}
Si dovrebbe provare per qualsiasi codec specifico file multimediale utilizza, ad esempio, con 'audio/ogg; codecs="vorbis"'
per Vorbis. Non è probabile che i test per il supporto Ogg generale siano utili.
wav. Dato che è principalmente PCM greggio più un'intestazione molto semplice, non ho visto una piattaforma dove non possa essere riprodotto di default, anche se potrei sbagliarmi. –
Usa webm per Chrome, Firefox e Opera + wav per Firefox, IE, Safari e Opera. –
Usa rilevamento funzionalità, non rilevamento del browser! I tipi supportati da ciascun browser cambiano nel tempo; usa 'canPlayType': https://developer.mozilla.org/en-US/docs/DOM/HTMLMediaElement#Methods – apsillers