audio - 在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();
}
}
但是,这只会播放.mp3个文件。
同样的:
[http://www.javaworld.com/javaworld/javatips/jw-javatip24.html]
我希望能够使用相同的方法播放.mp3文件和.wav文件。
Stan asked 2019-07-18T01:10:09Z
12个解决方案
109 votes
Java FX有Media和MediaPlayer类将播放mp3文件。
示例代码:
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;
jasonwaste answered 2019-07-18T01:10:36Z
30 votes
我写了一个纯java的mp3播放器:mp3transform。
Thomas Mueller answered 2019-07-18T01:11:00Z
18 votes
你只能用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
Gustavo Marques answered 2019-07-18T01:11:33Z
15 votes
我使用它已经有一段时间了,但JavaLayer非常适合MP3播放
Mark Heath answered 2019-07-18T01:11:57Z
12 votes
我建议使用BasicPlayerAPI。 它是开源的,非常简单,不需要JavaFX。[http://www.javazoom.net/jlgui/api.html]
下载并解压缩zip文件后,应将以下jar文件添加到项目的构建路径中:
basicplayer3.0.jar
来自lib目录的所有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;
这就是你开始播放音乐所需要的一切。 播放器正在启动和管理自己的播放线程,并提供播放,暂停,恢复,停止和搜索功能。
有关更高级的用法,您可以查看jlGui音乐播放器。 它是一个开源的WinAmp克隆:[http://www.javazoom.net/jlgui/jlgui.html]
要查看的第一个类是PlayerUI(在包javazoom.jlgui.player.amp中)。它很好地演示了BasicPlayer的高级功能。
Ivo answered 2019-07-18T01:13:17Z
12 votes
使用标准的javax.sound API,一个Maven依赖,完全开源(需要Java 7):
的pom.xml
com.googlecode.soundlibs
tritonus-share
0.3.7-2
com.googlecode.soundlibs
mp3spi
1.9.5-1
com.googlecode.soundlibs
vorbisspi
1.0.3-1
码
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://odoepner.wordpress.com/2013/07/19/play-mp3-using-javax-sound-sampled-api-and-mp3spi/]
odoepner answered 2019-07-18T01:13:54Z
4 votes
我找到的最简单的方法是从[http://www.javazoom.net/javalayer/sources.html]下载JLayer jar文件并将其添加到Jar库[http://www.wikihow.com/Add-JARs到项目 - 建造 - 路径 - 在-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;
Vlad answered 2019-07-18T01:14:33Z
3 votes
为了给读者另一种选择,我建议使用JACo MP3播放器库,一个跨平台的java mp3播放器。
特征:
CPU使用率非常低(~2%)
令人难以置信的小型图书馆(约90KB)
不需要JMF(Java Media Framework)
易于集成到任何应用程序中
易于集成到任何网页(作为小程序)。
有关其方法和属性的完整列表,您可以在此处查看其文档。
示例代码:
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();
}
}
有关更多详细信息,我在此处创建了一个包含可下载源代码的简单教程。
Mr. Xymon answered 2019-07-18T01:15:49Z
2 votes
您需要先安装JMF(使用此链接下载)
File f = new File("D:/Songs/preview.mp3");
MediaLocator ml = new MediaLocator(f.toURL());
Player p = Manager.createPlayer(ml);
p.start();
不要忘记添加JMF jar文件
Kasun Shamentha answered 2019-07-18T01:16:21Z
1 votes
搜索freshmeat.net获取JAVE(代表Java Audio Video Encoder)Library(链接在这里)。 这是一个适合这类事物的图书馆。 我不知道Java是否具有本机mp3功能。
如果你想要一种方法来运行这两种类型的文件,你可能需要使用继承和一个简单的包装函数将mp3函数和wav函数包装在一起。
Spencer Rathbun answered 2019-07-18T01:16:52Z
0 votes
要向Java Sound添加MP3读取支持,请将JMF的Clip添加到应用程序的运行时类路径。
请注意,Clip类具有内存限制,使其不适合超过几秒钟的高质量声音。
Andrew Thompson answered 2019-07-18T01:17:24Z
-1 votes
使用此库:import sun.audio。*;
public void Sound(String Path){
try{
InputStream in = new FileInputStream(new File(Path));
AudioStream audios = new AudioStream(in);
AudioPlayer.player.start(audios);
}
catch(Exception e){}
}
Akila Lekamge answered 2019-07-18T01:17:49Z