java mp3,audio - 在Java中播放.mp3和.wav?

这篇博客讨论了如何在Java应用程序中使用不同的方法播放.mp3和.wav音频文件。提到了JavaFX的Media和MediaPlayer类,以及JLayer、JavaSound API和JACoMP3等第三方库作为播放选项。示例代码展示了如何使用这些库来实现音频播放功能。
摘要由CSDN通过智能技术生成

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值