- ベストアンサー
JavaでMP3 (JMF + MP3plugin)を使ったMP3Player作成について
- JavaでMP3 (JMF + MP3plugin)を使ったMP3Playerを作成する方法について詳しく教えてください。
- JMFのMP3プラグインを利用してMP3Playerを作ろうとしていますが、javax.sound.sampled.UnsupportedAudioFileExceptionエラーに悩んでいます。
- ソースコードの一部を引用していますが、ソースコード全体を共有してもらえますか?
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
#6の回答に対するお礼について。 いろいろやってみた結果を上から順に1~6として説明します。 補足にあるように、c:\java\にmp3plugin.jarがあるとします。 (参考画像をアップしてみました。 http://ameblo.jp/eclipse-java/entry-10015462764.html) 1はうまく動かないです。 理由は、.;のクラスパスがないから。 Player2にクラスパスが通らず、 javaがPlayer2.classを見つけることができず動きません。 (ここだけエラーがNoClassDefFoundErrorになってます) 2はうごくはずなのですが... 3.4.5.6.は動かないはず... classpathを指定するのであれば java -classpath .;c:\java\mp3plugin.jar Player2 01.mp3 java.ext.dirsを指定するのであれば java -Djava.ext.dirs="c:\java" Player02 01.mp3 が正しいコマンドになります。 [ボヤキ] 6が動くとしたら、5も動くはずなんですけどね(^^;) ナゾです
その他の回答 (6)
- kacchann
- ベストアンサー率58% (347/594)
#3です。 --- >ディレクトリー名だとエラーが起こってしまいます。 いや、 僕が #5 で言っているのは、 「あなたの『mp3plugin.jarファイル』への絶対パスは、 c:\java\jaudioplayer\mp3plugin.jar ではなく、 実は c:\java\jaudioplayer\mp3plugin.jar\mp3plugin.jar なのでは?」 ということ。 (※これが本当だとすると、かなりまぎらわしい) --- まあなんにせよ、 java -classpath .;c:\java\jaudioplayer\mp3plugin.jar\mp3plugin.jar Player 2 01.mp3 これで動くべ?
お礼
いろいろやってみた結果です C:\java\jaudioplayer>java -classpath "c:\java\mp3plugin.jar" Player2 01.mp3 Exception in thread "main" java.lang.NoClassDefFoundError: Player2 C:\java\jaudioplayer>java -classpath .;c:\java\mp3plugin.jar Player2 01.mp3 Exception in thread "main" javax.sound.sampled.UnsupportedAudioFileException: co uld not get audio input stream from input file at javax.sound.sampled.AudioSystem.getAudioInputStream(AudioSystem.java: 786) at Player2.main(Player2.java:15) C:\java\jaudioplayer>java -classpath .;c:\java\mp3plugin.jar\mp3plugin.jar Playe r2 01.mp3 Exception in thread "main" javax.sound.sampled.UnsupportedAudioFileException: co uld not get audio input stream from input file at javax.sound.sampled.AudioSystem.getAudioInputStream(AudioSystem.java: 786) at Player2.main(Player2.java:15) C:\java\jaudioplayer>java -Djava.ext.dirs=".;c:\java\mp3plugin.jar\mp3plugin.jar " Player2 01.mp3 Exception in thread "main" javax.sound.sampled.UnsupportedAudioFileException: co uld not get audio input stream from input file at javax.sound.sampled.AudioSystem.getAudioInputStream(AudioSystem.java: 786) at Player2.main(Player2.java:15) C:\java\jaudioplayer>java -Djava.ext.dirs=".;c:\java\mp3plugin.jar" Player2 01.m p3 Exception in thread "main" javax.sound.sampled.UnsupportedAudioFileException: co uld not get audio input stream from input file at javax.sound.sampled.AudioSystem.getAudioInputStream(AudioSystem.java: 786) at Player2.main(Player2.java:15) C:\java\jaudioplayer>java -Djava.ext.dirs="c:\java\mp3plugin.jar" Player2 01.mp3 一番最後のみ動きました。。。
補足
mp3plugin.jarはc:\java\にコピーしました。
- kacchann
- ベストアンサー率58% (347/594)
#3です。 「#3のお礼欄」の-Djava.ext.dirsオプションに指定している値を見る限り、 『「mp3plugin.jar」という名前の"フォルダ"に 「mp3plugin.jar」という"ファイル"が 入っている』 ように見受けられますけど…。 (※-Djava.ext.dirsオプションで指定するのは、 "ディレクトリ名"であって"ファイル名"ではないから) これが混乱の元では?
補足
ディレクトリー名だとエラーが起こってしまいます。
- javakari
- ベストアンサー率66% (4/6)
いろいろ試してみたので報告です。 1.PCにj2sdk1.4.2_12をインストールして jre\lib\extにmp3plugin.jarを置いてプログラムを実行 → 動きました 2.No3 kacchannさんの方法(-classpath ".;c:\hoge\mp3plugin.jar")を指定して実行 → 動きました 3.環境変数「CLASSPATH」に「.;C:\hoge\mp3plugin.jar」を指定して実行 → 動きました このような結果になりました。 結局、なにが原因なのかわからなかったです... System.out.println(System.getProperty("java.class.path"));でclasspathの設定を確認してみてはいかがでしょうか?
お礼
全てだめでした・・・orz Javaのプロパティーは .;C:\PROGRA~1\java\JMF21~1.1E\lib\sound.jar;C:\PROGRA~1\java\JMF21~1.1E\lib\jmf. jar;C:\PROGRA~1\java\JMF21~1.1E\lib;.;C:\PROGRA~1\JMF21~1.1E\lib\sound.jar;C:\PR OGRA~1\JMF21~1.1E\lib\jmf.jar;C:\PROGRA~1\JMF21~1.1E\lib;.;c:\java\jmf\lib\sound .jar;c:\java\jmf\lib\jmf.jar;c:\java\jmf\lib;c:\java\lib;C:\Program Files\Java\j 2re1.4.2_12\lib;C:\Program Files\Java\j2re1.4.2_12\jre\lib;C:\Program Files\Java \j2sdk1.4.2_12\jre\lib\ext\mp3plugin.jar; ----------------------------- C:\PROGRA~1\Java\j2sdk1.4.2_12\jre\lib\ext ----------------------------- です。
- kacchann
- ベストアンサー率58% (347/594)
こんな感じで、普通に動かない? (Windowsの場合) java -classpath .;c:\hoge\mp3plugin.jar Player2 demo.mp3
お礼
C:\java\jaudioplayer>java -classpath .;c:\java\jaudioplayer\mp3plugin.jar Player 2 01.mp3 Exception in thread "main" javax.sound.sampled.UnsupportedAudioFileException: co uld not get audio input stream from input file at javax.sound.sampled.AudioSystem.getAudioInputStream(AudioSystem.java: 786) at Player2.main(Player2.java:15) C:\java\jaudioplayer>java -Djava.ext.dirs="c:\java\jaudioplayer\mp3plugin.jar" P layer2 01.mp3 こんな感じでclasspath だと動かないです
- javakari
- ベストアンサー率66% (4/6)
環境変数ではないですが、入力しなくても良い方法はあります。 あなたの使用しているjavaのフォルダ(私の場合C:\Program Files\Java\jre1.5.0_06)のlib\extに 必要なjarファイルを置けば、java.ext.dirsを入力しなくてもmp3を再生することができます。 Javaのフォルダがわからない場合、java -versionでバージョンを調べて、cドライブ等からファイルを検索すると案外簡単に見つかります。 ただし、他の人に配布することを考えている場合、 人により環境が異なるので、 ライブラリ(jarファイルとか)はフォルダを作成して java.ext.dirsで指定したほうが良いですよ~
お礼
現在 j2sdk1.4.2_12のJava.exeをメインに使っていて(環境変数でPathをここのbinに当てた) コントロールパネルのJavaにはこれと 1.5.0_07があって j2re1.4.2_12のlib\extと jre1.5.0_07のlib\ext j2sdk1.4.2_12のlib\extとjre\lib\ext すべてにmp3pluginが入っているのですが うまく動きません 配布目的はないんですけど java -versionは java version "1.4.2_12" Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_12-b03) Java HotSpot(TM) Client VM (build 1.4.2_12-b03, mixed mode) でした
- javakari
- ベストアンサー率66% (4/6)
CLASSPATHに指定したjarファイルを java.ext.dirsに指定するとうまく動きます。 たとえば、jarファイルを./libsフォルダ内に置いた場合、 java -Djava.ext.dirs="./libs" Player2 とすればmp3を再生することができます(^^) プログラム自体はそのままで動きます~
お礼
大変ありがとうございます!! とても感謝しております(50ptぐらいあげてもいい なかなかmp3Pluginについて乗ってるページも少なく Readmeがないので。。。 もしjava.ext.dirsを入力しなくても 環境変数などで設定する方法を教えていただけたら うれしいのですが・・・・
お礼
前回の結果でもうこれはJavaが壊れいるのではないかと思い すべてJava関係をアンインストールし、 再インストール後 ちゃんとパスをとおしたら 無事なおりました。 みなさんほんとにありがとうございました。 また分からないことがあれば教えていただけると 幸いです。これからもよろしくお願いします。