BD-Jには、標準で BDMV形式サウンド再生があります
普通に WAVか AIFFにすれば良いものを特殊な形式が使われている為に変換する必要があります
HD Cookbookにて作成されたツールが利用可能なのですが、バグっていて動作しません(2008/8/27現在)
そこで、ツールソースの書き換えから必要になってきます
HD Cookbookサイトの以下の場所にあります(2008/8/27現在)
https://hdcookbook.dev.java.net/
Browse Sourceの、
/tags/hdcookbook-66/tools/soundgen/src/net/java/bd/tools/BDJSoundGenerator.java
リビジョン 322をベースに
mainメソッドの
> AudioFormat bdjFormat = new AudioFormat(
> BD_J_SAMPLING_FREQUENCY ,
> BD_J_SAMPLE_SIZE,
> /* mono or stereo */ AudioSystem.NOT_SPECIFIED,
> /* signed */ true,
> /* big-endian */ true);
を
> AudioFormat bdjFormat = new AudioFormat(
> BD_J_SAMPLING_FREQUENCY ,
> BD_J_SAMPLE_SIZE,
> /* mono or stereo */ 2,
> /* signed */ true,
> /* big-endian */ true);
に書き換えてコンパイルし直す
それを、soundgen.jar内の、BDJSoundGenerator.classと差し替える
BDJSoundGeneratorで読み込める形式は決まっている
wav 48kHz,16bit,ステレオで、4MB以下
4MBと言うのは、BDMVの仕様で決められているらしいので、それ以上が再生できたとしてもその機器の機種依存と言う事になる
WAV状態で既に特殊なフォーマットなので、こういうのはコマンドラインツールでしか作れないだろう
・sox
http://sourceforge.net/projects/sox/
変換可能な wavを生成するオプション例
sox 元ファイル -r 48000 -c 2 -2 -s -L 出力ファイル.wav
例)
sox songA-piano.ogg -r 48000 -c 2 -2 -s -L songA-piano.wav
ファイルサイズに制限があるのは本当らしい
PS3 BD-Jにて、15MBが再生できない事を確認済みです
こんな感じで、特にオプションも無く、ただ通すだけで BDMVファイルが出来ます
java -cp soundgen.jar:tools.jar -jar soundgen.jar 元ファイル.wav 出力ファイル.bdmv
再生は、JMFを使っておこないます
try{ MediaLocator locator= new MediaLocator(this.getClass().getResource("sound.bdmv")); DataSource playingDataSource= Manager.createDataSource(locator); Player player= Manager.createPlayer(playingDataSource); player.start(); }catch(Exception e){}
あまり良くわからずにリソースに置いて再生可能な事が判明しましたが、仕様通りであれば AUXDATAフォルダの中に sound.bdmvと言うファイル名で置くのが正しいようです
機器によってはそうしなければ再生できないかも知れないので、覚えておくと良いでしょう