イライラすることに、普遍的にプレイできるタイプはありません。最も近いのは WAV ですが、サイズが大きく、IE9 ではサポートされていません。複数のタイプを利用可能にして、ブラウザが再生できるタイプを選択する必要があります。
これを行うには、ブラウザー検出ではなく、機能検出を使用します。各ブラウザがサポートするメディア タイプは時間の経過とともに変化するため、Firefox が MP3 を再生できないと想定するコードは、Mozilla がそれを採用する (特許が期限切れになった後) 数年後におそらく時代遅れになるでしょう。特定の形式がサポートされているかどうかを示すcanPlayTypeを使用します。
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...
また、オーディオ タグを HTML として記述している場合は、複数の<source>
タグを使用できます。ブラウザは最初に再生できるタグを再生します。
<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>
Ogg オーディオ サポートをテストする場合は、特に Ogg Vorbis をテストすることをお勧めします。Ogg は、仮想的には Vorbis と Theora 以外のコーデックを使用できる「コンテナー」形式です(たとえば、Opus 形式)。次のように Ogg Vorbis をテストできます。
audio.canPlayType('audio/ogg; codecs="vorbis"') == "probably";
canPlayType
3 つの可能な戻り値があることに注意してください。
- "probably" - ほぼ確実に再生できるメディア タイプ
- "maybe" - メディア タイプは再生可能である可能性があります。これは、ブラウザでの一般的な Ogg サポートについて尋ねると返されるもので、Ogg は特定のコーデック (つまり、Vorbis と Theora) をサポートしています。Ogg ファイルはブラウザでサポートされていないコーデックを使用している可能性があるため、コーデックを指定しない場合、ブラウザはそれを再生できる可能性があるとしか推測できません。
- "" (空の文字列) - メディア タイプは確かに再生可能ではありません
ogg のサポートを本当にテストしたい場合は、"probably"をテストする代わりに、空でない文字列をテストできます (つまり、"probably" または "maybe" のいずれかをテストします)。
// test for *any* Ogg codecs
if(audio.canPlayType("audio/ogg") != "") {
playSound("myMedia.ogg");
}
'audio/ogg; codecs="vorbis"'
Vorbisなど、メディア ファイルが使用する特定のコーデックをテストする必要があります。一般的な Ogg サポートのテストは役に立たない可能性があります。