web-dev-qa-db-ja.com

Javaで.mp3と.wavを再生する

Javaアプリケーションで.mp3ファイルと.wavファイルをどのように再生できますか?私はSwingを使っています。私はこの例のようなものを探して、インターネットを見てみました:

public void playSound() {
    try {
        AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(new File("D:/MusicPlayer/fml.mp3").getAbsoluteFile());
        Clip clip = AudioSystem.getClip();
        clip.open(audioInputStream);
        clip.start();
    } catch(Exception ex) {
        System.out.println("Error with playing sound.");
        ex.printStackTrace();
    }
}

しかし、これは.wavファイルのみを再生します。

以下と同じです。

http://www.javaworld.com/javaworld/javatips/jw-javatip24.html

.mp3ファイルと.wavファイルの両方を同じ方法で再生できるようにしたいです。

102
Stan

Java FXには、mp3ファイルを再生するMediaおよびMediaPlayerクラスがあります。

コード例:

String bip = "bip.mp3";
Media hit = new Media(new File(bip).toURI().toString());
MediaPlayer mediaPlayer = new MediaPlayer(hit);
mediaPlayer.play();

次のimport文が必要になります。

import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
110
jasonwaste

私は純粋なJava mp3プレーヤーを書きました: mp3transform

30
Thomas Mueller

java APIでのみ.wavを再生できます。

import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;

コード:

AudioInputStream audioIn = AudioSystem.getAudioInputStream(MyClazz.class.getResource("music.wav"));
Clip clip = AudioSystem.getClip();
clip.open(audioIn);
clip.start();

そしてjLayerで.mp3をプレイ

18
Gustavo Marques

私が使ってからしばらく経ちましたが、 JavaLayer はMP3再生に最適です

15
Mark Heath

BasicPlayerAPIを使用することをお勧めします。それはオープンソースで、とてもシンプルで、JavaFXを必要としません。 http://www.javazoom.net/jlgui/api.html

Zipファイルをダウンロードして解凍したら、次のjarファイルをプロジェクトのビルドパスに追加します。

  • basicplayer3.0.jar
  • alllibディレクトリからのjarファイル(BasicPlayer3.0内)

これが最小限の使用例です。

String songName = "HungryKidsofHungary-ScatteredDiamonds.mp3";
String pathToMp3 = System.getProperty("user.dir") +"/"+ songName;
BasicPlayer player = new BasicPlayer();
try {
    player.open(new URL("file:///" + pathToMp3));
    player.play();
} catch (BasicPlayerException | MalformedURLException e) {
    e.printStackTrace();
}

必要な輸入品:

import Java.net.MalformedURLException;
import Java.net.URL;
import javazoom.jlgui.basicplayer.BasicPlayer;
import javazoom.jlgui.basicplayer.BasicPlayerException;

音楽を再生するために必要なのはこれだけです。プレイヤーは自分自身の再生スレッドを開始および管理しており、再生、一時停止、再開、停止およびseek機能を提供します。 。

より高度な使い方については、jlGui Music Playerを見てください。これはオープンソースのWinAmpクローンです。 http://www.javazoom.net/jlgui/jlgui.html

最初に調べるクラスは、PlayerUI(パッケージjavazoom.jlgui.player.ampの中)です。それはBasicPlayerの高度な機能をかなりよく示しています。

13
Ivo

標準のjavax.sound API、単一のMaven依存関係、完全にオープンソース(Java 7が必要)を使用します。

pom.xml

 <!-- 
    We have to explicitly instruct Maven to use tritonus-share 0.3.7-2 
    and NOT 0.3.7-1, otherwise vorbisspi won't work.
   -->
<dependency>
  <groupId>com.googlecode.soundlibs</groupId>
  <artifactId>tritonus-share</artifactId>
  <version>0.3.7-2</version>
</dependency>
<dependency>
  <groupId>com.googlecode.soundlibs</groupId>
  <artifactId>mp3spi</artifactId>
  <version>1.9.5-1</version>
</dependency>
<dependency>
  <groupId>com.googlecode.soundlibs</groupId>
  <artifactId>vorbisspi</artifactId>
  <version>1.0.3-1</version>
</dependency>

コード

import Java.io.File;
import Java.io.IOException;

import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.DataLine.Info;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.SourceDataLine;
import javax.sound.sampled.UnsupportedAudioFileException;

import static javax.sound.sampled.AudioSystem.getAudioInputStream;
import static javax.sound.sampled.AudioFormat.Encoding.PCM_SIGNED;

public class AudioFilePlayer {

    public static void main(String[] args) {
        final AudioFilePlayer player = new AudioFilePlayer ();
        player.play("something.mp3");
        player.play("something.ogg");
    }

    public void play(String filePath) {
        final File file = new File(filePath);

        try (final AudioInputStream in = getAudioInputStream(file)) {

            final AudioFormat outFormat = getOutFormat(in.getFormat());
            final Info info = new Info(SourceDataLine.class, outFormat);

            try (final SourceDataLine line =
                     (SourceDataLine) AudioSystem.getLine(info)) {

                if (line != null) {
                    line.open(outFormat);
                    line.start();
                    stream(getAudioInputStream(outFormat, in), line);
                    line.drain();
                    line.stop();
                }
            }

        } catch (UnsupportedAudioFileException 
               | LineUnavailableException 
               | IOException e) {
            throw new IllegalStateException(e);
        }
    }

    private AudioFormat getOutFormat(AudioFormat inFormat) {
        final int ch = inFormat.getChannels();

        final float rate = inFormat.getSampleRate();
        return new AudioFormat(PCM_SIGNED, rate, 16, ch, ch * 2, rate, false);
    }

    private void stream(AudioInputStream in, SourceDataLine line) 
        throws IOException {
        final byte[] buffer = new byte[4096];
        for (int n = 0; n != -1; n = in.read(buffer, 0, buffer.length)) {
            line.write(buffer, 0, n);
        }
    }
}

参考文献:

12
odoepner

私が見つけた最も簡単な方法は、 http://www.javazoom.net/javalayer/sources.html からJLayer jarファイルをダウンロードし、それをJarライブラリに追加することです http:/ /www.wikihow.com/Add-JARs-to-Project-Build-Paths-in-Eclipse-%28Java%29

これがクラスのコードです。

public class SimplePlayer {

    public SimplePlayer(){

        try{

             FileInputStream fis = new FileInputStream("File location.");
             Player playMP3 = new Player(fis);

             playMP3.play();

        }  catch(Exception e){
             System.out.println(e);
           }
    } 
}

そしてこれが輸入品です

import javazoom.jl.player.*;
import Java.io.FileInputStream;
4
Vlad

読者に別の選択肢を提供するために、私はJACo MP3 Playerライブラリ、クロスプラットフォームのJava mp3プレーヤーを提案しています。

特徴:

  • 非常に低いCPU使用率(〜2%)
  • 信じられないほどの小さな図書館(〜90KB)
  • jMFは必要ありません(Java Media Framework)
  • あらゆるアプリケーションに簡単に統合
  • 任意のWebページに簡単に統合できます(アプレットとして)。

そのメソッドと属性の完全なリストについては、ここでそのドキュメント をチェックすることができます

サンプルコード

import jaco.mp3.player.MP3Player;
import Java.io.File;

public class Example1 {
  public static void main(String[] args) {
    new MP3Player(new File("test.mp3")).play();
  }
}

詳細については、ダウンロード可能なソースコードを含む簡単なチュートリアル をここ で作成しました。

4
Mr. Xymon

あなたは最初にJMFをインストールする必要があります( このリンクを使ってダウンロード

File f = new File("D:/Songs/preview.mp3");
MediaLocator ml = new MediaLocator(f.toURL());
Player p = Manager.createPlayer(ml);
p.start();

jMF jarファイルを追加することを忘れないでください

2
Kasun Shamentha

Freshmeat.netでJAVE(Java Audio Video Encoderの略)ライブラリを検索してください(link here )。このようなことのためのライブラリです。 Javaにmp3のネイティブ機能があるかどうかはわかりません。

1つの方法で両方の種類のファイルを実行する場合は、継承と単純なラッパー関数を使用して、mp3関数とwav関数をまとめてラップする必要があるでしょう。

1
Spencer Rathbun

MP3 Decoder/player/converter Maven Dependencyを使用します。

import javazoom.jl.decoder.JavaLayerException;
import javazoom.jl.player.Player;

import Java.io.FileInputStream;
import Java.io.FileNotFoundException;

public class PlayAudio{

public static void main(String[] args) throws FileNotFoundException {

    try {
        FileInputStream fileInputStream = new FileInputStream("mp.mp3");
        Player player = new Player((fileInputStream));
        player.play();
        System.out.println("Song is playing");
        while(true){
            System.out.println(player.getPosition());
        }
    }catch (Exception e){
        System.out.println(e);
    }

  }

}
0
Nikhil Chauhan

Java SoundにMP3読み取りサポートを追加するには、JMFのmp3plugin.jarをアプリケーションの実行時クラスパスに追加します。

Clipクラスにはメモリの制限があるため、数秒以上の高品質サウンドには適していません。

0
Andrew Thompson