FLAC プレイヤー JavaScript の説明
戻る


このプログラムは,Audio エレメントを使って FLAC 形式のオーディオ ファイルの再生を行うものです.
FLAC データを RIFF WAVE 形式のオーディオ データに変換し,それを "data" URL に変換して Audio エレメントにロードすることで,再生を行います.
なお,Ogg コンテナに格納された FLAC には対応していません.

使い方は,「ファイル」で FLAC ファイルを選択し,「再生」をクリックします.
FLAC のデータ全体を変換してから再生を始めることになるので,「再生」をクリックしてから実際に再生が始まるまでに少し時間が掛かります.(一度再生を行った後は変換後のデータが残っているので,もう一度「再生」をクリックしたときはすぐに再生が始まります.)
変換中/再生中に「停止」をクリックすると,処理を中止します.

処理の概要は次のようになります.
  1. FLAC ファイルを選択したら,FLAC のメタ データを読み込みます.メタ データにタイトル/アーティスト情報があれば表示します.
  2. 「再生」をクリックしたら,FLAC のフレーム データをデコードして PCM データを取り出します.このとき同時に,データを base64 に変換しています.
  3. デコードが完了したら,RIFF WAVE 形式に必要な情報を base64 に変換して付加し,"data" URL を作成します.
  4. 作成した "data" URL を Audio エレメントのソースに設定し,再生を開始します.
このプログラムは多量のメモリを必要とします.
元の FLAC データや変換した RIFF WAVE のデータなどは,すべてメモリ上に置かれます.そのため,データがあまり大きいとメモリが不足し,処理が失敗します.困ったことに,その場合ブラウザの動作としては,エラーが表示されたり例外が発生することは無く,単に処理が途中で中止されるだけです(少なくとも Firefox 3.5 では).
処理の失敗を検出してエラー表示するようなコードをある程度入れてありますが,失敗をすべて検出することはできません.もし,何もエラー表示が出ずに処理が停止してしまったり,原因不明のエラーが出るような場合は,メモリが不足している可能性があります.
再生が失敗する場合,他のタブを閉じたりブラウザを再起動したりすると,再生できるようになることもあります.