Javaでwavを再生する

背景

Javaで音声ファイルを再生させたくて Javaでmp3を再生する(コード編) を参考に書いていたもののjavax.sound.sampled.UnsupportedAudioFileException: could not get audio input stream from input fileのエラーが出て手が止まりました。

エラーにも書いてありますし、以下にもあるようにmp3のcodecの問題ですね。

facing issue in loading a mp3 file in java getting could not get audio input stream from input file

mp3のフォーマットまで深入りしたくないなぁと調べていたら [memo]JavaでMP3プレイヤーを作る に以下の記述がありました。

Javaは標準ではMP3を再生できないので、次のライブラリを使う必要があります。

MP3 SPI for Java Sound

SPIライブラリ使ってもよさそうでしたが、特にmp3にこだわってなかったので wavでやることにしました。

いじったところ

あとは Javaでmp3を再生する(コード編) のコードのままで問題なくコンパイルでき、実行もできるものの 音声が出ません。 再生はできているようなのにおかしいということで、疑ったのはミュート設定です。

playerオブジェクトに対してstartメソッドを実行する前に 以下を追記したら無事音声が出ました。

player.mute(false);

疑問が残っているところ

Javaのドキュメント にもあるようにbooleanのDefault Valueはfalseです。

特に設定していないBooleanControl.Type.MUTEがtrueになっているのに 納得いかないですが、 動くようになったので同じところでハマってしまった方のために残します。

参考