Вопрос-ответ

Playing .mp3 and .wav in Java?

Воспроизведение .mp3 и .wav на Java?

Как я могу воспроизвести .mp3 и .wav файл в моем Java-приложении? Я использую 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 файлы одним и тем же методом.

Переведено автоматически
Ответ 1

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 java.io.File;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
Ответ 2

Я написал чисто java mp3-плеер: mp3transform.

Ответ 3

Используя стандартный javax.sound API, облегченные зависимости Maven, полностью открытый исходный код (требуется Java 7 или более поздняя версия), это должно позволять воспроизводить большинство файлов WAV, OGG Vorbis и MP3:

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);
}
}
}

Ссылки:

Ответ 4

вы можете воспроизводить .wav только с java API:

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();

И воспроизведение .mp3 с помощью JLayer

2023-06-26 03:58 java