blog
copyright ©
creamu Inc. All Rights Reserved.
art direction & design: Kunitaka Kawashimo
code, interaction & photography: creamu Inc.
category: Technology

IE8にも対応させるaudioタグ

Pocket

121224 audio Flashを使わないで、HTML5のaudioタグを使った音声再生をIE8以上に対応させる方法です。 上記のデザインの場合、audioタグのデフォルトのプレーヤーは使わないので、IE以外ではjsのAudioクラスを使って、audioタグを生成します。 IEでは、html5mediaやaudiojs等を使っても、Audioクラスが有効にならないので、Audioクラスを使ったjsで制御ができません。 そのため、IE8以下では、IEの独自拡張であるbgsoundを使います。 headタグ内
<head>
<script type="text/javascript" src="/js/jquery-1.8.2.min.js" charset="UTF-8"></script>
<!--[if (gt IE 8)|!(IE)]><!-->
<script type="text/javascript" src="/js/audio.js"></script>
<![endif]-->
<!--[if (lt IE 9) ]>
<bgsound src="mp3/test.wav" loop="infinite" id="audio_ie">
<script type="text/javascript" src="/js/audio_ie.js"></script>
<![endif]-->
</head>
HTML
sound <span id="btn_audioOn"><a href="" onclick="return false;">on</a></span> | <span id="btn_audioOff"><a href="" onclick="return false;">off</a></span>
audio.js
$(function() {
var audio = new Audio();
var audio_file_list = [
{url:"mp3/test.mp3" , type:"audio/mpeg"},
{url:"mp3/test.ogg" , type:"audio/ogg"},
{url:"mp3/test.wav" , type:"audio/wav"}
];
var i;
var num = audio_file_list.length;
for(i=0;i < num;i++){
if(audio.canPlayType(audio_file_list[i].type) != ""){
audio.src = audio_file_list[i].url;
break;
}
}
audio.loop = true;
audio.autoplay = true;
audio.preload = "auto";
audio.play();
$("#btn_audioOn").click(
function () {
audio.play();
$("#btn_audioOn a").css({color: "#40a4e6"});
$("#btn_audioOff a").css({color: "#fff"});
return false;
}
);
$("#btn_audioOff").click(
function () {
audio.pause();
$("#btn_audioOn a").css({color: "#fff"});
$("#btn_audioOff a").css({color: "#40a4e6"});
return false;
}
);
});
ブラウザによって再生できる音声形式が違うので、audio_file_listに入れてループします。 audio_ie.js
$(function() {
$("#btn_audioOn").click(
function () {
//			$("#audio_ie").attr("src", "mp3/test.wav");
$("#audio_ie").attr("volume", "0");
$("#btn_audioOn a").css({color: "#40a4e6"});
$("#btn_audioOff a").css({color: "#fff"});
return false;
}
);
$("#btn_audioOff").click(
function () {
//			$("#audio_ie").attr("src", "");
$("#audio_ie").attr("volume", "-10000");
$("#btn_audioOn a").css({color: "#fff"});
$("#btn_audioOff a").css({color: "#40a4e6"});
return false;
}
);
});
コメントアウトしていますが、音声を再生・停止する際に、bgsoundの#audio_ieのsrcを空にしたり入れたりする方法がありますが、これだと一度停止して再生した際に、再度頭から再生されてしまいます。 そのため、volumeをコントロールします(0が最大音量、-10000が最低音量)。 上記でもうまく再生できない場合、ブラウザに音声形式を認識させるため、.htaccessに以下のように記述します。 .htaccess
AddType audio/ogg .ogg
AddType audio/mp4 .aac
AddType audio/mp4 .m4a
AddType audio/mpeg .mp3
AddType audio/wav .wav