先日の投稿『HTML5のaudio要素(audioタグ)で自作デモ曲をマークアップしてみました』においては、HTML5のaudio要素を使用して音声ファイルをマークアップすることに挑戦しました。音声ファイルのパスを指定したaudio要素をHTMLファイル内に埋め込むだけで(クロスブラウザー対応のために複数のリソースを指定する場合はsource要素使用してHTMLファイル内に埋め込むだけで)、簡単に音声ファイルを再生することができるようになりました。
ただaudio要素の実力はこれだけに留まりません。HTML5のaudio要素は、HTMLAudioElementというHTMLMediaElementから派生したDOMインターフェースによって実装されており、audio要素を制御するためのメソッド、プロパティ、イベントが数多く備わっています。
HTMLAudioElementの主なメソッド
- canPlayType(type) : 指定されたMIMEタイプが再生可能か判定する
- load() : サーバーから音声ファイルのロードを開始する(再生は行わない)
- play() : 音声ファイルを再生する
- pause() : 音声ファイルの再生を一時停止する
HTMLAudioElementの主なプロパティ
- src : 音声ファイルのURL
- currentTime : 現在の再生位置を表す秒数
- volume : 現在のボリューム、0.0(無音)から1.0(最大)まで指定可能
- controls : ブラウザで用意しているコントロールインターフェースを表示するかしないか
- autoplay : 自動再生するかしないか
- loop : ループ再生するかしないか
HTMLAudioElementのメソッド、プロパティはまだたくさんあります。詳細はMozillaの以下サイトで参照可能です。
またHTMLAudioElementのイベントについても、Mozillaのサイトが参考になります。
これらのメソッド、プロパティ、イベントをJavaScriptで操作することにより、ページ内において音声ファイルのさまざまな制御が可能となります。
今回は、HTMLAudioElementの主なプロパティとメソッドをJavaScriptで操作した簡単なオーディオプレイヤーでも作ってみたいと思います。
Audioオブジェクトの生成
まず音声ファイルをJavaScriptで操作しやすくするために、Audioオブジェクトを生成します。
audio要素は「Audio()」コンストラクタを用いてオブジェクトを生成することができます。
また、このときAudio()の引数として音声ファイルのパスを渡すことも可能です。
音声ファイルのMIMEタイプの判定とパスの指定
上記のようにAudioオブジェクトを生成する際に、引数として音声ファイルを指定することができますが、現状ではブラウザーごとに再生できる音声ファイルの種類が異なっており実用的ではありません。
そこで、ブラウザーで再生できるファイルの種類をMIMEタイプによって判定してから、再生可能である音声ファイルを指定するようにします。
canPlayType()メソッドに音声ファイルのMIMEタイプを渡すと、ブラウザーの対応状況により、戻り値として「”(空文字)」「probably」「maybe」のいづれかを返します。基本的には「”(空文字)」以外が返れば、再生可能であると判断してよさそうです。
- ”(空文字) : if the specified type definitely cannot be played. (was “no” until Gecko 1.9.1.1/ Firefox 3.5.1)
- probably : if the specified type appears to be playable.
- maybe : if it’s impossible to be sure if the type can be played without actually attempting to do so.
canPlayType()メソッドを使って、指定したMIMEタイプの対応状況を判定する変数を作ります。
MIMEタイプの判定結果を受けて、再生可能な音声ファイルのパスをsrcプロパティに指定します。
現状では、ブラウザーにより対応している音声ファイルの種類が異なっているため、ブラウザーごとにMIMEタイプの判定を行って分岐した上で、音声ファイルを指定してあげる必要があります。上記を踏まえると、以下のようになります。
音声ファイルの制御
myAudio変数へ音声ファイルを指定が済むと、HTMLAudioElementのメソッドで音声ファイルの制御ができるようになります。音声ファイルの制御として代表的なものは、「再生」「一時停止」「停止」などですね。
◎音声ファイルの「再生」
◎音声ファイルの「一時停止」
◎音声ファイルの「停止」
オーディオプレイヤーの作成
上記の内容を踏まえて、簡単な音楽プレイヤーを作成してみました。
JavaScriptソース
詳細はソースコード内のコメントをお読みください。
HTMLソース
option要素のvalueの値にファイル名を指定します。
まとめ
以上のように、HTML5のaudio要素はJavaScriptで操作することによりさまざまな音声ファイルの制御が可能となります。今回使用したAudioオブジェクトのメソッドやプロパティはごく一部にすぎません。イベントにいたってはまったく使用していません。もっともっと面白くて機能の豊富なWebアプリケーションが作れるのです。そのためにも、さらに技術力を磨く必要がありますね。
コメント