A tocar. mp3 e.wav em Java?

Como posso tocar um ficheiro .mp3 e um .wav na minha aplicação Java? Estou a usar o Swing. Eu tentei procurar na internet, para algo como este exemplo:

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

Mas, isto só irá reproduzir arquivos .wav.

o mesmo com:

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

quero ser capaz de reproduzir tanto arquivos .mp3 como arquivos .wav com o mesmo método.

Author: SpaceCore186, 2011-05-18

12 answers

Java Fx tem Media e MediaPlayer classes que irão reproduzir ficheiros mp3.

Código de exemplo:

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

Vai precisar das seguintes declarações de importação:

import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
 102
Author: jasonwaste, 2017-02-04 00:21:12

Eu escrevi um leitor de MP3 java puro: mp3transform .

 30
Author: Thomas Mueller, 2011-05-31 17:55:40
Podes jogar .wav apenas com API java:
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;

Código:

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

E tocar. mp3 com o jLayer

 17
Author: Gustavo Marques, 2012-08-21 17:03:30

Já passou algum tempo desde que o usei, mas O JavaLayer {[3] } é óptimo para a reprodução de MP3

 15
Author: Mark Heath, 2011-05-19 10:34:49
Eu recomendaria usar o BasicPlayerAPI. É código aberto, muito simples e não requer JavaFX. http://www.javazoom.net/jlgui/api.html

Depois de descarregar e extrair o ficheiro zip, deve-se adicionar os seguintes ficheiros jar à localização de compilação do projecto:

  • basicplayer3. 0.jar
  • Todos Os frascos do directório lib (dentro do BasicPlayer3. 0)

Aqui está uma utilização minimalista exemplo:

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

Importações necessárias:

import java.net.MalformedURLException;
import java.net.URL;
import javazoom.jlgui.basicplayer.BasicPlayer;
import javazoom.jlgui.basicplayer.BasicPlayerException;
É tudo o que precisas para começar a tocar música. O jogador está iniciando e gerenciando seu próprio thread de reprodução e fornece jogo, pausa, resumo, stop e seek funcionalidade.

Para uma utilização mais avançada, pode ver o leitor de música jlGui. É um clone WinAmp de código aberto: http://www.javazoom.net/jlgui/jlgui.html

A primeira classe A ver seria PlayerUI (dentro do pacote javazoom.jlgui.jogador.amplificador). Ele demonstra as características avançadas do BasicPlayer muito bem.

 12
Author: Ivo, 2014-03-10 16:24:23

Usando javax padrão.API de som, uma única dependência Maven, completamente aberta (Java 7} necessária):

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>

Código

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

Referências:

 9
Author: odoepner, 2015-09-03 12:08:12

A maneira mais fácil que eu encontrei foi baixar o JLayer arquivo jar do http://www.javazoom.net/javalayer/sources.html e adicioná-lo à biblioteca Jar http://www.wikihow.com/Add-JARs-to-Project-Build-Paths-in-Eclipse-%28Java%29

Aqui está o código para a classe

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);
           }
    } 
}
E aqui estão as importações.
import javazoom.jl.player.*;
import java.io.FileInputStream;
 4
Author: Vlad, 2015-09-13 15:44:12
Para dar aos leitores outra alternativa, estou a sugerir a Biblioteca MP3 JACo, um leitor java MP3 multi-plataforma.

Características:

  • utilização muito baixa da CPU(~2%)
  • Uma pequena biblioteca incrível (~90KB)
  • não precisa do JMF (Java Media Framework)
  • fácil de integrar em qualquer aplicação
  • fácil de integrar em qualquer página web (como applet).

Para uma lista completa dos seus métodos e atributos, pode verificar a sua documentação Aqui.

Código Da Amostra:

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

Para mais detalhes, criei um tutorial simples aqui que inclui um sourcecode descarregável.

 3
Author: Mr. Xymon, 2015-03-04 13:13:40

Tem de instalar primeiro o JMF (transferir com esta ligação)

File f = new File("D:/Songs/preview.mp3");
MediaLocator ml = new MediaLocator(f.toURL());
Player p = Manager.createPlayer(ml);
p.start();
Não te esqueças de adicionar ficheiros JMF jar.
 2
Author: Kasun Shamentha, 2012-06-09 17:06:46
Faça uma busca de freshmeat.net para a biblioteca Jave (significa Java Audio Video Encoder) (link Aqui ). É uma biblioteca para este tipo de coisas. Não sei se Java tem uma função mp3 nativa.

Provavelmente terá de embrulhar a função mp3 e a função wav em conjunto, usando a herança e uma função de embrulho simples, se quiser que um método execute ambos os tipos de ficheiros.

 1
Author: Spencer Rathbun, 2011-08-25 20:28:17

Para adicionar suporte de leitura MP3 ao som Java, adicione o mp3plugin.jar do JMF ao caminho da classe de execução da aplicação.

Note que a classe Clip tem limitações de memória que a tornam inadequada por mais de alguns segundos de som de alta qualidade.

 0
Author: Andrew Thompson, 2012-08-08 09:20:28

Usar esta biblioteca: importar o sol.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){}
}
 0
Author: Akila Lekamge, 2018-04-24 20:04:24