JavaでMp3再生

このQ&Aのポイント
  • JMFがWinでしか動作しないため、MacやLinuxでのMp3再生は可能か
  • javax.sound.??を使用してリアルタイムデコードできるか
  • Java 5.0の高速化によりMidi再生の問題が解消され、Mp3再生にも対応しているか
回答を見る
  • ベストアンサー

JavaでMp3再生

初質問です。よろしくお願いします。 JMFというものでMP3が扱えるということを少し前に知りました。 しかし、よく見てみたらWinだけしかだめとのこと MacやLinuxでもMp3ファイルの再生がしたいのですが可能なのでしょうか? もしできないのなら javax.sound.??を使って処理しようかなと思ってます。 それで、もうひとつ質問になってしまいますが 速度的にリアルタイムデコードに間に合う?ということです。 Midiの再生はJ2SE1.4ではもたついていましたが、5.0では問題ないようでした。 5.0で相当高速化されているとしたら間に合う可能性もあるかな?と思うのですが見込み違いでしょうか? Java初心者ですが、よろしくお願いします。

  • Java
  • 回答数1
  • ありがとう数5

質問者が選んだベストアンサー

  • ベストアンサー
  • nieve
  • ベストアンサー率51% (14/27)
回答No.1

私も気になりましたので、少し調べてみました。 (結果としては、試してみないと分からないと、いうことが判った程度です。役に立たない情報で申し訳ありません) <以下調べた内容> JMFのFAQにはMP3はWindowsだけと書いていますが http://java.sun.com/products/java-media/jmf/reference/faqs/index.html#jmf2-support JMF MP3 Pluginのページには、プラットフォームを選んでと書いています。 NOTE: The list offers files for different platforms - please be sure to select the proper file(s) for your platform. また、下記のように分かれていますので何とかなるのではないでしょうか? Java MP3 Plugin 1.0 FCS Click below to download Windows Platform (javamp3-1_0.exe, 701.35 KB) Other Platform (javamp3-1_0.zip, 78.46 KB) ※ちょっとOther Platformのモジュールが小さいのが気になりますが…  Windows版はインストーラだからかな… また、J2SE 5.0については下記のような情報がありました。 http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/sound/programmer_guide/chapter2.html 「たとえば、MP3 (MPEG-1 Audio Layer 3) エンコーディングを考えます。この手法は Java Sound API の現バージョンでは明示的には言及してはいませんが、Java Sound API の実装またはサードパーティサービスプロバイダによりサポートされる場合があります。」 何となく出来るような気がしますが… ← 試してもないので適当す。ごめんなさい。 <速度に関しての感想> JavaとC等で作ったアプリケーションの性能は、特に演算においてはほとんど差がないように思います。 そのため、MP3のDecodeはリアルタイムに行えるのではないかと思います。 まずは、MP3をPCMした後、再生するようなものを作ってみるようなチャレンジの仕方もあると思います。 とりあえず、MDCTの速度だけでも評価してみると良いのではないかと思います。←他力本願で申し訳ない… http://cvs.limewire.org/fisheye/viewrep/~raw,r=1.1.1.1/misc/jorbis/com/jcraft/jorbis/Mdct.java ※このソースは、単に検索しただけなのでおすすめとかではありません。  http://search.goo.ne.jp/web.jsp?MT=mdct.java また、MDCTの説明は下記のページが判りやすいかも… http://www-ise2.ist.osaka-u.ac.jp/~kosaka/vorbis/mdct.html

参考URL:
http://java.sun.com/products/java-media/jmf/mp3/download.html
a1b2c4
質問者

お礼

すごく丁寧なアドバイスありがとうございます。 JMFはなんだか手を出すとはまりそうな気がしますね・・ やっぱ、自作が早いのかなと感じています。 演算速度はCと大差ないんですね。 そうだとしたら出来そうな気がすごくしてきました。 しかし、MDCTをはじめアルゴリズムの把握も今ひとつなので、その辺から見てみようと思います。

関連するQ&A

  • Java で MP3 (JMF + MP3plugin)

    JAVAでMP3Playerを作ろうとしていて格闘中の者です JavazoomでのMP3プラグインではなく JMFの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) に悩まされています。 CLASSPATHにjmf.jar,sound.jar,mp3plugin.jarは指定してあり、 JMStudioで再生できるMP3で、 ソースは、 import javax.sound.sampled.AudioSystem; import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.AudioFormat; import javax.sound.sampled.SourceDataLine; import javax.sound.sampled.DataLine; import java.io.File; public class Player2 { private static final int BUFFER_SIZE = 176400; // 44100 x 16 x 2 / 8 public static void main(String[] args) throws Exception { byte[] buffer = new byte[BUFFER_SIZE]; AudioInputStream in = AudioSystem.getAudioInputStream(AudioFormat.Encoding.PCM_SIGNED, AudioSystem.getAudioInputStream(new File (args[0]))); AudioFormat audioFormat = in.getFormat(); SourceDataLine line = (SourceDataLine) AudioSystem.getLine(new DataLine.Info(SourceDataLine.class, audioFormat)); line.open(audioFormat); line.start(); while (true) { int n = in.read(buffer, 0, buffer.length); if (n < 0) { break; } line.write(buffer, 0, n); } line.drain(); line.close(); } } です よろしくお願いします。

    • ベストアンサー
    • Java
  • JMFを使用したプログラムの配布方法

    音楽再生プログラムをJMFを使用して作成したのですが、JMFの入っていないコンピュータ上で実行することが出来ませんでした。 プログラムは import javax.media.*; として、javax.mediaパッケージをimportして作成したのですが、それを普通に javac Player.java でコンパイルしてJMFの入っていないコンピュータで java Player FILENAME.mp3 とするとjavax/media/~が見つかりませんというエラーメッセージが出力されてしまいました。 JMFの入っていないコンピュータでも実行できるようにするためにはどのような工夫をすれば良いのでしょうか? お答えをよろしくお願いします。

    • ベストアンサー
    • Java
  • JavaでMIDIを使って音を出したい

    私は今大学でプログラミングの入門講座を履修していて、1月18日までに自分でプログラムを自作する課題に追われて困っています。 今のところ、ある二次方程式から導き出される数値を使って音程を決めていき、それを順次MIDIで吐き出すプログラムを想定しています。 ところが、既にあるMIDIファイルを再生するJavaアプレットのサンプルならいたるところにあるのに、JavaでMIDI音源を直接操作して音を出すサンプルはなかなか見当たりません。プログラミングは初心者で、基本をざっとやっただけなので、APIガイドを見つつプログラムが組めるほどの力はありません。javax.sound.midiパッケージを使うと出来そうなのですが、APIガイドには例文が載っているわけでもないので… せめて、PCのMIDI音源で「ドレミ」と鳴らしたいのですが、何かよい本やサイトがありましたらぜひ教えてください。調子のいい質問とは思いますが、よろしくお願いします。

    • ベストアンサー
    • Java
  • JAVAのプログラムについての質問です。

    JAVAのプログラムについての質問です。 技術系の学生です。今、卒業研究でJAVAで音声を再生するプログラムを作成しているのですが、調べても解決できないエラーがあったため質問させていただきました。以下にソースコードを示します。 package Sound; import javax.media.*; import java.io.File; import java.net.URL; import java.io.FileNotFoundException; public class Soundonly { public static void main(final String[] args) { try { File f = new File(args[0]); URL url = f.toURL(); Player p = Manager.createRealizedPlayer(url); p.start(); } catch (FileNotFoundException e) { // エラー処理 } } } これをコンパイルしようとすると、 この行に複数マーカーがあります - アクセス制限: 型 Player は必須ライブラリー C:\Program Files\Java\jre6\lib\ext \jmf.jar で制限されているためアクセスできません - アクセス制限: 型 Manager は必須ライブラリー C:\Program Files\Java\jre6\lib\ext \jmf.jar で制限されているためアクセスできません - アクセス制限: 型 Manager のメソッド createRealizedPlayer(URL) は必須ライブラリー C: \Program Files\Java\jre6\lib\ext\jmf.jar で制限されているためアクセスできません アクセス制限: 型 Player のメソッド start() は必須ライブラリー C:\Program Files\Java\jre6\lib\ext \jmf.jar で制限されているためアクセスできません とエラーが出て、コンパイルが通りません。JMFはインストール済みです。 どなたか解決法を教えていただけないでしょうか。よろしくお願いします。

    • ベストアンサー
    • Java
  • Javaでサウンドフォントを用いてMIDI演奏

     サウンドフォントをJavaで読み込み、その音色を使ってMIDIの演奏を行いたいのですが、そのような方法、又はそういうことができるクラスライブラリなどありませんでしょうか? ゲームを作っており、Windows VistaやMacでも正常な音が出るように、音源を統一したいのですが、デフォルトのサウンドバンクは使い物になりませんので・・・。

  • WAV、MP3が高速再生されてしまいます

    今まで使っていたマシンが壊れたので 新しくOSなしのマシンを買い、Windows98SEをインストールしたのですが、起動音などのシステムサウンドやMP3が倍速再生されてしまいます。(オーディオCDは大丈夫でした) デバイスマネージャでサウンド系を全部削除、いれなおしししてみたり、最新サウンドドライバをネットで落として入れなおしてみたりと思いつく限りのことはしたのですがさっぱりだめです。 なにか解決策があれば教えてください。お願いします。 ちなみにマザーボードはShuttle ME21 ビデオ、サウンドカードはオンボードです。

  • mp3再生中にノイズが入る

    パソコンから音楽を再生しているのですが、何故か分かりませんが買った当初よりやけにノイズが入ります。 再生しているMP3は128k~256kbpsとバラバラですが、特にクラシックなどの楽器の高音などでノイズが入ります。ノイズは少ない時もありますが、一定のところで大きなノイズになることもあります。 MP3のビットレートが悪いのかもしれませんが、パソコン以外(DVDプレーヤーなど)から再生する場合にノイズが入る事もあります。(パソコンから再生した場合よりは酷くないが消音時に多少ノイズが入る) この場合、どちらが悪いのでしょうか? (MP3のビットレートが低いからノイズが入るのか) (アンプが故障しているからノイズが入るのか) ちなみにパソコンはAthlonを使用しており、サウンドカードはSE-80PCIです。アンプはONKYOのTX-SA503を使用しています。スピーカーはONKYOのHTP-L5です。

  • パソコン上で再生中の音を取り込むソフト

    パソコン上で再生している音(mp3やシステム音など)をリアルタイムで取り込めるソフトはありませんか?ウインドウズに付属のサウンドレコーダーではできないようですので…

  • macでmp4動画再生について

    DVDをmp4にエンコードしてquick time playerで再生したときのことで質問させてください。 動画がすごいカクカク動いて滑らかに再生されません。 windows7だと普通に滑らかに再生されます。 macのosはスノーレパードです。何が原因か、もしくは再生プレイヤーが悪いのかわかりません。 解決方法等ございましたらご教授願います。 宜しくお願い致します。

    • ベストアンサー
    • Mac
  • 知人のmacでmp3が再生できないらしい...

    私はWindowsのPC使っているのですが、知人のとこはmacで、 一応OSも最新でiTunesも最新がインストールされているそうです。 で、mp3のファイルならmacでも大丈夫だろうと思ってmp3のファイル転送したのですが、「アプリケーションがみつからない」という様なメッセージが出て再生できないそうです。 知人のiTunesはm4aの形式で取り込む設定にしてあるらしいのですが、Windows版iTunesは、取り込み指定がどうなっていようが、拡張子ファイルさえiTunesの読み込み対応形式になっていれば、iTunes自体にエンコーダーを持っている形式のファイルはどの形式でも読み込んで再生してくれます。 macはなにか特別な設定をしないとデフォルトでは複数の形式を再生しないようになっているのでしょうか?(iTunesのファイルの読み込みでも駄目だったそうです。送ったファイルのバックアップもあり、それは私の環境では間違いなく再生できているので、そのファイルが壊れているとも考え難いです。) 先方は、送ったファイルの拡張子にmp3が付いているにも関わらず、形式が違うんじゃないの?何の形式?なんてちょっと?と思うような質問してくるので少々教えるのに骨が折れるレベルのようなんですが、macユーザーの方、なにか思い当たる節があるようでしたらアドバイスお願いします。

    • 締切済み
    • Mac