2014年に制作した記事を2016/08に加筆修正
webページに音声ファイルを埋め込むのに、html5ではaudioタグが使えます。これが使えるとかなり楽です。
とはいえ、企業によっては古いIEもサポート対象にしていることもあると思うので、古いIEの対応方法についても説明します。
<audio src="サウンドファイルのパス" preload="auto" controls></audio>
※黒い部分をダブルクリックするとソースを選択できるので、コピーして使ってください。
これだけで、音声ファイルを貼り付けられます。cssは幅ぐらいしか効きません。
OS・ブラウザそれらのバージョンの組み合わせによっては再生できるサウンドファイルの形式が異なるので、複数のファイル形式を同時に読み込んで、再生できるものを自動的に再生してくれるようです。
<audio preload="auto" controls>
<source src="mp3サウンドファイルのパス" type="audio/mp3">
<source src="oggサウンドファイルのパス" type="audio/ogg">
<source src="wavサウンドファイルのパス" type="audio/wav">
<p>※ご利用のブラウザでは再生することができません。</p>
</audio>
※黒い部分をダブルクリックするとソースを選択できるので、コピーして使ってください。
audioタグの中にタイプを指定して複数の形式のサウンドファイルを指定できます。audioタグに対応していないブラウザに対してメッセージを表示させることもできます。
audioタグはIE8以下では動作しません。そこで、対策方法の一つとしてembedタグを使う方法があります。
embedはもともとNetscape Navigator(なつかしいなぁ・・・)の独自要素でしたが、html5では採用されているタグです(HTML4では非推奨タグ)。oldIEでも使えます(バリデートチェックするとエラー出るかもだけど)。
方法はこれに限らないので、あくまでも参考として、もっとスマートな方法を思いついたらそちらをご使用ください。
ついでにaudioタグに対応しているブラウザでは、コントローラーを非表示にして、独自デザインの再生ボタンを設置してみたいと思います。
ここではModernizr(サイト内リンク)とjQueryを用いてaudioタグ対応のブラウザの場合の処理を追加します。
<audio id="audio" preload="auto">
<source src="mp3サウンドファイルのパス" type="audio/mp3">
<source src="oggサウンドファイルのパス" type="audio/ogg">
<source src="wavサウンドファイルのパス" type="audio/wav">
<embed src="IE8以下で再生できるサウンドファイルのパス" type="audio/mp3" autostart="false">
</audio>
<button onclick="audioPlay()">>再生</button>
※黒い部分をダブルクリックするとソースを選択できるので、コピーして使ってください。
上記の複数のファイル形式でaudioタグ未対応のブラウザの場合、メッセージを表示させましたが、そのpタグの代わりにembedを記述します。
このサンプルではaudioタグに対応しているブラウザで独自の再生ボタンを設置したいので、buttonタグも記述しました。
buttonタグをクリックしたら(onclick)、後述するaudioPlay関数を実行します。
なお、どのaudioを再生させたいのかわかるようにaudioタグにidをつけます。id名は任意ですが、ここではaudioとしました。
button{
/*ボタンのデザイン*/
}
button.playing{
/*再生中の表示*/
}
embed{height: 30px;width: 100px;} /*embedの表示サイズ*/
※黒い部分をダブルクリックするとソースを選択できるので、コピーして使ってください。
再生ボタン用のデザインをcssで設定します。
embedタグのサイズ指定は、cssではなく、タグのwidth属性・height属性で行っても構いません。
if (Modernizr.audio) { //audioタグに対応している場合
function audioPlay(){
document.getElementById('audio').play();
$('button').addClass('playing');
document.getElementById('audio').addEventListener("ended", function(){
$('button').removeClass('playing');
}, false);
}
} else { //audioタグ未対応の場合
$(function(){
$('button').remove();
});
}
※黒い部分をダブルクリックするとソースを選択できるので、コピーして使ってください。
jsのみで記述することも可能ですが、今回はjqueryを使うので、jqueryライブラリを読み込んでいることが前提です。
また、ブラウザの判定をModernizrで行っているので、Modernizrのaudio要素で判定するjsを読み込んでいることも前提です。
プラグイン(サイト内リンク)を用いる方法もあります。
プラグインについては、以前audio.jsを紹介していたのですが、どうやら使えなくなってしまったようです。