犬ターネット

audioタグ関連

2011-02-15 html5

audio タグを使っていろいろしたかったので、少し調査した。使ったブラウザは Firefox, Safari, Chrome, Opera の安定してるやつ。

audioタグに割り当てられてる属性云々

src
再生する音源ソースURL
controls
オーディオインターフェースを表示するかどうか
true : する
false : しない
autoplay
自動再生するかどうか(iPhone Safari だと有効にならないっぽい)
true : する
false : しない
volume
再生ボリューム
0~1 (ディフォルト:1)
muted
ミュートされてるか
true : されてる
false : されてない
paused
ポーズしてるか
true : してる
false : してない
preload (Safari, Chrome)
音源を先読みするか
auto : 自動読み込み (ディフォルト)
metadata : ヘッダ情報のみ読み込み
none : 読みこまない
autobuffler (Firefox, Opera)
音源を先読みするか
true : する (Firefoxディフォルト)
false : しない (Operaディフォルト)
ended
曲再生終わったか
true : 終わった
false : まだ
seeking
再生箇所をシーク中か
true : 中
false : 中じゃない
currentTime
現在の再生秒数

使えるメソッド

load() : 音源読み込む
play() : 再生する
pause() : とめる
canPlayType(mime) : 再生できるmimeタイプを調べる。再生できそうな場合は "maybe" 文字列が返ってくる

読み込めるファイルタイプ

audio.canPlayType(mime) 使ってしらべた。mime は apache についてる mime.types の audio/* (+ogg) を利用した。

Firefox
audio/ogg
audio/x-wav
Opera
audio/ogg
audio/x-wav
Chrome
audio/ogg
audio/mpeg
audio/x-wav
Safari
audio/basic
audio/midi
audio/mpeg
audio/x-aiff
audio/x-mpegurl
audio/x-wav
Safari(iPhone)
audio/amr
audio/basic
audio/mpeg
audio/x-aiff
audio/x-mpegurl
audio/x-wav

共通で使えるのは wav だけ。mp3やm4aが再生できるのは Safari と Chrome のみ。

audioタグの書き方

以下みたいにかく。preload と autobuffler の両方を書いてるのは、クロスブラウザ対応のため。

<audio src="url" controls preload="auto" autobuffler autolpay></audio>

jsで生成するなら以下みたいにかく。

var audio = new Audio("url");
audio.controls = true;
audio.autoplay = true;
audio.preload = "auto";
audio.autobuffler = true;
var audio = document.createElement('audio');
audio.src = "url";
audio.controls = true;
audio.autoplay = true;
audio.preload = "auto";
audio.autobuffler = true;

js経由で再生するとき

上記のaudioオブジェクトに対して、再生するときは

audio.load();
audio.play();

とめるときは

audio.pause();

すればOK。

ただし、Chromeの場合、load() 実行するとまた最初から再生されちゃうので、以下のように currentTime が 0 の場合だけ load() 実行するようにすれば大丈夫っぽい。

if (audio.currentTime == 0) { audio.load(); }
audio.play();

サンプル

※ SafariとChromeだけ。
※ play を押すと再生、pause を押すととまる。


ほげほげー

一覧追加