Java で音声ファイル(WAV フォーマット)を読むには、以下の手順で処理します。
- ファイルを
AudioInputStream
クラスを使って読み込む。
- ストリームから
AudioFormat
をインスタンス化する。
- フォーマットから
DataLine.Info
をインスタンス化する。
- データを
SourceDataLine
に書き込む。
ファイルを AudioInputStream
クラスを使って読み込む。
AudioSystem.getAudioInputStream(String fileName)
メソッドを呼び、AudioInputStream
オブジェクトをインスタンス化します。
得られたストリームから、available()
メソッドでバッファの大きさを取得します。これで、バッファにデータを読み込むことができます。
ストリームから AudioFormat
をインスタンス化する。
ストリームから stream.getFormat()
メソッドを呼び、AudioFormat
を取得します。フレームのサイズと長さから、バイト数を取得します。
フォーマットから DataLine.Info
をインスタンス化する。
フォーマットから、DataLine.Info
オブジェクトをインスタンス化します。
データを SourceDataLine
に書き込む。
AudioSystem.getLine(DataLine.Info)
メソッドを呼び、SourceDataLine
オブジェクトをインスタンス化します。
ラインは、データを書き込む前に open
および start
メソッドを呼ぶ必要があります。
write(byte[] buffer,int start, int length)
メソッドを使用して、データを書き込みます。
書き込んだ後は、drain
および close
メソッドを呼び出します。
サンプルコード
サンプルコードを示します。
playWavFile(String fileName)
で音声ファイルを読み出し、再生することができます。
サンプルコードを使用したプログラムをここに示します。
詳しくは、本家のサイトにページがあります。 (Java Sound API)。
なお、AudioClip
を使うと音声ファイルがそのまま再生できます。ただし、再生を止めるなどコントロールする機能はついていません。
使い方については、チュートリアルをご覧ください。