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
ファイルの両方を同じ方法で再生できるようにしたいです。
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;
私は純粋なJava mp3プレーヤーを書きました: mp3transform 。
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をプレイ
私が使ってからしばらく経ちましたが、 JavaLayer はMP3再生に最適です
BasicPlayerAPIを使用することをお勧めします。それはオープンソースで、とてもシンプルで、JavaFXを必要としません。 http://www.javazoom.net/jlgui/api.html
Zipファイルをダウンロードして解凍したら、次のjarファイルをプロジェクトのビルドパスに追加します。
これが最小限の使用例です。
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の高度な機能をかなりよく示しています。
標準のjavax.sound API、単一のMaven依存関係、完全にオープンソース(Java 7が必要)を使用します。
<!--
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);
}
}
}
私が見つけた最も簡単な方法は、 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;
読者に別の選択肢を提供するために、私はJACo MP3 Playerライブラリ、クロスプラットフォームのJava mp3プレーヤーを提案しています。
特徴:
そのメソッドと属性の完全なリストについては、ここでそのドキュメント をチェックすることができます 。
サンプルコード
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();
}
}
詳細については、ダウンロード可能なソースコードを含む簡単なチュートリアル をここ で作成しました。
あなたは最初にJMFをインストールする必要があります( このリンクを使ってダウンロード )
File f = new File("D:/Songs/preview.mp3");
MediaLocator ml = new MediaLocator(f.toURL());
Player p = Manager.createPlayer(ml);
p.start();
jMF jarファイルを追加することを忘れないでください
Freshmeat.netでJAVE(Java Audio Video Encoderの略)ライブラリを検索してください(link here )。このようなことのためのライブラリです。 Javaにmp3のネイティブ機能があるかどうかはわかりません。
1つの方法で両方の種類のファイルを実行する場合は、継承と単純なラッパー関数を使用して、mp3関数とwav関数をまとめてラップする必要があるでしょう。
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);
}
}
}
Java SoundにMP3読み取りサポートを追加するには、JMFのmp3plugin.jar
をアプリケーションの実行時クラスパスに追加します。
Clip
クラスにはメモリの制限があるため、数秒以上の高品質サウンドには適していません。